
    Ri                       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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ddd&dZd'dZddd(d Zd)d#Zd*d%Z dS )+    )annotationsN)NewTypeTupleUnioncast   )Tag	parse_tag)InvalidVersionVersion_TrimmedRelease NormalizedNamec                      e Zd ZdZdS )InvalidNamezW
    An invalid distribution name; users should refer to the packaging user guide.
    N__name__
__module____qualname____doc__r       b/Users/shanyulin/my-agent/.venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/utils.pyr   r                 r   r   c                      e Zd ZdZdS )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dS )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+[a-z0-9]|[a-z0-9]([a-z0-9-](?!--))*[a-z0-9]z	(\d+)(.*)F)validatenamestrr   boolreturnc               2   |r,t                               |           st          d|           |                                                     dd                              dd          }d|v r|                    dd          }d|v t          d|          S )Nzname is invalid: _-.z--r   )_validate_regex	fullmatchr   lowerreplacer   )r   r   values      r   canonicalize_namer,   *   s     811$77 86d66777 JJLL  c**223<<E
%--dC(( %-- %(((r   c                :    t                               |           d uS )N)_normalized_regexr(   )r   s    r   is_normalized_namer/   7   s    &&t,,D88r   T)strip_trailing_zeroversionVersion | strr0   c                   t          | t                    r0	 t          |           } n# t          $ r t          |           cY S w xY wt          |rt	          |           n|           S )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'
    )
isinstancer    r   r   r   )r1   r0   s     r   canonicalize_versionr5   ;   sx    , '3  	 g&&GG 	  	  	 w<<	 +>Kw'''GLLLs   ' AAfilename8tuple[NormalizedName, Version, BuildTag, frozenset[Tag]]c                B   |                      d          st          d|           | d d         } |                     d          }|dvrt          d|           |                     d|dz
            }|d         }d	|v s t	          j        d
|t          j                  t          d|           t          |          }	 t          |d                   }n%# t          $ r}t          d|           |d }~ww xY w|dk    r|d         }t                              |          }|t          d| d|           t          dt          |                    d                    |                    d          f          }	nd}	t          |d                   }
|||	|
fS )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
   )r6   dashesparts	name_partr   r1   e
build_partbuild_matchbuildtagss              r   parse_wheel_filenamerQ   Y   s    V$$ 
"N(NN
 
 	
 }H^^C  FV"KxKK
 
 	
 NN3
++EaIyBH^Y
KKS"#HH#H#HIIIY''D%(##   "EEE
 
	
 {{1X
&,,Z88&EEEEE   Z#k&7&7&:&:";";[=N=Nq=Q=Q!RSSU2YD'5$''s   C 
C<$C77C<tuple[NormalizedName, Version]c                   |                      d          r| d t          d                    }n@|                      d          r| d t          d                    }nt          d|           |                    d          \  }}}|st          d|           t	          |          }	 t          |          }n%# t          $ r}t          d|           |d }~ww xY w||fS )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   )r6   	file_stemrK   sepversion_partr   r1   rL   s           r   parse_sdist_filenamerY      s,   ## 
.I./					6	"	" 
^F|^,		" 
 
 	
 $-#7#7#<#< IsL L"#Jh#J#JKKKY''D,''   "EEE
 
	
 '?s   ,B< <
CCC)r   r    r   r!   r"   r   )r   r    r"   r!   )r1   r2   r0   r!   r"   r    )r6   r    r"   r7   )r6   r    r"   rR   )!
__future__r   rC   typingr   r   r   r   rP   r	   r
   r1   r   r   r   rG   r    r>   r   
ValueErrorr   r   r   compile
IGNORECASEr'   r.   rF   r,   r/   r5   rQ   rY   r   r   r   <module>r_      s  
 # " " " " " 				 . . . . . . . . . . . .                 = = = = = = = = = =rE#s(O+,)3//    *       :       :    "*Er}UUBJMNN 2:l++  6; 
) 
) 
) 
) 
) 
)9 9 9 9
 <@M M M M M M<(( (( (( ((V     r   