diff --git a/Doc/library/collections.abc.rst b/Doc/library/collections.abc.rst index 06dfe806ea4845..09fa4c7824cb34 100644 --- a/Doc/library/collections.abc.rst +++ b/Doc/library/collections.abc.rst @@ -15,7 +15,7 @@ import itertools __name__ = '' -**Source code:** :source:`Lib/collections/abc.py` +**Source code:** :source:`Lib/_collections_abc.py` -------------- diff --git a/Lib/collections/abc.py b/Lib/_collections_abc.py similarity index 100% rename from Lib/collections/abc.py rename to Lib/_collections_abc.py diff --git a/Lib/collections/__init__.py b/Lib/collections/__init__.py index 0f19f30b4b2f39..02bdc57c9feeee 100644 --- a/Lib/collections/__init__.py +++ b/Lib/collections/__init__.py @@ -3,9 +3,9 @@ # For backwards compatibility, continue to make the collections ABCs # available through the collections module. -from collections.abc import * -import collections.abc -__all__ += collections.abc.__all__ +from _collections_abc import * +import _collections_abc +__all__ += _collections_abc.__all__ from _collections import deque, defaultdict from operator import itemgetter as _itemgetter, eq as _eq diff --git a/Lib/os.py b/Lib/os.py index 1b1ce181e7b757..e9880a1e4c7af9 100644 --- a/Lib/os.py +++ b/Lib/os.py @@ -631,7 +631,7 @@ def get_exec_path(env=None): # Change environ to automatically call putenv(), unsetenv if they exist. -from collections.abc import MutableMapping +from _collections_abc import MutableMapping class _Environ(MutableMapping): def __init__(self, data, encodekey, decodekey, encodevalue, decodevalue, putenv, unsetenv): diff --git a/Lib/random.py b/Lib/random.py index 4a9fbd10594f1b..808175ab4a100e 100644 --- a/Lib/random.py +++ b/Lib/random.py @@ -41,7 +41,7 @@ from math import log as _log, exp as _exp, pi as _pi, e as _e, ceil as _ceil from math import sqrt as _sqrt, acos as _acos, cos as _cos, sin as _sin from os import urandom as _urandom -from collections.abc import Set as _Set, Sequence as _Sequence +from _collections_abc import Set as _Set, Sequence as _Sequence from hashlib import sha512 as _sha512 __all__ = ["Random","seed","random","uniform","randint","choice","sample", diff --git a/Lib/test/test_site.py b/Lib/test/test_site.py index 20e18688de4488..3ada0a671c7692 100644 --- a/Lib/test/test_site.py +++ b/Lib/test/test_site.py @@ -445,6 +445,11 @@ def test_startup_imports(self): self.assertNotIn('locale', modules, stderr) # http://bugs.python.org/issue19209 self.assertNotIn('copyreg', modules, stderr) + # http://bugs.python.org/issue19218> + collection_mods = {'_collections', 'collections', 'functools', + 'heapq', 'itertools', 'keyword', 'operator', + 'reprlib', 'types', 'weakref'} + self.assertFalse(modules.intersection(re_mods), stderr) if __name__ == "__main__": diff --git a/Misc/NEWS b/Misc/NEWS index 68df3590dd03d3..ded3bb4dcc0e63 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -42,6 +42,9 @@ Core and Builtins Library ------- +- Issue #19218: Rename collections.abc to _collections_abc in order to + speed up interpreter start. + - Issue #18582: Add 'pbkdf2_hmac' to the hashlib module. It implements PKCS#5 password-based key derivation functions with HMAC as pseudorandom function.