U
ʗRe< @ s d dl Z d dlZd dlZd dlmZmZmZmZ d dlm Z m
Z
d dlmZ ede
ZeeZee
eedf eddd Ze jd
de
edd
dZe
edddZdS ) N)NewTypeOptionalTuplecast)
specifiersversionRequirementNormalizedExtra.)requires_pythonversion_inforeturnc C s4 | dkrdS t | }tdtt|}||kS )a
Check if the given Python version matches a "Requires-Python" specifier.
:param version_info: A 3-tuple of ints representing a Python
major-minor-micro version to check (e.g. `sys.version_info[:3]`).
:return: `True` if the given Python version satisfies the requirement.
Otherwise, return `False`.
:raises InvalidSpecifier: If `requires_python` has an invalid format.
NT.)r SpecifierSetr parsejoinmapstr)r r requires_python_specifierpython_version r /builddir/build/BUILDROOT/alt-python38-pip-22.2.1-2.el8.x86_64/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/utils/packaging.pycheck_requires_python s
r i )maxsize)
req_stringr
c C s t | S )z5Construct a packaging.Requirement object with cachingr )r r r r get_requirement% s r )extrar
c C s t ttdd| S )aD Convert an arbitrary string to a standard 'extra' name
Any runs of non-alphanumeric characters are replaced with a single '_',
and the result is always lowercased.
This function is duplicated from ``pkg_resources``. Note that this is not
the same to either ``canonicalize_name`` or ``_egg_link_name``.
z[^A-Za-z0-9.-]+_)r r
resublower)r r r r
safe_extra0 s r! ) functoolsloggingr typingr r r r Zpip._vendor.packagingr r "pip._vendor.packaging.requirementsr r r
getLogger__name__loggerintboolr lru_cacher r! r r r r