
(hf>              
   @   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 Z d d l m	 Z	 m
 Z
 d d l m Z e rd  d l m Z m Z m Z m Z m Z m Z m Z d d l m Z m Z e e e f Z e e e e e f f Z e e e e f Z e e e e e e e e f e e e f f d f f Z e e e e d f e e e e f Z e e e e d f f Z e e e e f e e e f g e f 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, d d d d d d d d d d  i Z- d! d"   Z. d# d$   Z/ d% Z0 Gd& d
   d
 e(  Z1 d' d(   Z2 e j* d)  Z3 d* d+   Z4 d, d-   Z5 d S).    )absolute_importdivisionprint_functionN   )InfinityNegativeInfinity)TYPE_CHECKING)CallableIteratorListOptionalSupportsIntTupleUnion)InfinityTypeNegativeInfinityType.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-kmztzv_d/pip/pip/_vendor/packaging/version.pyr   1   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               @   sj   e  Z d  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 S)_BaseVersionNc             C   s   t  |  j  S)N)hash_key)selfr   r   r    __hash__G   s    z_BaseVersion.__hash__c             C   s#   t  | t  s t S|  j | j k  S)N)
isinstancer%   NotImplementedr'   )r(   otherr   r   r    __lt__N   s    z_BaseVersion.__lt__c             C   s#   t  | t  s t S|  j | j k S)N)r*   r%   r+   r'   )r(   r,   r   r   r    __le__U   s    z_BaseVersion.__le__c             C   s#   t  | t  s t S|  j | j k S)N)r*   r%   r+   r'   )r(   r,   r   r   r    __eq__\   s    z_BaseVersion.__eq__c             C   s#   t  | t  s t S|  j | j k S)N)r*   r%   r+   r'   )r(   r,   r   r   r    __ge__c   s    z_BaseVersion.__ge__c             C   s#   t  | t  s t S|  j | j k S)N)r*   r%   r+   r'   )r(   r,   r   r   r    __gt__j   s    z_BaseVersion.__gt__c             C   s#   t  | t  s t S|  j | j k S)N)r*   r%   r+   r'   )r(   r,   r   r   r    __ne__q   s    z_BaseVersion.__ne__)r!   r"   r#   r'   r)   r-   r.   r/   r0   r1   r2   r   r   r   r    r%   D   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 e 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   s5   t  |  |  _ t |  j  |  _ t j d t  d  S)NzZCreating a LegacyVersion has been deprecated and will be removed in the next major release)str_version_legacy_cmpkeyr'   warningswarnDeprecationWarning)r(   r   r   r   r    __init__z   s
    zLegacyVersion.__init__c             C   s   |  j  S)N)r4   )r(   r   r   r    __str__   s    zLegacyVersion.__str__c             C   s   d j  t t |     S)Nz<LegacyVersion({0})>)formatreprr3   )r(   r   r   r    __repr__   s    zLegacyVersion.__repr__c             C   s   |  j  S)N)r4   )r(   r   r   r    public   s    zLegacyVersion.publicc             C   s   |  j  S)N)r4   )r(   r   r   r    base_version   s    zLegacyVersion.base_versionc             C   s   d S)Nr   r   )r(   r   r   r    r      s    zLegacyVersion.epochc             C   s   d  S)Nr   )r(   r   r   r    r      s    zLegacyVersion.releasec             C   s   d  S)Nr   )r(   r   r   r    r      s    zLegacyVersion.prec             C   s   d  S)Nr   )r(   r   r   r    r      s    zLegacyVersion.postc             C   s   d  S)Nr   )r(   r   r   r    r      s    zLegacyVersion.devc             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_postrelease   s    zLegacyVersion.is_postreleasec             C   s   d S)NFr   )r(   r   r   r    is_devrelease   s    zLegacyVersion.is_devreleaseN)r!   r"   r#   r9   r:   r=   propertyr>   r?   r   r   r   r   r   r   rA   rB   rC   r   r   r   r    r   y   s   z(\d+ | [a-z]+ | \.| -)cpreview-zfinal-rc@c             c   s{   xo t  j |   D]^ } t j | |  } | s | d k r> q | d  d  d k re | 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)spartr   r   r    _parse_version_parts   s    rU   c             C   s   d } g  } x t  |  j    D]| } | j d  r | d k  rg x$ | rf | d d k rf | j   qC Wx$ | r | d d k r | j   qj W| j |  q W| t |  f S)	Nr   rM   z*finalz*final-00000000r@   r@   r@   )rU   lower
