Skip to content

Commit 058ef1b

Browse files
committed
Extract localize functions into their own module.
1 parent 430626f commit 058ef1b

File tree

3 files changed

+50
-52
lines changed

3 files changed

+50
-52
lines changed

importlib_metadata/__init__.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,7 @@
3333
from ._compat import (
3434
NullFinder,
3535
install,
36-
localize_dist,
37-
localize_metadata,
38-
localize_package_path,
36+
localize,
3937
)
4038
from ._functools import apply, compose, method_cache, pass_none
4139
from ._itertools import always_iterable, bucket, unique_everseen
@@ -412,7 +410,7 @@ def locate_file(self, path: str | os.PathLike[str]) -> SimplePath:
412410
"""
413411

414412
@classmethod
415-
@apply(localize_dist)
413+
@apply(localize.dist)
416414
def from_name(cls, name: str) -> Distribution:
417415
"""Return the Distribution for the given package name.
418416
@@ -431,7 +429,7 @@ def from_name(cls, name: str) -> Distribution:
431429
raise PackageNotFoundError(name)
432430

433431
@classmethod
434-
@apply(functools.partial(map, localize_dist))
432+
@apply(functools.partial(map, localize.dist))
435433
def discover(
436434
cls, *, context: Optional[DistributionFinder.Context] = None, **kwargs
437435
) -> Iterable[Distribution]:
@@ -479,7 +477,7 @@ def _discover_resolvers():
479477
return filter(None, declared)
480478

481479
@property
482-
@apply(localize_metadata)
480+
@apply(localize.metadata)
483481
def metadata(self) -> _meta.PackageMetadata:
484482
"""Return the parsed metadata for this Distribution.
485483
@@ -530,7 +528,7 @@ def entry_points(self) -> EntryPoints:
530528
return EntryPoints._from_text_for(self.read_text('entry_points.txt'), self)
531529

532530
@property
533-
@apply(pass_none(compose(list, functools.partial(map, localize_package_path))))
531+
@apply(pass_none(compose(list, functools.partial(map, localize.package_path))))
534532
def files(self) -> Optional[List[PackagePath]]:
535533
"""Files in this distribution.
536534

importlib_metadata/_compat/__init__.py

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,5 @@
1-
from __future__ import annotations
2-
3-
import email.message
4-
import importlib.metadata
51
import platform
62
import sys
7-
import warnings
8-
from typing import cast
9-
10-
import importlib_metadata._adapters
113

124

135
__all__ = ['install', 'NullFinder']
@@ -63,40 +55,3 @@ def pypy_partial(val):
6355
"""
6456
is_pypy = platform.python_implementation() == 'PyPy'
6557
return val + is_pypy
66-
67-
68-
def localize_dist(
69-
dist: importlib_metadata.Distribution | importlib.metadata.Distribution,
70-
) -> importlib_metadata.Distribution:
71-
"""
72-
Ensure dist is an :class:`importlib_metadata.Distribution`.
73-
"""
74-
if isinstance(dist, importlib_metadata.Distribution):
75-
return dist
76-
if isinstance(dist, importlib.metadata.PathDistribution):
77-
return importlib_metadata.PathDistribution(
78-
cast(importlib_metadata._meta.SimplePath, dist._path)
79-
)
80-
# workaround for when pytest has replaced importlib_metadata
81-
# https://github.com/python/importlib_metadata/pull/505#issuecomment-2344329001
82-
if dist.__class__.__module__ != 'importlib_metadata':
83-
warnings.warn(f"Unrecognized distribution subclass {dist.__class__}")
84-
return cast(importlib_metadata.Distribution, dist)
85-
86-
87-
def localize_metadata(
88-
input: importlib_metadata._adapters.Message | email.message.Message,
89-
) -> importlib_metadata._adapters.Message:
90-
if isinstance(input, importlib_metadata._adapters.Message):
91-
return input
92-
return importlib_metadata._adapters.Message(input)
93-
94-
95-
def localize_package_path(
96-
input: importlib_metadata.PackagePath | importlib.metadata.PackagePath,
97-
) -> importlib_metadata.PackagePath:
98-
if isinstance(input, importlib_metadata.PackagePath):
99-
return input
100-
replacement = importlib_metadata.PackagePath(input)
101-
vars(replacement).update(vars(input))
102-
return replacement
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
from __future__ import annotations
2+
3+
import email.message
4+
import importlib.metadata
5+
import warnings
6+
from typing import cast
7+
8+
import importlib_metadata._adapters
9+
10+
11+
def dist(
12+
dist: importlib_metadata.Distribution | importlib.metadata.Distribution,
13+
) -> importlib_metadata.Distribution:
14+
"""
15+
Ensure dist is an :class:`importlib_metadata.Distribution`.
16+
"""
17+
if isinstance(dist, importlib_metadata.Distribution):
18+
return dist
19+
if isinstance(dist, importlib.metadata.PathDistribution):
20+
return importlib_metadata.PathDistribution(
21+
cast(importlib_metadata._meta.SimplePath, dist._path)
22+
)
23+
# workaround for when pytest has replaced importlib_metadata
24+
# https://github.com/python/importlib_metadata/pull/505#issuecomment-2344329001
25+
if dist.__class__.__module__ != 'importlib_metadata':
26+
warnings.warn(f"Unrecognized distribution subclass {dist.__class__}")
27+
return cast(importlib_metadata.Distribution, dist)
28+
29+
30+
def metadata(
31+
input: importlib_metadata._adapters.Message | email.message.Message,
32+
) -> importlib_metadata._adapters.Message:
33+
if isinstance(input, importlib_metadata._adapters.Message):
34+
return input
35+
return importlib_metadata._adapters.Message(input)
36+
37+
38+
def package_path(
39+
input: importlib_metadata.PackagePath | importlib.metadata.PackagePath,
40+
) -> importlib_metadata.PackagePath:
41+
if isinstance(input, importlib_metadata.PackagePath):
42+
return input
43+
replacement = importlib_metadata.PackagePath(input)
44+
vars(replacement).update(vars(input))
45+
return replacement

0 commit comments

Comments
 (0)