
    i                        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 d	d
gZddZ G d d	e      Z G d d
      Zy)    )annotations)Iterator   )parse_requirement)ParserSyntaxError)Marker_normalize_extra_values)SpecifierSet)canonicalize_nameInvalidRequirementRequirementc                     t         S N)__all__     I/root/searxng-venv/lib/python3.12/site-packages/packaging/requirements.py__dir__r      s    Nr   c                      e Zd ZdZy)r   zJ
    An invalid requirement was found, users should refer to PEP 508.
    N)__name__
__module____qualname____doc__r   r   r   r   r      s    r   c                  P    e Zd ZdZddZddZddZddZddZddZ	ddZ
dd	Zy
)r   ao  Parse 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.

    Instances are safe to serialize with :mod:`pickle`. They use a stable
    format so the same pickle can be loaded in future packaging releases.

    .. versionchanged:: 26.2

        Added a stable pickle format. Pickles created with packaging 26.2+ can
        be unpickled with future releases.  Backward compatibility with pickles
        from packaging < 26.2 is supported but may be removed in a future
        release.
    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r   )_parse_requirementr   r   strnameurlsetextrasr
   	specifiermarkerr   __new__r	   _markers)selfrequirement_stringparsedes       r   __init__zRequirement.__init__5   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_partsD   s     
;;"xxt{{(;<&'q))>>dnn%%88z""{{	;;t{{m$$ s   B,B.c                    t        |       S r   )r   r&   s    r   __getstate__zRequirement.__getstate__V   s     4yr   c                   t        |t              rb	 t        |      }|j
                  | _        |j                  | _        |j                  | _        |j                  | _        |j                  | _	        y t        |t              r| j                  j                  |       y t	        d|      # t        $ r}t	        d|      |d }~ww xY w)Nz Cannot restore Requirement from )
isinstancer   r   r   	TypeErrorr   r   r!   r"   r#   dict__dict__update)r&   statetmpexcs       r   __setstate__zRequirement.__setstate__[   s    eS!W!%( DIwwDH**DK ]]DN**DKeT"MM  ':5)DEE & W"B5) LMSVVWs   B- -	C
6CC
c                V    dj                  | j                  | j                              S )N )r0   r3   r   r5   s    r   __str__zRequirement.__str__n   s     wwt''		233r   c                N    d| j                   j                   dt        |       dS )N<(z)>)	__class__r   r   r5   s    r   __repr__zRequirement.__repr__q   s&    4>>**+1SYM<<r   c           	     n    t        t        | j                  t        | j                                          S r   )hashtupler3   r   r   r5   s    r   __hash__zRequirement.__hash__t   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   )	r8   r   NotImplementedr   r   r!   r"   r   r#   )r&   others     r   __eq__zRequirement.__eq__w   s    %-!! dii(,=ejj,II ,u||+,%//1, EII%, u||+	
r   N)r'   r   returnNone)r   r   rQ   zIterator[str])rQ   r   )r=   objectrQ   rR   )rQ   int)rO   rS   rQ   bool)r   r   r   r   r*   r3   r6   r@   rC   rH   rL   rP   r   r   r   r   r      s2    ,J%$
F&4=K

r   N)rQ   z	list[str])
__future__r   typingr   _parserr   r   
_tokenizerr   markersr   r	   
specifiersr
   utilsr   r   r   
ValueErrorr   r   r   r   r   <module>r^      sH    #  < ) 4 $ $  c
 c
r   