3 ”ReÛ ã @ 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 ejeƒ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 j| ƒ}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 ÚSpecifierSetr ÚparseÚjoinÚmapÚstr)Úrequires_pythonÚversion_infoÚrequires_python_specifierÚpython_version© r úŒ/builddir/build/BUILDROOT/alt-python36-pip-20.2.4-5.el8.x86_64/opt/alt/python36/lib/python3.6/site-packages/pip/_internal/utils/packaging.pyÚcheck_requires_python s r c C s€ d}t | tjƒr&| j|ƒr&| j|ƒ}n0| jdƒr@d}| j|ƒ}ntjdt| jƒƒ d}|dkrht | |ƒ‚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 ÚDistInfoDistributionÚhas_metadataÚget_metadataÚloggerÚwarningr Úlocationr r ÚfeedÚclose)ÚdistÚ metadata_nameÚmetadataÚfeed_parserr r r r , s r c C s&