summaryrefslogtreecommitdiffstats
path: root/Lib/collections/__init__.py
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2020-02-18 15:28:53 (GMT)
committerGitHub <noreply@github.com>2020-02-18 15:28:53 (GMT)
commitaf5ee3ff610377ef446c2d88bbfcbb3dffaaf0c9 (patch)
tree7ff1bebfb610a10bd5ab888b012aa3e58686fc4f /Lib/collections/__init__.py
parent6e35da976370e7c2e028165c65d7d7d42772a71f (diff)
downloadcpython-af5ee3ff610377ef446c2d88bbfcbb3dffaaf0c9.zip
cpython-af5ee3ff610377ef446c2d88bbfcbb3dffaaf0c9.tar.gz
cpython-af5ee3ff610377ef446c2d88bbfcbb3dffaaf0c9.tar.bz2
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/__init__.py')
-rw-r--r--Lib/collections/__init__.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/Lib/collections/__init__.py b/Lib/collections/__init__.py
index cec6c97..178cdb1 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
################################################################################