
    &g                       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  \\S   \\\4   4   r\" S\5      r " S	 S
\5      r " S S\5      r " S S\5      r\R,                  " S\R.                  5      r\R,                  " S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 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       T/home/matz/Project1/venv/lib/python3.13/site-packages/pip/_vendor/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[-_.]+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[        R	                  SU 5      R                  5       n[        [        U5      $ )Nzname is invalid: -)_validate_regexmatchr   _canonicalize_regexsublowerr   r   )namer"   values      r   canonicalize_namer,   -   sP    --d33-dX677##C.446E&&r   c                0    [         R                  U 5      S L$ N)_normalized_regexr&   )r*   s    r   is_normalized_namer0   5   s    ""4(44r   T)strip_trailing_zeroc                  [        U [        5      (       a   [        U 5      nOU n/ nUR                  S:w  a  UR                  UR                   S35        SR                  S UR                   5       5      nU(       a  [        R                  " SSU5      nUR                  U5        UR                  b1  UR                  SR                  S UR                   5       5      5        UR                  b  UR                  SUR                   35        UR                  b  UR                  S	UR                   35        UR                  b  UR                  S
UR                   35        SR                  U5      $ ! [         a    U s $ f = f)zu
This is very similar to Version.__str__, but has one subtle difference
with the way it handles the release segment.
r   !.c              3  8   #    U  H  n[        U5      v   M     g 7fr.   str.0xs     r   	<genexpr>'canonicalize_version.<locals>.<genexpr>P   s     >~!s1vv~   z(\.0)+$ c              3  8   #    U  H  n[        U5      v   M     g 7fr.   r6   r8   s     r   r;   r<   X   s     8ZSVVZr=   z.postz.dev+)
isinstancer7   r   r   epochappendjoinreleaserer(   prepostdevlocal)versionr1   parsedpartsrelease_segments        r   canonicalize_versionrO   9   sE    '3	W%F
 E ||q~Q'( hh>v~~>>O&&RA	LL! zzRWW8VZZ889 {{uV[[M*+ zztFJJ<() ||q'(775>G  	N	s   E7 7FF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  ai  US   n[        R                  U5      nUc  [        SU SU  S35      e[        [        [        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): rS   zInvalid build number: z in ''r   )endswithr   countsplitrF   r&   UNICODEr,   r   r   _build_tag_regexr   BuildTagintgroupr
   )filenamedashesrM   	name_partr*   rK   e
build_partbuild_matchbuildtagss              r   parse_wheel_filenamerh   i   s    V$$"A(L
 	
 }H^^C FV">xjI
 	
 NN3
+EaIyBHH^Y

KS"%;H:#FGGY'D%(# {1X
&,,Z8&(E(1E  XK$5$5a$8 9;;L;LQ;OPQU2YD5''!  "8
C
	s   0E 
EEEc                ~   U R                  S5      (       a  U S [        S5      *  nO4U 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): )rX   lenr    
rpartitionr,   r   r   )r`   	file_stemrb   sepversion_partr*   rK   rc   s           r   parse_sdist_filenamero      s    ##.I/				6	"	"^F|,	"z
 	
 $-#7#7#< IL"%=hZ#HIIY'D,' ?  "8
C
	s   B 
B<(B77B<)r*   r7   r"   boolreturnr   )r*   r7   rq   rp   )rK   zVersion | strr1   rp   rq   r7   )r`   r7   rq   z8tuple[NormalizedName, Version, BuildTag, frozenset[Tag]])r`   r7   rq   ztuple[NormalizedName, Version])!
__future__r   rF   typingr   r   r   r   rg   r	   r
   rK   r   r   r^   r7   r]   r   
ValueErrorr   r   r    compile
IGNORECASEr%   r'   r/   r\   r,   r0   rO   rh   ro   r   r   r   <module>rw      s   
 # 	 . .   ,rE#s(O+,)3/* : :  **0"-- jj+ JJQR ::l+  6; '5
 <@--48--`((((=((Vr   