Ë
    ��hí'  ã                  ó˜  — d Z ddlmZ ddlZddlmZmZmZmZ ddl	m
Z
mZ  G d„ d«      Z G d	„ d
e«      Z G d„ de«      Z G d„ de«      Zeeef   Zeeeef   Zeeed   f   Zeedeef      Z G d„ de«      Zd$d„Zd%d„Z	 	 	 	 d&d„Z	 	 	 	 	 	 	 	 d'd„Zd(d„Zd(d„Zd)d„Zd)d„Zd*d„Zd+d„Zd+d„Z d,d„Z!d-d„Z"d.d „Z#d/d!„Z$d0d"„Z%d1d#„Z&y)2z˜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                  ó,   — e Zd Zdd„Zdd„Zdd„Zdd„Zy)ÚNodec                ó   — || _         y ©N©Úvalue)Úselfr   s     ú[/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/pip/_vendor/packaging/_parser.pyÚ__init__zNode.__init__   s	   € Øˆ�
ó    c                ó   — | j                   S r   r   ©r   s    r   Ú__str__zNode.__str__   s   € Ø�z‰zÐr   c                ó<   — d| j                   j                  › d| › d�S )Nú<z('z')>)Ú	__class__Ú__name__r   s    r   Ú__repr__zNode.__repr__   s"   € Ø�4—>‘>×*Ñ*Ð+¨2¨d¨V°3Ð7Ð7r   c                ó   — t         ‚r   )ÚNotImplementedErrorr   s    r   Ú	serializezNode.serialize   s   € Ü!Ð!r   N)r   ÚstrÚreturnÚNone©r!   r    )r   Ú
__module__Ú__qualname__r   r   r   r   © r   r   r   r      s   „ óóó8ô"r   r   c                  ó   — e Zd Zdd„Zy)ÚVariablec                ó   — t        | «      S r   ©r    r   s    r   r   zVariable.serialize   ó   € Ü�4‹yÐr   Nr#   ©r   r$   r%   r   r&   r   r   r(   r(      ó   „ ôr   r(   c                  ó   — e Zd Zdd„Zy)ÚValuec                ó   — d| › d�S )Nú"r&   r   s    r   r   zValue.serialize#   s   € Ø�4�&˜ˆ{Ðr   Nr#   r,   r&   r   r   r/   r/   "   s   „ ôr   r/   c                  ó   — e Zd Zdd„Zy)ÚOpc                ó   — t        | «      S r   r*   r   s    r   r   zOp.serialize(   r+   r   Nr#   r,   r&   r   r   r3   r3   '   r-   r   r3   Ú
MarkerAtomÚ
MarkerListc                  ó@   — e Zd ZU ded<   ded<   ded<   ded<   ded<   y	)
ÚParsedRequirementr    ÚnameÚurlú	list[str]ÚextrasÚ	specifierzMarkerList | NoneÚmarkerN)r   r$   r%   Ú__annotations__r&   r   r   r8   r8   2   s   … Ø
ƒIØ	ƒHØÓØƒNØÔr   r8   c                ó6   — t        t        | t        ¬«      «      S ©N)Úrules)Ú_parse_requirementr
   r	   ©Úsources    r   Úparse_requirementrF   =   ó   € Üœi¨´mÔDÓEÐEr   c                ó  — | j                  d«       | j                  dd¬«      }|j                  }| j                  d«       t        | «      }| j                  d«       t	        | «      \  }}}| j                  dd¬«       t        |||||«      S )zI
    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_detailsr8   )Ú	tokenizerÚ
name_tokenr9   r<   r:   r=   r>   s          r   rC   rC   A   s–   € ð ×Ñ�dÔà×!Ñ!ØÐRð "ó €Jð �?‰?€DØ×Ñ�dÔä˜9Ó%€FØ×Ñ�dÔä7¸	ÓBÑ€Cˆ�FØ×Ñ�UÐ%BÐÔCä˜T 3¨°	¸6ÓBÐBr   c                ó  — d}d}d}| j                  d«      rœ| j                  «        | j                  d«       | j                  }| j	                  dd¬«      j
                  }| j                  dd	¬
