[Python-checkins] bpo-32154: Remove asyncio.selectors (#4605)

Victor Stinner webhook-mailer at python.org
Tue Nov 28 09:20:00 EST 2017


https://github.com/python/cpython/commit/4271dfd7815c05fd39b515c240050b3585bdfcd4
commit: 4271dfd7815c05fd39b515c240050b3585bdfcd4
branch: master
author: Victor Stinner <victor.stinner at gmail.com>
committer: GitHub <noreply at github.com>
date: 2017-11-28T15:19:56+01:00
summary:

bpo-32154: Remove asyncio.selectors (#4605)

* 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.

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

diff --git a/Doc/whatsnew/3.7.rst b/Doc/whatsnew/3.7.rst
index 514c3c293c0..a67cbc1576f 100644
--- a/Doc/whatsnew/3.7.rst
+++ b/Doc/whatsnew/3.7.rst
@@ -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`.)
diff --git a/Lib/asyncio/__init__.py b/Lib/asyncio/__init__.py
index 011466b3e0d..1ee1b2516d4 100644
--- a/Lib/asyncio/__init__.py
+++ b/Lib/asyncio/__init__.py
@@ -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 *
diff --git a/Lib/asyncio/selector_events.py b/Lib/asyncio/selector_events.py
index ef6f0ac458d..3639466f6c2 100644
--- a/Lib/asyncio/selector_events.py
+++ b/Lib/asyncio/selector_events.py
@@ -9,6 +9,7 @@
 import collections
 import errno
 import functools
+import selectors
 import socket
 import warnings
 import weakref
@@ -21,7 +22,6 @@
 from . import constants
 from . import events
 from . import futures
-from . import selectors
 from . import transports
 from . import sslproto
 from .coroutines import coroutine
diff --git a/Lib/asyncio/test_utils.py b/Lib/asyncio/test_utils.py
index c3ddfe37563..f797b2f0bed 100644
--- a/Lib/asyncio/test_utils.py
+++ b/Lib/asyncio/test_utils.py
@@ -6,6 +6,7 @@
 import logging
 import os
 import re
+import selectors
 import socket
 import socketserver
 import sys
@@ -28,7 +29,6 @@
 from . import base_events
 from . import events
 from . import futures
-from . import selectors
 from . import tasks
 from .coroutines import coroutine
 from .log import logger
diff --git a/Lib/asyncio/unix_events.py b/Lib/asyncio/unix_events.py
index 94157f8c809..06bcdcc5ed1 100644
--- a/Lib/asyncio/unix_events.py
+++ b/Lib/asyncio/unix_events.py
@@ -2,6 +2,7 @@
 
 import errno
 import os
+import selectors
 import signal
 import socket
 import stat
@@ -18,7 +19,6 @@
 from . import events
 from . import futures
 from . import selector_events
-from . import selectors
 from . import transports
 from .coroutines import coroutine
 from .log import logger
diff --git a/Lib/asyncio/windows_events.py b/Lib/asyncio/windows_events.py
index 031e3f1874e..de41e645163 100644
--- a/Lib/asyncio/windows_events.py
+++ b/Lib/asyncio/windows_events.py
@@ -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 selector_events
 from . import tasks
 from . import windows_utils
-from . import _overlapped
 from .coroutines import coroutine
 from .log import logger
 
diff --git a/Lib/test/test_asyncio/test_events.py b/Lib/test/test_asyncio/test_events.py
index a6e4ecf7958..c252a4c01e3 100644
--- a/Lib/test/test_asyncio/test_events.py
+++ b/Lib/test/test_asyncio/test_events.py
@@ -2141,7 +2141,7 @@ def test_create_datagram_endpoint(self):
         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):
diff --git a/Lib/test/test_asyncio/test_selector_events.py b/Lib/test/test_asyncio/test_selector_events.py
index 7db943e8009..616eb6f2630 100644
--- a/Lib/test/test_asyncio/test_selector_events.py
+++ b/Lib/test/test_asyncio/test_selector_events.py
@@ -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 @@
     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
diff --git a/Lib/test/test_asyncio/test_windows_events.py b/Lib/test/test_asyncio/test_windows_events.py
index b70c0b7ebb8..5fdf5ff5e44 100644
--- a/Lib/test/test_asyncio/test_windows_events.py
+++ b/Lib/test/test_asyncio/test_windows_events.py
@@ -7,10 +7,10 @@
 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
 
diff --git a/Lib/test/test_asyncio/test_windows_utils.py b/Lib/test/test_asyncio/test_windows_utils.py
index d48b8bcbb08..4fddaa25895 100644
--- a/Lib/test/test_asyncio/test_windows_utils.py
+++ b/Lib/test/test_asyncio/test_windows_utils.py
@@ -9,9 +9,9 @@
 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



More information about the Python-checkins mailing list