+
    ®¾jí'  ã                  óö  € R t ^ RIHt ^ RIt^ RI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]]]R,          3,          t]]R]]3,          ,          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/ R0 lt%R1 R2 lt&R# )3z˜Handwritten parser of dependency specifiers.

The docstring for each __parse_* function contains EBNF-inspired grammar representing
the implementation.
)ÚannotationsN)Ú
NamedTupleÚSequenceÚTupleÚUnion)ÚDEFAULT_RULESÚ	Tokenizerc                  óF   € ] tR t^tR R ltR R ltR R ltR R ltR	tR
# )ÚNodec               ó    € V ^8„  d   QhRRRR/# )é   ÚvalueÚstrÚreturnÚNone© )Úformats   "Ú\/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/pip/_vendor/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R/# ©r   r   r   r   )r   s   "r   r   r      s   € ÷ ñ ˜ñ r   c                	ó   € V P                   # r   r   ©r   s   &r   Ú__str__ÚNode.__str__   s   € Ø�z‰zÐr   c               ó   € V ^8„  d   QhR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—>‘>×*Ñ*Ð+¨2¨d¨V°3Ð7Ð7r   c               ó   € V ^8„  d   QhR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__r   r   r   r
   r
      s   † õõõ8÷"ñ "r   r
   c                  ó"   € ] tR t^tR R ltRtR# )ÚVariablec               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   ÚVariable.__annotate__   ó   € ÷ ñ ˜3ñ r   c                	ó   € \        V 4      # r   ©r   r    s   &r   r-   ÚVariable.serialize   ó   € Ü�4‹yÐr   r   N©r'   r/   r0   r1   r-   r2   r   r   r   r4   r4      ó   † ÷ñ r   r4   c                  ó"   € ] tR t^"tR R ltRtR# )ÚValuec               ó   € V ^8„  d   QhR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<   r   r   r   r?   r?   "   s   † ÷ñ r   r?   c                  ó"   € ] tR t^'tR R ltRtR# )ÚOpc               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   ÚOp.__annotate__(   r7   r   c                	ó   € \        V 4      # r   r9   r    s   &r   r-   ÚOp.serialize(   r;   r   r   Nr<   r   r   r   rF   rF   '   r=   r   rF   Ú
MarkerAtomÚ
MarkerListc                  óJ   € ] tR t^2t$ R]R&   R]R&   R]R&   R]R&   R]R&   R	tR
# )ÚParsedRequirementr   ÚnameÚurlú	list[str]ÚextrasÚ	specifierzMarkerList | NoneÚmarkerr   N)r'   r/   r0   r1   Ú__annotations__r2   r   r   r   rN   rN   2   s   ‡ Ø
ƒIØ	ƒHØÓØƒNØ×r   rN   c               ó    € V ^8„  d   QhRRRR/# )r   Úsourcer   r   rN   r   )r   s   "r   r   r   =   s   € ÷ Fñ F˜cð FÐ&7ñ Fr   c                ó6   € \        \        V \        R 7      4      # ©)Úrules)Ú_parse_requirementr   r   ©rW   s   &r   Úparse_requirementr]   =   ó   € Üœi¨´mÔDÓEÐEr   c               ó    € V ^8„  d   QhRRRR/# )r   Ú	tokenizerr   r   rN   r   )r   s   "r   r   r   A   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_detailsrN   )r`   Ú
name_tokenrO   rR   rP   rS   rT   s   &      r   r[   r[   A   s�   € ð ×Ñ�dÔà×!Ñ!ØÐRð "ó €Jð �?‰?€DØ×Ñ�dÔä˜9Ó%€FØ×Ñ�dÔä7¸	ÓBÑ€C�FØ×Ñ�UÐ%BÐÔCä˜T¨¸6ÓBÐBr   c               ó    € V ^8„  d   QhRRRR/# )r   r`   r   r   z"tuple[str, str, MarkerList | None]r   )r   s   "r   r   r   V   s   € ÷ 0$ñ 0$Øð0$à'ñ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ÚATrb   ÚURLzURL after @rd   rf   T©Úpeekzwhitespace after URLzURL and whitespace)Ú
span_startÚafterúversion specifierz#name and no valid version specifier)ÚcheckÚreadrg   Úpositionrh   ri   Ú_parse_requirement_markerÚ_parse_specifier)r`   rS   rP   rT   Ú	url_startÚspecifier_starts   &     r   rk   rk   V   s/  € ð €IØ
€CØ€Fà‡��t×ÒØ�‰ÔØ×Ñ˜$Ôà×&Ñ&ˆ	Ø×Ñ˜u¨}ÐÓ=×BÑBˆØ�?‰?˜5 tˆ?×,Ò,Ø FÐ+Ð+à×Ñ˜Ð(>ÐÔ?ð �?‰?˜5 tˆ?×,Ò,Ø FÐ+Ð+ä*ØÐ3Gô
‰ð $×,Ñ,ˆÜ$ YÓ/ˆ	Ø×Ñ˜$Ôà�?‰?˜5 tˆ?×,Ò,Ø FÐ+Ð+ä*ØØ&÷ ñ $à:ô
ˆð ˜FÐ#Ð#r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   r`   r   rt   Úintru   r   r   rL   r   )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 Ú))rt   rb   )rw   Úraise_syntax_errorrx   Ú_parse_markerrg   )r`   rt   ru   rT   s   &$$ r   rz   rz   ‰   s^   € ð �?‰?˜;×'Ò'Ø×$Ñ$Ø/°¨w°aÐ8Ø!ð 	%ô 	
ð ‡N�NÔä˜9Ó%€FØ×Ñ�dÔà€Mr   c               ó    € V ^8„  d   QhRRRR/# ©r   r`   r   r   rQ   r   )r   s   "r   r   r   �   s   € ÷ ñ ˜Yð ¨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_BRACKETTrr   ÚRIGHT_BRACKETrR   ©Úaroundrb   N)rw   Úenclosing_tokensrg   Ú_parse_extras_list)r`   rR   s   & r   rj   rj   �   sƒ   € ð �?‰?˜>°ˆ?×5Ò5Øˆ	à	×	#Ñ	#ØØØð 
$÷ 
õ 
ð
 	×Ñ˜$ÔÜ# IÓ.ˆØ×Ñ˜$Ô÷
ð €M÷
ö 
ð €Mús   ¸.A0Á0B	c               ó    € V ^8„  d   QhRRRR/# r†   r   )r   s   "r   r   r   °   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)*
rc   Trb   rr   z"Expected comma between extra namesÚCOMMAzextra name after commard   )rw   Úappendrx   ri   rg   rƒ   rh   )r`   rR   Úextra_tokens   &  r   r�   r�   °   sÄ   € ð €Fà�?‰?˜<×(Ò(Øˆà
‡M�M�)—.‘.Ó"×'Ñ'Ô(à
Ø×Ñ˜$ÔØ�?‰?˜<¨dˆ?×3Ò3Ø×(Ñ(Ð)MÕNØ—‘ ×)Ò)Øð €Mð 	�‰ÔØ×Ñ˜$Ôà×&Ñ& |Ð>VÐ&ÓWˆØ�‰�k×&Ñ&Ö'r   c               ó    € V ^8„  d   QhRRRR/# ©r   r`   r   r   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_PARENTHESISrv   rŠ   rb   N)rŒ   rg   Ú_parse_version_many)r`   Úparsed_specifierss   & r   r{   r{   Ë   sn   € ð
 
