ó
äq™^c           @` s  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l m Z m Z m	 Z	 m
 Z
 d  d l m Z m Z m Z m Z m Z d  d l m Z d  d l m Z d d l m Z d d	 l m Z m Z d d
 l m Z m Z m Z e rù d  d l m Z n  d e  f d „  ƒ  YZ! e e j" e j# ƒ Z$ e d ƒ j% ƒ  Z& e d ƒ j% ƒ  Z' e d ƒ j% ƒ  Z( e d ƒ j% ƒ  Z) e d ƒ j% ƒ  Z* e d ƒ j% ƒ  Z+ e d ƒ j% ƒ  Z, e d ƒ Z- e$ e e- ƒ e$ BZ. e e$ e e. ƒ ƒ Z/ e/ d ƒ Z0 e/ Z1 e d ƒ d ƒ Z2 e, e2 Z3 e1 e e* e1 ƒ Z4 e& e e4 ƒ e' d ƒ Z5 e e j6 e j7 e j8 Bƒ Z9 e e j6 e j7 e j8 Bƒ Z: e9 e: AZ; e e; e e* e; ƒ d d d e< ƒd ƒ Z= e e( e= e) e= Bƒ Z> e> j? d „  ƒ e	 e> ƒ d ƒ Z@ e@ j? d „  ƒ e	 e ƒ  ƒ d  ƒ Z e j? d! „  ƒ e+ ZA eA e ZB e@ e eB ƒ ZC e3 e eB ƒ ZD e0 e e5 ƒ eD eC BZE e eE e ZF eF jG d" ƒ d# eH f d$ „  ƒ  YZI d S(%   i    (   t   absolute_importt   divisiont   print_functionN(   t   stringStartt	   stringEndt   originalTextFort   ParseException(   t
   ZeroOrMoret   Wordt   Optionalt   Regext   Combine(   t   Literal(   t   parsei   (   t   MYPY_CHECK_RUNNING(   t   MARKER_EXPRt   Marker(   t   LegacySpecifiert	   Specifiert   SpecifierSet(   t   Listt   InvalidRequirementc           B` s   e  Z d  Z RS(   sJ   
    An invalid requirement was found, users should refer to PEP 508.
    (   t   __name__t
   __module__t   __doc__(    (    (    s?   /tmp/pip-build-aSgKnK/pip/pip/_vendor/packaging/requirements.pyR      s   t   [t   ]t   (t   )t   ,t   ;t   @s   -_.t   names   [^ ]+t   urlt   extrast
   joinStringt   adjacentt	   _raw_specc         C` s   | j  p d S(   Nt    (   R%   (   t   st   lt   t(    (    s?   /tmp/pip-build-aSgKnK/pip/pip/_vendor/packaging/requirements.pyt   <lambda>;   s    t	   specifierc         C` s   | d S(   Ni   (    (   R'   R(   R)   (    (    s?   /tmp/pip-build-aSgKnK/pip/pip/_vendor/packaging/requirements.pyR*   >   s    t   markerc         C` s   t  |  | j | j !ƒ S(   N(   R   t   _original_startt   _original_end(   R'   R(   R)   (    (    s?   /tmp/pip-build-aSgKnK/pip/pip/_vendor/packaging/requirements.pyR*   B   s    s   x[]t   Requirementc           B` s)   e  Z d  Z d „  Z d „  Z d „  Z RS(   sÁ   Parse a requirement.

    Parse a given requirement string into its parts, such as name, specifier,
    URL, and extras. Raises InvalidRequirement on a badly-formed requirement
    string.
    c         C` sg  y t  j | ƒ } Wn? t k
 rT } t d j | | j | j d !| j ƒ ƒ ‚ n X| j |  _ | j rt	 j	 | j ƒ } | j
 d k rµ t	 j | ƒ | j k r÷ t d ƒ ‚ q÷ nB | j
 oÄ | j sÜ | j
 r÷ | j r÷ t d j | j ƒ ƒ ‚ n  | j |  _ n	 d  |  _ t | j r*| j j ƒ  n g  ƒ |  _ t | j ƒ |  _ | j rZ| j n d  |  _ d  S(   Ns   Parse error at "{0!r}": {1}i   t   files   Invalid URL givens   Invalid URL: {0}(   t   REQUIREMENTt   parseStringR   R   t   formatt   loct   msgR    R!   t   urlparset   schemet
   urlunparset   netloct   Nonet   setR"   t   asListR   R+   R,   (   t   selft   requirement_stringt   reqt   et
   parsed_url(    (    s?   /tmp/pip-build-aSgKnK/pip/pip/_vendor/packaging/requirements.pyt   __init___   s(    '		'c         C` sÒ   |  j  g } |  j r@ | j d j d j t |  j ƒ ƒ ƒ ƒ n  |  j rb | j t |  j ƒ ƒ n  |  j r  | j d j |  j ƒ ƒ |  j	 r  | j d ƒ q  n  |  j	 rÅ | j d j |  j	 ƒ ƒ n  d j | ƒ S(   Ns   [{0}]R   s   @ {0}t    s   ; {0}R&   (
   R    R"   t   appendR3   t   joint   sortedR+   t   strR!   R,   (   R=   t   parts(    (    s?   /tmp/pip-build-aSgKnK/pip/pip/_vendor/packaging/requirements.pyt   __str__{   s    	+				c         C` s   d j  t |  ƒ ƒ S(   Ns   <Requirement({0!r})>(   R3   RG   (   R=   (    (    s?   /tmp/pip-build-aSgKnK/pip/pip/_vendor/packaging/requirements.pyt   __repr__   s    (   R   R   R   RB   RI   RJ   (    (    (    s?   /tmp/pip-build-aSgKnK/pip/pip/_vendor/packaging/requirements.pyR/   R   s   		(J   t
   __future__R    R   R   t   stringt   ret   pip._vendor.pyparsingR   R   R   R   R   R   R	   R
   R   R   t   Lt   pip._vendor.six.moves.urllibR   R6   t   _typingR   t   markersR   R   t
   specifiersR   R   R   t   typingR   t
   ValueErrorR   t   ascii_letterst   digitst   ALPHANUMt   suppresst   LBRACKETt   RBRACKETt   LPARENt   RPARENt   COMMAt	   SEMICOLONt   ATt   PUNCTUATIONt   IDENTIFIER_ENDt
   IDENTIFIERt   NAMEt   EXTRAt   URIt   URLt   EXTRAS_LISTt   EXTRASt
   _regex_strt   VERBOSEt
   IGNORECASEt   VERSION_PEP440t   VERSION_LEGACYt   VERSION_ONEt   Falset   VERSION_MANYt   _VERSION_SPECt   setParseActiont   VERSION_SPECt   MARKER_SEPARATORt   MARKERt   VERSION_AND_MARKERt   URL_AND_MARKERt   NAMED_REQUIREMENTR1   R2   t   objectR/   (    (    (    s?   /tmp/pip-build-aSgKnK/pip/pip/_vendor/packaging/requirements.pyt   <module>   sd   "(

 	

