Skip to content

Commit d275111

Browse files
committed
Create 'localize_metadata' function to normalize the outputs for .metadata.
1 parent ce6a8d2 commit d275111

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

importlib_metadata/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
NullFinder,
3535
install,
3636
localize_dist,
37+
localize_metadata,
3738
)
3839
from ._functools import apply, method_cache, pass_none
3940
from ._itertools import always_iterable, bucket, unique_everseen
@@ -477,6 +478,7 @@ def _discover_resolvers():
477478
return filter(None, declared)
478479

479480
@property
481+
@apply(localize_metadata)
480482
def metadata(self) -> _meta.PackageMetadata:
481483
"""Return the parsed metadata for this Distribution.
482484

importlib_metadata/_compat.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
from __future__ import annotations
22

3+
import email.message
34
import importlib.metadata
45
import platform
56
import sys
67
import warnings
78
from typing import cast
89

9-
import importlib_metadata
10+
import importlib_metadata._adapters
1011

1112

1213
__all__ = ['install', 'NullFinder']
@@ -76,3 +77,17 @@ def localize_dist(
7677
return importlib_metadata.PathDistribution(dist._path)
7778
warnings.warn(f"Unrecognized distribution subclass {dist.__class__}")
7879
return cast(importlib_metadata.Distribution, dist)
80+
81+
82+
if sys.version_info >= (3, 10):
83+
StdlibMessage = importlib.metadata._adapters.Message
84+
else:
85+
StdlibMessage = email.message.Message
86+
87+
88+
def localize_metadata(
89+
input: importlib_metadata._adapters.Message | StdlibMessage,
90+
) -> importlib_metadata.Message:
91+
if isinstance(input, importlib_metadata._adapters.Message):
92+
return input
93+
return importlib_metadata._adapters.Message(input)

0 commit comments

Comments
 (0)