×	#Ñ	#ØØØ"ð 
$÷ 
õ 
ð
 	×Ñ˜$ÔÜ/°	Ó:ÐØ×Ñ˜$Ô÷
ð Ð÷
ö 
ð Ðús   �.AÁA&	c               ó    € V ^8„  d   QhRRRR/# r”   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)*)?
ro   Ú	SPECIFIERÚVERSION_PREFIX_TRAILTrr   z6.* suffix can only be used with `==` or `!=` operators)rt   Úspan_endÚVERSION_LOCAL_LABEL_TRAILz@Local version label can only be used with `==` or `!=` operatorsrb   r�   )rw   ry   rx   ri   rƒ   rg   )r`   r™   rt   s   &  r   r˜   r˜   Ü   s  € ð ÐØ
�/‰/˜+×
&Ó
&Ø×'Ñ'ˆ
ØŸ^™^Ó-×2Ñ2Õ2ÐØ�?‰?Ð1¸ˆ?×=Ò=Ø×(Ñ(ØHØ%Ø"×+Ñ+¨aÕ/ð )ô ð
 �?‰?Ð6¸Tˆ?×BÒBØ×(Ñ(ØRØ%Ø"×+Ñ+ð )ô ð
 	×Ñ˜$ÔØ�‰˜w×'Ò'Øð Ðð 	Ÿ^™^Ó-×2Ñ2Õ2ÐØ×Ñ˜$×àÐr   c               ó    € V ^8„  d   QhRRRR/# )r   rW   r   r   rL   r   )r   s   "r   r   r   ü   s   € ÷ Fñ F˜ð F ñ Fr   c                ó6   € \        \        V \        R 7      4      # rY   )Ú_parse_full_markerr   r   r\   s   &r   Úparse_markerr£   ü   r^   r   c               ó    € V ^8„  d   QhRRRR/# ©r   r`   r   r   rL   r   )r   s   "r   r   r      s   € ÷ ñ  )ð °
