Re @ s d d l m Z d d l Z d d l m Z d d l m Z d d l m Z m Z d d l m Z d d l m Z d d l m Z e r d d l m Z m Z d d l m Z d d l m Z e j e Z d d Z d d Z d d Z d d Z d S) )absolute_importN) FeedParser) pkg_resources) specifiersversion)NoneMetadataError)display_path)MYPY_CHECK_RUNNING)OptionalTuple)Message)Distributionc C sJ | d k r d St j | } t j d j t t | } | | k 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)requires_pythonversion_inforequires_python_specifierpython_version r /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_python s !r c C s d } t | t j r9 | j | r9 | j | } nF | j d r` d } | j | } n t j d t | j d } | d k r t | | t } | j | | j 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)dist metadata_namemetadatafeed_parserr r r r , s r c C s7 t | } | j d } | d k r3 t | } | S)z_ Return the "Requires-Python" metadata for a distribution, or None if not present. zRequires-PythonN)r getr )r&