
    {c                         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dS )    N)AnyListOptionalSet   )parse_requirement)ParserSyntaxError)Marker_normalize_extra_values)SpecifierSetc                       e Zd ZdZdS )InvalidRequirementzJ
    An invalid requirement was found, users should refer to PEP 508.
    N)__name__
__module____qualname____doc__     8/usr/lib/python3/dist-packages/packaging/requirements.pyr   r      s           r   r   c                   V    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dS )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                    	 t          |          }n/# t          $ r"}t          t          |                    |d }~ww xY w|j        | _        |j        rt          j                            |j                  }|j	        dk    r8t          j        
                    |          |j        k    rt          d          n3|j	        r|j        r|j	        s|j        st          d|j                   |j        | _        nd | _        t          |j        r|j        ng           | _        t          |j                  | _        d | _        |j        >t#          j        t"                    | _        t'          |j                  | j        _        d S d S )NfilezInvalid URL givenzInvalid URL: )r   r	   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__!   s   	4&'9::FF  	4 	4 	4$SVV,,!3	4  	: 	..vz::J F**<**:66&*DD,-@AAA E ' GJ,= G%G.8.?G ))E)E)EFFF&,jDHHDH #V]$JFMM K K'3F4D'E'E(,=$ .00DK#:6=#I#IDK    %$s    
>9>c                    | j         g}| j        r@d                    t          | j                            }|                    d| d           | j        r'|                    t          | j                             | j        r9|                    d| j                    | j        r|                    d           | j        r|                    d| j                    d                    |          S )N,[]z@  z;  )	r   r&   joinsortedappendr'   r   r   r(   )r+   partsformatted_extrass      r   __str__zRequirement.__str__;   s     I;; 	2"xxt{(;(;<<LL0-000111> 	.LLT^,,---8 	"LLdh))){ "S!!!; 	-LL+dk++,,,wwu~~r   c                     d|  dS )Nz<Requirement('z')>r   r+   s    r   __repr__zRequirement.__repr__O   s    )))))r   c                 R    t          | j        j        t          |           f          S N)hash	__class__r   r   r=   s    r   __hash__zRequirement.__hash__R   s     T^,c$ii8999r   otherc                     t          |t                    st          S | j        |j        k    o?| j        |j        k    o/| j        |j        k    o| j        |j        k    o| j        |j        k    S r@   )
isinstancer   NotImplementedr   r&   r'   r   r(   )r+   rD   s     r   __eq__zRequirement.__eq__U   su    %-- 	"!! I# ,u|+,%/1, EI%, u|+	
r   )r   r   r   r   r   r/   r;   r>   intrC   r   boolrH   r   r   r   r   r      s         J3 J4 J J J J4    (*# * * * *:# : : : :

C 

D 

 

 

 

 

 

r   r   )urllib.parser   typingr   r   r   r   _parserr   
_tokenizerr	   markersr
   r   
specifiersr   
ValueErrorr   r   r   r   r   <module>rR      s   
     + + + + + + + + + + + + & & & & & & ) ) ) ) ) ) 4 4 4 4 4 4 4 4 $ $ $ $ $ $       K
 K
 K
 K
 K
 K
 K
 K
 K
 K
r   