8 d dl Z d dlZd dlmZ d dlmZ d dlmZmZ d dl m Z d dlmZm Z d dlmZ d dlmZ d d lmZ d d lmZ ej e Zdee deed f defdZdedefdZdedefdZ e j d dedefd Z dS ) N)Message) FeedParser)OptionalTuple) pkg_resources) specifiersversionRequirement)Distribution)NoneMetadataError)display_pathrequires_pythonversion_info.returnc | dS t j | }t j d t t | }||v 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)r r requires_python_specifierpython_versions /builddir/build/BUILDROOT/alt-python311-pip-21.3.1-4.el9.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_internal/utils/packaging.pycheck_requires_pythonr sQ t * 7 H H]388C\,B,B#C#CDDN666 distc d}t | t j r+| | r| | }n\| d rd}| | }n/t dt | j d}|t | | t }| | | S )z :raises NoneMetadataError: if the distribution reports `has_metadata()` True but `get_metadata()` returns None. METADATAzPKG-INFOzNo metadata found in %s ) isinstancer DistInfoDistributionhas_metadataget_metadataloggerwarningr locationr r feedclose)r metadata_namemetadatafeed_parsers r r% r% ) s M$ :;; @Q@QA A $$]33 : & &