+
    SBik(                        R t ^ RIt^ RIHtHtHtHtHtHt ^RI	H
t
Ht  ! R R4      t ! R R]4      t ! R R	]4      t ! R
 R]4      t]]]3,          t]]]]3,          t]t]],          t ! R R]4      tR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR  R! ltR" R# ltR$ R% lt R& R' lt!R( R) lt"R* R+ lt#R, R- lt$R. R/ lt%R# )0zHandwritten 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                   h   a  ] tR t^t o V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltR	tV t	R
# )Nodec                $   < V ^8  d   QhRS[ RR/# )   valuereturnNstr)format__classdict__s   "E/usr/lib/python3.14/site-packages/wheel/vendored/packaging/_parser.py__annotate__Node.__annotate__   s      c d     c                    Wn         R # Nr   )selfr   s   &&r   __init__Node.__init__   s    
r   c                    < V ^8  d   QhRS[ /# r   r   r   )r   r   s   "r   r   r      s       r   c                    V P                   # r   r   r   s   &r   __str__Node.__str__   s    zzr   c                    < V ^8  d   QhRS[ /# r   r   )r   r   s   "r   r   r      s     8 8# 8r   c                <    R V P                   P                   RV  R2# )<z('z')>)	__class____name__r!   s   &r   __repr__Node.__repr__   s"    4>>**+2dV377r   c                    < V ^8  d   QhRS[ /# r   r   )r   r   s   "r   r   r      s     " "3 "r   c                    \         hr   )NotImplementedErrorr!   s   &r   	serializeNode.serialize   s    !!r   r   N)
r(   
__module____qualname____firstlineno__r   r"   r)   r.   __static_attributes____classdictcell__r   s   @r   r   r      s-       8 8" "r   r   c                   2   a  ] tR t^t o V 3R lR ltRtV tR# )Variablec                    < V ^8  d   QhRS[ /# r   r   )r   r   s   "r   r   Variable.__annotate__         3 r   c                    \        V 4      # r   r   r!   s   &r   r.   Variable.serialize       4yr    Nr(   r0   r1   r2   r.   r3   r4   r5   s   @r   r7   r7            r   r7   c                   2   a  ] tR t^ t o V 3R lR ltRtV tR# )Valuec                    < V ^8  d   QhRS[ /# r   r   )r   r   s   "r   r   Value.__annotate__!   s      3 r   c                    R V  R 2# )"r>   r!   s   &r   r.   Value.serialize!   s    4&{r   r>   Nr?   r5   s   @r   rB   rB       s      r   rB   c                   2   a  ] tR t^%t o V 3R lR ltRtV tR# )Opc                    < V ^8  d   QhRS[ /# r   r   )r   r   s   "r   r   Op.__annotate__&   r:   r   c                    \        V 4      # r   r   r!   s   &r   r.   Op.serialize&   r=   r   r>   Nr?   r5   s   @r   rI   rI   %   r@   r   rI   c                   ,   a  ] tR t^4t o V 3R ltRtV tR# )ParsedRequirementc                v   < V ^8  d   Qh/ S[ ;R&   S[ ;R&   S[S[ ,          ;R&   S[ ;R&   S[S[,          ;R&   # )r   nameurlextras	specifiermarker)r   r   r   
MarkerList)r   r   s   "r   r   ParsedRequirement.__annotate__4   sH     
I 	H  I  N	 
 Z   r   r>   N)r(   r0   r1   r2   __annotate_func__r3   r4   r5   s   @r   rO   rO   4   s      r   rO   c                0    V ^8  d   QhR\         R\        /# r   sourcer   )r   rO   )r   s   "r   r   r   ?   s     F Fc F&7 Fr   c                 6    \        \        V \        R 7      4      # )rules)_parse_requirementr	   r   r[   s   &r   parse_requirementra   ?       imDEEr   c                0    V ^8  d   QhR\         R\        /# r   	tokenizerr   )r	   rO   )r   s   "r   r   r   C   s     C C) C0A Cr   c                   V P                  R4       V P                  RRR7      pVP                  pV P                  R4       \        V 4      pV P                  R4       \	        V 4      w  rEpV P                  RRR7       \        W$W5V4      # )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_detailsrO   )re   
name_tokenrQ   rS   rR   rT   rU   s   &      r   r_   r_   C   s     d!!R " J ??Dd9%Fd7	BCFU%BCT6BBr   c                r    V ^8  d   QhR\         R\        \        \        \        \        ,          3,          /# rd   )r	   r   r   r   rV   )r   s   "r   r   r   X   s-     0$ 0$0$
3Xj))*0$r   c                H   RpRpRpV P                  R4      '       d   V P                  4        V P                  R4       V P                  pV P	                  RRR7      P
                  pV P                  RR	R
