File: //usr/local/lib/python3.10/dist-packages/setuptools/__pycache__/_normalization.cpython-310.pyc
o
��hs � @ sB d Z ddlZddlmZ ddlZe�dej�Ze�dej�Ze�dej�Z e�dej�Z
ded efd
d�Zded efd
d�Z
ded efdd�Zded efdd�Zded efdd�Zded efdd�Zded efdd�Zded efdd�Zded efdd�Zd ed efd!d"�Zz dd#lmZ W dS ey� es�eZY dS Y dS w )$zZ
Helpers for normalization as expected in wheel/sdist/module file names
and core metadata
� N)�
TYPE_CHECKINGz)^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$z
[^A-Z0-9._-]+z
[^A-Z0-9]+z,^v?(?P<safe>(?:[0-9]+!)?[0-9]+(?:\.[0-9]+)*)�name�returnc C s t �dd| �}|�� s
J �|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)r �safe� r
�D/usr/local/lib/python3.10/dist-packages/setuptools/_normalization.py�safe_identifier s r � componentc 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'
>>> safe_name("hello_world")
'hello_world'
�-)�_UNSAFE_NAME_CHARSr )r
r
r
r � safe_name s r �versionc C sR | � dd�}z ttj�|��W S tjjy( t�d|�}ttj�|�� Y S w )a� Convert an arbitrary string into a valid version string.
Can still raise an ``InvalidVersion`` exception.
To avoid exceptions use ``best_effort_version``.
>>> 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):
...
packaging.version.InvalidVersion: Invalid version: 'ubuntu.lts'
� �.r )�replace�str� packagingr �Version�InvalidVersionr r )r �v�attemptr
r
r �safe_version* s �r c C s� zt | �W S tjjyH | �dd�}t�|�}|r(|d }|t|�d� }nd}| }t� d|��
d�}d|� ��
d�}t |� d|� �� Y S w )a� Convert an arbitrary string into a version-like string.
Fallback when ``safe_version`` is not safe enough.
>>> best_effort_version("v0.2 beta")
'0.2b0'
>>> best_effort_version("ubuntu lts")
'0.dev0+sanitized.ubuntu.lts'
>>> best_effort_version("0.23ubuntu1")
'0.23.dev0+sanitized.ubuntu1'
>>> best_effort_version("0.23-")
'0.23.dev0+sanitized'
>>> best_effort_version("0.-_")
'0.dev0+sanitized'
>>> best_effort_version("42.+?1")
'42.dev0+sanitized.1'
r r r N�0z
sanitized.z.dev0+)r r r r r �_PEP440_FALLBACK�search�len�_NON_ALPHANUMERICr �strip)r r �matchr �rest� safe_rest�localr
r
r �best_effort_versionC s
�r&