From ef092fe9905f61ca27889092ca1248a11aa74498 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Mon, 7 Oct 2019 12:10:15 +0300 Subject: [PATCH] bpo-25988: Do not expose abstract collection classes in the collections module. (GH-10596) --- Doc/whatsnew/3.9.rst | 5 +++++ Lib/collections/__init__.py | 15 --------------- .../2018-11-19-10-23-58.bpo-25988.6o7gGK.rst | 2 ++ 3 files changed, 7 insertions(+), 15 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2018-11-19-10-23-58.bpo-25988.6o7gGK.rst diff --git a/Doc/whatsnew/3.9.rst b/Doc/whatsnew/3.9.rst index 690b536fd88..9f2a659a9dc 100644 --- a/Doc/whatsnew/3.9.rst +++ b/Doc/whatsnew/3.9.rst @@ -195,6 +195,11 @@ Deprecated Removed ======= +* The abstract base classes in :mod:`collections.abc` no longer are + exposed in the regular :mod:`collections` module. This will help + create a clearer distinction between the concrete classes and the abstract + base classes. + * The undocumented ``sys.callstats()`` function has been removed. Since Python 3.7, it was deprecated and always returned :const:`None`. It required a special build option ``CALL_PROFILE`` which was already removed in Python 3.7. diff --git a/Lib/collections/__init__.py b/Lib/collections/__init__.py index 859b8460e48..2fc71e2991a 100644 --- a/Lib/collections/__init__.py +++ b/Lib/collections/__init__.py @@ -39,21 +39,6 @@ except ImportError: pass -def __getattr__(name): - # For backwards compatibility, continue to make the collections ABCs - # through Python 3.6 available through the collections module. - # Note, no new collections ABCs were added in Python 3.7 - if name in _collections_abc.__all__: - obj = getattr(_collections_abc, name) - import warnings - warnings.warn("Using or importing the ABCs from 'collections' instead " - "of from 'collections.abc' is deprecated since Python 3.3, " - "and in 3.9 it will stop working", - DeprecationWarning, stacklevel=2) - globals()[name] = obj - return obj - raise AttributeError(f'module {__name__!r} has no attribute {name!r}') - ################################################################################ ### OrderedDict ################################################################################ diff --git a/Misc/NEWS.d/next/Library/2018-11-19-10-23-58.bpo-25988.6o7gGK.rst b/Misc/NEWS.d/next/Library/2018-11-19-10-23-58.bpo-25988.6o7gGK.rst new file mode 100644 index 00000000000..21d25e8d74c --- /dev/null +++ b/Misc/NEWS.d/next/Library/2018-11-19-10-23-58.bpo-25988.6o7gGK.rst @@ -0,0 +1,2 @@ +The abstract base classes in :mod:`collections.abc` no longer are exposed in +the regular :mod:`collections` module.