https://github.com/python/cpython/commit/7258dbc51803e27c1fec7b2a402e297187de3b95
commit: 7258dbc51803e27c1fec7b2a402e297187de3b95
branch: main
author: Raymond Hettinger <[email protected]>
committer: rhettinger <[email protected]>
date: 2026-02-21T08:14:53-06:00
summary:
Use `lazy` imports in `collections` (gh-145054)
files:
M Lib/collections/__init__.py
diff --git a/Lib/collections/__init__.py b/Lib/collections/__init__.py
index 55ffc36ea5b0c7..2eee4c70955513 100644
--- a/Lib/collections/__init__.py
+++ b/Lib/collections/__init__.py
@@ -32,6 +32,8 @@
_sys.modules['collections.abc'] = _collections_abc
abc = _collections_abc
+lazy from copy import copy as _copy
+lazy from heapq import nlargest as _nlargest
from itertools import chain as _chain
from itertools import repeat as _repeat
from itertools import starmap as _starmap
@@ -59,8 +61,6 @@
except ImportError:
pass
-heapq = None # Lazily imported
-
################################################################################
### OrderedDict
@@ -634,12 +634,7 @@ def most_common(self, n=None):
if n is None:
return sorted(self.items(), key=_itemgetter(1), reverse=True)
- # Lazy import to speedup Python startup time
- global heapq
- if heapq is None:
- import heapq
-
- return heapq.nlargest(n, self.items(), key=_itemgetter(1))
+ return _nlargest(n, self.items(), key=_itemgetter(1))
def elements(self):
'''Iterator over elements repeating each as many times as its count.
@@ -1249,11 +1244,10 @@ def __copy__(self):
def copy(self):
if self.__class__ is UserDict:
return UserDict(self.data.copy())
- import copy
data = self.data
try:
self.data = {}
- c = copy.copy(self)
+ c = _copy(self)
finally:
self.data = data
c.update(self)
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]