
    ցj                        S SK Jr  S SKJr  SSKJr  SSKJr  SSK	J
r
Jr  SSKJrJr  SSKJr  \(       a  S S	KJr  S
S/rSS jr " S S
\5      r " S S5      rg)    )annotations)TYPE_CHECKING   )parse_requirement)ParserSyntaxError)Marker_normalize_extra_values)InvalidSpecifierSpecifierSetcanonicalize_name)IteratorInvalidRequirementRequirementc                     [         $ N)__all__     P/mnt/workspace/venv-train/lib/python3.13/site-packages/packaging/requirements.py__dir__r      s    Nr   c                      \ rS rSrSrSrg)r      zZ
An invalid requirement was found, users should refer to PEP 508.

.. versionadded:: 16.1
r   N)__name__
__module____qualname____firstlineno____doc____static_attributes__r   r   r   r   r      s    r   c                  l    \ rS rSrSrSrSS jrSS jrSS jrSS jr	SS jr
SS	 jrSS
 jrSS jrSrg)r   #   aq  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                (    [        U5      nUR                  U l        UR
                  =(       d    S U l        [        UR                  5      U l         [        UR                  5      U l	        S U l        UR                  bD  [        R                  " [        5      U l        [        UR                  5      U R                  l        g g ! [         a  n[        [        U5      5      UeS nAff = f! [         a  n[        [        U5      5      UeS nAff = fr   )_parse_requirementr   r   strr$   r&   setr"   r   r%   r
   r#   r   __new__r	   _markers)selfrequirement_stringparsedes       r   __init__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/   C C- 
C*C%%C*-
D7DDc              #    #    Uv   U R                   (       a,  SR                  [        U R                   5      5      nSU S3v   U R                  (       a  [	        U R                  5      v   U R
                  (       a&  SU R
                   3v   U R                  (       a  Sv   U R                  (       a  SU R                   3v   g g 7f)N,[]z @  z; )r"   joinsortedr%   r)   r&   r#   )r-   r$   formatted_extrass      r   _iter_partsRequirement._iter_partsd   s     
;;"xxt{{(;<&'q))>>dnn%%88z""{{	;;t{{m$$ s   CCc                D    [        U 5      U R                  R                  4$ r   )r)   r%   _prereleasesr-   s    r   __getstate__Requirement.__getstate__v   s    
 D	4>>6677r   c                   [        U[        5      (       a  UnS nO[        U[        5      (       aJ  [        U5      S:X  a;  [        US   [        5      (       a#  US   b  [        US   [        5      (       a  Uu  p#Om[        U[
        5      (       aI  UR                  5       [        U R                  5      :  a"  U R                   H  n[        XX   5        M     g [        SU< 35      e [        U5      nUR                  U l        UR                  U l        UR                  U l        UR                   U l        X0R                   l        UR$                  U l        g ! [         a  n[        SU< 35      UeS nAff = f)N   r   r   z Cannot restore Requirement from )
isinstancer)   tuplelenbooldictkeysr*   	__slots__setattr	TypeErrorr   r   r$   r&   r"   r%   r>   r#   )r-   stater.   prereleaseskeytmpexcs          r   __setstate__Requirement.__setstate__}   s:   eS!!&+'+Kue$$E
a58S))q!Za$%?%? /4+t$$T^^9L)L~~5:. &>uiHII	S01C HH	77jj&1#jj " 	S>uiHIsR	Ss   (E 
E8#E33E8c                V    SR                  U R                  U R                  5      5      $ )N )r8   r;   r$   r?   s    r   __str__Requirement.__str__   s     wwt''		233r   c                P    SU R                   R                   S[        U 5      < S3$ )N<(z)>)	__class__r   r)   r?   s    r   __repr__Requirement.__repr__   s&    4>>**+1SYM<<r   c                    [        [        U R                  5      [        S U R                   5       5      U R
                  U R                  U R                  45      $ )Nc              3  8   #    U  H  n[        U5      v   M     g 7fr   r   .0r0   s     r   	<genexpr>'Requirement.__hash__.<locals>.<genexpr>   s     D1+A..   )hashr   r$   	frozensetr"   r%   r&   r#   r?   s    r   __hash__Requirement.__hash__   sI     !$)),DDD
 	
r   c                   [        U[        5      (       d  [        $ [        S U R                   5       5      n[        S UR                   5       5      n[        U R                  5      [        UR                  5      :H  =(       ad    X#:H  =(       aY    U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ )Nc              3  8   #    U  H  n[        U5      v   M     g 7fr   r   r`   s     r   rb   %Requirement.__eq__.<locals>.<genexpr>   s     Jk 1! 4 4krd   c              3  8   #    U  H  n[        U5      v   M     g 7fr   r   r`   s     r   rb   rk      s      L|!!21!5!5|rd   )
rD   r   NotImplementedrf   r"   r   r$   r%   r&   r#   )r-   otherself_extrasother_extrass       r   __eq__Requirement.__eq__   s    %--!!  JdkkJJ  Lu|| LLdii(,=ejj,II ,+,%//1, EII%, u||+	
r   N)r.   r)   returnNone)r$   r)   rs   zIterator[str])rs   ztuple[str, bool | None])rM   objectrs   rt   )rs   r)   )rs   int)rn   ru   rs   rG   )r   r   r   r   r   rJ   r1   r;   r@   rR   rV   r\   rg   rq   r   r   r   r   r   r   #   s:    %X AIJ$%$8!@4=
 
r   N)rs   z	list[str])
__future__r   typingr   _parserr   r(   
_tokenizerr   markersr   r	   
specifiersr
   r   utilsr   collections.abcr   r   r   
ValueErrorr   r   r   r   r   <module>r      sN    #   < ) 4 6 $(  ]
 ]
r   