
0c@_                 @   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
 e r d  d l m Z m Z e d e  Z e j d  Z d	 d
   Z d d   Z d S)    )absolute_importdivisionprint_functionN   )TYPE_CHECKINGcast)InvalidVersionVersion)NewTypeUnionNormalizedNamez[-_.]+c             C   s%   t  j d |   j   } t d |  S)N-r   )_canonicalize_regexsublowerr   )namevalue r   :/tmp/pip-build-jynh7p1z/pip/pip/_vendor/packaging/utils.pycanonicalize_name   s    r   c             C   sF  y t  |   } Wn t k
 r( |  SYn Xg  } | j d k rW | 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	 r9| 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   3   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"    	5&r)   )
__future__r   r   r   r   Z_typingr   r   r'   r   r	   Ztypingr
   r   r   r   compiler   r   r)   r   r   r   r   <module>   s   