idzdZddlZddlmZddlmZddlmZddlm Z ee efZ ej dej Zej d ej Zd e d e fd Zd e d e fdZde d e fdZde d e fdZde d e fdZde d e fdZde d e fdZdS)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.]+namereturnc^tjdd|}|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)_)resub isidentifier)rsafes N/opt/cloudlinux/venv/lib/python3.11/site-packages/setuptools/_normalization.pysafe_identifierrs4 6-d + +D      K componentc8td|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 )rs r safe_namers  ! !#y 1 11rversioncJ|dd} ttj|S#tjj$rJt d|}ttj|cYSwxYw)aConvert 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)replacestrrrVersionInvalidVersionrr )rvattempts r safe_versionr"*s S!!A79$,,Q//000   +777$((a009$,,W55666667s+AAB"!B"c t|S#tjj$rHt jd|dd|ddd|dd}t|cYSwxYw) aConvert 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: rz 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 )see_urldue_dater)r"rrrremitrr)rr s rbest_effort_versionr)AsG$$$   +$) , , , ,    8"  OOC % %||sAA-,A-valuecT|dddS)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' rr )rstripr*s rfilename_componentr._s& ==c " " ( ( - --rc:tt|S)zBLike ``safe_name`` but can be used as filename component for wheel)r.rr-s r safer_namer0hs i.. / //rc:tt|S)zLLike ``best_effort_version`` but can be used as filename component for wheel)r.r)r-s rsafer_best_effort_versionr2ns 1%88 9 99r)__doc__r pathlibrtypingrexternrwarningsrr_PathcompileI _VALID_NAMErrrr"r)r.r0r2rrr=s 222222 c4ibjErtLL RZ55 # #    2222227#7#7777.<.c.c....0c0c0000 :S:S::::::r