o
    Ëý°jh  ã                	   @   s  d dl Z d dlmZ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	„ d	eƒZG d
d„ deƒZe  d¡Ze  d¡Zdedefdd„Zdeeef defdd„Zdedeeeeee f fdd„Zdedeeef fdd„ZdS )é    N)Ú	FrozenSetÚNewTypeÚTupleÚUnionÚcasté   )ÚTagÚ	parse_tag)ÚInvalidVersionÚVersion© ÚNormalizedNamec                   @   ó   e Zd ZdZdS )ÚInvalidWheelFilenamezM
    An invalid wheel filename was found, users should refer to PEP 427.
    N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   úŽ/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pip/_vendor/packaging/utils.pyr      ó    r   c                   @   r   )ÚInvalidSdistFilenamez^
    An invalid sdist filename was found, users should refer to the packaging user guide.
    Nr   r   r   r   r   r      r   r   z[-_.]+z	(\d+)(.*)ÚnameÚreturnc                 C   s   t  d| ¡ ¡ }tt|ƒS )Nú-)Ú_canonicalize_regexÚsubÚlowerr   r   )r   Úvaluer   r   r   Úcanonicalize_name    s   
r   Úversionc              
   C   sü   t | tƒrzt| ƒ}W n ty   |  Y S w | }g }|jdkr)| |j› d�¡ | t ddd dd„ |j	D ƒ¡¡¡ |j
durO| d d	d„ |j
D ƒ¡¡ |jdur]| d
|j› �¡ |jdurk| d|j› �¡ |jdury| d|j› �¡ d |¡S )z�
    This is very similar to Version.__str__, but has one subtle difference
    with the way it handles the release segment.
    r   ú!z(\.0)+$Ú Ú.c                 s   ó   � | ]}t |ƒV  qd S ©N©Ústr©Ú.0Úxr   r   r   Ú	<genexpr><   ó   € z'canonicalize_version.<locals>.<genexpr>Nc                 s   r$   r%   r&   r(   r   r   r   r+   @   r,   z.postz.devú+)Ú
isinstancer'   r   r
   ÚepochÚappendÚrer   ÚjoinÚreleaseÚpreÚpostÚdevÚlocal)r    ÚparsedÚpartsr   r   r   Úcanonicalize_version&   s(   
þ
&




r:   Úfilenamec           
      C   s  |   d¡std| › �ƒ‚| d d… } |  d¡}|dvr"td| › �ƒ‚|  d|d ¡}|d }d	|v s<t d
|tj¡d u rCtd| › �ƒ‚t|ƒ}t|d ƒ}|dkry|d }t	 |¡}|d u ritd|› d| › d�ƒ‚t
t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   r>   zInvalid build number: z in 'ú'r   éÿÿÿÿ)Úendswithr   ÚcountÚsplitr1   ÚmatchÚUNICODEr   r   Ú_build_tag_regexr   ÚBuildTagÚintÚgroupr	   )
r;   Údashesr9   Ú	name_partr   r    Ú
build_partÚbuild_matchÚbuildÚtagsr   r   r   Úparse_wheel_filenameQ   s6   
ÿ
ÿ
ÿ rR   c                 C   s„   |   d¡r| d tdƒ … }n|   d¡r| d tdƒ … }ntd| › �ƒ‚| d¡\}}}|s6td| › �ƒ‚t|ƒ}t|ƒ}||fS )Nz.tar.gzz.zipz@Invalid sdist filename (extension must be '.tar.gz' or '.zip'): r   zInvalid sdist filename: )rC   Úlenr   Ú
rpartitionr   r   )r;   Ú	file_stemrM   ÚsepÚversion_partr   r    r   r   r   Úparse_sdist_filenameu   s   

ÿÿrX   )r1   Útypingr   r   r   r   r   rQ   r   r	   r    r
   r   rJ   r'   rI   r   Ú
ValueErrorr   r   Úcompiler   rH   r   r:   rR   rX   r   r   r   r   Ú<module>   s$   


+ÿ
þ$