
    |g                       d dl mZ d dlZd dlmZmZmZmZ ddlm	Z	m
Z
 ddlmZmZ eed   eeef   f   Z ede      Z G d	 d
e      Z G d de      Z G d de      Z ej,                  dej.                        Z ej,                  d      Z ej,                  d      Z ej,                  d      ZddddZddZdd	 	 	 	 	 ddZ	 	 	 	 ddZd dZ y)!    )annotationsN)NewTypeTupleUnioncast   )Tag	parse_tag)InvalidVersionVersion NormalizedNamec                      e Zd ZdZy)InvalidNamezW
    An invalid distribution name; users should refer to the packaging user guide.
    N__name__
__module____qualname____doc__r       _/var/www/html/pythonbot/venv/lib/python3.12/site-packages/setuptools/_vendor/packaging/utils.pyr   r          r   r   c                      e Zd ZdZy)InvalidWheelFilenamezM
    An invalid wheel filename was found, users should refer to PEP 427.
    Nr   r   r   r   r   r      r   r   r   c                      e Zd ZdZy)InvalidSdistFilenamez^
    An invalid sdist filename was found, users should refer to the packaging user guide.
    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                   |r#t         j                  |       st        d|       t        j	                  d|       j                         }t        t        |      S )Nzname is invalid: -)_validate_regexmatchr   _canonicalize_regexsublowerr   r   )namer   values      r   canonicalize_namer'   -   sM    --d3-dX677##C.446E&&r   c                0    t         j                  |       d uS N)_normalized_regexr!   )r%   s    r   is_normalized_namer+   5   s    ""4(44r   T)strip_trailing_zeroc                  t        | t              r	 t        |       }n| }g }|j                  dk7  r|j                  |j                   d       dj                  d |j                  D              }|rt        j                  dd|      }|j                  |       |j                  1|j                  dj                  d |j                  D                     |j                  |j                  d|j                          |j                  |j                  d	|j                          |j                  |j                  d
|j                          dj                  |      S # t        $ r | cY S w xY w)z
    This is very similar to Version.__str__, but has one subtle difference
    with the way it handles the release segment.
    r   !.c              3  2   K   | ]  }t        |        y wr)   str.0xs     r   	<genexpr>z'canonicalize_version.<locals>.<genexpr>P   s     >!s1v>   z(\.0)+$ c              3  2   K   | ]  }t        |        y wr)   r1   r3   s     r   r6   z'canonicalize_version.<locals>.<genexpr>X   s     8SV8r7   z.postz.dev+)
isinstancer2   r   r   epochappendjoinreleaserer#   prepostdevlocal)versionr,   parsedpartsrelease_segments        r   canonicalize_versionrI   9   sB    '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   E' 'E54E5c                   | j                  d      st        d|        | d d } | j                  d      }|dvrt        d|        | j                  d|dz
        }|d   }d	|v s%t	        j
                  d
|t        j                        t        d|        t        |      }	 t        |d         }|dk(  rh|d   }t        j                  |      }|t        d| d|  d      t        t        t        |j                  d            |j                  d      f      }	nd}	t        |d         }
|||	|
fS # t        $ r}t        d|        |d }~ww xY w)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): rM   zInvalid build number: z in ''r   )endswithr   countsplitr@   r!   UNICODEr'   r   r   _build_tag_regexr   BuildTagintgroupr
   )filenamedashesrG   	name_partr%   rE   e
build_partbuild_matchbuildtagss              r   parse_wheel_filenamerb   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   %D6 6	E?EEc                b   | j                  d      r| d t        d        }n/| j                  d      r| d t        d        }nt        d|        |j                  d      \  }}}|st        d|        t	        |      }	 t        |      }||fS # t        $ r}t        d|        |d }~ww xY w)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): )rR   lenr   
rpartitionr'   r   r   )rZ   	file_stemr\   sepversion_partr%   rE   r]   s           r   parse_sdist_filenameri      s    #.I/				6	"^F|,	"z
 	
 $-#7#7#< IsL"%=hZ#HIIY'D,' '?  "8
C
	s   B 	B.B))B.)r%   r2   r   boolreturnr   )r%   r2   rk   rj   )rE   zVersion | strr,   rj   rk   r2   )rZ   r2   rk   z8tuple[NormalizedName, Version, BuildTag, frozenset[Tag]])rZ   r2   rk   ztuple[NormalizedName, Version])!
__future__r   r@   typingr   r   r   r   ra   r	   r
   rE   r   r   rX   r2   rW   r   
ValueErrorr   r   r   compile
IGNORECASEr    r"   r*   rV   r'   r+   rI   rb   ri   r   r   r   <module>rq      s  
 # 	 . .   ,rE#s(O+,)3/* : :  "**0"-- !bjj+ BJJQR 2::l+  6; '5
 <@--48--`((((=((Vr   