§
    
Á³g<  ã                   ó  — d dl Z d dlZd dlZd dlmZmZmZmZ d dlm	Z	m
Z
 d dlmZ  ede¦  «        Z ej        e¦  «        Zdee         deedf         d	efd
„Z e j        d¬¦  «        ded	efd„¦   «         Zded	efd„ZdS )é    N)ÚNewTypeÚOptionalÚTupleÚcast)Ú
specifiersÚversion©ÚRequirementÚNormalizedExtraÚrequires_pythonÚversion_info.Úreturnc                 ó®   — | €dS 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   ÚparseÚjoinÚmapÚstr)r   r   Úrequires_python_specifierÚpython_versions       ú[/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/pip/_internal/utils/packaging.pyÚcheck_requires_pythonr      sQ   € ð ÐàˆtÝ *Ô 7¸Ñ HÔ HÐå”] 3§8¢8­Cµ°\Ñ,BÔ,BÑ#CÔ#CÑDÔD€NØÐ6Ð6Ð6ó    i   )ÚmaxsizeÚ
req_stringc                 ó    — t          | ¦  «        S )z5Construct a packaging.Requirement object with cachingr	   )r   s    r   Úget_requirementr   %   s   € õ �zÑ"Ô"Ð"r   Úextrac                 óx   — t          t          t          j        dd| ¦  «                             ¦   «         ¦  «        S )aD  Convert an arbitrary string to a standard 'extra' name

    Any runs of non-alphanumeric characters are replaced with a single '_',
    and the result is always lowercased.

    This function is duplicated from ``pkg_resources``. Note that this is not
    the same to either ``canonicalize_name`` or ``_egg_link_name``.
    z[^A-Za-z0-9.-]+Ú_)r   r   ÚreÚsubÚlower)r   s    r   Ú
safe_extrar%   0   s/   € õ •¥¤Ð(9¸3ÀÑ!FÔ!F×!LÒ!LÑ!NÔ!NÑOÔOÐOr   )Ú	functoolsÚloggingr"   Útypingr   r   r   r   Úpip._vendor.packagingr   r   Ú"pip._vendor.packaging.requirementsr
   r   r   Ú	getLoggerÚ__name__ÚloggerÚintÚboolr   Ú	lru_cacher   r%   © r   r   ú<module>r2      s@  ðØ Ð Ð Ð Ø €€€Ø 	€	€	€	Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø :Ð :Ð :Ð :Ð :Ð :à�'Ð+¨SÑ1Ô1€à	ˆÔ	˜8Ñ	$Ô	$€ð7Ø˜c”]ð7Ø27¸¸S¸´/ð7à	ð7ð 7ð 7ð 7ð. €Ô˜SÐ!Ñ!Ô!ð# ð #¨ð #ð #ð #ñ "Ô!ð#ð	P�cð 	P˜oð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pr   