+
    êhÀ  ã                   óÊ  € R t ^ RIt^ RIHt ^ RIt]P
                  ! R]P                  4      t]P
                  ! R]P                  4      t]P
                  ! R]P                  4      t	]P
                  ! R]P                  4      t
R R ltR	 R
 ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R lt ^ RIHt R#   ] d    ]'       g   ]t R#  R# i ; i)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]+)*)c                ó0   € V ^8„  d   QhR\         R\         /# )é   ÚnameÚreturn©Ústr)Úformats   "Ú;/usr/lib/python3/dist-packages/setuptools/_normalization.pyÚ__annotate__r      s   € ÷ 	ñ 	œ#ð 	¤#ñ 	ó    c                óf   € \         P                  ! RRV 4      pVP                  4       '       g   Q hV# )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   & r
   Úsafe_identifierr      s0   € ô �6Š6�-  dÓ+€DØ×Ñ×ÒÐÐØ€Kr   c                ó0   € V ^8„  d   QhR\         R\         /# )r   Ú	componentr   r   )r	   s   "r
   r   r      s   € ÷ 
2ñ 
2œð 
2¤ñ 
2r   c                ó.   € \         P                  RV 4      # )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   s   &r
   Ú	safe_namer      s   € ô ×!Ñ! # yÓ1Ð1r   c                ó0   € V ^8„  d   QhR\         R\         /# ©r   Úversionr   r   )r	   s   "r
   r   r   +   s   € ÷ 7ñ 7œ#ð 7¤#ñ 7r   c                ó>  € V P                  RR4      p \        \        P                  P	                  V4      4      #   \        P                  P
                   dB    \        P                  RT4      p\        \        P                  P	                  T4      4      u # i ; i)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   )Úreplacer   Ú	packagingr   ÚVersionÚInvalidVersionr   r   )r   ÚvÚattempts   &  r
   Úsafe_versionr&   +   s~   € ð" 	�‰˜˜SÓ!€Að7Ü”9×$Ñ$×,Ñ,¨QÓ/Ó0Ð0øÜ×Ñ×+Ñ+ô 7Ü$×(Ñ(¨¨aÓ0ˆÜ”9×$Ñ$×,Ñ,¨WÓ5Ó6Ò6ð7ús   ”'< ¼ABÂBc                ó0   € V ^8„  d   QhR\         R\         /# r   r   )r	   s   "r
   r   r   D   s   € ÷ 4ñ 4¤ð 4¬ñ 4r   c                óŒ  €  \        V 4      #   \        P                  P                   d˜    T P	                  RR4      p\
        P                  T4      pT'       d   TR,          pT\        T4      R pMRpT p\        P                  RT4      P                  R4      pRT 2P                  R4      p\        T RT 24      u # i ; i)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   NÚ0z
sanitized.z.dev0+)r&   r!   r   r#   r    Ú_PEP440_FALLBACKÚsearchÚlenÚ_NON_ALPHANUMERICr   Ústrip)r   r$   Úmatchr   ÚrestÚ	safe_restÚlocals   &      r
   Úbest_effort_versionr3   D   s¼   € ð"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   ‚
 �ACÁA%CÃCc                ó0   € V ^8„  d   QhR\         R\         /# )r   Úextrar   r   )r	   s   "r
   r   r   e   s   € ÷ @ñ @”cð @œcñ @r   c                óh   € \         P                  RV 4      P                  R4      P                  4       # )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)r5   s   &r
   Ú
safe_extrar8   e   s+   € ô × Ñ   eÓ,×2Ñ2°3Ó7×=Ñ=Ó?Ð?r   c                ó0   € V ^8„  d   QhR\         R\         /# ©r   Úvaluer   r   )r	   s   "r
   r   r   o   s   € ÷ .ñ .œcð .¤cñ .r   c                óD   € V P                  RR4      P                  R4      # )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'
r   r   )r    r.   ©r;   s   &r
   Úfilename_componentr>   o   s    € ð �=‰=˜˜cÓ"×(Ñ(¨Ó-Ð-r   c                ó0   € V ^8„  d   QhR\         R\         /# r:   r   )r	   s   "r
   r   r   x   s   € ÷ #ñ #¤Sð #¬Sñ #r   c                ó&   € V P                  RR4      # )zù
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   )r    r=   s   &r
   Úfilename_component_brokenrA   x   s   € ð �=‰=˜˜cÓ"Ð"r   c                ó0   € V ^8„  d   QhR\         R\         /# r:   r   )r	   s   "r
   r   r   ‡   s   € ÷ 	ñ 	”cð 	œcñ 	r   c                ó€   € \         P                  ! RR\        V 4      4      P                  4       P	                  RR4      # )zBLike ``safe_name`` but can be used as filename component for wheelz[-_.]+r   r   )r   r   r   r7   r    r=   s   &r
   Ú
safer_namerD   ‡   s1   € ô
 	�Šˆy˜#œy¨Ó/Ó0ß	‰‹ç	‰��cÓ	ðr   c                ó0   € V ^8„  d   QhR\         R\         /# r:   r   )r	   s   "r
   r   r   “   s   € ÷ :ñ :¤Sð :¬Sñ :r   c                ó*   € \        \        V 4      4      # )zLLike ``best_effort_version`` but can be used as filename component for wheel)r>   r3   r=   s   &r
   Úsafer_best_effort_versionrG   “   s   € ô Ô1°%Ó8Ó9Ð9r   c                ó0   € V ^8„  d   QhR\         R\         /# )r   Ú
expressionr   r   )r	   s   "r
   r   r   š   s   € ÷ ñ ¼ð Äñ r   c                ó   € \        R4      h)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)rI   s   &r
   Ú(_missing_canonicalize_license_expressionrL   š   s   € ô ð	óð r   )Úcanonicalize_license_expression)Ú__doc__r   Útypingr   r!   ÚcompileÚIÚ_VALID_NAMEr   r-   r*   r   r   r&   r3   r8   r>   rA   rD   rG   rL   Úpackaging.licensesrM   Ú _canonicalize_license_expressionrK   © r   r
   Ú<module>rV      sÍ   ðñó
 
Ý  ã ð �jŠjÐEÀrÇtÁtÓL€Ø—Z’ZÐ 0°"·$±$Ó7Ð Ø—J’J˜}¨b¯d©dÓ3Ð Ø—:’:ÐMÈrÏtÉtÓTÐ õ	õ
2õ7õ24õB@õ.õ#õ	õ:õð$T÷øð ô Tßà+SÓ(ò ðTús   ÃC
 Ã
C"ÃC"Ã!C"