ó
'—^c        	   @` 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 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 n  d	 d
 d d d g Z  e j! d d d d d d d g ƒ Z" d „  Z# d e$ f d „  ƒ  YZ% d e& f d „  ƒ  YZ' d e' f d „  ƒ  YZ( e j) d e j* ƒ Z+ i d d 6d d 6d d 6d d 6d  d 6Z, d! „  Z- d" „  Z. d# Z/ d
 e' f d$ „  ƒ  YZ0 d% „  Z1 e j) d& ƒ Z2 d' „  Z3 d( „  Z4 d S()   i    (   t   absolute_importt   divisiont   print_functionNi   (   t   Infinityt   NegativeInfinity(   t   MYPY_CHECK_RUNNING(   t   Callablet   Iteratort   Listt   Optionalt   SupportsIntt   Tuplet   Union(   t   InfinityTypet   NegativeInfinityType.t   parset   Versiont   LegacyVersiont   InvalidVersiont   VERSION_PATTERNt   _Versiont   epocht   releaset   devt   pret   postt   localc         C` s-   y t  |  ƒ SWn t k
 r( t |  ƒ SXd S(   sÑ   
    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   (   t   version(    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR   0   s    c           B` s   e  Z d  Z RS(   sF   
    An invalid version was found, users should refer to PEP 440.
    (   t   __name__t
   __module__t   __doc__(    (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR   =   s   t   _BaseVersionc           B` sV   e  Z d Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z RS(	   c         C` s   t  |  j ƒ S(   N(   t   hasht   _key(   t   self(    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyt   __hash__F   s    c         C` s   |  j  | d „  ƒ S(   Nc         S` s
   |  | k  S(   N(    (   t   st   o(    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyt   <lambda>L   t    (   t   _compare(   R"   t   other(    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyt   __lt__J   s    c         C` s   |  j  | d „  ƒ S(   Nc         S` s
   |  | k S(   N(    (   R$   R%   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR&   P   R'   (   R(   (   R"   R)   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyt   __le__N   s    c         C` s   |  j  | d „  ƒ S(   Nc         S` s
   |  | k S(   N(    (   R$   R%   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR&   T   R'   (   R(   (   R"   R)   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyt   __eq__R   s    c         C` s   |  j  | d „  ƒ S(   Nc         S` s
   |  | k S(   N(    (   R$   R%   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR&   X   R'   (   R(   (   R"   R)   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyt   __ge__V   s    c         C` s   |  j  | d „  ƒ S(   Nc         S` s
   |  | k S(   N(    (   R$   R%   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR&   \   R'   (   R(   (   R"   R)   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyt   __gt__Z   s    c         C` s   |  j  | d „  ƒ S(   Nc         S` s
   |  | k S(   N(    (   R$   R%   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR&   `   R'   (   R(   (   R"   R)   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyt   __ne__^   s    c         C` s&   t  | t ƒ s t S| |  j | j ƒ S(   N(   t
   isinstanceR   t   NotImplementedR!   (   R"   R)   t   method(    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR(   b   s    N(   R   R   t   NoneR!   R#   R*   R+   R,   R-   R.   R/   R(   (    (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR   C   s   							c           B` sÈ   e  Z d  „  Z d „  Z d „  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z	 e d „  ƒ Z
 e d „  ƒ Z e d	 „  ƒ Z e d
 „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z RS(   c         C` s%   t  | ƒ |  _ t |  j ƒ |  _ d  S(   N(   t   strt   _versiont   _legacy_cmpkeyR!   (   R"   R   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyt   __init__k   s    c         C` s   |  j  S(   N(   R5   (   R"   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyt   __str__p   s    c         C` s   d j  t t |  ƒ ƒ ƒ S(   Ns   <LegacyVersion({0})>(   t   formatt   reprR4   (   R"   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyt   __repr__t   s    c         C` s   |  j  S(   N(   R5   (   R"   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyt   publicx   s    c         C` s   |  j  S(   N(   R5   (   R"   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyt   base_version}   s    c         C` s   d S(   Niÿÿÿÿ(    (   R"   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR   ‚   s    c         C` s   d  S(   N(   R3   (   R"   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR   ‡   s    c         C` s   d  S(   N(   R3   (   R"   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR   Œ   s    c         C` s   d  S(   N(   R3   (   R"   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR   ‘   s    c         C` s   d  S(   N(   R3   (   R"   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR   –   s    c         C` s   d  S(   N(   R3   (   R"   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR   ›   s    c         C` s   t  S(   N(   t   False(   R"   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyt   is_prerelease    s    c         C` s   t  S(   N(   R>   (   R"   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyt   is_postrelease¥   s    c         C` s   t  S(   N(   R>   (   R"   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyt   is_devreleaseª   s    (   R   R   R7   R8   R;   t   propertyR<   R=   R   R   R   R   R   R   R?   R@   RA   (    (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR   j   s   			s   (\d+ | [a-z]+ | \.| -)t   ct   previews   final-t   -t   rct   @c         c` sx   xl t  j |  ƒ D][ } t j | | ƒ } | s | d k rA q n  | d  d k rb | j d ƒ Vq d | Vq Wd Vd  S(   Nt   .i   t
   0123456789i   t   *s   *final(   t   _legacy_version_component_ret   splitt   _legacy_version_replacement_mapt   gett   zfill(   R$   t   part(    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyt   _parse_version_parts»   s    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 W| t | ƒ f S(   NiÿÿÿÿRJ   s   *finals   *final-t   00000000(   RQ   t   lowert
   startswitht   popt   appendt   tuple(   R   R   t   partsRP   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR6   Í   s    s—  
    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           B` s  e  Z e j d  e d e j e j Bƒ Z d „  Z d „  Z	 d „  Z
 e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d	 „  ƒ Z e d
 „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z RS(   s   ^\s*s   \s*$c         C` s[  |  j  j | ƒ } | s0 t d j | ƒ ƒ ‚ n  t d | j d ƒ rZ t | j d ƒ ƒ n d d t 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(   Ns   Invalid version: '{0}'R   i    R   c         s` s   |  ] } t  | ƒ Vq d  S(   N(   t   int(   t   .0t   i(    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pys	   <genexpr>  s    RH   R   t   pre_lt   pre_nR   t   post_lt   post_n1t   post_n2R   t   dev_lt   dev_nR   (   t   _regext   searchR   R9   R   t   groupRY   RW   RL   t   _parse_letter_versiont   _parse_local_versionR5   t   _cmpkeyR   R   R   R   R   R   R!   (   R"   R   t   match(    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR7     s$    *(!-!					c         C` s   d j  t t |  ƒ ƒ ƒ S(   Ns   <Version({0})>(   R9   R:   R4   (   R"   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR;   -  s    c         C` s  g  } |  j  d k r1 | j d j |  j  ƒ ƒ n  | j d j d „  |  j Dƒ ƒ ƒ |  j d  k	 r‰ | j d j d „  |  j Dƒ ƒ ƒ n  |  j d  k	 r´ | j d j |  j ƒ ƒ n  |  j d  k	 rß | j d j |  j ƒ ƒ n  |  j	 d  k	 r
| j d	 j |  j	 ƒ ƒ n  d j | ƒ S(
   Ni    s   {0}!RH   c         s` s   |  ] } t  | ƒ Vq d  S(   N(   R4   (   RZ   t   x(    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pys	   <genexpr>:  s    R'   c         s` s   |  ] } t  | ƒ Vq d  S(   N(   R4   (   RZ   Rj   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pys	   <genexpr>>  s    s   .post{0}s   .dev{0}s   +{0}(
   R   RV   R9   t   joinR   R   R3   R   R   R   (   R"   RX   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR8   1  s    #&c         C` s   |  j  j } | S(   N(   R5   R   (   R"   t   _epoch(    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR   N  s    c         C` s   |  j  j } | S(   N(   R5   R   (   R"   t   _release(    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR   T  s    c         C` s   |  j  j } | S(   N(   R5   R   (   R"   t   _pre(    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR   Z  s    c         C` s   |  j  j r |  j  j d Sd  S(   Ni   (   R5   R   R3   (   R"   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR   `  s    c         C` s   |  j  j r |  j  j d Sd  S(   Ni   (   R5   R   R3   (   R"   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR   e  s    c         C` s1   |  j  j r) d j d „  |  j  j Dƒ ƒ Sd  Sd  S(   NRH   c         s` s   |  ] } t  | ƒ Vq d  S(   N(   R4   (   RZ   Rj   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pys	   <genexpr>n  s    (   R5   R   Rk   R3   (   R"   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR   j  s    c         C` s   t  |  ƒ j d d ƒ d S(   Nt   +i   i    (   R4   RL   (   R"   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR<   r  s    c         C` sa   g  } |  j  d k r1 | j d j |  j  ƒ ƒ n  | j d j d „  |  j Dƒ ƒ ƒ d j | ƒ S(   Ni    s   {0}!RH   c         s` s   |  ] } t  | ƒ Vq d  S(   N(   R4   (   RZ   Rj   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pys	   <genexpr>  s    R'   (   R   RV   R9   Rk   R   (   R"   RX   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR=   w  s
    #c         C` s   |  j  d  k	 p |  j d  k	 S(   N(   R   R3   R   (   R"   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR?   …  s    c         C` s   |  j  d  k	 S(   N(   R   R3   (   R"   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR@   Š  s    c         C` s   |  j  d  k	 S(   N(   R   R3   (   R"   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyRA     s    c         C` s$   t  |  j ƒ d k r  |  j d Sd S(   Ni   i    (   t   lenR   (   R"   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyt   major”  s    c         C` s$   t  |  j ƒ d k r  |  j d Sd S(   Ni   i   i    (   Rp   R   (   R"   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyt   minor™  s    c         C` s$   t  |  j ƒ d k r  |  j d Sd S(   Ni   i   i    (   Rp   R   (   R"   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyt   microž  s    (   R   R   t   ret   compileR   t   VERBOSEt
   IGNORECASERc   R7   R;   R8   RB   R   R   R   R   R   R   R<   R=   R?   R@   RA   Rq   Rr   Rs   (    (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR     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(   Ni    t   alphat   at   betat   bRC   R   RD   RF   t   revt   rR   (   RC   R   RD   (   R|   R}   (   R3   RS   RY   (   t   lettert   number(    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyRf   ¤  s"    					s   [\._-]c         C` s-   |  d k	 r) t d „  t j |  ƒ Dƒ ƒ Sd S(   sR   
    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    c         s` s3   |  ]) } | j  ƒ  s! | j ƒ  n	 t | ƒ Vq d  S(   N(   t   isdigitRS   RY   (   RZ   RP   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pys	   <genexpr>Ô  s   N(   R3   RW   t   _local_version_separatorsRL   (   R   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyRg   Í  s
    c         C` sì   t  t t t j d „  t | ƒ ƒ ƒ ƒ ƒ } | d  k rZ | d  k rZ | d  k	 rZ t } n | d  k ro t } n | } | d  k rŠ t } n | } | d  k r¥ t }	 n | }	 | d  k rÀ t }
 n t  d „  | Dƒ ƒ }
 |  | | | |	 |
 f S(   Nc         S` s
   |  d k S(   Ni    (    (   Rj   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyR&   ê  R'   c         s` s6   |  ], } t  | t ƒ r$ | d  f n	 t | f Vq d S(   R'   N(   R0   RY   R   (   RZ   R[   (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pys	   <genexpr>  s    (   RW   t   reversedt   listt	   itertoolst	   dropwhileR3   R   R   (   R   R   R   R   R   R   Rm   Rn   t   _postt   _devt   _local(    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyRh   Ú  s$    *$						(5   t
   __future__R    R   R   t   collectionsR„   Rt   t   _structuresR   R   t   _typingR   t   typingR   R   R   R	   R
   R   R   R   R   t   InfiniteTypesR4   RY   t   PrePostDevTypet   SubLocalTypet	   LocalTypet   CmpKeyt   LegacyCmpKeyt   boolt   VersionComparisonMethodt   __all__t
   namedtupleR   R   t
   ValueErrorR   t   objectR   R   Ru   Rv   RK   RM   RQ   R6   R   R   Rf   R   Rg   Rh   (    (    (    s:   /tmp/pip-build-eiI0Wo/pip/pip/_vendor/packaging/version.pyt   <module>   sZ   4#*	'F
		;™	&	