-Z z d Z ddlZddlmZ ddlmZ ddlmZ eeef Z ej
dej Z ej
dej Z
ej
d ej Z ej
d
ej Zdedefd
ZdedefdZdedefdZdedefdZdedefdZdedefdZdedefdZdedefdZdS )zZ
Helpers for normalization as expected in wheel/sdist/module file names
and core metadata
N)Path)Union ) packagingz)^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$z[^A-Z0-9.]+z
[^A-Z0-9]+z,^v?(?P(?:[0-9]+!)?[0-9]+(?:\.[0-9]+)*)namereturnc ^ t j dd| }| sJ |S )zMake 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)_)resubisidentifier)r safes y/builddir/build/BUILD/imunify360-venv-2.6.2/opt/imunify360/venv/lib/python3.11/site-packages/setuptools/_normalization.pysafe_identifierr s4 6-d++DK componentc 8 t d| S )zEscape 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 s r safe_namer s !!#y111r versionc J | dd } t t j | S # t j j $ rJ t d| }t t j | cY S w xY 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):
...
setuptools.extern.packaging.version.InvalidVersion: Invalid version: 'ubuntu.lts'
.r )replacestrr r VersionInvalidVersionr r )r vattempts r safe_versionr! + s " S!!A79$,,Q//000+ 7 7 7$((a009$,,W55666667s +A AB"!B"c t | S # t j j $ r | dd }t
| }|r |d }|t | d }nd}| }t d|
d }d|
d }t | d| cY S w xY 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 N0z
sanitized.z.dev0+)r! r r r r _PEP440_FALLBACKsearchlen_NON_ALPHANUMERICr strip)r r matchr rest safe_restlocals r best_effort_versionr- D s "
4G$$$+ 4 4 4OOC%% ''** =DSYY[[>DDDD%))#t44::3?? (Y((..s33t22522333334s CCCextrac t d| d S )zNormalize extra name according to PEP 685
>>> safe_extra("_FrIeNdLy-._.-bArD")
'friendly-bard'
>>> safe_extra("FrIeNdLy-._.-bArD__._-")
'friendly-bard'
r )r' r r( lower)r. s r
safe_extrar1 e s4 e,,22377==???r valuec T | dd d S )zNormalize 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 r( r2 s r filename_componentr5 o s&