startswithpopappendtuple)r   r   partsrT   r   r   r    r5      s    r5   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               @   sT  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 e d d    Z e d d    Z e d d    Z e 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 |  } | s- t d j |    t d | j d  rW 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>rJ   r   pre_lpre_nr   post_lpost_n1post_n2r   dev_ldev_nr   )_regexsearchr   r;   r   groupr]   r[   rO   _parse_letter_version_parse_local_versionr4   _cmpkeyr   r   r   r   r   r   r'   )r(   r   matchr   r   r    r9   $  s$    *+!-!					zVersion.__init__c             C   s   d j  t t |     S)Nz<Version({0})>)r;   r<   r3   )r(   r   r   r    r=   B  s    zVersion.__repr__c             C   s  g  } |  j  d k r. | j d j |  j    | j 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)Nr   z{0}!rJ   c             s   s   |  ] } t  |  Vq d  S)N)r3   )r^   xr   r   r    r`   O  s    z"Version.__str__.<locals>.<genexpr> c             s   s   |  ] } t  |  Vq d  S)N)r3   )r^   ro   r   r   r    r`   S  s    z.post{0}z.dev{0}z+{0})	r   rZ   r;   joinr   r   r   r   r   )r(   r\   r   r   r    r:   F  s    &&zVersion.__str__c             C   s   |  j  j } | S)N)r4   r   )r(   Z_epochr   r   r    r   c  s    zVersion.epochc             C   s   |  j  j } | S)N)r4   r   )r(   _releaser   r   r    r   i  s    zVersion.releasec             C   s   |  j  j } | S)N)r4   r   )r(   _prer   r   r    r   o  s    zVersion.prec             C   s   |  j  j r |  j  j d Sd  S)Nr   )r4   r   )r(   r   r   r    r   u  s    zVersion.postc             C   s   |  j  j r |  j  j d Sd  S)Nr   )r4   r   )r(   r   r   r    r   z  s    zVersion.devc             C   s4   |  j  j r, d j d d   |  j  j D  Sd  Sd  S)NrJ   c             s   s   |  ] } t  |  Vq d  S)N)r3   )r^   ro   r   r   r    r`     s    z Version.local.<locals>.<genexpr>)r4   r   rq   )r(   r   r   r    r     s     zVersion.localc             C   s   t  |   j d d  d S)N+r   r   )r3   rO   )r(   r   r   r    r>     s    zVersion.publicc             C   sa   g  } |  j  d k r. | j d j |  j    | j d j d d   |  j D   d j |  S)Nr   z{0}!rJ   c             s   s   |  ] } t  |  Vq d  S)N)r3   )r^   ro   r   r   r    r`     s    z'Version.base_version.<locals>.<genexpr>rp   )r   rZ   r;   rq   r   )r(   r\   r   r   r    r?     s
    &zVersion.base_versionc             C   s   |  j  d  k	 p |  j d  k	 S)N)r   r   )r(   r   r   r    rA     s    zVersion.is_prereleasec             C   s   |  j  d  k	 S)N)r   )r(   r   r   r    rB     s    zVersion.is_postreleasec             C   s   |  j  d  k	 S)N)r   )r(   r   r   r    rC     s    zVersion.is_devreleasec             C   s$   t  |  j  d k r  |  j d Sd S)Nr   r   )lenr   )r(   r   r   r    major  s    zVersion.majorc             C   s$   t  |  j  d k r  |  j d Sd S)N   r   r   )ru   r   )r(   r   r   r    minor  s    zVersion.minorc             C   s$   t  |  j  d k r  |  j d Sd S)N   rw   r   )ru   r   )r(   r   r   r    micro  s    zVersion.microN)r!   r"   r#   recompiler   VERBOSE
IGNORECASErh   r9   r=   r:   rD   r   r   r   r   r   r   r>   r?   rA   rB   rC   rv   rx   rz   r   r   r   r    r      s$   $c             C   s   |  r | d  k r d } |  j    }  |  d k r9 d }  n< |  d k rN d }  n' |  d k rc d	 }  n |  d k ru d }  |  t |  f S|  r | r d }  |  t |  f Sd  S)Nr   alphaabetabrE   r   rF   rH   revrr   )rE   zprezpreview)zrevr   )rW   r]   )letternumberr   r   r    rk     s"    			rk   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)isdigitrW   r]   )r^   rT   r   r   r    r`     s   z'_parse_local_version.<locals>.<genexpr>)r[   _local_version_separatorsrO   )r   r   r   r    rl     s
    	rl   c             C   s   t  t t t j d d   t |      } | d  k r] | d  k r] | d  k	 r] t } n | d  k rr 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   )ro   r   r   r    <lambda>  s    z_cmpkey.<locals>.<lambda>c             s   s6   |  ], } t  | t  r$ | d  f n	 t | f Vq d S)rp   N)r*   r]   r   )r^   r_   r   r   r    r`   )  s    z_cmpkey.<locals>.<genexpr>)r[   reversedlist	itertools	dropwhiler   r   )r   r   r   r   r   r   rr   rs   Z_postZ_dev_localr   r   r    rm     s$    -$						rm   )6
__future__r   r   r   collectionsr   r{   r6   _structuresr   r   Z_typingr   Ztypingr	   r
   r   r   r   r   r   r   r   ZInfiniteTypesr3   r]   ZPrePostDevTypeZSubLocalTypeZ	LocalTypeZCmpKeyZLegacyCmpKeyboolZVersionComparisonMethod__all__
namedtupler   r   
ValueErrorr   objectr%   r   r|   r}   rN   rP   rU   r5   r   r   rk   r   rl   rm   r   r   r   r    <module>   s\   4#'5L;&