7      '       d   W!V3# V P	                  RRR7       V P                  RR	R
7      '       d   W!V3# \        WRR7      pM]V P                  p\        V 4      pV P                  R4       V P                  RR	R
7      '       d   W!V3# \        T TV'       d   RMRR7      pW!V3# )zr
requirement_details = AT URL (WS requirement_marker?)?
                    | specifier WS? (requirement_marker)?
 NATrg   URLzURL after @ri   rk   Tpeekzwhitespace after URLzURL and whitespace)
span_startafterversion specifierz#name and no valid version specifier)checkreadrl   positionrm   rn   _parse_requirement_marker_parse_specifier)re   rT   rR   rU   	url_startspecifier_starts   &     r   rp   rp   X   s/    I
CFt$&&	u}=BB??5t?,,F++(>? ??5t?,,F++*3G
 $,,$Y/	$??5t?,,F++*&  $:
 F##r   c                H    V ^8  d   QhR\         R\        R\        R\        /# )r   re   ry   rz   r   )r	   intr   rV   )r   s   "r   r   r      s,      ),58r   c                   V P                  R4      '       g   V P                  RV R2VR7       V P                  4        \        V 4      pV P	                  R4       V# )z+
requirement_marker = SEMICOLON marker WS?
	SEMICOLONz!Expected end or semicolon (after ))ry   rg   )r|   raise_syntax_errorr}   _parse_markerrl   )re   ry   rz   rU   s   &$$ r   r   r      s^     ??;''$$/wa8! 	% 	
 NN9%FdMr   c                F    V ^8  d   QhR\         R\        \        ,          /# rd   r	   r   r   )r   s   "r   r   r      s      Y 49 r   c                   V P                  RRR7      '       g   . # V P                  RRRR7      ;_uu_ 4        V P                  R4       \        V 4      pV P                  R4       RRR4       V#   + '       g   i     X# ; i)	z?
extras = (LEFT_BRACKET wsp* extras_list? wsp* RIGHT_BRACKET)?
LEFT_BRACKETTrw   RIGHT_BRACKETrS   aroundrg   N)r|   enclosing_tokensrl   _parse_extras_list)re   rS   s   & r   ro   ro      s     ??>?55			#	# 
$ 
 

 	$#I.$
 M
 
 Ms   .A00B	c                F    V ^8  d   QhR\         R\        \        ,          /# rd   r   )r   s   "r   r   r      s      ) S	 r   c                   . pV P                  R4      '       g   V# VP                  V P                  4       P                  4        V P	                  R4       V P                  RRR7      '       d   V P                  R4       MV P                  R4      '       g    V# V P                  4        V P	                  R4       V P                  RRR7      pVP                  VP                  4       K  )	z6
extras_list = identifier (wsp* ',' wsp* identifier)*
rh   Trg   rw   z"Expected comma between extra namesCOMMAzextra name after commari   )r|   appendr}   rn   rl   r   rm   )re   rS   extra_tokens   &  r   r   r      s     F??<((
MM).."''(
$??<d?33(()MN)) M 	$&&|>V&Wk&&'r   c                0    V ^8  d   QhR\         R\        /# rd   r	   r   )r   s   "r   r   r      s      	 c r   c                    V P                  RRRR7      ;_uu_ 4        V P                  R4       \        V 4      pV P                  R4       RRR4       V#   + '       g   i     X# ; i)zf
specifier = LEFT_PARENTHESIS WS? version_many WS? RIGHT_PARENTHESIS
          | WS? version_many WS?
LEFT_PARENTHESISRIGHT_PARENTHESISr{   r   rg   N)r   rl   _parse_version_many)re   parsed_specifierss   & r   r   r      sn    
 
	#	#" 
$ 
 

 	$/	:$
 
 
 s   .AA&	c                0    V ^8  d   QhR\         R\        /# rd   r   )r   s   "r   r   r      s      9  r   c                :   RpV P                  R4      '       Ed   V P                  pWP                  4       P                  ,          pV P                  RRR7      '       d&   V P	                  RVV P                  ^,           R7       V P                  RRR7      '       d   V P	                  R	VV P                  R7       V P                  R
