HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/lib/python3.10/dist-packages/setuptools/__pycache__/_normalization.cpython-310.pyc
o

��hs�@sBdZddlZddlmZddlZe�dej�Ze�dej�Ze�dej�Z	e�dej�Z
ded	efd
d�Zded	efd
d�Z
ded	efdd�Zded	efdd�Zded	efdd�Zded	efdd�Zded	efdd�Zded	efdd�Zded	efdd�Zd ed	efd!d"�Zz	dd#lmZWdSey�es�eZYdSYdSw)$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�returncCst�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_identifiersr�	componentcCs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_names	r�versioncCsR|�dd�}z	ttj�|��WStjjy(t�d|�}ttj�|��YSw)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�InvalidVersionrr)r�v�attemptr
r
r�safe_version*s�rcCs�zt|�WStjjyH|�dd�}t�|�}|r(|d}|t|�d�}nd}|}t�	d|��
d�}d|���
d�}t|�d|���YSw)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'
    rrr	N�0z
sanitized.z.dev0+)rrrrr�_PEP440_FALLBACK�search�len�_NON_ALPHANUMERICr�strip)rr�matchr	�rest�	safe_rest�localr
r
r�best_effort_versionCs

�r&�extracCst�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 rr!�lower)r'r
r
r�
safe_extracsr)�valuecCs|�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'
    rr)rr!�r*r
r
r�filename_componentmsr,cCs|�dd�S)a
    Produce the incorrect filename component for compatibility.

    See pypa/setuptools#4167 for detailed analysis.

    TODO: replace this with filename_component after pip 24 is
    nearly-ubiquitous.

    >>> filename_component_broken('foo_bar-baz')
    'foo-bar-baz'
    rr)rr+r
r
r�filename_component_brokenvsr-cCst�ddt|�����dd�S)zBLike ``safe_name`` but can be used as filename component for wheelz[-_.]+rr)rrrr(rr+r
r
r�
safer_name�s�r.cCstt|��S)zLLike ``best_effort_version`` but can be used as filename component for wheel)r,r&r+r
r
r�safer_best_effort_version�sr/�
expressioncCstd��)a
    Defer import error to affect only users that actually use it
    https://github.com/pypa/setuptools/issues/4894
    >>> _missing_canonicalize_license_expression("a OR b")
    Traceback (most recent call last):
    ...
    ImportError: ...Cannot import `packaging.licenses`...
    z�Cannot import `packaging.licenses`.
        Setuptools>=77.0.0 requires "packaging>=24.2" to work properly.
        Please make sure you have a suitable version installed.
        )�ImportError)r0r
r
r�(_missing_canonicalize_license_expression�s	�r2)�canonicalize_license_expression)�__doc__r�typingrr�compile�I�_VALID_NAMErr rrrrrr&r)r,r-r.r/r2�packaging.licensesr3� _canonicalize_license_expressionr1r
r
r
r�<module>s2 
	
��