U
    ²ð]¤  ã                   @   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 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  d| ¡ ¡ S )Nú-)Ú_canonicalize_regexÚsubÚlower)Úname© r   ú1/usr/lib/python3/dist-packages/packaging/utils.pyÚcanonicalize_name   s    r   c              
   C   sð   zt | ƒ}W n tk
r$   |  Y S X g }|jdkrF| 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>,   s     z'canonicalize_version.<locals>.<genexpr>Nc                 s   s   | ]}t |ƒV  qd S r   r   r   r   r   r   r   0   s     z.post{0}z.dev{0}z+{0})r   r   ZepochÚappendÚformatÚrer   ÚjoinÚreleaseZpreZpostZdevZlocal)Z_versionÚversionÚpartsr   r   r   Úcanonicalize_version   s"    

&



r"   )Z
__future__r   r   r   r   Z_typingr   r    r   r   Útypingr	   Úcompiler   r   r"   r   r   r   r   Ú<module>   s   
