a
Re @ 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 eeZee eedf edd
dZeedddZeedddZe jddeedddZ dS ) N)Message)
FeedParser)OptionalTuple)
pkg_resources)
specifiersversionRequirement)Distribution)NoneMetadataError)display_path.)requires_pythonversion_inforeturnc 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-python39-pip-21.3.1-2.el8.x86_64/opt/alt/python39/lib/python3.9/site-packages/pip/_internal/utils/packaging.pycheck_requires_python s
r )distr c C s d}t | tjr&| |r&| |}n0| dr@d}| |}ntdt| j d}|du rht | |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 qdS )N INSTALLERr )r! get_metadata_linesstrip)r liner r r
get_installerD s
r/ i )maxsize)
req_stringr c 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