«      r|||fS | j	                  dd¬«       | j                  dd	¬
«      r|||fS t        | |d¬«      }nR| j                  }t        | «      }| j                  d«       | j                  dd	¬
«      r|||fS t        | ||rdnd¬«      }|||fS )z~
    requirement_details = AT URL (WS requirement_marker?)?
                        | specifier WS? (requirement_marker)?
    Ú NÚATrI   ÚURLzURL after @rK   rM   T©Úpeekzwhitespace after URLzURL and whitespace)Ú
span_startÚafterúversion specifierz#name and no valid version specifier)ÚcheckÚreadrN   ÚpositionrO   rP   Ú_parse_requirement_markerÚ_parse_specifier)rS   r=   r:   r>   Ú	url_startÚspecifier_starts         r   rR   rR   V   s-  € ð €IØ
€CØ€Fà‡��tÔØ�‰ÔØ×Ñ˜$Ôà×&Ñ&ˆ	Ø×Ñ˜u¨}ÐÓ=×BÑBˆØ�?‰?˜5 tˆ?Ô,Ø˜ FÐ+Ð+à×Ñ˜Ð(>ÐÔ?ð �?‰?˜5 tˆ?Ô,Ø˜ FÐ+Ð+ä*Ø )Ð3Gô
‰ð $×,Ñ,ˆÜ$ YÓ/ˆ	Ø×Ñ˜$Ôà�?‰?˜5 tˆ?Ô,Ø˜ FÐ+Ð+ä*ØØ&ñ ñ $à:ô
ˆð �˜FÐ#Ð#r   c               ó®   — | j                  d«      s| j                  d|› d�|¬«       | j                  «        t        | «      }| j	                  d«       |S )z3
    requirement_marker = SEMICOLON marker WS?
    Ú	SEMICOLONz!Expected end or semicolon (after ú))r[   rI   )r^   Úraise_syntax_errorr_   Ú_parse_markerrN   )rS   r[   r\   r>   s       r   ra   ra   ‰   s[   € ð �?‰?˜;Ô'Ø×$Ñ$Ø/°¨w°aÐ8Ø!ð 	%ô 	
ð ‡N�NÔä˜9Ó%€FØ×Ñ�dÔà€Mr   c                óÞ   — | j                  dd¬«      sg S | j                  ddd¬«      5  | j                  d«       t        | «      }| j                  d«       ddd«       |S # 1 sw Y   S xY w)	zG
    extras = (LEFT_BRACKET wsp* extras_list? wsp* RIGHT_BRACKET)?
    ÚLEFT_BRACKETTrY   ÚRIGHT_BRACKETr<   ©ÚaroundrI   N)r^   Úenclosing_tokensrN   Ú_parse_extras_list)rS   r<   s     r   rQ   rQ   �   s{   € ð �?‰?˜>°ˆ?Ô5Øˆ	à	×	#Ñ	#ØØØð 
$ó 
ñ  ð
 	×Ñ˜$ÔÜ# IÓ.ˆØ×Ñ˜$Ô÷ ð €M÷ ð €Mús   ª.A"Á"A,c                ó´  — g }| j                  d«      s|S |j                  | j                  «       j                  «       	 | j	                  d«       | j                  dd¬«      r| j                  d«       n| j                  d«      s	 |S | j                  «        | j	                  d«       | j                  dd¬«      }|j                  |j                  «       Œš)	z>
    extras_list = identifier (wsp* ',' wsp* identifier)*
    rJ   TrI   rY   z"Expected comma between extra namesÚCOMMAzextra name after commarK   )r^   Úappendr_   rP   rN   rh   rO   )rS   r<   Úextra_tokens      r   rp   rp   °   sÀ   € ð €Fà�?‰?˜<Ô(Øˆà
‡M�M�)—.‘.Ó"×'Ñ'Ô(à
Ø×Ñ˜$ÔØ�?‰?˜<¨dˆ?Ô3Ø×(Ñ(Ð)MÕNØ—‘ Ô)Øð €Mð 	�‰ÔØ×Ñ˜$Ôà×&Ñ& |Ð>VÐ&ÓWˆØ�‰�k×&Ñ&Ô'ð r   c                ó´   — | j                  ddd¬«      5  | j                  d«       t        | «      }| j                  d«       ddd«       |S # 1 sw Y   S xY w)zr
    specifier = LEFT_PARENTHESIS WS? version_many WS? RIGHT_PARENTHESIS
              | WS? version_many WS?
    ÚLEFT_PARENTHESISÚRIGHT_PARENTHESISr]   rm   rI   N)ro   rN   Ú_parse_version_many)rS   Úparsed_specifierss     r   rb   rb   Ë   si   € ð
 
