
    R"fu                         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 ddlmZ  G d d	e      Z G d
 d      Zy)    )AnyIteratorOptionalSet   )parse_requirement)ParserSyntaxError)Marker_normalize_extra_values)SpecifierSet)canonicalize_namec                       e Zd ZdZy)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                   j    e Zd ZdZdeddfdZdedee   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                    	 t        |      }|j                  | _        |j
                  xs d | _        t        |j                  xs g       | _        t        |j                        | _	        d | _
        |j                  Ct        j                  t              | _
        t        |j                        | j                  _        y y # t        $ r}t        t        |            |d }~ww xY wN)_parse_requirementr	   r   strnameurlsetextrasr   	specifiermarkerr
   __new__r   _markers)selfr   parsedes       r   __init__zRequirement.__init__!   s    	4'(:;F  	"(**"4 #FMM$7R 8'3F4D4D'E(,==$ ..0DK#:6==#IDKK  % ! 	4$SV,!3	4s   C 	C%C  C%r   c              #   `  K   | | j                   r,dj                  t        | j                               }d| d | j                  rt	        | j                         | j
                  r!d| j
                    | j                  rd | j                  rd| j                    y y w)N,[]z@  z; )r"   joinsortedr#   r   r    r$   )r'   r   formatted_extrass      r   _iter_partszRequirement._iter_parts0   s     
;;"xxt{{(;<&'q))>>dnn%%88txxj/!{{	;;t{{m$$ s   B,B.c                 V    dj                  | j                  | j                              S )N )r0   r3   r   r'   s    r   __str__zRequirement.__str__B   s     wwt''		233r   c                     d|  dS )Nz<Requirement('z')>r   r6   s    r   __repr__zRequirement.__repr__E   s    vS))r   c                     t        | j                  j                  g| j                  t	        | j
                                    S r   )hash	__class__r   r3   r   r   r6   s    r   __hash__zRequirement.__hash__H   s>    ''!!"3DII">?
 	
r   otherc                 \   t        |t              st        S t        | j                        t        |j                        k(  xrj | j
                  |j
                  k(  xrO | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j                  |j                  k(  S r   )	
isinstancer   NotImplementedr   r   r"   r#   r    r$   )r'   r>   s     r   __eq__zRequirement.__eq__P   s    %-!! dii(,=ejj,II ,u||+,%//1, EII%, u||+	
r   )r   r   r   r   r   r*   r   r3   r7   r9   intr=   r   boolrB   r   r   r   r   r      sk    J3 J4 J% % %$4 4*# *
# 


C 

D 

r   r   N)typingr   r   r   r   _parserr   r   
_tokenizerr	   markersr
   r   
specifiersr   utilsr   
ValueErrorr   r   r   r   r   <module>rL      s4   
 0 / < ) 4 $ $ F
 F
r   