
    |g                        d dl mZ d dl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)    )annotations)AnyIterator   )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__     f/var/www/html/pythonbot/venv/lib/python3.12/site-packages/setuptools/_vendor/packaging/requirements.pyr   r      s    r   r   c                  @    e Zd ZdZd	dZd
dZddZddZddZd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.
    c                   	 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)selfrequirement_stringparsedes       r   __init__zRequirement.__init__"   s    	4'(:;F  	%zz1T #FMM$7R 8'3F4D4D'E%)==$ ..0DK#:6==#IDKK  % ! 	4$SV,!3	4s   C 	C%C  C%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_parts1   s     
;;"xxt{{(;<&'q))>>dnn%%88txxj/!{{	;;t{{m$$ s   B,B.c                V    dj                  | j                  | j                              S )N )r.   r1   r   r$   s    r   __str__zRequirement.__str__C   s     wwt''		233r   c                    d|  dS )Nz<Requirement('z')>r   r4   s    r   __repr__zRequirement.__repr__F   s    vS))r   c                    t        | j                  j                  g| j                  t	        | j
                                    S r   )hash	__class__r   r1   r   r   r4   s    r   __hash__zRequirement.__hash__I   s>    ''!!"3DII">?
 	
r   c                \   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$   others     r   __eq__zRequirement.__eq__Q   s    %-!! dii(,=ejj,II ,u||+,%//1, EII%, u||+	
r   N)r%   r   returnNone)r   r   rA   zIterator[str])rA   r   )rA   int)r?   r   rA   bool)
r   r   r   r   r(   r1   r5   r7   r;   r@   r   r   r   r   r      s&    J%$4*


r   r   N)
__future__r   typingr   r   _parserr   r   
_tokenizerr   markersr	   r
   
specifiersr   utilsr   
ValueErrorr   r   r   r   r   <module>rM      s4    #   < ) 4 $ $ F
 F
r   