]> granicus.if.org Git - python/commitdiff
bpo-32154: Remove asyncio.selectors (#4605)
authorVictor Stinner <victor.stinner@gmail.com>
Tue, 28 Nov 2017 14:19:56 +0000 (15:19 +0100)
committerGitHub <noreply@github.com>
Tue, 28 Nov 2017 14:19:56 +0000 (15:19 +0100)
* Remove asyncio.selectors and asyncio._overlapped symbols from the
  namespace of the asyncio module
* Replace "from asyncio import selectors" with "import selectors"
* Replace "from asyncio import _overlapped" with "import _overlapped"

asyncio.selectors was added to support Python 3.3, which doesn't have
selectors in its standard library, and Python 3.4 in the same code
base. Same rationale for asyncio._overlapped. Python 3.3 reached its
end of life, and asyncio is no more maintained as a third party
module on PyPI.

Doc/whatsnew/3.7.rst
Lib/asyncio/__init__.py
Lib/asyncio/selector_events.py
Lib/asyncio/test_utils.py
Lib/asyncio/unix_events.py
Lib/asyncio/windows_events.py
Lib/test/test_asyncio/test_events.py
Lib/test/test_asyncio/test_selector_events.py
Lib/test/test_asyncio/test_windows_events.py
Lib/test/test_asyncio/test_windows_utils.py

index 514c3c293c080c55cc45308bc4a800beae758e0b..a67cbc1576f0e3451b873f7bbb5e6c335069f6aa 100644 (file)
@@ -677,6 +677,11 @@ Changes in Python behavior
 Changes in the Python API
 -------------------------
 
+* :mod:`asyncio`: The module doesn't export :mod:`selectors` and
+  :mod:`_overlapped` modules as ``asyncio.selectors`` and
+  ``asyncio._overlapped``. Replace ``from asyncio import selectors`` with
+  ``import selectors`` for example.
+
 * :meth:`pkgutil.walk_packages` now raises ValueError if *path* is a string.
   Previously an empty list was returned. (Contributed by Sanyam Khurana in
   :issue:`24744`.)
index 011466b3e0dc8f3c7d0090d5bd1af1d3cf983be7..1ee1b2516d459c1ae3dc74dc4536c7989840ffda 100644 (file)
@@ -2,21 +2,6 @@
 
 import sys
 
-# The selectors module is in the stdlib in Python 3.4 but not in 3.3.
-# Do this first, so the other submodules can use "from . import selectors".
-# Prefer asyncio/selectors.py over the stdlib one, as ours may be newer.
-try:
-    from . import selectors
-except ImportError:
-    import selectors  # Will also be exported.
-
-if sys.platform == 'win32':
-    # Similar thing for _overlapped.
-    try:
-        from . import _overlapped
-    except ImportError:
-        import _overlapped  # Will also be exported.
-
 # This relies on each of the submodules having an __all__ variable.
 from .base_events import *
 from .coroutines import *
index ef6f0ac458d41b28a279b9377b0b649273c4f2e6..3639466f6c2bb992c7c422c7301808b850cb56d7 100644 (file)
@@ -9,6 +9,7 @@ __all__ = ['BaseSelectorEventLoop']
 import collections
 import errno
 import functools
+import selectors
 import socket
 import warnings
 import weakref
@@ -21,7 +22,6 @@ from . import base_events
 from . import constants
 from . import events
 from . import futures
-from . import selectors
 from . import transports
 from . import sslproto
 from .coroutines import coroutine
index c3ddfe37563a6a40f8eb791ee66dec8be508a179..f797b2f0bed4812a68c2907d63b1a7fe6cab7686 100644 (file)
@@ -6,6 +6,7 @@ import io
 import logging
 import os
 import re
+import selectors
 import socket
 import socketserver
 import sys
@@ -28,7 +29,6 @@ except ImportError:  # pragma: no cover
 from . import base_events
 from . import events
 from . import futures
-from . import selectors
 from . import tasks
 from .coroutines import coroutine
 from .log import logger
index 94157f8c8094caf162ce6c02fb580ee72889a359..06bcdcc5ed1c8d3f297d5d0c576f09a4ffd65782 100644 (file)
@@ -2,6 +2,7 @@
 
 import errno
 import os
+import selectors
 import signal
 import socket
 import stat
@@ -18,7 +19,6 @@ from . import coroutines
 from . import events
 from . import futures
 from . import selector_events
-from . import selectors
 from . import transports
 from .coroutines import coroutine
 from .log import logger
index 031e3f1874eae5de14ae12e9e44187dad5dffff9..de41e645163dcc3b7813f07165a6065fd98df14c 100644 (file)
@@ -1,5 +1,6 @@
 """Selector and proactor event loops for Windows."""
 
+import _overlapped
 import _winapi
 import errno
 import math
@@ -14,7 +15,6 @@ from . import proactor_events
 from . import selector_events
 from . import tasks
 from . import windows_utils
-from . import _overlapped
 from .coroutines import coroutine
 from .log import logger
 
index a6e4ecf7958df739532987bf6987b3ee39c48fe0..c252a4c01e341dc2ce578f149bee6cf64ec5c252 100644 (file)
@@ -2141,7 +2141,7 @@ if sys.platform == 'win32':
         def test_remove_fds_after_closing(self):
             raise unittest.SkipTest("IocpEventLoop does not have add_reader()")
 else:
-    from asyncio import selectors
+    import selectors
 
     class UnixEventLoopTestsMixin(EventLoopTestsMixin):
         def setUp(self):
index 7db943e8009627c27e8fb4222a614660be215499..616eb6f2630503dd18d2aa2a1d66b3d1528bd9ed 100644 (file)
@@ -1,6 +1,7 @@
 """Tests for selector_events.py"""
 
 import errno
+import selectors
 import socket
 import unittest
 from unittest import mock
@@ -10,7 +11,6 @@ except ImportError:
     ssl = None
 
 import asyncio
-from asyncio import selectors
 from asyncio import test_utils
 from asyncio.selector_events import BaseSelectorEventLoop
 from asyncio.selector_events import _SelectorTransport
index b70c0b7ebb82ee8f20559580c64933dfbec82dda..5fdf5ff5e440ae09a20c2030bb4abca84cc267ac 100644 (file)
@@ -7,10 +7,10 @@ from unittest import mock
 if sys.platform != 'win32':
     raise unittest.SkipTest('Windows only')
 
+import _overlapped
 import _winapi
 
 import asyncio
-from asyncio import _overlapped
 from asyncio import test_utils
 from asyncio import windows_events
 
index d48b8bcbb0874fd7fa40701d9ae909d5bb8dff0d..4fddaa25895391567a0a13901e2f7e2048dacf8d 100644 (file)
@@ -9,9 +9,9 @@ from unittest import mock
 if sys.platform != 'win32':
     raise unittest.SkipTest('Windows only')
 
+import _overlapped
 import _winapi
 
-from asyncio import _overlapped
 from asyncio import windows_utils
 try:
     from test import support