/usr/lib/imh-ultrastack-common/venv/lib/python3.13/site-packages/setuptools
NameSizeModeActions
command/-0755rm
compat/-0755rm
config/-0755rm
tests/-0755rm
_distutils/-0755rm
_vendor/-0755rm
__pycache__/-0755rm
archive_util.py73560644editdlrm
build_meta.py202340644editdlrm
cli-32.exe117760644editdlrm
cli-64.exe143360644editdlrm
cli-arm64.exe138240644editdlrm
cli.exe117760644editdlrm
depends.py59650644editdlrm
discovery.py212860644editdlrm
dist.py451840644editdlrm
errors.py30240644editdlrm
extension.py68180644editdlrm
glob.py60620644editdlrm
gui-32.exe117760644editdlrm
gui-64.exe143360644editdlrm
gui-arm64.exe138240644editdlrm
gui.exe117760644editdlrm
installer.py51840644editdlrm
launch.py8200644editdlrm
launcher manifest.xml6280644editdlrm
logging.py12610644editdlrm
modified.py5680644editdlrm
monkey.py37330644editdlrm
msvc.py429090644editdlrm
namespaces.py30450644editdlrm
script (dev).tmpl2180644editdlrm
script.tmpl1380644editdlrm
unicode_utils.py31890644editdlrm
version.py1610644editdlrm
warnings.py37960644editdlrm
wheel.py95320644editdlrm
windows_support.py7260644editdlrm
_core_metadata.py119780644editdlrm
_discovery.py8360644editdlrm
_entry_points.py24680644editdlrm
_imp.py24350644editdlrm
_importlib.py2230644editdlrm
_itertools.py6570644editdlrm
_normalization.py57980644editdlrm
_path.py29760644editdlrm
_reqs.py13800644editdlrm
_scripts.py112470644editdlrm
_shutil.py15780644editdlrm
_static.py48550644editdlrm
__init__.py95210644editdlrm
Edit: /usr/lib/imh-ultrastack-common/venv/lib/python3.13/site-packages/setuptools/_reqs.py (1380B)
from __future__ import annotations from collections.abc import Iterable, Iterator from functools import lru_cache from typing import TYPE_CHECKING, Callable, TypeVar, Union, overload import jaraco.text as text from packaging.requirements import Requirement if TYPE_CHECKING: from typing_extensions import TypeAlias _T = TypeVar("_T") _StrOrIter: TypeAlias = Union[str, Iterable[str]] parse_req: Callable[[str], Requirement] = lru_cache()(Requirement) # Setuptools parses the same requirement many times # (e.g. first for validation than for normalisation), # so it might be worth to cache. def parse_strings(strs: _StrOrIter) -> Iterator[str]: """ Yield requirement strings for each specification in `strs`. `strs` must be a string, or a (possibly-nested) iterable thereof. """ return text.join_continuation(map(text.drop_comment, text.yield_lines(strs))) # These overloads are only needed because of a mypy false-positive, pyright gets it right # https://github.com/python/mypy/issues/3737 @overload def parse(strs: _StrOrIter) -> Iterator[Requirement]: ... @overload def parse(strs: _StrOrIter, parser: Callable[[str], _T]) -> Iterator[_T]: ... def parse(strs: _StrOrIter, parser: Callable[[str], _T] = parse_req) -> Iterator[_T]: # type: ignore[assignment] """ Parse requirements. """ return map(parser, parse_strings(strs))