4       V P                  R4      '       g    V# WP                  4       P                  ,          pV P                  R
4       EK  V# )z8
version_many = (SPECIFIER (WS? COMMA WS? SPECIFIER)*)?
rt   	SPECIFIERVERSION_PREFIX_TRAILTrw   z6.* suffix can only be used with `==` or `!=` operators)ry   span_endVERSION_LOCAL_LABEL_TRAILz@Local version label can only be used with `==` or `!=` operatorsrg   r   )r|   r~   r}   rn   r   rl   )re   r   ry   s   &  r   r   r      s    
//+
&
&''
^^-222??1?==((H%"++a/ ) 
 ??6T?BB((R%"++ ) 
 	$w''  	^^-222$r   c                0    V ^8  d   QhR\         R\        /# rZ   )r   rV   )r   s   "r   r   r      s     F F F Fr   c                 6    \        \        V \        R 7      4      # r]   )_parse_full_markerr	   r   r`   s   &r   parse_markerr      rb   r   c                0    V ^8  d   QhR\         R\        /# rd   r	   rV   )r   s   "r   r   r     s      ) 
 r   c                 B    \        V 4      pV P                  R RR7       V# )rk   zend of marker expressionri   )r   rm   )re   retvals   & r   r   r     s%    9%FU%?@Mr   c                0    V ^8  d   QhR\         R\        /# rd   r   )r   s   "r   r   r     s     	 	Y 	: 	r   c                    \        V 4      .pV P                  R4      '       d;   V P                  4       p\        V 4      pVP                  VP                  V34       KQ  V# )z,
marker = marker_atom (BOOLOP marker_atom)+
BOOLOP)_parse_marker_atomr|   r}   extendrn   )re   
expressiontoken
expr_rights   &   r   r   r     sS     %Y/0J
//(
#
# '	2
5::z23r   c                0    V ^8  d   QhR\         R\        /# rd   )r	   
MarkerAtom)r   s   "r   r   r     s      ) 
 r   c                ^   V P                  R4       V P                  RRR7      '       dT   V P                  RRRR7      ;_uu_ 4        V P                  R4       \        V 4      pV P                  R4       RRR4       M\	        V 4      pV P                  R4       X#   + '       g   i     L#; i)	zk
marker_atom = WS? LEFT_PARENTHESIS WS? marker WS? RIGHT_PARENTHESIS WS?
            | WS? marker_item WS?
rg   r   Trw   r   zmarker expressionr   N)rl   r|   r   r   _parse_marker_item)re   rU   s   & r   r   r     s     d)55''& ( 
 

 d#!.y!9Fd#
 
 $I.dM
 
s   .BB,	c                0    V ^8  d   QhR\         R\        /# rd   )r	   
MarkerItem)r   s   "r   r   r   *  s     : :) :
 :r   c                    V P                  R4       \        V 4      pV P                  R4       \        V 4      pV P                  R4       \        V 4      pV P                  R4       WV3# )z?
marker_item = WS? marker_var WS? marker_op WS? marker_var WS?
rg   )rl   _parse_marker_var_parse_marker_op)re   marker_var_left	marker_opmarker_var_rights   &   r   r   r   *  sg     d'	2Od +Id(3d(899r   c                0    V ^8  d   QhR\         R\        /# rd   )r	   	MarkerVar)r   s   "r   r   r   8  s     
 
 
y 
r   c                2   V P                  R4      '       d4   \        V P                  4       P                  P	                  RR4      4      # V P                  R4      '       d$   \        V P                  4       P                  4      # V P                  RR7       R# )z'
marker_var = VARIABLE | QUOTED_STRING
VARIABLE._QUOTED_STRINGz+Expected a marker variable or quoted string)messageN)r|   process_env_varr}   rn   replaceprocess_python_strr   re   s   &r   r   r   8  su     z""y~~/44<<S#FGG		)	)!).."2"7"788$$A 	% 	
r   c                0    V ^8  d   QhR\         R\        /# )r   env_varr   )r   r7   )r   s   "r   r   r   F  s     ! !S !X !r   c                 <    V R9   d   \        R 4      # \        V 4      # )platform_python_implementation)r   python_implementation)r7   )r   s   &r   r   r   F  s"    MM899  r   c                0    V ^8  d   QhR\         R\        /# )r   
python_strr   )r   rB   )r   s   "r   r   r   M  s      3 5 r   c                 V    \         P                  ! V 4      p\        \        V4      4      # r   )astliteral_evalrB   r   )r   r   s   & r   r   r   M  s!    Z(EUr   c                0    V ^8  d   QhR\         R\        /# rd   )r	   rI   )r   s   "r   r   r   R  s     
 
	 
b 
r   c                   V P                  R4      '       d   V P                  4        \        R4      # V P                  R4      '       dB   V P                  4        V P                  RRR7       V P                  RRR7       \        R4      # V P                  R	4      '       d$   \        V P                  4       P                  4      # V P                  R
4      # )z
marker_op = IN | NOT IN | OP
INinNOTrg   zwhitespace after 'not'ri   z'in' after 'not'znot inOPzJExpected marker operator, one of <=, <, !=, ==, >=, >, ~=, ===, in, not in)r|   r}   rI   rm   rn   r   r   s   &r   r   r   R  s     t$x			(@A(:;(|			).."''((++8
 	
r   )&__doc__r   typingr   r   r   r   r   r   
_tokenizerr   r	   r   r7   rB   rI   r   r   r   rV   rO   ra   r_   rp   r   ro   r   r   r   r   r   r   r   r   r   r   r   r   r>   r   r   <module>r      s     @ @ 0" "t 
D 
 
 (E/"	9b)+,

 
#Y
!
 !FC*0$f(&6"@F	,:
!

r   