
@W$-                 @   s  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l Z d d l m Z d d d d d	 g Z	 e j
 d
 d d d d d d g  Z d d   Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z e j d e j  Z i d d 6d d 6d d 6d d 6d d 6Z d d   Z d d    Z d! Z Gd" d   d e  Z d# d$   Z e j d%  Z d& d'   Z d( d)   Z d S)*    )absolute_importdivisionprint_functionN   )InfinityparseVersionLegacyVersionInvalidVersionVERSION_PATTERN_Versionepochreleasedevprepostlocalc             C   s1   y t  |   SWn t k
 r, t |   SYn Xd S)z
    Parse the given version string and return either a :class:`Version` object
    or a :class:`LegacyVersion` object depending on if the given version is
    a valid PEP 440 version or a legacy version.
    N)r   r
   r	   )version r   </tmp/pip-build-sgmvqjpy/pip/pip/_vendor/packaging/version.pyr      s    c               @   s   e  Z d  Z d Z d S)r
   zF
    An invalid version was found, users should refer to PEP 440.
    N)__name__
__module____qualname____doc__r   r   r   r   r
   $   s   c               @   sp   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 d
   Z d d   Z d d   Z	 d d   Z
 d S)_BaseVersionc             C   s   t  |  j  S)N)hash_key)selfr   r   r   __hash__,   s    z_BaseVersion.__hash__c             C   s   |  j  | d d    S)Nc             S   s
   |  | k  S)Nr   )sor   r   r   <lambda>0   s    z%_BaseVersion.__lt__.<locals>.<lambda>)_compare)r   otherr   r   r   __lt__/   s    z_BaseVersion.__lt__c             C   s   |  j  | d d    S)Nc             S   s
   |  | k S)Nr   )r   r    r   r   r   r!   3   s    z%_BaseVersion.__le__.<locals>.<lambda>)r"   )r   r#   r   r   r   __le__2   s    z_BaseVersion.__le__c             C   s   |  j  | d d    S)Nc             S   s
   |  | k S)Nr   )r   r    r   r   r   r!   6   s    z%_BaseVersion.__eq__.<locals>.<lambda>)r"   )r   r#   r   r   r   __eq__5   s    z_BaseVersion.__eq__c             C   s   |  j  | d d    S)Nc             S   s
   |  | k S)Nr   )r   r    r   r   r   r!   9   s    z%_BaseVersion.__ge__.<locals>.<lambda>)r"   )r   r#   r   r   r   __ge__8   s    z_BaseVersion.__ge__c             C   s   |  j  | d d    S)Nc             S   s
   |  | k S)Nr   )r   r    r   r   r   r!   <   s    z%_BaseVersion.__gt__.<locals>.<lambda>)r"   )r   r#   r   r   r   __gt__;   s    z_BaseVersion.__gt__c             C   s   |  j  | d d    S)Nc             S   s
   |  | k S)Nr   )r   r    r   r   r   r!   ?   s    z%_BaseVersion.__ne__.<locals>.<lambda>)r"   )r   r#   r   r   r   __ne__>   s    z_BaseVersion.__ne__c             C   s&   t  | t  s t S| |  j | j  S)N)
