o
    x¨Êh§  ã                   @  s  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
„ d
eƒZG dd„ deƒZG dd„ deƒZe dej¡Ze d¡Ze d¡Ze d¡Zddœd,dd„Zd-dd„Zddœd.d#d$„Zd/d'd(„Zd0d*d+„Z dS )1é    )ÚannotationsN)ÚNewTypeÚTupleÚUnionÚcasté   )ÚTagÚ	parse_tag)ÚInvalidVersionÚVersion© Ú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   r   r   úA/var/www/html/env/lib/python3.10/site-packages/packaging/utils.pyr      ó    r   c                   @  r   )ÚInvalidWheelFilenamezM
    An invalid wheel filename was found, users should refer to PEP 427.
    Nr   r   r   r   r   r      r   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)^([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)ÚvalidateÚnameÚstrr   ÚboolÚreturnc                C  s6   |rt  | ¡std| ›�ƒ‚t d| ¡ ¡ }tt|ƒS )Nzname is invalid: ú-)Ú_validate_regexÚmatchr   Ú_canonicalize_regexÚsubÚlowerr   r   )r   r   Úvaluer   r   r   Úcanonicalize_name-   s   
r%   c                 C  s   t  | ¡d uS ©N)Ú_normalized_regexr    )r   r   r   r   Úis_normalized_name5   s   r(   T)Ústrip_trailing_zeroÚversionúVersion | strr)   c                C  s  t | tƒrzt| ƒ}W n ty   |  Y S w | }g }|jdkr)| |j› d�¡ d dd„ |jD ƒ¡}|r=t 	dd|¡}| |¡ |j
durU| d d	d„ |j
D ƒ¡¡ |jdurc| d
|j› �¡ |jdurq| 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   ú!Ú.c                 s  ó   � | ]}t |ƒV  qd S r&   ©r   ©Ú.0Úxr   r   r   Ú	<genexpr>P   ó   € z'canonicalize_version.<locals>.<genexpr>z(\.0)+$Ú Nc                 s  r.   r&   r/   r0   r   r   r   r3   X   r4   z.postz.devú+)Ú
isinstancer   r   r
   ÚepochÚappendÚjoinÚreleaseÚrer"   ÚpreÚpostÚdevÚlocal)r*   r)   ÚparsedÚpartsÚrelease_segmentr   r   r   Úcanonicalize_version9   s.   
þ






rD   Úfilenameú8tuple[NormalizedName, Version, BuildTag, frozenset[Tag]]c              
   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|ƒ}zt|d ƒ}W n t	yc } ztd| › �ƒ|‚d }~ww |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   z*Invalid wheel filename (invalid version): rI   zInvalid build number: z in 'ú'r   éÿÿÿÿ)Úendswithr   ÚcountÚsplitr<   r    ÚUNICODEr%   r   r
   Ú_build_tag_regexr   ÚBuildTagÚintÚgroupr	   )rE   ÚdashesrB   Ú	name_partr   r*   ÚeÚ
build_partÚbuild_matchÚbuildÚtagsr   r   r   Úparse_wheel_filenamei   sH   
ÿ
ÿÿþ€ÿ
ÿ r]   útuple[NormalizedName, Version]c              
   C  s°   |   d¡r| d tdƒ … }n|   d¡r| d tdƒ … }ntd| › �ƒ‚| d¡\}}}|s6td| › �ƒ‚t|ƒ}z	t|ƒ}W ||fS  tyW } ztd| › �ƒ|‚d }~w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): )rN   Úlenr   Ú
rpartitionr%   r   r
   )rE   Ú	file_stemrW   ÚsepÚversion_partr   r*   rX   r   r   r   Úparse_sdist_filename”   s0   

ÿÿ
ûÿþ€ÿrd   )r   r   r   r   r   r   )r   r   r   r   )r*   r+   r)   r   r   r   )rE   r   r   rF   )rE   r   r   r^   )!Ú
__future__r   r<   Útypingr   r   r   r   r\   r   r	   r*   r
   r   rT   r   rS   r   Ú
ValueErrorr   r   r   ÚcompileÚ
IGNORECASEr   r!   r'   rR   r%   r(   rD   r]   rd   r   r   r   r   Ú<module>   s,   
ÿ



ÿ
0+