
    3 j-                       S r SSKJr  SSKrSSKJrJrJrJrJ	r	J
r
  SSKJrJr   " S S5      r " S	 S
\5      r " S S\5      r " S S\5      r\S   r\
\\4   r\	\\\4   r\
\\S   4   r\\
S\\4      r " S S\5      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+S jr S,S jr!S,S jr"S-S jr#S.S  jr$S/S! jr%S0S" jr&S1S# jr'S2S$ jr(g)3zHandwritten parser of dependency specifiers.

The docstring for each __parse_* function contains EBNF-inspired grammar representing
the implementation.
    )annotationsN)ListLiteral
NamedTupleSequenceTupleUnion   )DEFAULT_RULES	Tokenizerc                  ^    \ 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rg
)Node   valuec                    Xl         g Nr   selfr   s     b/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/packaging/_parser.py__init__Node.__init__   s    
    c                    U R                   $ r   r   r   s    r   __str__Node.__str__   s    zzr   c                R    SU R                   R                   SU R                  < S3$ )N<(z)>)	__class____name__r   r   s    r   __repr__Node.__repr__   s&    4>>**+1TZZN"==r   c                    [         er   )NotImplementedErrorr   s    r   	serializeNode.serialize   s    !!r   c                    U R                   $ r   r   r   s    r   __getstate__Node.__getstate__   s    zzr   c                    [        U[        5      (       d&  [        SU R                  R                   SU< 35      eXl        g )NCannot restore z value from )
