File: //usr/local/lib/python3.7/site-packages/setuptools/__pycache__/_normalization.cpython-37.pyc
B
N��gz � @ s� d Z ddlZddlmZ ddlmZ ddlmZ ddlm Z ee
ef Ze�dej
�Ze�d ej
�Ze
e
d
�dd�Ze
e
d
�dd�Ze
e
d�dd�Ze
e
d�dd�Ze
e
d�dd�Ze
e
d�dd�Ze
e
d�dd�ZdS )zZ
Helpers for normalization as expected in wheel/sdist/module file names
and core metadata
� N)�Path)�Union� )� packaging)�SetuptoolsDeprecationWarningz)^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$z[^A-Z0-9.]+)�name�returnc C s t �dd| �}|�� st�|S )z�Make a string safe to be used as Python identifier.
>>> safe_identifier("12abc")
'_12abc'
>>> safe_identifier("__editable__.myns.pkg-78.9.3_local")
'__editable___myns_pkg_78_9_3_local'
z
\W|^(?=\d)�_)�re�sub�isidentifier�AssertionError)r �safe� r �=/tmp/pip-unpacked-wheel-yrlplx0q/setuptools/_normalization.py�safe_identifier s r )� componentr c C s t �d| �S )z�Escape a component used as a project name according to Core Metadata.
>>> safe_name("hello world")
'hello-world'
>>> safe_name("hello?world")
'hello-world'
�-)�_UNSAFE_NAME_CHARSr )r r r r � safe_name s r )�versionr c C sR | � dd�}yttj�|��S tjjk
rL t�d|�}ttj�|��S X dS )a� Convert an arbitrary string into a valid version string.
>>> safe_version("1988 12 25")
'1988.12.25'
>>> safe_version("v0.2.1")
'0.2.1'
>>> safe_version("v0.2?beta")
'0.2b0'
>>> safe_version("v0.2 beta")
'0.2b0'
>>> safe_version("ubuntu lts")
Traceback (most recent call last):
...
setuptools.extern.packaging.version.InvalidVersion: Invalid version: 'ubuntu.lts'
� �.r N)�replace�strr r �Version�InvalidVersionr r )r �v�attemptr r r �safe_version* s r c C sX yt | �S tjjk
rR tjd| �d�d| �d�ddd� | �dd�}t|�S X d S )
a Convert an arbitrary string into a version-like string.
>>> best_effort_version("v0.2 beta")
'0.2b0'
>>> import warnings
>>> warnings.simplefilter("ignore", category=SetuptoolsDeprecationWarning)
>>> best_effort_version("ubuntu lts")
'ubuntu.lts'
zInvalid version: r z
Version z� is not valid according to PEP 440.
Please make sure to specify a valid version for your package.
Also note that future releases of setuptools may halt the build process
if an invalid version is given.
z!https://peps.python.org/pep-0440/)i� � � )Zsee_urlZdue_dater N)r r r r r �emitr r )r r r r r �best_effort_versionA s
r# )�valuer c C s | � dd��d�S )z�Normalize each component of a filename (e.g. distribution/version part of wheel)
Note: ``value`` needs to be already normalized.
>>> filename_component("my-pkg")
'my_pkg'
r r )r �strip)r$ r r r �filename_component_ s r&