
    wi6                        d dl mZ d dl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)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__     U/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/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z""{{	;;t{{m$$ s   B,B.c                V    dj                  | j                  | j                              S )N )r-   r0   r   r#   s    r   __str__zRequirement.__str__C   s     wwt''		233r   c                <    d| j                   j                   d|  dS )N<z('z')>)	__class__r   r3   s    r   __repr__zRequirement.__repr__F   s"    4>>**+2dV377r   c           	     n    t        t        | j                  t        | j                                          S r   )hashtupler0   r   r   r3   s    r   __hash__zRequirement.__hash__I   s'    E$**+<TYY+GHIJJr   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__L   s    %-!! dii(,=ejj,II ,u||+,%//1, EII%, u||+	
r   N)r$   r   returnNone)r   r   rB   zIterator[str])rB   r   )rB   int)r@   objectrB   bool)
r   r   r   r   r'   r0   r4   r8   r<   rA   r   r   r   r   r      s'    J%$48K

r   r   N)
__future__r   typingr   _parserr   r   
_tokenizerr   markersr   r	   
specifiersr
   utilsr   
ValueErrorr   r   r   r   r   <module>rO      s4    #  < ) 4 $ $ A
 A
r   