isinstancestr	TypeErrorr!   r"   r   r   s     r   _restore_valueNode._restore_value"   s>    %%%!$.."9"9!:,uiP  
r   c                   [        U[        5      (       a  U R                  U5        g [        U[        5      (       aC  [	        U5      S:X  a4  Uu  p#[        U[
        5      (       a  SU;   a  U R                  US   5        g [        U[
        5      (       a  SU;   a  U R                  US   5        g [        SU R                  R                   SU< 35      e)N   r   r-   z from )	r.   r/   r1   tuplelendictr0   r!   r"   )r   state_	slot_dicts       r   __setstate__Node.__setstate__)   s    eS!!&eU##E
a LA)T**w)/C##Ig$67eT""w%'7g//$..*A*A)B&	RSSr   N)r   r/   returnNoner=   r/   )r   objectr=   r>   )r8   r@   r=   r>   )r"   
__module____qualname____firstlineno__	__slots__r   r   r#   r'   r*   r1   r;   __static_attributes__ r   r   r   r      s+    I>"Tr   r   c                  "    \ rS rSrSrSS jrSrg)Variable;   rF   c                    [        U 5      $ r   r/   r   s    r   r'   Variable.serialize>       4yr   Nr?   r"   rA   rB   rC   rD   r'   rE   rF   r   r   rH   rH   ;       Ir   rH   c                  "    \ rS rSrSrSS jrSrg)ValueB   rF   c                    SU  S3$ )N"rF   r   s    r   r'   Value.serializeE   s    4&{r   Nr?   rN   rF   r   r   rQ   rQ   B   s    Ir   rQ   c                  "    \ rS rSrSrSS jrSrg)OpI   rF   c                    [        U 5      $ r   rK   r   s    r   r'   Op.serializeL   rM   r   Nr?   rN   rF   r   r   rW   rW   I   rO   r   rW   )andor
MarkerAtom
MarkerListc                  H    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S	'   S
rg)ParsedRequirementW   r/   nameurl	list[str]extras	specifierzMarkerList | NonemarkerrF   N)r"   rA   rB   rC   __annotations__rE   rF   r   r   r`   r`   W   s    
I	HNr   r`   c                0    [        [        U [        S95      $ N)rules)_parse_requirementr   r   sources    r   parse_requirementro   b       imDEEr   c                   U R                  S5        U R                  SSS9nUR                  nU R                  S5        [        U 5      nU R                  S5        [	        U 5      u  pEnU R                  SSS9  [        X$X5U5      $ )zA
requirement = WS? IDENTIFIER WS? extras WS? requirement_details
WS
IDENTIFIERz1package name at the start of dependency specifierexpectedENDzend of dependency specifier)consumeexpecttext_parse_extras_parse_requirement_detailsr`   )	tokenizer
name_tokenrb   re   rc   rf   rg   s          r   rl   rl   f   s     d!!R " J ??Dd9%Fd7	BCFU%BCT6BBr   c                   SnSnSnU R                  S5      (       a  U R                  5         U R                  S5        U R                  nU R	                  SSS9R
                  nU R                  SS	S
9(       a  X!U4$ U R	                  SSS9  U R                  SS	S
9(       a  X!U4$ [        U USS9nOUU R                  n[        U 5      nU R                  S5        U R                  SS	S
9(       a  X!U4$ [        U UU(       a  SOSS9nX!U4$ )zr
requirement_details = AT URL (WS requirement_marker?)?
                    | specifier WS? (requirement_marker)?
 NATrr   URLzURL after @rt   rv   Tpeekzwhitespace after URLz$semicolon (after URL and whitespace))
span_startru   zEcomma (within version specifier), semicolon (after version specifier)z0semicolon (after name with no version specifier))checkreadrw   positionrx   ry   _parse_requirement_marker_parse_specifier)r|   rf   rc   rg   	url_startspecifier_starts         r   r{   r{   {   s*    I
CFt$&&	u}=BB??5t?,F++(>? ??5t?,F++* ;
 $,,$Y/	$??5t?,F++*&  XG
 F##r   c                   U R                  S5      (       d  U R                  SU S3USS9  U R                  5         [        U 5      nU R	                  S5        U$ )z+
requirement_marker = SEMICOLON marker WS?
	SEMICOLONz	Expected z or endNr   span_endrr   )r   raise_syntax_errorr   _parse_markerrw   )r|   r   ru   rg   s       r   r   r      sa     ??;''$$z)! 	% 	

 NN9%FdMr   c                    U R                  SSS9(       d  / $ U R                  SSSS9   U R                  S5        [        U 5      nU R                  S5        SSS5        U$ ! , (       d  f       W$ = f)	z?
extras = (LEFT_BRACKET wsp* extras_list? wsp* RIGHT_BRACKET)?
LEFT_BRACKETTr   RIGHT_BRACKETre   aroundrr   N)r   enclosing_tokensrw   _parse_extras_list)r|   re   s     r   rz   rz      s{     ??>?5			#	# 
$ 

 	$#I.$
 M
 
 Ms   .A!!
A0c                   / nU R                  S5      (       d  U$ UR                  U R                  5       R                  5         U R	                  S5        U R                  SSS9(       a  U R                  S5        OU R                  S5      (       d   U$ U R                  5         U R	                  S5        U R                  SSS9nUR                  UR                  5        M  )	z6
extras_list = identifier (wsp* ',' wsp* identifier)*
rs   Trr   r   z"Expected comma between extra namesCOMMAzextra name after commart   )r   appendr   ry   rw   r   rx   )r|   re   extra_tokens      r   r   r      s     F??<((
MM).."''(
$??<d?3(()MN)) M 	$&&|>V&Wk&&' r   c                    U R                  SSSS9   U R                  S5        [        U 5      nU R                  S5        SSS5        U$ ! , (       d  f       W$ = f)zf
specifier = LEFT_PARENTHESIS WS? version_many WS? RIGHT_PARENTHESIS
          | WS? version_many WS?
LEFT_PARENTHESISRIGHT_PARENTHESISzversion specifierr   rr   N)r   rw   _parse_version_many)r|   parsed_specifierss     r   r   r      si    
 
	#	#" 
$ 

 	$/	:$
 
 
 s   .A


Ac                *   SnU R                  S5      (       a  U R                  nXR                  5       R                  -  nU R                  SSS9(       a  U R	                  SUU R                  S-   S9  U R                  S	SS9(       a  U R	                  S
UU R                  S9  U R                  S5        U R                  S5      (       d   U$ XR                  5       R                  -  nU R                  S5        U R                  S5      (       a  M  U$ )z8
version_many = (SPECIFIER (WS? COMMA WS? SPECIFIER)*)?
r   	SPECIFIERVERSION_PREFIX_TRAILTr   z6.* suffix can only be used with `==` or `!=` operatorsr
   r   VERSION_LOCAL_LABEL_TRAILz@Local version label can only be used with `==` or `!=` operatorsrr   r   )r   r   r   ry   r   rw   )r|   r   r   s      r   r   r     s    
//+
&
&''
^^-222??1?=((H%"++a/ ) 
 ??6T?B((R%"++ ) 
 	$w''  	^^-222$' //+
&
&* r   c                0    [        [        U [        S95      $ rj   )_parse_full_markerr   r   rm   s    r   parse_markerr   $  rp   r   c                <    [        U 5      nU R                  SSS9  U$ )Nrv   zend of marker expressionrt   )r   rx   )r|   retvals     r   r   r   (  s%    9%FU%?@Mr   c                    [        U 5      /nU R                  S5      (       aP  U R                  5       n[        U 5      nUR                  UR                  U45        U R                  S5      (       a  MP  U$ )z,
marker = marker_atom (BOOLOP marker_atom)+
BOOLOP)_parse_marker_atomr   r   extendry   )r|   
expressiontoken
expr_rights       r   r   r   .  sf     %Y/0J
//(
#
# '	2
5::z23 //(
#
# r   c                <   U R                  S5        U R                  SSS9(       aH  U R                  SSSS9   U R                  S5        [        U 5      nU R                  S5        SSS5        O[	        U 5      nU R                  S5        W$ ! , (       d  f       N!= f)	zk
marker_atom = WS? LEFT_PARENTHESIS WS? marker WS? RIGHT_PARENTHESIS WS?
            | WS? marker_item WS?
rr   r   Tr   r   zmarker expressionr   N)rw   r   r   r   _parse_marker_item)r|   rg   s     r   r   r   :  s     d)5''& ( 

 d#!.y!9Fd#
 
 $I.dM
 
s   .B
Bc                    U R                  S5        [        U 5      nU R                  S5        [        U 5      nU R                  S5        [        U 5      nU R                  S5        XU4$ )z?
marker_item = WS? marker_var WS? marker_op WS? marker_var WS?
rr   )rw   _parse_marker_var_parse_marker_op)r|   marker_var_left	marker_opmarker_var_rights       r   r   r   P  sg     d'	2Od +Id(3d(899r   c                &   U R                  S5      (       a3  [        U R                  5       R                  R	                  SS5      5      $ U R                  S5      (       a#  [        U R                  5       R                  5      $ U R                  SS9  g)z'
marker_var = VARIABLE | QUOTED_STRING
VARIABLE.r9   QUOTED_STRINGz+Expected a marker variable or quoted string)messageN)r   process_env_varr   ry   replaceprocess_python_strr   r|   s    r   r   r   ^  su     z""y~~/44<<S#FGG		)	)!).."2"7"788$$A 	% 	
r   c                :    U S;   a  [        S5      $ [        U 5      $ )N)platform_python_implementationpython_implementationr   )rH   )env_vars    r   r   r   l  s"    MM899  r   c                V    [         R                  " U 5      n[        [        U5      5      $ r   )astliteral_evalrQ   r/   )
python_strr   s     r   r   r   s  s!    Z(EUr   c                   U R                  S5      (       a  U R                  5         [        S5      $ U R                  S5      (       a;  U R                  5         U R                  SSS9  U R                  SSS9  [        S5      $ U R                  S	5      (       a#  [        U R                  5       R                  5      $ U R                  S
5      $ )z
marker_op = IN | NOT IN | OP
INinNOTrr   zwhitespace after 'not'rt   z'in' after 'not'znot inOPzJExpected marker operator, one of <=, <, !=, ==, >=, >, ~=, ===, in, not in)r   r   rW   rx   ry   r   r   s    r   r   r   x  s     t$x			(@A(:;(|			).."''((++X
 	
r   )rn   r/   r=   r`   )r|   r   r=   r`   )r|   r   r=   z"tuple[str, str, MarkerList | None])r|   r   r   intru   r/   r=   r^   )r|   r   r=   rd   )r|   r   r=   r/   )rn   r/   r=   r^   )r|   r   r=   r^   )r|   r   r=   r]   )r|   r   r=   
MarkerItem)r|   r   r=   	MarkerVar)r   r/   r=   rH   )r   r/   r=   rQ   )r|   r   r=   rW   ))__doc__
__future__r   r   typingr   r   r   r   r   r	   
_tokenizerr   r   r   rH   rQ   rW   MarkerLogicalr   r   r]   r^   r`   ro   rl   r{   r   rz   r   r   r   r   r   r   r   r   r   r   r   r   rF   r   r   <module>r      s7   # 
 D D 0)T )TXt D   $(E/"	9b)+,
:x556
%j-?@A

 FC*2$2$'2$j),8;*&6"@F	,:
!

r   