ó
    T=Œ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)3z˜Handwritten 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     Úa/Users/stevendouglas/BidBrain/.venv/lib/python3.13/site-packages/pip/_vendor/packaging/_parser.pyÚ__init__ÚNode.__init__   s   € Ø�
ó    c                ó   • U R                   $ r   r   ©r   s    r   Ú__str__ÚNode.__str__   s   € Ø�z‰zÐ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—>‘>×*Ñ*Ð+¨1¨T¯Z©Z©N¸"Ð=Ð=r   c                ó   • [         er   )ÚNotImplementedErrorr   s    r   Ú	serializeÚNode.serialize   s   € Ü!Ð!r   c                ó   • U R                   $ r   r   r   s    r   Ú__getstate__ÚNode.__getstate__   s   € à�z‰zÐ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Ð!:¸,ÀuÁiÐ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´   € Ü�eœS×!Ñ!à×Ñ Ô&ØÜ�eœU×#Ñ#¬¨E«
°a«à ‰LˆAÜ˜)¤T×*Ñ*¨w¸)Ó/CØ×#Ñ# I¨gÑ$6Ô7ØÜ�eœT×"Ñ" 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>   ó   € Ü�4‹yÐ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)ÚValueéB   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)ÚOpéI   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)ÚParsedRequirementéW   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Ñ€C�FØ×Ñ�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ˆØ�?‰?˜5 tˆ?Ö,Ø FÐ+Ð+à×Ñ˜Ð(>ÐÑ?ð �?‰?˜5 tˆ?Ö,Ø FÐ+Ð+ä*ØØ Ø;ñ
‰ð $×,Ñ,ˆÜ$ YÓ/ˆ	Ø×Ñ˜$Ôà�?‰?˜5 tˆ?Ö,Ø 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 Ð)Ø!Øð 	%ñ 	
ð
 ‡N�NÔä˜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÷
ô 
ð €Mús   ©.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à�?‰?˜<×(Ñ(Øˆà
‡M�M�)—.‘.Ó"×'Ñ'Ô(à
Ø×Ñ˜$ÔØ�?‰?˜<¨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Ñ/ð )ñ ð
 �?‰?Ð6¸Tˆ?Ö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Ó/Ð0€JØ
�/‰/˜(×
#Ñ
#Ø—‘Ó ˆÜ'¨	Ó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Ó!9ˆFØ×Ñ˜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ÔÜ'¨	Ó2€OØ×Ñ�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�/Ñ"€	Ø�9˜b )Ð+Ñ,€
Ø�:˜x¨Ñ5Ð5Ñ6€
Ø�%˜ j°-Ð?Ñ@ÑA€
ô˜
ô ôFôCð*2$Øð2$à'ô2$ðjØðØ),ðØ8;ðàôô*ô&ô6ô"ô@Fôô	ôô,:ô
ô!ôõ

r   