a
    hbòfh  ã                   @   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eedœdd„Zeeef edœdd„Zeeeeeee f dœdd„Zeeeef dœdd„ZdS )é    N)Ú	FrozenSetÚNewTypeÚTupleÚUnionÚcasté   )ÚTagÚ	parse_tag)ÚInvalidVersionÚVersion© ÚNormalizedNamec                   @   s   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   úX/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/pip/_vendor/packaging/utils.pyr      s   r   c                   @   s   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      s   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   )Úversionr   c              
   C   sþ   t | tƒr0zt| ƒ}W q4 ty,   |  Y S 0 n| }g }|jdkrT| |j› d�¡ | t ddd dd„ |j	D ƒ¡¡¡ |j
dur | d d	d„ |j
D ƒ¡¡ |jdur¼| d
|j› �¡ |jdurØ| d|j› �¡ |jdurô| 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   s   | ]}t |ƒV  qd S ©N©Ústr©Ú.0Úxr   r   r   Ú	<genexpr><   ó    z'canonicalize_version.<locals>.<genexpr>Nc                 s   s   | ]}t |ƒV  qd S 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&    

&



r7   )Úfilenamer   c           
      C   s  |   d¡std| › �ƒ‚| d d… } |  d¡}|dvrDtd| › �ƒ‚|  d|d ¡}|d }d	|v sxt d
|tj¡d u r†td| › �ƒ‚t|ƒ}t|d ƒ}|dkrò|d }t	 |¡}|d u rÒt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Úsplitr.   ÚmatchÚUNICODEr   r   Ú_build_tag_regexr   ÚBuildTagÚintÚgroupr	   )
r8   Údashesr6   Ú	name_partr   r   Ú
build_partÚbuild_matchÚbuildÚtagsr   r   r   Úparse_wheel_filenameQ   s6    
ÿ
ÿ
ÿ rO   c                 C   s„   |   d¡r| d tdƒ … }n,|   d¡r<| d tdƒ … }ntd| › �ƒ‚| d¡\}}}|sltd| › �ƒ‚t|ƒ}t|ƒ}||fS )Nz.tar.gzz.zipz@Invalid sdist filename (extension must be '.tar.gz' or '.zip'): r   zInvalid sdist filename: )r@   Úlenr   Ú
rpartitionr   r   )r8   Ú	file_stemrJ   ÚsepÚversion_partr   r   r   r   r   Úparse_sdist_filenameu   s    

ÿÿrU   )r.   Útypingr   r   r   r   r   rN   r   r	   r   r
   r   rG   r$   rF   r   Ú
ValueErrorr   r   Úcompiler   rE   r   r7   rO   rU   r   r   r   r   Ú<module>   s   


,þ$