U
    +|j!  ã                   @   sì   d dl mZmZmZ d dlZddlmZmZ ddlm	Z	m
Z
 ddlmZmZ erŒd dlmZmZmZmZ eed eeef f Zed	eƒZneZeZG d
d„ deƒZG dd„ deƒZe d¡Ze d¡Zdd„ Zdd„ Zdd„ Z dd„ Z!dS )é    )Úabsolute_importÚdivisionÚprint_functionNé   )ÚTYPE_CHECKINGÚcast)ÚTagÚ	parse_tag)ÚInvalidVersionÚVersion)Ú	FrozenSetÚNewTypeÚTupleÚUnion© Ú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   úcC:\Users\snmko\Desktop\web_content\django_cbt\venv\Lib\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+)(.*)c                 C   s   t  d| ¡ ¡ }tt|ƒS )Nú-)Ú_canonicalize_regexÚsubÚlowerr   r   )ÚnameÚvaluer   r   r   Úcanonicalize_name'   s    r    c              
   C   sú   t | tƒs0zt| ƒ} W n tk
r.   |  Y S X g }| jdkrP| d | j¡¡ | t ddd dd„ | j	D ƒ¡¡¡ | j
dk	rœ| d d	d„ | j
D ƒ¡¡ | jdk	r¸| d
 | j¡¡ | jdk	rÔ| d | j¡¡ | jdk	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}!z(\.0)+$Ú Ú.c                 s   s   | ]}t |ƒV  qd S ©N©Ústr©Ú.0Úxr   r   r   Ú	<genexpr>C   s     z'canonicalize_version.<locals>.<genexpr>Nc                 s   s   | ]}t |ƒV  qd S r#   r$   r&   r   r   r   r)   G   s     z.post{0}z.dev{0}z+{0})Ú
isinstancer   r
   ÚepochÚappendÚformatÚrer   ÚjoinÚreleaseÚpreÚpostÚdevÚlocal)ÚversionÚpartsr   r   r   Úcanonicalize_version.   s$    


&



r7   c           
      C   s  |   d¡std | ¡ƒ‚| d d… } |  d¡}|dkrDtd | ¡ƒ‚|  d|d ¡}|d }d	|ksxt d
|tj¡d kr†td | ¡ƒ‚t|ƒ}t	|d ƒ}|dkrì|d }t
 |¡}|d krÌtd || ¡ƒ‚ttt| d¡ƒ| d¡fƒ}nd}t|d ƒ}	||||	fS )Nz.whlz6Invalid wheel filename (extension must be '.whl'): {0}éüÿÿÿr   )é   é   z3Invalid wheel filename (wrong number of parts): {0}é   r   Ú__z^[\w\d._]*$zInvalid project name: {0}r   r:   z"Invalid build number: {0} in '{1}'r   éÿÿÿÿ)Úendswithr   r-   ÚcountÚsplitr.   ÚmatchÚUNICODEr    r   Ú_build_tag_regexr   ÚBuildTagÚintÚgroupr	   )
ÚfilenameÚdashesr6   Ú	name_partr   r5   Ú
build_partÚbuild_matchÚbuildÚtagsr   r   r   Úparse_wheel_filenameX   s6    
ÿ
ÿ

ÿ rN   c                 C   sZ   |   d¡std | ¡ƒ‚| d d…  d¡\}}}|sBtd | ¡ƒ‚t|ƒ}t|ƒ}||fS )Nz.tar.gzz9Invalid sdist filename (extension must be '.tar.gz'): {0}iùÿÿÿr   zInvalid sdist filename: {0})r>   r   r-   Ú
rpartitionr    r   )rG   rI   ÚsepÚversion_partr   r5   r   r   r   Úparse_sdist_filename{   s    
ÿrR   )"Ú
__future__r   r   r   r.   Ú_typingr   r   rM   r   r	   r5   r
   r   Útypingr   r   r   r   rE   r%   rD   r   ÚtupleÚ
ValueErrorr   r   Úcompiler   rC   r    r7   rN   rR   r   r   r   r   Ú<module>   s$   

*#