aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/importlib-metadata/py3/importlib_metadata/compat/py39.py
diff options
context:
space:
mode:
authorrobot-piglet <robot-piglet@yandex-team.com>2024-04-04 14:31:37 +0300
committerrobot-piglet <robot-piglet@yandex-team.com>2024-04-04 14:41:27 +0300
commit8ca7961c8ff183dca63ff964f6142d24df5e03e8 (patch)
treea40fefbc0747d2a2e103dabdc392f6f13b628ab6 /contrib/python/importlib-metadata/py3/importlib_metadata/compat/py39.py
parentdef02a26e8270f5177fd53cfcf8ce445e26bf583 (diff)
downloadydb-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.py36
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)