isinstancer   NotImplementedr   )r   r#   methodr   r   r   r"   A   s    z_BaseVersion._compareN)r   r   r   r   r$   r%   r&   r'   r(   r)   r"   r   r   r   r   r   *   s   r   c               @   s   e  Z d  Z d d   Z d d   Z d d   Z e d d    Z e d	 d
    Z e d d    Z	 e d d    Z
 e d d    Z d S)r	   c             C   s%   t  |  |  _ t |  j  |  _ d  S)N)str_version_legacy_cmpkeyr   )r   r   r   r   r   __init__J   s    zLegacyVersion.__init__c             C   s   |  j  S)N)r.   )r   r   r   r   __str__N   s    zLegacyVersion.__str__c             C   s   d j  t t |     S)Nz<LegacyVersion({0})>)formatreprr-   )r   r   r   r   __repr__Q   s    zLegacyVersion.__repr__c             C   s   |  j  S)N)r.   )r   r   r   r   publicT   s    zLegacyVersion.publicc             C   s   |  j  S)N)r.   )r   r   r   r   base_versionX   s    zLegacyVersion.base_versionc             C   s   d  S)Nr   )r   r   r   r   r   \   s    zLegacyVersion.localc             C   s   d S)NFr   )r   r   r   r   is_prerelease`   s    zLegacyVersion.is_prereleasec             C   s   d S)NFr   )r   r   r   r   is_postreleased   s    zLegacyVersion.is_postreleaseN)r   r   r   r0   r1   r4   propertyr5   r6   r   r7   r8   r   r   r   r   r	   H   s   z(\d+ | [a-z]+ | \.| -)cpreviewzfinal--rc@c             c   s~   xr t  j |   D]a } t j | |  } | s | d k rA q n  | d  d  d k rh | j d  Vq d | Vq Wd Vd  S)N.r   
0123456789   *z*final)_legacy_version_component_resplit_legacy_version_replacement_mapgetzfill)r   partr   r   r   _parse_version_partsr   s    rI   c             C   s   d } g  } x t  |  j    D] } | j d  r | d k  rj x' | rf | d d k rf | j   qC Wn  x' | r | d d k r | j   qm Wn  | j |  q Wt |  } | | f S)	Nr   rB   z*finalz*final-00000000rK   rK   )rI   lower
startswithpopappendtuple)r   r   partsrH   r   r   r   r/      s    r/   a  
    v?
    (?:
        (?:(?P<epoch>[0-9]+)!)?                           # epoch
        (?P<release>[0-9]+(?:\.[0-9]+)*)                  # release segment
        (?P<pre>                                          # pre-release
            [-_\.]?
            (?P<pre_l>(a|b|c|rc|alpha|beta|pre|preview))
            [-_\.]?
            (?P<pre_n>[0-9]+)?
        )?
        (?P<post>                                         # post release
            (?:-(?P<post_n1>[0-9]+))
            |
            (?:
                [-_\.]?
                (?P<post_l>post|rev|r)
                [-_\.]?
                (?P<post_n2>[0-9]+)?
            )
        )?
        (?P<dev>                                          # dev release
            [-_\.]?
            (?P<dev_l>dev)
            [-_\.]?
            (?P<dev_n>[0-9]+)?
        )?
    )
    (?:\+(?P<local>[a-z0-9]+(?:[-_\.][a-z0-9]+)*))?       # local version
c               @   s   e  Z d  Z e j d e d e j e j B Z d d   Z	 d d   Z
 d d   Z e d	 d
    Z e d d    Z e d d    Z e d d    Z e d d    Z d S)r   z^\s*z\s*$c             C   s^  |  j  j |  } | s0 t d j |    n  t d | j d  rZ t | j d   n d d t d d   | j d  j d  D  d t	 | j d	  | j d
   d t	 | j d  | j d  p | j d   d t	 | j d  | j d   d t
 | j d    |  _ t |  j j |  j j |  j j |  j j |  j j |  j j  |  _ d  S)NzInvalid version: '{0}'r   r   r   c             s   s   |  ] } t  |  Vq d  S)N)int).0ir   r   r   	<genexpr>   s    z#Version.__init__.<locals>.<genexpr>r?   r   pre_lpre_nr   post_lpost_n1post_n2r   dev_ldev_nr   )_regexsearchr
   r2   r   grouprR   rP   rD   _parse_letter_version_parse_local_versionr.   _cmpkeyr   r   r   r   r   r   r   )r   r   matchr   r   r   r0      s.    *+!					zVersion.__init__c             C   s   d j  t t |     S)Nz<Version({0})>)r2   r3   r-   )r   r   r   r   r4      s    zVersion.__repr__c             C   s\  g  } |  j  j d k r7 | j d j |  j  j   n  | j d j d d   |  j  j D   |  j  j d  k	 r | j d j d d   |  j  j D   n  |  j  j d  k	 r | j d j |  j  j d	   n  |  j  j d  k	 r| j d
 j |  j  j d	   n  |  j  j	 d  k	 rO| j d j d j d d   |  j  j	 D    n  d j |  S)Nr   z{0}!r?   c             s   s   |  ] } t  |  Vq d  S)N)r-   )rS   xr   r   r   rU      s    z"Version.__str__.<locals>.<genexpr> c             s   s   |  ] } t  |  Vq d  S)N)r-   )rS   rd   r   r   r   rU      s    z.post{0}r   z.dev{0}z+{0}c             s   s   |  ] } t  |  Vq d  S)N)r-   )rS   rd   r   r   r   rU     s    )
r.   r   rO   r2   joinr   r   r   r   r   )r   rQ   r   r   r   r1      s    ),##/zVersion.__str__c             C   s   t  |   j d d  d S)N+r   r   )r-   rD   )r   r   r   r   r5   
  s    zVersion.publicc             C   sm   g  } |  j  j d k r7 | j d j |  j  j   n  | j d j d d   |  j  j D   d j |  S)Nr   z{0}!r?   c             s   s   |  ] } t  |  Vq d  S)N)r-   )rS   rd   r   r   r   rU     s    z'Version.base_version.<locals>.<genexpr>re   )r.   r   rO   r2   rf   r   )r   rQ   r   r   r   r6     s
    )zVersion.base_versionc             C   s0   t  |   } d | k r, | j d d  d Sd  S)Nrg   r   )r-   rD   )r   version_stringr   r   r   r     s    zVersion.localc             C   s   t  |  j j p |  j j  S)N)boolr.   r   r   )r   r   r   r   r7   !  s    zVersion.is_prereleasec             C   s   t  |  j j  S)N)ri   r.   r   )r   r   r   r   r8   %  s    zVersion.is_postreleaseN)r   r   r   recompiler   VERBOSE
IGNORECASEr]   r0   r4   r1   r9   r5   r6   r   r7   r8   r   r   r   r   r      s   #c             C   s   |  r | d  k r d } n  |  j    }  |  d k r< d }  n? |  d k rQ d }  n* |  d k rf d	 }  n |  d k r{ d }  n  |  t |  f S|  r | r d }  |  t |  f Sd  S)Nr   alphaabetabr:   r   r;   r=   revrr   )r:   zprezpreview)zrevrs   )rL   rR   )letternumberr   r   r   r`   *  s     					r`   z[\._-]c             C   s0   |  d k	 r, t  d d   t j |   D  Sd S)zR
    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    Nc             s   s3   |  ]) } | j    s! | j   n	 t |  Vq d  S)N)isdigitrL   rR   )rS   rH   r   r   r   rU   R  s   z'_parse_local_version.<locals>.<genexpr>)rP   _local_version_seperatorsrD   )r   r   r   r   ra   L  s    	ra   c             C   s   t  t t t j d d   t |      } | d  k r^ | d  k r^ | d  k	 r^ t } n | d  k rs t } n  | d  k r t } n  | d  k r t } n  | d  k r t } n t  d d   | D  } |  | | | | | f S)Nc             S   s
   |  d k S)Nr   r   )rd   r   r   r   r!   `  s    z_cmpkey.<locals>.<lambda>c             s   s7   |  ]- } t  | t  r$ | d  f n
 t | f Vq d S)re   N)r*   rR   r   )rS   rT   r   r   r   rU     s   z_cmpkey.<locals>.<genexpr>)rP   reversedlist	itertools	dropwhiler   )r   r   r   r   r   r   r   r   r   rb   W  s&    		$
	
	
		rb   )
__future__r   r   r   collectionsrz   rj   _structuresr   __all__
namedtupler   r   
ValueErrorr
   objectr   r	   rk   rl   rC   rE   rI   r/   r   r   r`   rw   ra   rb   r   r   r   r   <module>   s0   !&9k