3

g                 @   sf   d dl mZmZmZ d dlZddlmZ ddlmZm	Z	 erHd dl
mZ ejdZdd	 Zd
d ZdS )    )absolute_importdivisionprint_functionN   )MYPY_CHECK_RUNNING)InvalidVersionVersion)Unionz[-_.]+c             C   s   t jd| j S )N-)_canonicalize_regexsublower)name r   ?/tmp/pip-unpacked-wheel-v59g9nu1/pip/_vendor/packaging/utils.pycanonicalize_name   s    r   c             C   s   yt | }W n tk
r    | S X g }|jdkrB|jdj|j |jtjdddjdd |jD  |j	dk	r|jdjd	d |j	D  |j
dk	r|jd
j|j
 |jdk	r|jdj|j |jdk	r|jdj|j dj|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>,   s    z'canonicalize_version.<locals>.<genexpr>Nc             s   s   | ]}t |V  qd S )N)r   )r   r   r   r   r   r   0   s    z.post{0}z.dev{0}z+{0})r   r   epochappendformatrer   joinreleaseprepostdevlocal)_versionversionpartsr   r   r   canonicalize_version   s"    
&



r%   )
__future__r   r   r   r   _typingr   r#   r   r   typingr	   compiler   r   r%   r   r   r   r   <module>   s   
