
    m&phk(                     0   S 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\\\4   r\\\\4   r\r\\   r " S S\5      rS\S\4S jrS\S\4S jrS\S\\\\\   4   4S jrS\S\S\S\4S jrS\S\\   4S jrS\S\\   4S jrS\S\4S jrS\S\4S jrS\S\4S jrS\S\4S jr S\S\4S jr!S\S\4S  jr"S\S\4S! jr#S\S\4S" jr$S#\S\4S$ jr%S%\S\4S& jr&S\S\4S' jr'g)(zHandwritten parser of dependency specifiers.

The docstring for each __parse_* function contains EBNF-inspired grammar representing
the implementation.
    N)AnyList
NamedTupleOptionalTupleUnion   )DEFAULT_RULES	Tokenizerc                   P    \ rS rSrS\SS4S jrS\4S jrS\4S jrS\4S jrS	r	g)
Node   valuereturnNc                     Xl         g Nr   )selfr   s     S/var/www/html/venv/lib/python3.13/site-packages/wheel/vendored/packaging/_parser.py__init__Node.__init__   s    
    c                     U R                   $ r   r   r   s    r   __str__Node.__str__   s    zzr   c                 <    SU R                   R                   SU  S3$ )N<z('z')>)	__class____name__r   s    r   __repr__Node.__repr__   s"    4>>**+2dV377r   c                     [         er   )NotImplementedErrorr   s    r   	serializeNode.serialize   s    !!r   r   )
r    
__module____qualname____firstlineno__strr   r   r!   r%   __static_attributes__ r   r   r   r      s9    c d  8# 8"3 "r   r   c                   "    \ rS rSrS\4S jrSrg)Variable   r   c                     [        U 5      $ r   r*   r   s    r   r%   Variable.serialize       4yr   r,   Nr    r'   r(   r)   r*   r%   r+   r,   r   r   r.   r.          3 r   r.   c                   "    \ rS rSrS\4S jrSrg)Value    r   c                     SU  S3$ )N"r,   r   s    r   r%   Value.serialize!   s    4&{r   r,   Nr4   r,   r   r   r7   r7       s    3 r   r7   c                   "    \ rS rSrS\4S jrSrg)Op%   r   c                     [        U 5      $ r   r1   r   s    r   r%   Op.serialize&   r3   r   r,   Nr4   r,   r   r   r=   r=   %   r5   r   r=   c                   T    \ rS rSr% \\S'   \\S'   \\   \S'   \\S'   \\   \S'   Sr	g)	ParsedRequirement4   nameurlextras	specifiermarkerr,   N)
r    r'   r(   r)   r*   __annotations__r   r   
MarkerListr+   r,   r   r   rB   rB   4   s&    
I	HINZ  r   rB   sourcer   c                 0    [        [        U [        S95      $ N)rules)_parse_requirementr   r
   rK   s    r   parse_requirementrQ   ?       imDEEr   	tokenizerc                    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_detailsrB   )rS   
name_tokenrD   rF   rE   rG   rH   s          r   rO   rO   C   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$ [        X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ATrU   URLzURL after @rW   rY   Tpeekzwhitespace after URLzURL and whitespace)
span_startafterversion specifierz#name and no valid version specifier)checkreadrZ   positionr[   r\   _parse_requirement_marker_parse_specifier)rS   rG   rE   rH   	url_startspecifier_starts         r   r^   r^   X   s&    I
CFt$&&	u}=BB??5t?,F++(>? ??5t?,F++*3G
 $,,$Y/	$??5t?,F++*&  $:
 F##r   rf   rg   c                    U R                  S5      (       d  U R                  SU S3US9  U R                  5         [        U 5      nU R	                  S5        U$ )z+
requirement_marker = SEMICOLON marker WS?
	SEMICOLONz!Expected end or semicolon (after ))rf   rU   )ri   raise_syntax_errorrj   _parse_markerrZ   )rS   rf   rg   rH   s       r   rl   rl      s^     ??;''$$/wa8! 	% 	
 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_BRACKETTrd   RIGHT_BRACKETrF   aroundrU   N)ri   enclosing_tokensrZ   _parse_extras_list)rS   rF   s     r   r]   r]      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)*
rV   TrU   rd   z"Expected comma between extra namesCOMMAzextra name after commarW   )ri   appendrj   r\   rZ   rs   r[   )rS   rF   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_PARENTHESISrh   rx   rU   N)rz   rZ   _parse_version_many)rS   parsed_specifierss     r   rm   rm      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)*)?
ra   	SPECIFIERVERSION_PREFIX_TRAILTrd   z6.* suffix can only be used with `==` or `!=` operatorsr	   )rf   span_endVERSION_LOCAL_LABEL_TRAILz@Local version label can only be used with `==` or `!=` operatorsrU   r}   )ri   rk   rj   r\   rs   rZ   )rS   r   rf   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      $ rM   )_parse_full_markerr   r
   rP   s    r   parse_markerr      rR   r   c                 <    [        U 5      nU R                  SSS9  U$ )NrY   zend of marker expressionrW   )rt   r[   )rS   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_atomri   rj   extendr\   )rS   
expressiontoken
expr_rights       r   rt   rt     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?
rU   r   Trd   r   zmarker expressionrx   N)rZ   ri   rz   rt   _parse_marker_item)rS   rH   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?
rU   )rZ   _parse_marker_var_parse_marker_op)rS   marker_var_left	marker_opmarker_var_rights       r   r   r   *  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._QUOTED_STRINGz+Expected a marker variable or quoted string)messageN)ri   process_env_varrj   r\   replaceprocess_python_strrs   rS   s    r   r   r   8  su     z""y~~/44<<S#FGG		)	)!).."2"7"788$$A 	% 	
r   env_varc                 :    U S;   a  [        S5      $ [        U 5      $ )N)platform_python_implementationpython_implementationr   )r.   )r   s    r   r   r   F  s"    MM899  r   
python_strc                 V    [         R                  " U 5      n[        [        U5      5      $ r   )astliteral_evalr7   r*   )r   r   s     r   r   r   M  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NOTrU   zwhitespace after 'not'rW   z'in' after 'not'znot inOPzJExpected marker operator, one of <=, <, !=, ==, >=, >, ~=, ===, in, not in)ri   rj   r=   r[   r\   rs   r   s    r   r   r   R  s     t$x			(@A(:;(|			).."''((++8
 	
r   )(__doc__r   typingr   r   r   r   r   r   
_tokenizerr
   r   r   r.   r7   r=   	MarkerVar
MarkerItem
MarkerAtomrJ   rB   r*   rQ   rO   r^   intrl   r]   r{   rm   r   r   r   rt   r   r   r   r   r   r   r,   r   r   <module>r      s     @ @ 0" "t 
D 
 
 (E/"	9b)+,

 
#Y
!
 !Fc F&7 FC) C0A C*0$0$
3Xj))*0$f),58(Y 49 &) S	 6	 c "9  @F F F) 
 	Y 	: 	) 
 ,:) :
 :
 
y 
!S !X !3 5 

	 
b 
r   