[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