Re @sddlmZddlZddlmZddlmZddlmZm Z ddl m Z ddl m Z ddlmZerdd lmZmZdd lmZdd lmZejeZd d ZddZddZddZdS))absolute_importN) FeedParser) pkg_resources) specifiersversion)NoneMetadataError) display_path)MYPY_CHECK_RUNNING)OptionalTuple)Message) DistributioncCsJ|dkrdStj|}tjdjtt|}||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 SpecifierSetrparsejoinmapstr)requires_python version_inforequires_python_specifierpython_versionr/builddir/build/BUILDROOT/alt-python35-pip-20.2.4-5.el8.x86_64/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/utils/packaging.pycheck_requires_pythons !rcCsd}t|tjr9|j|r9|j|}nF|jdr`d}|j|}ntjdt|jd}|dkrt ||t }|j ||j S)z :raises NoneMetadataError: if the distribution reports `has_metadata()` True but `get_metadata()` returns None. METADATAzPKG-INFOzNo metadata found in %sN) isinstancerDistInfoDistribution has_metadata get_metadataloggerwarningrlocationrrfeedclose)dist metadata_namemetadata feed_parserrrrr ,s   r cCs7t|}|jd}|dk r3t|}|S)z_ Return the "Requires-Python" metadata for a distribution, or None if not present. zRequires-PythonN)r getr)r& pkg_info_dictrrrrget_requires_pythonGs    r,cCsC|jdr?x-|jdD]}|jr|jSqWdS)N INSTALLERr)rget_metadata_linesstrip)r&linerrr get_installerXs  r1) __future__rlogging email.parserr pip._vendorrZpip._vendor.packagingrrpip._internal.exceptionsrpip._internal.utils.miscrpip._internal.utils.typingr typingr r email.messager Zpip._vendor.pkg_resourcesr getLogger__name__r!rr r,r1rrrrs