diff options
author | robot-piglet <robot-piglet@yandex-team.com> | 2024-04-04 14:31:37 +0300 |
---|---|---|
committer | robot-piglet <robot-piglet@yandex-team.com> | 2024-04-04 14:41:27 +0300 |
commit | 8ca7961c8ff183dca63ff964f6142d24df5e03e8 (patch) | |
tree | a40fefbc0747d2a2e103dabdc392f6f13b628ab6 /contrib/python/importlib-metadata/py3/importlib_metadata/compat/py39.py | |
parent | def02a26e8270f5177fd53cfcf8ce445e26bf583 (diff) | |
download | ydb-8ca7961c8ff183dca63ff964f6142d24df5e03e8.tar.gz |
Intermediate changes
Diffstat (limited to 'contrib/python/importlib-metadata/py3/importlib_metadata/compat/py39.py')
-rw-r--r-- | contrib/python/importlib-metadata/py3/importlib_metadata/compat/py39.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/contrib/python/importlib-metadata/py3/importlib_metadata/compat/py39.py b/contrib/python/importlib-metadata/py3/importlib_metadata/compat/py39.py new file mode 100644 index 0000000000..1f15bd97e6 --- /dev/null +++ b/contrib/python/importlib-metadata/py3/importlib_metadata/compat/py39.py @@ -0,0 +1,36 @@ +""" +Compatibility layer with Python 3.8/3.9 +""" + +from typing import TYPE_CHECKING, Any, Optional + +if TYPE_CHECKING: # pragma: no cover + # Prevent circular imports on runtime. + from .. import Distribution, EntryPoint +else: + Distribution = EntryPoint = Any + + +def normalized_name(dist: Distribution) -> Optional[str]: + """ + Honor name normalization for distributions that don't provide ``_normalized_name``. + """ + try: + return dist._normalized_name + except AttributeError: + from .. import Prepared # -> delay to prevent circular imports. + + return Prepared.normalize(getattr(dist, "name", None) or dist.metadata['Name']) + + +def ep_matches(ep: EntryPoint, **params) -> bool: + """ + Workaround for ``EntryPoint`` objects without the ``matches`` method. + """ + try: + return ep.matches(**params) + except AttributeError: + from .. import EntryPoint # -> delay to prevent circular imports. + + # Reconstruct the EntryPoint object to make sure it is compatible. + return EntryPoint(ep.name, ep.value, ep.group).matches(**params) |