B
    `!                 @   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rd 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   W/home/kop/projects/devel/pgwui/test_venv/lib/python3.7/site-packages/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.
    N)r   r   r   r   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s,yt| } W n tk
r*   | S X g }| jdkrL|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 )N)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$    

&



r3   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|| 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   r6   z"Invalid build number: {0} in '{1}'r   )endswithr   r)   countsplitr*   matchUNICODEr   r   _build_tag_regexr   BuildTagintgroupr	   )
filenamedashesr2   	name_partr   r1   
build_partbuild_matchbuildtagsr   r   r   parse_wheel_filenameX   s0    


 rJ   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}ir   zInvalid sdist filename: {0})r:   r   r)   
rpartitionr   r   )rC   rE   sepversion_partr   r1   r   r   r   parse_sdist_filename{   s    
rN   )"
__future__r   r   r   r*   _typingr   r   rI   r   r	   r1   r
   r   typingr   r   r   r   rA   r"   r@   r   tuple
ValueErrorr   r   compiler   r?   r   r3   rJ   rN   r   r   r   r   <module>   s$   

*#