U ÀÒ.eÛ ã @ sº d dl mZ d dlZd dlmZ d dlmZ d dlmZm Z d dl mZ d dlm Z d dlmZ erŒd d lmZmZ d d lmZ d dlmZ e e¡Zdd „ Zdd„ Zdd„ Zdd„ ZdS )é )Úabsolute_importN)Ú FeedParser)Ú pkg_resources)Ú specifiersÚversion)ÚNoneMetadataError)Údisplay_path)ÚMYPY_CHECK_RUNNING)ÚOptionalÚTuple)ÚMessage)ÚDistributionc C s4 | dkrdS t | ¡}t d tt|ƒ¡¡}||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 ÚparseÚjoinÚmapÚstr)Úrequires_pythonÚversion_infoZrequires_python_specifierZpython_version© r úA/usr/lib/python3.8/site-packages/pip/_internal/utils/packaging.pyÚcheck_requires_python s r c C s€ d}t | tjƒr&| |¡r&| |¡}n0| d¡r@d}| |¡}nt dt| 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 ZDistInfoDistributionÚhas_metadataÚget_metadataÚloggerZwarningr Úlocationr r ZfeedÚclose)ÚdistZ metadata_nameZmetadataZfeed_parserr r r r , s ÿ r c C s&