]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
GH-109653: Defer import of ``importlib.metadata._adapters`` (#109829)
authorAdam Turner <9087854+AA-Turner@users.noreply.github.com>
Thu, 21 Mar 2024 03:49:10 +0000 (03:49 +0000)
committerGitHub <noreply@github.com>
Thu, 21 Mar 2024 03:49:10 +0000 (03:49 +0000)
* adapters

* Add comments for deferred imports with links to rationale.

* Add blurb

---------

Co-authored-by: Jason R. Coombs <jaraco@jaraco.com>
Lib/importlib/metadata/__init__.py
Lib/importlib/resources/_common.py
Misc/NEWS.d/next/Library/2024-03-20-23-07-58.gh-issue-109653.uu3lrX.rst [new file with mode: 0644]

index c8e59cac44194d621af65649cf54b9794ca81600..245f905737cb15ebe41d56820db97009f44712e3 100644 (file)
@@ -18,7 +18,7 @@ import itertools
 import posixpath
 import collections
 
-from . import _adapters, _meta
+from . import _meta
 from ._collections import FreezableDefaultDict, Pair
 from ._functools import method_cache, pass_none
 from ._itertools import always_iterable, unique_everseen
@@ -456,6 +456,9 @@ class Distribution(DeprecatedNonAbstract):
         Custom providers may provide the METADATA file or override this
         property.
         """
+        # deferred for performance (python/cpython#109829)
+        from . import _adapters
+
         opt_text = (
             self.read_text('METADATA')
             or self.read_text('PKG-INFO')
index a3902535342612eff3ffdc7d14d96ac1cd5db4fa..e18082fb3d26a056f43804110a51df5a029f62f7 100644 (file)
@@ -12,8 +12,6 @@ import itertools
 from typing import Union, Optional, cast
 from .abc import ResourceReader, Traversable
 
-from ._adapters import wrap_spec
-
 Package = Union[types.ModuleType, str]
 Anchor = Package
 
@@ -109,6 +107,9 @@ def from_package(package: types.ModuleType):
     Return a Traversable object for the given package.
 
     """
+    # deferred for performance (python/cpython#109829)
+    from ._adapters import wrap_spec
+
     spec = wrap_spec(package)
     reader = spec.loader.get_resource_reader(spec.name)
     return reader.files()
diff --git a/Misc/NEWS.d/next/Library/2024-03-20-23-07-58.gh-issue-109653.uu3lrX.rst b/Misc/NEWS.d/next/Library/2024-03-20-23-07-58.gh-issue-109653.uu3lrX.rst
new file mode 100644 (file)
index 0000000..38d7634
--- /dev/null
@@ -0,0 +1,2 @@
+Deferred select imports in importlib.metadata and importlib.resources for a
+14% speedup.