diff options
author | maxim-yurchuk <maxim-yurchuk@yandex-team.com> | 2024-10-09 12:29:46 +0300 |
---|---|---|
committer | maxim-yurchuk <maxim-yurchuk@yandex-team.com> | 2024-10-09 13:14:22 +0300 |
commit | 9731d8a4bb7ee2cc8554eaf133bb85498a4c7d80 (patch) | |
tree | a8fb3181d5947c0d78cf402aa56e686130179049 /contrib/python/importlib-metadata | |
parent | a44b779cd359f06c3ebbef4ec98c6b38609d9d85 (diff) | |
download | ydb-9731d8a4bb7ee2cc8554eaf133bb85498a4c7d80.tar.gz |
publishFullContrib: true for ydb
<HIDDEN_URL>
commit_hash:c82a80ac4594723cebf2c7387dec9c60217f603e
Diffstat (limited to 'contrib/python/importlib-metadata')
5 files changed, 271 insertions, 0 deletions
diff --git a/contrib/python/importlib-metadata/py2/.yandex_meta/yamaker.yaml b/contrib/python/importlib-metadata/py2/.yandex_meta/yamaker.yaml new file mode 100644 index 0000000000..b7b7b7e703 --- /dev/null +++ b/contrib/python/importlib-metadata/py2/.yandex_meta/yamaker.yaml @@ -0,0 +1,2 @@ +requirements: + - library/python/resource diff --git a/contrib/python/importlib-metadata/py2/patches/01-add-arcadia-support.patch b/contrib/python/importlib-metadata/py2/patches/01-add-arcadia-support.patch new file mode 100644 index 0000000000..6fd93b08c5 --- /dev/null +++ b/contrib/python/importlib-metadata/py2/patches/01-add-arcadia-support.patch @@ -0,0 +1,93 @@ +--- contrib/python/importlib-metadata/py2/.dist-info/METADATA (index) ++++ contrib/python/importlib-metadata/py2/.dist-info/METADATA (working tree) +@@ -15,7 +15,6 @@ Classifier: Topic :: Software Development :: Libraries + Classifier: Programming Language :: Python :: 2 + Requires-Python: !=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7 + License-File: LICENSE +-Requires-Dist: zipp (>=0.5) + Requires-Dist: pathlib2 ; python_version < "3" + Requires-Dist: contextlib2 ; python_version < "3" + Requires-Dist: configparser (>=3.5) ; python_version < "3" +--- contrib/python/importlib-metadata/py2/importlib_metadata/__init__.py (index) ++++ contrib/python/importlib-metadata/py2/importlib_metadata/__init__.py (working tree) +@@ -6,7 +6,6 @@ import re + import abc + import csv + import sys +-import zipp + import operator + import functools + import itertools +@@ -525,7 +525,7 @@ class Prepared: + and base.endswith('.egg')) + + +-@install ++#@install + class MetadataPathFinder(NullFinder, DistributionFinder): + """A degenerate finder for distribution packages on the file system. + +@@ -573,6 +572,63 @@ class PathDistribution(Distribution): + return self._path.parent / path + + ++class ArcadiaDistribution(Distribution): ++ ++ def __init__(self, prefix): ++ self.prefix = prefix ++ ++ def read_text(self, filename): ++ from library.python.resource import resfs_read ++ data = resfs_read('{}{}'.format(self.prefix, filename)) ++ if data: ++ return data.decode('utf-8') ++ read_text.__doc__ = Distribution.read_text.__doc__ ++ ++ def locate_file(self, path): ++ return '{}{}'.format(self.prefix, path) ++ ++ ++@install ++class ArcadiaMetadataFinder(NullFinder, DistributionFinder): ++ ++ prefixes = {} ++ ++ @classmethod ++ def find_distributions(cls, context=DistributionFinder.Context()): ++ found = cls._search_prefixes(context.name) ++ return map(ArcadiaDistribution, found) ++ ++ @classmethod ++ def _init_prefixes(cls): ++ from library.python.resource import resfs_read, resfs_files ++ cls.prefixes.clear() ++ ++ METADATA_NAME = re.compile('^Name: (.*)$', re.MULTILINE) ++ ++ for resource in resfs_files(): ++ if not resource.endswith('METADATA'): ++ continue ++ data = resfs_read(resource).decode('utf-8') ++ metadata_name = METADATA_NAME.search(data) ++ if metadata_name: ++ metadata_name = Prepared(metadata_name.group(1)) ++ cls.prefixes[metadata_name.normalized] = resource[:-len('METADATA')] ++ ++ @classmethod ++ def _search_prefixes(cls, name): ++ if not cls.prefixes: ++ cls._init_prefixes() ++ ++ if name: ++ try: ++ yield cls.prefixes[Prepared(name).normalized] ++ except KeyError: ++ raise PackageNotFoundError(name) ++ else: ++ for prefix in sorted(cls.prefixes.values()): ++ yield prefix ++ ++ + def distribution(distribution_name): + """Get the ``Distribution`` instance for the named package. + diff --git a/contrib/python/importlib-metadata/py2/patches/02-fix-for-support-system-python.patch b/contrib/python/importlib-metadata/py2/patches/02-fix-for-support-system-python.patch new file mode 100644 index 0000000000..b45958358c --- /dev/null +++ b/contrib/python/importlib-metadata/py2/patches/02-fix-for-support-system-python.patch @@ -0,0 +1,59 @@ +--- contrib/python/importlib-metadata/py2/importlib_metadata/__init__.py (index) ++++ contrib/python/importlib-metadata/py2/importlib_metadata/__init__.py (working tree) +@@ -33,6 +33,11 @@ from ._compat import ( + from importlib import import_module + from itertools import starmap + ++try: ++ import library.python.resource ++ ARCADIA = True ++except ImportError: ++ ARCADIA = False + + __metaclass__ = type + +@@ -524,7 +529,7 @@ class Prepared: + and base.endswith('.egg')) + + +-#@install ++@install(ARCADIA == False) + class MetadataPathFinder(NullFinder, DistributionFinder): + """A degenerate finder for distribution packages on the file system. + +@@ -588,7 +593,7 @@ class ArcadiaDistribution(Distribution): + return '{}{}'.format(self.prefix, path) + + +-@install ++@install(ARCADIA == True) + class ArcadiaMetadataFinder(NullFinder, DistributionFinder): + + prefixes = {} +--- contrib/python/importlib-metadata/py2/importlib_metadata/_compat.py (index) ++++ contrib/python/importlib-metadata/py2/importlib_metadata/_compat.py (working tree) +@@ -56,7 +56,7 @@ __all__ = [ + ] + + +-def install(cls): ++def install(flag): + """ + Class decorator for installation on sys.meta_path. + +@@ -64,9 +64,12 @@ def install(cls): + attempts to disable the finder functionality of the stdlib + DistributionFinder. + """ +- sys.meta_path.append(cls()) +- disable_stdlib_finder() +- return cls ++ def dec_install(cls): ++ if flag: ++ sys.meta_path.append(cls()) ++ disable_stdlib_finder() ++ return cls ++ return dec_install + + + def disable_stdlib_finder(): diff --git a/contrib/python/importlib-metadata/py3/patches/01-add-arcadia-support.patch b/contrib/python/importlib-metadata/py3/patches/01-add-arcadia-support.patch new file mode 100644 index 0000000000..33e804574e --- /dev/null +++ b/contrib/python/importlib-metadata/py3/patches/01-add-arcadia-support.patch @@ -0,0 +1,66 @@ +--- contrib/python/importlib-metadata/py3/.dist-info/METADATA (index) ++++ contrib/python/importlib-metadata/py3/.dist-info/METADATA (working tree) +@@ -15,1 +15,0 @@ Classifier: License :: OSI Approved :: Apache Software License +-Requires-Dist: zipp >=3.20 +--- contrib/python/importlib-metadata/py3/importlib_metadata/__init__.py (index) ++++ contrib/python/importlib-metadata/py3/importlib_metadata/__init__.py (working tree) +@@ -796,6 +795,59 @@ class PathDistribution(Distribution): + return name + + ++class ArcadiaDistribution(Distribution): ++ def __init__(self, prefix): ++ self._prefix = prefix ++ self._path = pathlib.Path(prefix) ++ ++ def read_text(self, filename): ++ data = res.resfs_read(f"{self._prefix}{filename}") ++ if data is not None: ++ return data.decode("utf-8") ++ ++ read_text.__doc__ = Distribution.read_text.__doc__ ++ ++ def locate_file(self, path): ++ return self._path.parent / path ++ ++ ++@install ++class MetadataArcadiaFinder(DistributionFinder): ++ METADATA_NAME = re.compile("^Name: (.*)$", re.MULTILINE) ++ prefixes = {} ++ ++ @classmethod ++ def find_distributions(cls, context=DistributionFinder.Context()): ++ found = cls._search_prefixes(context.name) ++ return map(ArcadiaDistribution, found) ++ ++ @classmethod ++ def _init_prefixes(cls): ++ cls.prefixes.clear() ++ ++ for resource in res.resfs_files(): ++ resource = resource.decode("utf-8") ++ if not resource.endswith("METADATA"): ++ continue ++ data = res.resfs_read(resource).decode("utf-8") ++ metadata_name = cls.METADATA_NAME.search(data) ++ if metadata_name: ++ cls.prefixes[Prepared(metadata_name.group(1)).normalized] = resource.removesuffix("METADATA") ++ ++ @classmethod ++ def _search_prefixes(cls, name): ++ if not cls.prefixes: ++ cls._init_prefixes() ++ ++ if name: ++ try: ++ yield cls.prefixes[Prepared(name).normalized] ++ except KeyError: ++ pass ++ else: ++ yield from sorted(cls.prefixes.values()) ++ ++ + def distribution(distribution_name: str) -> Distribution: + """Get the ``Distribution`` instance for the named package. + diff --git a/contrib/python/importlib-metadata/py3/patches/02-fix-for-support-system-python.patch b/contrib/python/importlib-metadata/py3/patches/02-fix-for-support-system-python.patch new file mode 100644 index 0000000000..0babc06099 --- /dev/null +++ b/contrib/python/importlib-metadata/py3/patches/02-fix-for-support-system-python.patch @@ -0,0 +1,51 @@ +--- contrib/python/importlib-metadata/py3/importlib_metadata/__init__.py (index) ++++ contrib/python/importlib-metadata/py3/importlib_metadata/__init__.py (working tree) +@@ -31,4 +31,10 @@ from importlib.abc import MetaPathFinder + from typing import List, Mapping, Optional + ++try: ++ import __res as res ++ ARCADIA = True ++except ImportError: ++ ARCADIA = False ++ + + __all__ = [ +@@ -712,3 +718,3 @@ class Prepared: + +-@install ++@install(ARCADIA == False) + class MetadataPathFinder(NullFinder, DistributionFinder): +@@ -813,3 +819,3 @@ class ArcadiaDistribution(Distribution): + +-@install ++@install(ARCADIA == True) + class ArcadiaMetadataFinder(NullFinder, DistributionFinder): +--- contrib/python/importlib-metadata/py3/importlib_metadata/_compat.py (index) ++++ contrib/python/importlib-metadata/py3/importlib_metadata/_compat.py (working tree) +@@ -15,11 +15,14 @@ except ImportError: # pragma: no cover +-def install(cls): +- """ +- Class decorator for installation on sys.meta_path. +- +- Adds the backport DistributionFinder to sys.meta_path and +- attempts to disable the finder functionality of the stdlib +- DistributionFinder. +- """ +- sys.meta_path.append(cls()) +- disable_stdlib_finder() +- return cls ++def install(flag): ++ def dec_install(cls): ++ """ ++ Class decorator for installation on sys.meta_path. ++ ++ Adds the backport DistributionFinder to sys.meta_path and ++ attempts to disable the finder functionality of the stdlib ++ DistributionFinder. ++ """ ++ if flag: ++ sys.meta_path.append(cls()) ++ disable_stdlib_finder() ++ return cls ++ return dec_install |