
    y/Yh=                         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y)    N)NewTypeOptionalTuplecast)
specifiersversionRequirementNormalizedExtrarequires_pythonversion_info.returnc                     | yt        j                  |       }t        j                  dj	                  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.
    T.)r   SpecifierSetr   parsejoinmapstr)r   r   requires_python_specifierpython_versions       ^/var/www/html/profi_bot/bot/venv/lib/python3.12/site-packages/pip/_internal/utils/packaging.pycheck_requires_pythonr      sH      * 7 7 H]]388C\,B#CDN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                 h    t        t        t        j                  dd|       j	                               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(     (93!F!L!L!N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 5 :+S1			8	$7c]727S/7	7. T"# # # ##	Pc 	Po 	Pr   