
    
_d                         d dl Zd dl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  G d d	e      Z G d
 d      Zy)    N)AnyListOptionalSet   )parse_requirement)ParserSyntaxError)Marker_normalize_extra_values)SpecifierSetc                       e Zd ZdZy)InvalidRequirementzJ
    An invalid requirement was found, users should refer to PEP 508.
    N)__name__
__module____qualname____doc__     K/usr/lib/python3/dist-packages/setuptools/_vendor/packaging/requirements.pyr   r      s    r   r   c                   T    e Zd ZdZdeddfdZdefdZdefdZdefdZ	d	e
defd
Zy)RequirementzParse 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.
    requirement_stringreturnNc                 r   	 t        |      }|j                  | _        |j
                  rt        j                  j                  |j
                        }|j                  dk(  r7t        j                  j                  |      |j
                  k7  rSt        d      |j                  r$|j                  r|j                  s$|j                  st        d|j
                         |j
                  | _        nd | _        t        |j                  r|j                  ng       | _        t        |j                        | _        d | _        |j                   Ct#        j$                  t"              | _        t'        |j                         | j                   _        y y # t        $ r}t        t        |            |d }~ww xY w)NfilezInvalid URL givenzInvalid URL: )_parse_requirementr	   r   strnameurlurllibparseurlparsescheme
urlunparsenetlocsetextrasr   	specifiermarkerr
   __new__r   _markers)selfr   parsede
parsed_urls        r   __init__zRequirement.__init__!   sE   	4'(:;F  	::..vzz:J  F*<<**:6&**D,-@AA ''J,=,=%%j.?.?(=)EFF&,jjDHDH #V]]FMM K'3F4D4D'E(,==$ ..0DK#:6==#IDKK  %' ! 	4$SV,!3	4s   F 	F6F11F6c                 
   | j                   g}| j                  r9dj                  t        | j                              }|j	                  d| d       | j
                  r$|j	                  t        | j
                               | j                  r;|j	                  d| j                          | j                  r|j	                  d       | j                  r|j	                  d| j                          dj                  |      S )N,[]z@  z;  )	r   r'   joinsortedappendr(   r   r   r)   )r,   partsformatted_extrass      r   __str__zRequirement.__str__;   s     II;;;"xxt{{(;<LL1-.a01>>LLT^^,-88LL2dhhZ){{S!;;LL2dkk]+,wwu~r   c                     d|  dS )Nz<Requirement('z')>r   r,   s    r   __repr__zRequirement.__repr__O   s    vS))r   c                 V    t        | j                  j                  t        |       f      S N)hash	__class__r   r   r>   s    r   __hash__zRequirement.__hash__R   s     T^^,,c$i899r   otherc                 8   t        |t              st        S | j                  |j                  k(  xrj | j                  |j                  k(  xrO | j
                  |j
                  k(  xr4 | j                  |j                  k(  xr | j                  |j                  k(  S rA   )
isinstancer   NotImplementedr   r'   r(   r   r)   )r,   rE   s     r   __eq__zRequirement.__eq__U   s    %-!! II# ,u||+,%//1, EII%, u||+	
r   )r   r   r   r   r   r0   r<   r?   intrD   r   boolrI   r   r   r   r   r      sT    J3 J4 J4 (*# *:# :

C 

D 

r   r   )urllib.parser    typingr   r   r   r   _parserr   r   
_tokenizerr	   markersr
   r   
specifiersr   
ValueErrorr   r   r   r   r   <module>rS      s4   
  + + < ) 4 $ K
 K
r   