Skip to content

Commit

Permalink
Create 'localize_metadata' function to normalize the outputs for .met…
Browse files Browse the repository at this point in the history
…adata.
  • Loading branch information
jaraco committed Sep 11, 2024
1 parent ce6a8d2 commit d275111
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
2 changes: 2 additions & 0 deletions importlib_metadata/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
NullFinder,
install,
localize_dist,
localize_metadata,
)
from ._functools import apply, method_cache, pass_none
from ._itertools import always_iterable, bucket, unique_everseen
Expand Down Expand Up @@ -477,6 +478,7 @@ def _discover_resolvers():
return filter(None, declared)

@property
@apply(localize_metadata)
def metadata(self) -> _meta.PackageMetadata:
"""Return the parsed metadata for this Distribution.
Expand Down
17 changes: 16 additions & 1 deletion importlib_metadata/_compat.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
from __future__ import annotations

import email.message
import importlib.metadata
import platform
import sys
import warnings
from typing import cast

import importlib_metadata
import importlib_metadata._adapters


__all__ = ['install', 'NullFinder']
Expand Down Expand Up @@ -76,3 +77,17 @@ def localize_dist(
return importlib_metadata.PathDistribution(dist._path)
warnings.warn(f"Unrecognized distribution subclass {dist.__class__}")
return cast(importlib_metadata.Distribution, dist)


if sys.version_info >= (3, 10):
StdlibMessage = importlib.metadata._adapters.Message
else:
StdlibMessage = email.message.Message


def localize_metadata(
input: importlib_metadata._adapters.Message | StdlibMessage,
) -> importlib_metadata.Message:
if isinstance(input, importlib_metadata._adapters.Message):
return input
return importlib_metadata._adapters.Message(input)

0 comments on commit d275111

Please sign in to comment.