σ
χΕχXc           @` sY  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 m Z d d	 l m Z m Z m Z 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  Z, e+ Z- e d  d  Z. e( e. Z/ e- e e& e-  Z0 e" e e0  e# d  Z1 e e j2 e j3 e j4 B Z5 e e j2 e j3 e j4 B Z6 e5 e6 AZ7 e e7 e e& e7  d d d e8 d  Z9 e e$ e9 e% e9 B Z: e: j; d    e	 e:  d  Z< e< j; d    e	 e    d  Z e j; d    e' Z= e= e Z> e< e e>  Z? e/ e e>  Z@ e, e e1  e@ e? BZA e eA e ZB d  eC f d!     YZD 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   MARKER_EXPRt   Marker(   t   LegacySpecifiert	   Specifiert   SpecifierSett   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__(    (    (    s9   /tmp/pip-build-F2t1Dv/packaging/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(    (    s9   /tmp/pip-build-F2t1Dv/packaging/packaging/requirements.pyt   <lambda>6   s    t	   specifierc         C` s   | d S(   Ni   (    (   R%   R&   R'   (    (    s9   /tmp/pip-build-F2t1Dv/packaging/packaging/requirements.pyR(   9   s    t   markerc         C` s   t  |  | j | j ! S(   N(   R   t   _original_startt   _original_end(   R%   R&   R'   (    (    s9   /tmp/pip-build-F2t1Dv/packaging/packaging/requirements.pyR(   =   s    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` s  y t  j |  } Wn9 t k
 rN } t d j | | j | j d !   n X| j |  _ | j r» t j | j  } | j	 o | j
 s | j	 r¬ | j
 r¬ t d   n  | j |  _ n	 d  |  _ t | j rί | j j   n g   |  _ t | j  |  _ | j r| j n d  |  _ d  S(   Ns+   Invalid requirement, parse error at "{0!r}"i   s   Invalid URL given(   t   REQUIREMENTt   parseStringR   R   t   formatt   locR   R   t   urlparset   schemet   netloct   Nonet   setR    t   asListR   R)   R*   (   t   selft   requirement_stringt   reqt   et
   parsed_url(    (    s9   /tmp/pip-build-F2t1Dv/packaging/packaging/requirements.pyt   __init__X   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   n  |  j	 r¬ | j d j |  j	   n  d j |  S(   Ns   [{0}]R   s   @ {0}s   ; {0}R$   (
   R   R    t   appendR0   t   joint   sortedR)   t   strR   R*   (   R8   t   parts(    (    s9   /tmp/pip-build-F2t1Dv/packaging/packaging/requirements.pyt   __str__m   s    	+			c         C` s   d j  t |    S(   Ns   <Requirement({0!r})>(   R0   RA   (   R8   (    (    s9   /tmp/pip-build-F2t1Dv/packaging/packaging/requirements.pyt   __repr__~   s    (   R   R   R   R=   RC   RD   (    (    (    s9   /tmp/pip-build-F2t1Dv/packaging/packaging/requirements.pyR-   K   s   		(E   t
   __future__R    R   R   t   stringt   ret	   pyparsingR   R   R   R   R   R   R	   R
   R   R   t   Lt   six.moves.urllibR   R2   t   markersR   R   t
   specifiersR   R   R   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_SEPERATORt   MARKERt   VERSION_AND_MARKERt   URL_AND_MARKERt   NAMED_REQUIREMENTR.   t   objectR-   (    (    (    s9   /tmp/pip-build-F2t1Dv/packaging/packaging/requirements.pyt   <module>   sZ   "(



