+
    UBi                    *   ^ RI Ht ^ RIt^ RIt^ RIHtHtHtHt ^RI	H
t
Ht ^RIHtHtHt ]]R!,          ]]]3,          3,          t]! R]4      t ! R R]4      t ! R	 R
]4      t ! R R]4      t]P0                  ! R]P2                  4      t]P0                  ! R4      t]P0                  ! R4      t]P0                  ! R4      tRR/R R lltR R lt]P@                  RR/R R ll4       t!]!PD                  RR/R R ll4       t#R R lt$R R  lt%R# )"    )annotationsN)NewTypeTupleUnioncast)Tag	parse_tag)InvalidVersionVersion_TrimmedReleaseNormalizedNamec                      ] tR t^tRtRtR# )InvalidNamezO
An invalid distribution name; users should refer to the packaging user guide.
 N__name__
__module____qualname____firstlineno____doc____static_attributes__r       4/usr/lib/python3.14/site-packages/packaging/utils.pyr   r          r   r   c                      ] tR t^tRtRtR# )InvalidWheelFilenamezE
An invalid wheel filename was found, users should refer to PEP 427.
r   Nr   r   r   r   r   r      r   r   r   c                      ] tR t^tRtRtR# )InvalidSdistFilenamezV
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+)(.*)validateFc               $    V ^8  d   QhRRRRRR/# )   namestrr   boolreturnr   r   )formats   "r   __annotate__r'   .   s!     ' 'C 'd '~ 'r   c                   V'       d+   \         P                  V 4      '       g   \        R V : 24      h\        P	                  RV 4      P                  4       p\        \        V4      # )zname is invalid: -)_validate_regexmatchr   _canonicalize_regexsublowerr   r   )r"   r   values   &$ r   canonicalize_namer0   .   sP    --d33-dX677##C.446E&&r   c                    V ^8  d   QhRRRR/# )r!   r"   r#   r%   r$   r   )r&   s   "r   r'   r'   6   s     5 5S 5T 5r   c                0    \         P                  V 4      R J# )N)_normalized_regexr+   )r"   s   &r   is_normalized_namer4   6   s    ""4(44r   strip_trailing_zeroTc               $    V ^8  d   QhRRRRRR/# )r!   versionzVersion | strr5   r$   r%   r#   r   )r&   s   "r   r'   r'   ;   s)     R RR48RRr   c               X    \        V'       d   \        \        V 4      4      4      # T 4      # )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'
)r#   r   )r7   r5   s   &$r   canonicalize_versionr9   :   s#    . 0Cs7|,QQQQr   c               $    V ^8  d   QhRRRRRR/# )r!   r7   r#   r5   r$   r%   r   )r&   s   "r   r'   r'   U   s&     Q Qs QD QC Qr   c               X     \        V 4      p\        Y!R 7      #   \         d    T u # i ; i))r5   )r   r
   r9   )r7   r5   parseds   &$ r   _r=   T   s4    !  PP  s    ))c                    V ^8  d   QhRRRR/# )r!   filenamer#   r%   z8tuple[NormalizedName, Version, BuildTag, frozenset[Tag]]r   )r&   s   "r   r'   r'   ^   s     (( ((((=((r   c                   V P                  R 4      '       g   \        RV : 24      hV RR p V P                  R4      pVR9  d   \        RV : 24      hV P                  RV^,
          4      pV^ ,          pRV9   g)   \        P
                  ! RV\        P                  4      f   \        RV : 24      h\        V4      p \        V^,          4      pT^8X  do   T^,          p\        P                  T4      pTf   \        R	T R
T : 24      h\        \        \        TP                  ^4      4      TP                  ^4      34      p	MRp	\        TR,          4      p
YEY3#   \         d   p\        RT : 24      ThRp?ii ; i)z.whlz3Invalid wheel filename (extension must be '.whl'): Nr)   z0Invalid wheel filename (wrong number of parts): __z^[\w\d._]*$zInvalid project name: z*Invalid wheel filename (invalid version): zInvalid build number: z in )      r   )endswithr   countsplitrer+   UNICODEr0   r   r
   _build_tag_regexr   BuildTagintgroupr	   )r?   dashesparts	name_partr"   r7   e
build_partbuild_matchbuildtagss   &          r   parse_wheel_filenamerW   ^   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  XK$5$5a$8 9;;L;LQ;OPQU2YD5''!  "8E
	s   ?E E>)E99E>c                    V ^8  d   QhRRRR/# )r!   r?   r#   r%   ztuple[NormalizedName, Version]r   )r&   s   "r   r'   r'      s      3 +I r   c                   V P                  R 4      '       d   V R\        R 4      )  pM6V P                  R4      '       d   V R\        R4      )  pM\        RV : 24      hVP                  R4      w  r#pV'       g   \        RV : 24      h\	        V4      p \        V4      pWV3#   \         d   p\        RT : 24      ThRp?ii ; i)z.tar.gzNz.zipz@Invalid sdist filename (extension must be '.tar.gz' or '.zip'): r)   zInvalid sdist filename: z*Invalid sdist filename (invalid version): )rF   lenr   
rpartitionr0   r   r
   )r?   	file_stemrQ   sepversion_partr"   r7   rR   s   &       r   parse_sdist_filenamer_      s    ##.I/				6	"	"^F|,	"|
 	
 $-#7#7#< IL"%=h\#JKKY'D,' ?  "8E
	s   B# #C.B>>Cr   )&
__future__r   	functoolsrI   typingr   r   r   r   rV   r   r	   r7   r
   r   r   rM   r#   rL   r   
ValueErrorr   r   r   compile
IGNORECASEr*   r,   r3   rK   r0   r4   singledispatchr9   registerr=   rW   r_   r   r   r   <module>rh      s  
 #  	 . .   = =rE#s(O+,)3/* : :  **0"-- jj+ JJQR ::l+ 'U '5 R;?R R2 Q4 Q Q((Vr   