ruạṛ
a �u:j� � @ s, d Z ddlZddlmZ ddlZe�dej�Ze�dej�Ze�dej�Z e�dej�Z eed�d d �Zeed�dd �Z eed�dd�Zeed�dd�Zeed�dd�Zeed�dd�Zeed�dd�Zeed�dd�Zeed�dd�Zeed�d d!�Zzdd"lmZ W n e�y& e�s"eZY n0 dS )#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| �}|�� sJ �|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 �L/opt/bart/bart_venv/lib/python3.9/site-packages/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' >>> safe_name("hello_world") 'hello_world' �-)�_UNSAFE_NAME_CHARSr )r r r r � safe_name s r )�versionr c C sV | � dd�}zttj�|��W S tjjyP t�d|�}ttj�|�� Y S 0 dS )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 N)�replace�str� packagingr �Version�InvalidVersionr r )r �v�attemptr r r �safe_version, s r c C s� z t | �W S tjjy� | �dd�}t�|�}|rP|d }|t|�d� }nd}| }t� d|�� d�}d|� �� d�}t |� d|� �� Y S 0 dS )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 �restZ safe_rest�localr r r �best_effort_versionE s r% )�extrar c C s t �d| ��d��� S )z�Normalize extra name according to PEP 685 >>> safe_extra("_FrIeNdLy-._.-bArD") 'friendly-bard' >>> safe_extra("FrIeNdLy-._.-bArD__._-") 'friendly-bard' r )r r r! �lower)r&