ñ r   c                óB   € \        V 4      pV P                  R RR7       V# )rf   zend of marker expressionrd   )r„   rh   )r`   Úretvals   & r   r¢   r¢      s%   € Ü˜9Ó%€FØ×Ñ�UÐ%?ÐÔ@Ø€Mr   c               ó    € V ^8„  d   QhRRRR/# r¥   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_atomrw   rx   Úextendri   )r`   Ú
expressionÚtokenÚ
expr_rights   &   r   r„   r„     sS   € ô % YÓ/Ð0€JØ
�/‰/˜(×
#Ò
#Ø—‘Ó ˆÜ'¨	Ó2ˆ
Ø×Ñ˜5Ÿ:™: zÐ2Ö3ØÐr   c               ó    € V ^8„  d   QhRRRR/# )r   r`   r   r   rK   r   )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?
rb   r–   Trr   r—   zmarker expressionrŠ   N)rg   rw   rŒ   r„   Ú_parse_marker_item)r`   rT   s   & r   r«   r«     s£   € ð ×Ñ�dÔØ‡�Ð)°€×5Ò5Ø×'Ñ'ØØØ&ð (÷ 
õ 
ð
 ×Ñ˜dÔ#Ü!.¨yÓ!9ˆFØ×Ñ˜dÔ#÷
ð 
ô $ IÓ.ˆØ×Ñ�dÔØ€M÷
÷ 
ús   Á.BÂB,	c               ó    € V ^8„  d   QhRRRR/# )r   r`   r   r   Ú
MarkerItemr   )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?
rb   )rg   Ú_parse_marker_varÚ_parse_marker_op)r`   Úmarker_var_leftÚ	marker_opÚmarker_var_rights   &   r   r²   r²   (  sg   € ð ×Ñ�dÔÜ'¨	Ó2€OØ×Ñ�dÔÜ  Ó+€IØ×Ñ�dÔÜ(¨Ó3ÐØ×Ñ�dÔØÐ(8Ð9Ð9r   c               ó    € V ^8„  d   QhRRRR/# )r   r`   r   r   Ú	MarkerVarr   )r   s   "r   r   r   6  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)rw   Úprocess_env_varrx   ri   ÚreplaceÚprocess_python_strrƒ   ©r`   s   &r   r¶   r¶   6  su   € ð ‡��z×"Ò"Ü˜yŸ~™~Ó/×4Ñ4×<Ñ<¸SÀ#ÓFÓGÐGØ	�‰˜×	)Ò	)Ü! )§.¡.Ó"2×"7Ñ"7Ó8Ð8à×$Ñ$ØAð 	%ö 	
r   c               ó    € V ^8„  d   QhRRRR/# )r   Úenv_varr   r   r4   r   )r   s   "r   r   r   D  s   € ÷ !ñ !˜Sð ! Xñ !r   c                ó<   € V R9   d   \        R 4      # \        V 4      # )Úplatform_python_implementation)rÊ   Úpython_implementation)r4   )rÈ   s   &r   rÃ   rÃ   D  s"   € ØÐMÔMÜÐ8Ó9Ð9ä˜Ó Ð r   c               ó    € V ^8„  d   QhRRRR/# )r   Ú
python_strr   r   r?   r   )r   s   "r   r   r   K  s   € ÷ ñ  3ð ¨5ñ r   c                óV   € \         P                  ! V 4      p\        \        V4      4      # r   )ÚastÚliteral_evalr?   r   )rÍ   r   s   & r   rÅ   rÅ   K  s!   € Ü×Ò˜ZÓ(€EÜ”�U“ÓÐr   c               ó    € V ^8„  d   QhRRRR/# )r   r`   r   r   rF   r   )r   s   "r   r   r   P  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ÚNOTrb   zwhitespace after 'not'rd   z'in' after 'not'znot inÚOPzJExpected marker operator, one of <=, <, !=, ==, >=, >, ~=, ===, in, not in)rw   rx   rF   rh   ri   rƒ   rÆ   s   &r   r·   r·   P  s®   € ð ‡��t×ÒØ�‰ÔÜ�$‹xˆØ	�‰˜×	Ò	Ø�‰ÔØ×Ñ˜Ð(@ÐÔAØ×Ñ˜Ð(:ÐÔ;Ü�(‹|ÐØ	�‰˜×	Ò	Ü�)—.‘.Ó"×'Ñ'Ó(Ð(à×+Ñ+ØXó
ð 	
r   )'Ú__doc__Ú
__future__r   rÏ   Útypingr   r   r   r   Ú
_tokenizerr   r   r
   r4   r?   rF   r¼   r´   rK   r   rL   rN   r]   r[   rk   rz   rj   r�   r{   r˜   r£   r¢   r„   r«   r²   r¶   rÃ   rÅ   r·   r   r   r   Ú<module>rÛ      sú   ðñõ #ã 
ß 5Ó 5ç 0÷"ñ "ôˆtô ô
ˆDô ô
ˆô ð
 �(˜E�/Õ"€	Ø�9˜b )Ð+Õ,€
Ø�:˜x¨Õ5Ð5Õ6€
Ø�e˜L¨*°cÐ9Õ:Õ;€
ô˜
ô õFõCõ*0$õfõ(õ&õ6õ"õ@Fõõ	õõ,:õ
õ!õ÷

r   