summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaymond Hettinger <rhettinger@users.noreply.github.com>2018-01-29 16:27:49 (GMT)
committerGitHub <noreply@github.com>2018-01-29 16:27:49 (GMT)
commite6d342156d2ab20fb88c0a5ec615fa8f602c0769 (patch)
treed5d14dc05f25c556bbad4c9f9c5d551b7ea95570
parent4f4ef0acbad81f4b05f370e8ff14ddf949773291 (diff)
downloadcpython-e6d342156d2ab20fb88c0a5ec615fa8f602c0769.zip
cpython-e6d342156d2ab20fb88c0a5ec615fa8f602c0769.tar.gz
cpython-e6d342156d2ab20fb88c0a5ec615fa8f602c0769.tar.bz2
bpo-25988: Deprecate exposing collections.abc in collections GH-5414
-rw-r--r--Doc/library/collections.rst4
-rw-r--r--Doc/whatsnew/3.7.rst5
-rw-r--r--Lib/collections/__init__.py10
-rw-r--r--Misc/NEWS.d/next/Library/2018-01-28-23-48-45.bpo-25988.I9uBct.rst2
4 files changed, 16 insertions, 5 deletions
diff --git a/Doc/library/collections.rst b/Doc/library/collections.rst
index 18aaba65..772ff60 100644
--- a/Doc/library/collections.rst
+++ b/Doc/library/collections.rst
@@ -35,8 +35,8 @@ Python's general purpose built-in containers, :class:`dict`, :class:`list`,
.. versionchanged:: 3.3
Moved :ref:`collections-abstract-base-classes` to the :mod:`collections.abc` module.
- For backwards compatibility, they continue to be visible in this module
- as well.
+ For backwards compatibility, they continue to be visible in this module through
+ Python 3.7. Subsequently, they will be removed entirely.
:class:`ChainMap` objects
diff --git a/Doc/whatsnew/3.7.rst b/Doc/whatsnew/3.7.rst
index e36e505..71070df 100644
--- a/Doc/whatsnew/3.7.rst
+++ b/Doc/whatsnew/3.7.rst
@@ -880,6 +880,11 @@ Other CPython Implementation Changes
Deprecated
==========
+* In Python 3.8, the abstract base classes in :mod:`collections.abc` will no
+ longer be exposed in the regular :mod:`collections` module. This will help
+ create a clearer distinction between the concrete classes and the abstract
+ base classes.
+
* Yield expressions (both ``yield`` and ``yield from`` clauses) are now deprecated
in comprehensions and generator expressions (aside from the iterable expression
in the leftmost :keyword:`for` clause). This ensures that comprehensions
diff --git a/Lib/collections/__init__.py b/Lib/collections/__init__.py
index 21d91fd..8aeee35 100644
--- a/Lib/collections/__init__.py
+++ b/Lib/collections/__init__.py
@@ -18,10 +18,14 @@ __all__ = ['deque', 'defaultdict', 'namedtuple', 'UserDict', 'UserList',
'UserString', 'Counter', 'OrderedDict', 'ChainMap']
# For backwards compatibility, continue to make the collections ABCs
-# available through the collections module.
-from _collections_abc import *
+# through Python 3.6 available through the collections module.
+# Note, no new collections ABCs were added in Python 3.7
import _collections_abc
-__all__ += _collections_abc.__all__
+from _collections_abc import (AsyncGenerator, AsyncIterable, AsyncIterator,
+ Awaitable, ByteString, Callable, Collection, Container, Coroutine,
+ Generator, Hashable, ItemsView, Iterable, Iterator, KeysView, Mapping,
+ MappingView, MutableMapping, MutableSequence, MutableSet, Reversible,
+ Sequence, Set, Sized, ValuesView)
from operator import itemgetter as _itemgetter, eq as _eq
from keyword import iskeyword as _iskeyword
diff --git a/Misc/NEWS.d/next/Library/2018-01-28-23-48-45.bpo-25988.I9uBct.rst b/Misc/NEWS.d/next/Library/2018-01-28-23-48-45.bpo-25988.I9uBct.rst
new file mode 100644
index 0000000..df35077
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2018-01-28-23-48-45.bpo-25988.I9uBct.rst
@@ -0,0 +1,2 @@
+Deprecate exposing the contents of collections.abc in the regular
+collections module.