File: //usr/lib/python3/dist-packages/pip/_internal/utils/__pycache__/packaging.cpython-310.pyc
o
@%Ne< � @ s� d dl Z d dlZd dlZd dlmZmZmZmZ d dlm Z m
Z
d dlmZ ede
�Ze�e�Zdee
deedf d efd
d�Ze jdd
�de
d efdd��Zde
d efdd�ZdS )� N)�NewType�Optional�Tuple�cast)�
specifiers�version��Requirement�NormalizedExtra�requires_python�version_info.�returnc C s4 | du rdS t �| �}t�d�tt|���}||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_version� r �?/usr/lib/python3/dist-packages/pip/_internal/utils/packaging.py�check_requires_python s
r i )�maxsize�
req_stringc C s t | �S )z5Construct a packaging.Requirement object with cachingr )r r r r �get_requirement% s r �extrac C s t tt�dd| ��� �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 r r r �
safe_extra0 s r! )� 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 r r �<module> s$
�
�
