bgZdZddlZddlZejdejZejdejZejdejZejdejZde de fd Z d e de fd Z d e de fd Z d e de fdZ de de fdZde de fdZde de fdZde de fdZde de fdZdS)zZ Helpers for normalization as expected in wheel/sdist/module file names and core metadata Nz)^([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^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 P/opt/cloudlinux/venv/lib64/python3.11/site-packages/setuptools/_normalization.pysafe_identifierr s4 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' >>> safe_name("hello_world") 'hello_world' -)_UNSAFE_NAME_CHARSr)rs r safe_namers  ! !#y 1 11r versioncJ|dd} ttj|S#tjj$rJt d|}ttj|cYSwxYw)aConvert 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)replacestr packagingrVersionInvalidVersionrr)rvattempts r safe_versionr*s" S!!A79$,,Q//000   +777$((a009$,,W55666667s+AAB"!B"c t|S#tjj$r|dd}t |}|r |d}|t|d}nd}|}t d| d}d| d}t|d|cYSwxYw)aConvert 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 N0z sanitized.z.dev0+) rrrrr_PEP440_FALLBACKsearchlen_NON_ALPHANUMERICrstrip)rrmatchr rest safe_restlocals r best_effort_versionr*Cs" 4G$$$   + 4 4 4 OOC % % ''**  =DSYY[[>DDDD%))#t44::3?? (Y((..s33t2252233333 4sCCCextractd|dS)zNormalize extra name according to PEP 685 >>> safe_extra("_FrIeNdLy-._.-bArD") 'friendly-bard' >>> safe_extra("FrIeNdLy-._.-bArD__._-") 'friendly-bard' r)r$rr%lower)r+s r safe_extrar.ds4  e , , 2 23 7 7 = = ? ??r 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)rr%r/s r filename_componentr2ns& ==c " " ( ( - --r c.|ddS)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)rr1s r filename_component_brokenr4ws ==c " ""r c:tt|S)zBLike ``safe_name`` but can be used as filename component for wheel)r2rr1s r safer_namer6s i.. / //r c:tt|S)zLLike ``best_effort_version`` but can be used as filename component for wheel)r2r*r1s r safer_best_effort_versionr8s 1%88 9 99r )__doc__rrcompileI _VALID_NAMErr$r!rr rrr*r.r2r4r6r8r r r>s  bjErtLL RZ 0"$77BJ}bd332:MrtTT # #     2 2 2 2 2 27#7#77772444444B@c@c@@@@.c.c.... #S #S # # # #0c0c0000 :S:S::::::r