summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2017-11-28 14:19:56 (GMT)
committerGitHub <noreply@github.com>2017-11-28 14:19:56 (GMT)
commit4271dfd7815c05fd39b515c240050b3585bdfcd4 (patch)
tree5e75da00e258d1381d4ed12b6f934b436999eecc
parent3f438a9fa0aab5a598b4c94bbc24f9d0a23d012e (diff)
downloadcpython-4271dfd7815c05fd39b515c240050b3585bdfcd4.zip
cpython-4271dfd7815c05fd39b515c240050b3585bdfcd4.tar.gz
cpython-4271dfd7815c05fd39b515c240050b3585bdfcd4.tar.bz2
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.
-rw-r--r--Doc/whatsnew/3.7.rst5
-rw-r--r--Lib/asyncio/__init__.py15
-rw-r--r--Lib/asyncio/selector_events.py2
-rw-r--r--Lib/asyncio/test_utils.py2
-rw-r--r--Lib/asyncio/unix_events.py2
-rw-r--r--Lib/asyncio/windows_events.py2
-rw-r--r--Lib/test/test_asyncio/test_events.py2
-rw-r--r--Lib/test/test_asyncio/test_selector_events.py2
-rw-r--r--Lib/test/test_asyncio/test_windows_events.py2
-rw-r--r--Lib/test/test_asyncio/test_windows_utils.py2
10 files changed, 13 insertions, 23 deletions
diff --git a/Doc/whatsnew/3.7.rst b/Doc/whatsnew/3.7.rst
index 514c3c2..a67cbc1 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 011466b..1ee1b25 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 ef6f0ac..3639466 100644
--- a/Lib/asyncio/selector_events.py
+++ b/Lib/asyncio/selector_events.py
@@ -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
diff --git a/Lib/asyncio/test_utils.py b/Lib/asyncio/test_utils.py
index c3ddfe3..f797b2f 100644
--- a/Lib/asyncio/test_utils.py
+++ b/Lib/asyncio/test_utils.py
@@ -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
diff --git a/Lib/asyncio/unix_events.py b/Lib/asyncio/unix_events.py
index 94157f8..06bcdcc 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 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
diff --git a/Lib/asyncio/windows_events.py b/Lib/asyncio/windows_events.py
index 031e3f1..de41e64 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 proactor_events
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 a6e4ecf..c252a4c 100644
--- a/Lib/test/test_asyncio/test_events.py
+++ b/Lib/test/test_asyncio/test_events.py
@@ -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):
diff --git a/Lib/test/test_asyncio/test_selector_events.py b/Lib/test/test_asyncio/test_selector_events.py
index 7db943e..616eb6f 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 @@ 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
diff --git a/Lib/test/test_asyncio/test_windows_events.py b/Lib/test/test_asyncio/test_windows_events.py
index b70c0b7..5fdf5ff 100644
--- a/Lib/test/test_asyncio/test_windows_events.py
+++ b/Lib/test/test_asyncio/test_windows_events.py
@@ -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
diff --git a/Lib/test/test_asyncio/test_windows_utils.py b/Lib/test/test_asyncio/test_windows_utils.py
index d48b8bc..4fddaa2 100644
--- a/Lib/test/test_asyncio/test_windows_utils.py
+++ b/Lib/test/test_asyncio/test_windows_utils.py
@@ -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