Skip to content

Commit 6547330

Browse files
AA-Turnerjaraco
andauthored
GH-109653: Defer import of importlib.metadata._adapters (#109829)
* adapters * Add comments for deferred imports with links to rationale. * Add blurb --------- Co-authored-by: Jason R. Coombs <[email protected]>
1 parent 667294d commit 6547330

File tree

3 files changed

+9
-3
lines changed

3 files changed

+9
-3
lines changed

Lib/importlib/metadata/__init__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import posixpath
1919
import collections
2020

21-
from . import _adapters, _meta
21+
from . import _meta
2222
from ._collections import FreezableDefaultDict, Pair
2323
from ._functools import method_cache, pass_none
2424
from ._itertools import always_iterable, unique_everseen
@@ -456,6 +456,9 @@ def metadata(self) -> _meta.PackageMetadata:
456456
Custom providers may provide the METADATA file or override this
457457
property.
458458
"""
459+
# deferred for performance (python/cpython#109829)
460+
from . import _adapters
461+
459462
opt_text = (
460463
self.read_text('METADATA')
461464
or self.read_text('PKG-INFO')

Lib/importlib/resources/_common.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212
from typing import Union, Optional, cast
1313
from .abc import ResourceReader, Traversable
1414

15-
from ._adapters import wrap_spec
16-
1715
Package = Union[types.ModuleType, str]
1816
Anchor = Package
1917

@@ -109,6 +107,9 @@ def from_package(package: types.ModuleType):
109107
Return a Traversable object for the given package.
110108
111109
"""
110+
# deferred for performance (python/cpython#109829)
111+
from ._adapters import wrap_spec
112+
112113
spec = wrap_spec(package)
113114
reader = spec.loader.get_resource_reader(spec.name)
114115
return reader.files()
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Deferred select imports in importlib.metadata and importlib.resources for a
2+
14% speedup.

0 commit comments

Comments
 (0)