U .e @ s d dl mZ d dlZd dlmZ d dlmZ d dlmZm Z d dl mZ d dlm Z d dlmZ erd d lmZmZ d d lmZ d dlmZ eeZdd Zdd Zdd Zdd ZdS ) )absolute_importN) FeedParser) pkg_resources) specifiersversion)NoneMetadataError)display_path)MYPY_CHECK_RUNNING)OptionalTuple)Message)Distributionc 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 ZSpecifierSetr parsejoinmapstr)requires_pythonversion_infoZrequires_python_specifierZpython_version r A/usr/lib/python3.8/site-packages/pip/_internal/utils/packaging.pycheck_requires_python s r c C s d}t | tjr&| |r&| |}n0| dr@d}| |}ntdt| j d}|dkrht | |t }|| | S )z :raises NoneMetadataError: if the distribution reports `has_metadata()` True but `get_metadata()` returns None. ZMETADATAzPKG-INFOzNo metadata found in %s N) isinstancer ZDistInfoDistributionhas_metadataget_metadataloggerZwarningr locationr r Zfeedclose)distZ metadata_nameZmetadataZfeed_parserr r r r , s r c C s&