×	#Ñ	#ØØØ"ð 
$ó 
ñ  ð
 	×Ñ˜$ÔÜ/°	Ó:ÐØ×Ñ˜$Ô÷ ð Ð÷ ð Ðús   •.AÁAc                ó  — d}| j                  d«      ró| j                  }|| j                  «       j                  z  }| j                  dd¬«      r!| j	                  d|| j                  dz   ¬«       | j                  d	d¬«      r| j	                  d
|| j                  ¬«       | j                  d«       | j                  d«      s	 |S || j                  «       j                  z  }| j                  d«       | j                  d«      rŒó|S )z@
    version_many = (SPECIFIER (WS? COMMA WS? SPECIFIER)*)?
    rV   Ú	SPECIFIERÚVERSION_PREFIX_TRAILTrY   z6.* suffix can only be used with `==` or `!=` operatorsr   )r[   Úspan_endÚVERSION_LOCAL_LABEL_TRAILz@Local version label can only be used with `==` or `!=` operatorsrI   rr   )r^   r`   r_   rP   rh   rN   )rS   ry   r[   s      r   rx   rx   Ü   s  € ð ÐØ
�/‰/˜+Ô
&Ø×'Ñ'ˆ
Ø˜YŸ^™^Ó-×2Ñ2Ñ2ÐØ�?‰?Ð1¸ˆ?Ô=Ø×(Ñ(ØHØ%Ø"×+Ñ+¨aÑ/ð )ô ð
 �?‰?Ð6¸Tˆ?ÔBØ×(Ñ(ØRØ%Ø"×+Ñ+ð )ô ð
 	×Ñ˜$ÔØ�‰˜wÔ'Øð Ðð 	˜YŸ^™^Ó-×2Ñ2Ñ2ÐØ×Ñ˜$Ôð' �/‰/˜+Õ
&ð* Ðr   c                ó6   — t        t        | t        ¬«      «      S rA   )Ú_parse_full_markerr
   r	   rD   s    r   Úparse_markerr�   ü   rG   r   c                óB   — t        | «      }| j                  dd¬«       |S )NrM   zend of marker expressionrK   )ri   rO   )rS   Úretvals     r   r€   r€      s%   € Ü˜9Ó%€FØ×Ñ�UÐ%?ÐÔ@Ø€Mr   c                óÔ   — t        | «      g}| j                  d«      rJ| j                  «       }t        | «      }|j                  |j                  |f«       | j                  d«      rŒJ|S )z4
    marker = marker_atom (BOOLOP marker_atom)+
    ÚBOOLOP)Ú_parse_marker_atomr^   r_   ÚextendrP   )rS   Ú
expressionÚtokenÚ
expr_rights       r   ri   ri     s`   € ô % YÓ/Ð0€JØ
�/‰/˜(Ô
#Ø—‘Ó ˆÜ'¨	Ó2ˆ
Ø×Ñ˜5Ÿ:™: zÐ2Ô3ð �/‰/˜(Õ
#ð Ðr   c                ó4  — | j                  d«       | j                  dd¬«      rK| j                  ddd¬«      5  | j                  d«       t        | «      }| j                  d«       ddd«       nt	        | «      }| j                  d«       S # 1 sw Y   ŒxY w)	zw
    marker_atom = WS? LEFT_PARENTHESIS WS? marker WS? RIGHT_PARENTHESIS WS?
                | WS? marker_item WS?
    rI   rv   TrY   rw   zmarker expressionrm   N)rN   r^   ro   ri   Ú_parse_marker_item)rS   r>   s     r   r†   r†     s    € ð ×Ñ�dÔØ‡�Ð)°€Ô5Ø×'Ñ'ØØØ&ð (ó 
ñ 	$ð
 ×Ñ˜dÔ#Ü!.¨yÓ!9ˆFØ×Ñ˜dÔ#÷	$ð 	$ô $ IÓ.ˆØ×Ñ�dÔØ€M÷	$ð 	$ús   ¹.BÂBc                óÖ   — | j                  d«       t        | «      }| j                  d«       t        | «      }| j                  d«       t        | «      }| j                  d«       |||fS )zG
    marker_item = WS? marker_var WS? marker_op WS? marker_var WS?
    rI   )rN   Ú_parse_marker_varÚ_parse_marker_op)rS   Úmarker_var_leftÚ	marker_opÚmarker_var_rights       r   rŒ   rŒ   (  si   € ð ×Ñ�dÔÜ'¨	Ó2€OØ×Ñ�dÔÜ  Ó+€IØ×Ñ�dÔÜ(¨Ó3ÐØ×Ñ�dÔØ˜YÐ(8Ð9Ð9r   c                ó  — | j                  d«      r3t        | j                  «       j                  j	                  dd«      «      S | j                  d«      r#t        | j                  «       j                  «      S | j                  d¬«       y)z/
    marker_var = VARIABLE | QUOTED_STRING
    ÚVARIABLEú.Ú_ÚQUOTED_STRINGz+Expected a marker variable or quoted string)ÚmessageN)r^   Úprocess_env_varr_   rP   ÚreplaceÚprocess_python_strrh   ©rS   s    r   rŽ   rŽ   6  so   € ð ‡��zÔ"Ü˜yŸ~™~Ó/×4Ñ4×<Ñ<¸SÀ#ÓFÓGÐGØ	�‰˜Ô	)Ü! )§.¡.Ó"2×"7Ñ"7Ó8Ð8à×$Ñ$ØAð 	%õ 	
