
    #j                        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mZ ddlmZ erd d	lmZ d
dgZddZ G d d
e      Z G d d      Zy)    )annotations)TYPE_CHECKING   )parse_requirement)ParserSyntaxError)Marker_normalize_extra_values)InvalidSpecifierSpecifierSetcanonicalize_name)IteratorInvalidRequirementRequirementc                     t         S N)__all__     Z/var/www/oz-panel.ru/ozpay-pub/venv/lib/python3.12/site-packages/packaging/requirements.py__dir__r      s    Nr   c                      e Zd ZdZy)r   zf
    An invalid requirement was found, users should refer to PEP 508.

    .. versionadded:: 16.1
    N)__name__
__module____qualname____doc__r   r   r   r   r      s    r   c                  T    e Zd 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   a  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.

    .. versionadded:: 16.1

    .. versionchanged:: 22.0
        Added equality (``__eq__``) and hashing (``__hash__``) so requirements
        can be compared and stored in sets / dicts.

    .. versionchanged:: 23.2
        Equality and hashing began canonicalizing requirement names, so
        requirements whose names differ only by normalization (e.g.
        ``Requirement("Foo")`` vs ``Requirement("foo")``) now compare and hash
        equal.

    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.

    .. versionchanged:: 26.3

        The dedicated pickle support introduced in 26.2 did not preserve the
        specifier's explicit :attr:`~packaging.specifiers.SpecifierSet.prereleases`
        override; it is now included again.

        Equality and hashing normalize requirement names, extras, and
        equivalent specifiers. The string representation still preserves the
        parsed name and extras spelling.
    )extrasmarkername	specifierurlc                   	 t        |      }|j                  | _        |j
                  xs d | _        t        |j                        | _        	 t        |j                        | _	        d | _        |j                  Ct        j                  t              | _        t        |j                        | j                  _        y y # t        $ r}t        t        |            |d }~ww xY w# t        $ r}t        t        |            |d }~ww xY wr   )_parse_requirementr   r   strr    r"   setr   r   r!   r
   r   r   __new__r	   _markers)selfrequirement_stringparsedes       r   __init__zRequirement.__init__R   s    	4'(:;F  	%zz1T #FMM 2	4+78H8H+IDN &*==$ ..0DK#:6==#IDKK  % ! 	4$SV,!3	4   	4$SV,!3	4s/   B? C% ?	C"CC"%	D.DD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                D    t        |       | j                  j                  fS r   )r%   r!   _prereleasesr)   s    r   __getstate__zRequirement.__getstate__v   s    
 D	4>>6677r   c                   t        |t              r|}d }nt        |t              r?t        |      dk(  r1t        |d   t              r|d   t        |d   t              r|\  }}nft        |t
              rH|j                         t        | j                        k\  r"| j                  D ]  }t        | |||           y t        d|      	 t        |      }|j                  | _        |j                  | _        |j                  | _        |j                   | _        || j                   _        |j$                  | _        y # t        $ r}t        d|      |d }~ww xY w)N   r   r   z Cannot restore Requirement from )
isinstancer%   tuplelenbooldictkeysr&   	__slots__setattr	TypeErrorr   r   r    r"   r   r!   r8   r   )r)   stater*   prereleaseskeytmpexcs          r   __setstate__zRequirement.__setstate__}   s6   eS!&+'+Kue$E
a58S)q!Za$%? /4+t$T^^9L)L~~ /c5:./>uiHII	S01C HH	77jj&1#jj " 	S>uiHIsR	Ss   D> >	EEEc                V    dj                  | j                  | j                              S )N )r3   r6   r    r9   s    r   __str__zRequirement.__str__   s     wwt''		233r   c                N    d| j                   j                   dt        |       dS )N<(z)>)	__class__r   r%   r9   s    r   __repr__zRequirement.__repr__   s&    4>>**+1SYM<<r   c                    t        t        | j                        t        d | j                  D              | j
                  | j                  | j                  f      S )Nc              3  2   K   | ]  }t        |        y wr   r   .0r,   s     r   	<genexpr>z'Requirement.__hash__.<locals>.<genexpr>   s     D1+A.D   )hashr   r    	frozensetr   r!   r"   r   r9   s    r   __hash__zRequirement.__hash__   sI     !$)),DDD
 	
r   c                   t        |t              st        S t        d | j                  D              }t        d |j                  D              }t        | j                        t        |j                        k(  xrV ||k(  xrO | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j                  |j                  k(  S )Nc              3  2   K   | ]  }t        |        y wr   r   rV   s     r   rX   z%Requirement.__eq__.<locals>.<genexpr>   s     J 1! 4JrY   c              3  2   K   | ]  }t        |        y wr   r   rV   s     r   rX   z%Requirement.__eq__.<locals>.<genexpr>   s      L!!21!5 LrY   )
r=   r   NotImplementedr[   r   r   r    r!   r"   r   )r)   otherself_extrasother_extrass       r   __eq__zRequirement.__eq__   s    %-!!  JdkkJJ  Lu|| LLdii(,=ejj,II ,|+,%//1, EII%, u||+	
r   N)r*   r%   returnNone)r    r%   re   zIterator[str])re   ztuple[str, bool | None])rF   objectre   rf   )re   r%   )re   int)ra   rg   re   r@   )r   r   r   r   rC   r-   r6   r:   rK   rN   rS   r\   rd   r   r   r   r   r   #   s:    %X AIJ$%$8!@4=
 
r   N)re   z	list[str])
__future__r   typingr   _parserr   r$   
_tokenizerr   markersr   r	   
specifiersr
   r   utilsr   collections.abcr   r   r   
ValueErrorr   r   r   r   r   <module>rr      sN    #   < ) 4 6 $(  ]
 ]
r   