File: //usr/local/lib/python3.7/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-37.pyc
B
L��g< � @ s� d dl Z d dlZd dlZd dlmZmZmZmZ d dlm Z m
Z
d dlmZ ede
�Ze�e�Zee
eedf ed�dd �Ze jd
d�e
ed�d
d��Ze
ed�dd�ZdS )� N)�NewType�Optional�Tuple�cast)�
specifiers�version)�Requirement�NormalizedExtra.)�requires_python�version_info�returnc C s4 | dkrdS t �| �}t�d�tt|���}||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)r
r �requires_python_specifier�python_version� r �A/tmp/pip-unpacked-wheel-hv55ucu3/pip/_internal/utils/packaging.py�check_requires_python s
r i )�maxsize)�
req_stringr c C s t | �S )z5Construct a packaging.Requirement object with caching)r )r r r r �get_requirement% s r )�extrar c 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 Zpip._vendor.packagingr r Z"pip._vendor.packaging.requirementsr r r � getLogger�__name__�logger�int�boolr � lru_cacher r r r r r �<module> s