r   c                ó6   — | dv rt        d«      S t        | «      S )N)Úplatform_python_implementationÚpython_implementationrž   )r(   )Úenv_vars    r   r™   r™   D  s"   € ØÐMÑMÜÐ8Ó9Ð9ä˜Ó Ð r   c                óT   — t        j                  | «      }t        t        |«      «      S r   )ÚastÚliteral_evalr/   r    )Ú
python_strr   s     r   r›   r›   K  s!   € Ü×Ñ˜ZÓ(€EÜ”�U“ÓÐr   c                óˆ  — | j                  d«      r| j                  «        t        d«      S | j                  d«      rA| j                  «        | j                  dd¬«       | j                  dd¬«       t        d«      S | j                  d	«      r#t        | j                  «       j                  «      S | j                  d
«      S )z&
    marker_op = IN | NOT IN | OP
    ÚINÚinÚNOTrI   zwhitespace after 'not'rK   z'in' after 'not'znot inÚOPzJExpected marker operator, one of <=, <, !=, ==, >=, >, ~=, ===, in, not in)r^   r_   r3   rO   rP   rh   rœ   s    r   r�   r�   P  s¥   € ð ‡��tÔØ�‰ÔÜ�$‹xˆØ	�‰˜Ô	Ø�‰ÔØ×Ñ˜Ð(@ÐÔAØ×Ñ˜Ð(:ÐÔ;Ü�(‹|ÐØ	�‰˜Ô	Ü�)—.‘.Ó"×'Ñ'Ó(Ð(à×+Ñ+ØXó
ð 	
r   )rE   r    r!   r8   )rS   r
   r!   r8   )rS   r
   r!   z"tuple[str, str, MarkerList | None])rS   r
   r[   Úintr\   r    r!   r6   )rS   r
   r!   r;   )rS   r
   r!   r    )rE   r    r!   r6   )rS   r
   r!   r6   )rS   r
   r!   r5   )rS   r
   r!   Ú
MarkerItem)rS   r
   r!   Ú	MarkerVar)r    r    r!   r(   )r¤   r    r!   r/   )rS   r
   r!   r3   )'Ú__doc__Ú
__future__r   r¢   Útypingr   r   r   r   Ú
_tokenizerr	   r
   r   r(   r/   r3   r¬   r«   r5   r    r6   r8   rF   rC   rR   ra   rQ   rp   rb   rx   r�   r€   ri   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$Øð0$à'ó0$ðfØðØ),ðØ58ðàóó(ó&ó6ó"ó@Fóó	óó,:ó
ó!óô

r   