diff options
author | Victor Stinner <vstinner@python.org> | 2020-02-18 16:28:53 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-18 16:28:53 +0100 |
commit | af5ee3ff610377ef446c2d88bbfcbb3dffaaf0c9 (patch) | |
tree | 7ff1bebfb610a10bd5ab888b012aa3e58686fc4f /Lib/collections | |
parent | bpo-37207: Use vectorcall for range() (GH-18464) (diff) | |
download | cpython-af5ee3ff610377ef446c2d88bbfcbb3dffaaf0c9.tar.gz cpython-af5ee3ff610377ef446c2d88bbfcbb3dffaaf0c9.tar.bz2 cpython-af5ee3ff610377ef446c2d88bbfcbb3dffaaf0c9.zip |
bpo-39674: Revert "bpo-25988: Do not expose abstract collection classes in the collections module. (GH-10596)" (GH-18545)
This reverts commit ef092fe9905f61ca27889092ca1248a11aa74498.
Update collections __getattr__() and documentation to defer aliases
removal to Python 3.10.
Diffstat (limited to 'Lib/collections')
-rw-r--r-- | Lib/collections/__init__.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/Lib/collections/__init__.py b/Lib/collections/__init__.py index cec6c9781a1..178cdb1fa5b 100644 --- a/Lib/collections/__init__.py +++ b/Lib/collections/__init__.py @@ -39,6 +39,21 @@ 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.10 it will stop working", + DeprecationWarning, stacklevel=2) + globals()[name] = obj + return obj + raise AttributeError(f'module {__name__!r} has no attribute {name!r}') + ################################################################################ ### OrderedDict ################################################################################ |