o
ai @ s d dl Z d dlZd dlmZ d dlmZ d dlmZmZ d dl m
Z
d dlmZm
Z
d dlmZ d dlmZ d d lmZ d d
lmZ eeZdee deed
f defddZdedefddZdedefddZe jdddedefddZ dS ) N)Message)
FeedParser)OptionalTuple)
pkg_resources)
specifiersversionRequirement)Distribution)NoneMetadataError)display_pathrequires_pythonversion_info.returnc C s4 | du rdS t | }tdtt|}||v S )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-python310-pip-21.3.1-5.el8.x86_64/opt/alt/python310/lib/python3.10/site-packages/pip/_internal/utils/packaging.pycheck_requires_python s
r distc C s d}t | tjr| |r| |}n| dr d}| |}ntdt| j d}|du r4t | |t
}|| | S )z
:raises NoneMetadataError: if the distribution reports `has_metadata()`
True but `get_metadata()` returns None.
METADATAzPKG-INFOzNo metadata found in %s N)
isinstancer DistInfoDistributionhas_metadataget_metadataloggerwarningr
locationr r feedclose)r
metadata_namemetadatafeed_parserr r r r" ) s
r" c C s2 | dr| dD ]}| r| S q
dS )N INSTALLERr )r! get_metadata_linesstrip)r liner r r
get_installerD s
r/ i )maxsize
req_stringc C s t | S )z5Construct a packaging.Requirement object with cachingr )r1 r r r get_requirementL s r2 )! functoolslogging
email.messager email.parserr typingr r pip._vendorr Zpip._vendor.packagingr r Z"pip._vendor.packaging.requirementsr
pip._vendor.pkg_resourcesr pip._internal.exceptionsr pip._internal.utils.miscr
getLogger__name__r# r intboolr r" r/ lru_cacher2 r r r r