Ë  Å[ÉStžpãóº—dZddlZddlmZddlmZddlmZeeefZ ejdej«Z ejdej«Z ejd ej«Zejd ej«Zd ed efd „Zded efd„Zded efd„Zded efd„Zded efd„Zded efd„Zded efd„Zded efd„Zded efd„Zy)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]+)*)ÚnameÚreturncóX—tjdd|«}|j«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Úsafes ú>/usr/lib/python3.12/site-packages/setuptools/_normalization.pyÚsafe_identifierrs-€ô �6‰6�-  dÓ +€DØ × Ñ Ô ÐÐ Ø €KóÚ componentcó.—tjd|«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 )rs rÚ safe_namer!s€ô × !Ñ ! # yÓ 1Ð1rÚversioncó:—|jdd«} ttjj |««S#tjj $rAt jd|«}ttjj |««cYSwxYw)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)ÚreplaceÚstrrrÚVersionÚInvalidVersionrr )rÚvÚattempts rÚ safe_versionr!.s~€ð" �‰˜˜SÓ!€Að7Ü”9×$Ñ$×,Ñ,¨QÓ/Ó0Ð0øÜ × Ñ × +Ñ +ò7Ü$×(Ñ(¨¨aÓ0ˆÜ”9×$Ñ$×,Ñ,¨WÓ5Ó6Ò6ð7ús”'<¼ABÂBcót— t|«S#tjj$r�|j dd«}t j |«}|r|d}|t|«d}nd}|}tjd|«jd«}d|›�jd«}t|›d|›�«cYSwxYw)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' rrrNÚ0z sanitized.z.dev0+) r!rrrrÚ_PEP440_FALLBACKÚsearchÚlenÚ_NON_ALPHANUMERICr Ústrip)rrÚmatchrÚrestÚ safe_restÚlocals rÚbest_effort_versionr-Gs¼€ð" 4ܘGÓ$Ð$øÜ × Ñ × +Ñ +ò 4Ø �O‰O˜C Ó %ˆÜ ×'Ñ'¨Ó*ˆÙ ؘ‘=ˆDØ”S˜“Y�[�>‰DàˆD؈DÜ%×)Ñ)¨#¨tÓ4×:Ñ:¸3Ó?ˆ ؘY˜KÐ(×.Ñ.¨sÓ3ˆÜ˜t˜f F¨5¨'Ð2Ó3Ò3ð 4ús‚ �B'B7Â6B7Úextracóh—tjd|«jd«j«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.s rÚ safe_extrar1hs+€ô × Ñ   eÓ ,× 2Ñ 2°3Ó 7× =Ñ =Ó ?Ð?rÚvaluecóD—|jdd«jd«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(©r2s rÚfilename_componentr5rs €ð �=‰=˜˜cÓ "× (Ñ (¨Ó -Ð-rcó&—|jdd«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' r r)rr4s rÚfilename_component_brokenr7{s€ð �=‰=˜˜cÓ "Ð"rcó*—tt|««S)zBLike ``safe_name`` but can be used as filename component for wheel)r5rr4s rÚ safer_namer9Šs€ô œi¨Ó.Ó /Ð/rcó*—tt|««S)zLLike ``best_effort_version`` but can be used as filename component for wheel)r5r-r4s rÚsafer_best_effort_versionr;�s€ô Ô1°%Ó8Ó 9Ð9r)Ú__doc__r ÚpathlibrÚtypingrÚexternrrÚ_PathÚcompileÚIÚ _VALID_NAMErr'r$rrr!r-r1r5r7r9r;©rrÚrEs5ðñó  ÝÝåà ˆc�4ˆiÑ€ðˆb�j‰jÐEÀrÇtÁtÓL€ Ø�R—Z‘ZÐ 0°"·$±$Ó7ÐØ�B—J‘J˜}¨b¯d©dÓ3ÐØ�2—:‘:ÐMÈrÏtÉtÓTÐð ˜#ð  #ó ð 2˜ð 2 ó 2ð7˜#ð7 #ó7ð24 ð4¨ó4ðB@�cð@˜có@ð.˜cð. có.ð # Sð #¨Só #ð0�cð0˜có0ð : Sð:¨Sô:r