
    uvi                       S SK Jr  S SKrS SKJrJrJrJr  SSKJ	r	J
r
  SSKJrJrJr  \\S   \\\4   4   r\" S\5      r " S	 S
\5      r " S S\5      r " S S\5      r\R.                  " S\R0                  5      r\R.                  " S5      r\R.                  " S5      rSS.SS jjrSS jrSS.     SS jjr    SS jrSS jr g)     )annotationsN)NewTypeTupleUnioncast   )Tag	parse_tag)InvalidVersionVersion_TrimmedRelease NormalizedNamec                      \ rS rSrSrSrg)InvalidName   zO
An invalid distribution name; users should refer to the packaging user guide.
r   N__name__
__module____qualname____firstlineno____doc____static_attributes__r       =/root/pdf_env/lib/python3.13/site-packages/packaging/utils.pyr   r          r   r   c                      \ rS rSrSrSrg)InvalidWheelFilename   zE
An invalid wheel filename was found, users should refer to PEP 427.
r   Nr   r   r   r   r   r      r   r   r   c                      \ rS rSrSrSrg)InvalidSdistFilename   zV
An invalid sdist filename was found, users should refer to the packaging user guide.
r   Nr   r   r   r   r!   r!      r   r   r!   z%[A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9]z+[a-z0-9]|[a-z0-9]([a-z0-9-](?!--))*[a-z0-9]z	(\d+)(.*)F)validatec                  U(       a)  [         R                  U 5      (       d  [        SU < 35      eU R                  5       R	                  SS5      R	                  SS5      nSU;   a  UR	                  SS5      nSU;   a  M  [        SU5      $ )Nzname is invalid: _-.z--r   )_validate_regex	fullmatchr   lowerreplacer   )namer#   values      r   canonicalize_namer.   *   s}    11$77-dX677 JJL  c*223<E
%-dC( %- %((r   c                0    [         R                  U 5      S L$ )N)_normalized_regexr)   )r,   s    r   is_normalized_namer1   7   s    &&t,D88r   T)strip_trailing_zeroc                   [        U [        5      (       a   [        U 5      n [        U(       a  [	        U 5      5      $ U 5      $ ! [         a    [        U 5      s $ f = f)a  
Return a canonical form of a version as a string.

>>> canonicalize_version('1.0.1')
'1.0.1'

Per PEP 625, versions may have multiple canonical forms, differing
only by trailing zeros.

>>> canonicalize_version('1.0.0')
'1'
>>> canonicalize_version('1.0.0', strip_trailing_zero=False)
'1.0.0'

Invalid versions are returned unaltered.

>>> canonicalize_version('foo bar baz')
'foo bar baz'
)
isinstancestrr   r   r   )versionr2   s     r   canonicalize_versionr7   ;   sX    , '3	 g&G +>w'LLGLL  	 w<	 s   A AAc                   U R                  S5      (       d  [        SU < 35      eU S S n U R                  S5      nUS;  a  [        SU < 35      eU R                  SUS-
  5      nUS   nS	U;   d'  [        R
                  " S
U[        R                  5      c  [        SU < 35      e[        U5      n [        US   5      nUS:X  ae  US   n[        R                  U5      nUc  [        SU SU < 35      e[        S[        UR                  S5      5      UR                  S5      45      n	OSn	[        US   5      n
XEX4$ ! [         a  n[        SU < 35      UeS nAff = f)Nz.whlz3Invalid wheel filename (extension must be '.whl'): r&   )      z0Invalid wheel filename (wrong number of parts):    r   __z^[\w\d._]*$zInvalid project name: r   z*Invalid wheel filename (invalid version): r;   zInvalid build number: z in BuildTagr   )endswithr   countsplitrematchUNICODEr.   r   r   _build_tag_regexr   intgroupr
   )filenamedashesparts	name_partr,   r6   e
build_partbuild_matchbuildtagss              r   parse_wheel_filenamerR   Y   s    V$$"A(N
 	
 }H^^C FV">xlK
 	
 NN3
+EaIyBHH^Y

KS"%;H<#HIIY'D%(# {1X
&,,Z8&(DE  Z#k&7&7&:";[=N=Nq=Q!RSU2YD5''!  "8E
	s   3E   
E
EEc                   U R                  S5      (       a  U S [        S5      *  nO5U R                  S5      (       a  U S [        S5      *  nO[        SU < 35      eUR                  S5      u  p#nU(       d  [        SU < 35      e[	        U5      n [        U5      nXV4$ ! [         a  n[        SU < 35      UeS nAff = f)Nz.tar.gzz.zipz@Invalid sdist filename (extension must be '.tar.gz' or '.zip'): r&   zInvalid sdist filename: z*Invalid sdist filename (invalid version): )r@   lenr!   
rpartitionr.   r   r   )rI   	file_stemrL   sepversion_partr,   r6   rM   s           r   parse_sdist_filenamerY      s    ##.I/				6	"	"^F|,	"|
 	
 $-#7#7#< IL"%=h\#JKKY'D,' ?  "8E
	s   B   
B?*B::B?)r,   r5   r#   boolreturnr   )r,   r5   r[   rZ   )r6   zVersion | strr2   rZ   r[   r5   )rI   r5   r[   z8tuple[NormalizedName, Version, BuildTag, frozenset[Tag]])rI   r5   r[   ztuple[NormalizedName, Version])!
__future__r   rC   typingr   r   r   r   rQ   r	   r
   r6   r   r   r   rG   r5   r>   r   
ValueErrorr   r   r!   compile
IGNORECASEr(   r0   rF   r.   r1   r7   rR   rY   r   r   r   <module>ra      s   
 # 	 . .   = =rE#s(O+,)3/* : :  **Er}}UJJMN ::l+  6; 
)9
 <@MM48MM<((((=((Vr   