U
    &%eh                     @   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   Z/var/www/html/Darija-Ai-API/env/lib/python3.8/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r2zt| }W q6 tk
r.   |  Y S X n| }g }|jdkrV||j d |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)+$ .c                 s   s   | ]}t |V  qd S Nstr.0xr   r   r   	<genexpr><   s     z'canonicalize_version.<locals>.<genexpr>Nc                 s   s   | ]}t |V  qd S r"   r#   r%   r   r   r   r(   @   s     z.postz.dev+)
isinstancer$   r   r
   epochappendrer   joinreleaseprepostdevlocal)r   parsedpartsr   r   r   canonicalize_version&   s&    

&



r6   )filenamer   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rtd|  t|}t|d }|dkr|d }t	|}|d krt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	   )
r7   dashesr5   	name_partr   r   
build_partbuild_matchbuildtagsr   r   r   parse_wheel_filenameQ   s6    


 rN   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   )r7   	file_stemrI   sepversion_partr   r   r   r   r   parse_sdist_filenameu   s    

rT   )r-   typingr   r   r   r   r   rM   r   r	   r   r
   r   rF   r$   rE   r   
ValueErrorr   r   compiler   rD   r   r6   rN   rT   r   r   r   r   <module>   s   


,$