Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/importlib_metadata/_py39compat.py: 29%
14 statements
« prev ^ index » next coverage.py v7.0.1, created at 2022-12-25 06:11 +0000
« prev ^ index » next coverage.py v7.0.1, created at 2022-12-25 06:11 +0000
1"""
2Compatibility layer with Python 3.8/3.9
3"""
4from typing import TYPE_CHECKING, Any, Optional
6if TYPE_CHECKING: # pragma: no cover
7 # Prevent circular imports on runtime.
8 from . import Distribution, EntryPoint
9else:
10 Distribution = EntryPoint = Any
13def normalized_name(dist: Distribution) -> Optional[str]:
14 """
15 Honor name normalization for distributions that don't provide ``_normalized_name``.
16 """
17 try:
18 return dist._normalized_name
19 except AttributeError:
20 from . import Prepared # -> delay to prevent circular imports.
22 return Prepared.normalize(getattr(dist, "name", None) or dist.metadata['Name'])
25def ep_matches(ep: EntryPoint, **params) -> bool:
26 """
27 Workaround for ``EntryPoint`` objects without the ``matches`` method.
28 """
29 try:
30 return ep.matches(**params)
31 except AttributeError:
32 from . import EntryPoint # -> delay to prevent circular imports.
34 # Reconstruct the EntryPoint object to make sure it is compatible.
35 return EntryPoint(ep.name, ep.value, ep.group).matches(**params)