Ë
    ímxi)  ã                  óª  — d Z ddlmZ ddlZddlmZmZ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d   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%d0d"„Z&d1d#„Z'd2d$„Z(y)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                  ó0   — e Zd ZdZdd„Zdd„Zdd„Zdd„Zy)	ÚNode©Úvaluec                ó   — || _         y ©Nr   )Úselfr   s     úH/home/htdocs/ttos/venv/lib/python3.12/site-packages/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                óP   — d| j                   j                  › d| j                  ›d�S )Nú<ú(z)>)Ú	__class__Ú__name__r   r   s    r   Ú__repr__zNode.__repr__   s&   € Ø�4—>‘>×*Ñ*Ð+¨1¨T¯Z©Z¨N¸"Ð=Ð=r   c                ó   — t         ‚r   )ÚNotImplementedErrorr   s    r   Ú	serializezNode.serialize   s   € Ü!Ð!r   N)r   ÚstrÚreturnÚNone©r$   r#   )r   Ú
__module__Ú__qualname__Ú	__slots__r   r   r   r"   © r   r   r   r      s   „ Ø€Ióóó>ô"r   r   c                  ó   — e Zd ZdZdd„Zy)ÚVariabler*   c                ó   — 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,      ó   „ Ø€Iôr   r,   c                  ó   — e Zd ZdZdd„Zy)ÚValuer*   c                ó   — d| › d�S )Nú"r*   r   s    r   r"   zValue.serialize)   s   € Ø�4�&˜ˆ{Ðr   Nr&   r0   r*   r   r   r3   r3   &   s   „ Ø€Iôr   r3   c                  ó   — e Zd ZdZdd„Zy)ÚOpr*   c                ó   — t        | «      S r   r.   r   s    r   r"   zOp.serialize0   r/   r   Nr&   r0   r*   r   r   r7   r7   -   r1   r   r7   )ÚandÚorÚ
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   r>   r>   ;   s   … Ø
ƒIØ	ƒHØÓØƒNØÔr   r>   c                ó6   — t        t        | t        ¬«      «      S ©N)Úrules)Ú_parse_requirementr   r   ©Úsources    r   Úparse_requirementrL   F   ó   € Üœ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_detailsr>   )Ú	tokenizerÚ
name_tokenr?   rB   r@   rC   rD   s          r   rI   rI   J   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ÚATrO   ÚURLzURL after @rQ   rS   T©Úpeekzwhitespace after URLz$semicolon (after URL and whitespace))Ú
span_startrR   zEcomma (within version specifier), semicolon (after version specifier)z0semicolon (after name with no version specifier))ÚcheckÚreadrT   ÚpositionrU   rV   Ú_parse_requirement_markerÚ_parse_specifier)rY   rC   r@   rD   Ú	url_startÚspecifier_starts         r   rX   rX   _   s/  € ð €IØ
€CØ€Fà‡��tÔØ�‰ÔØ×Ñ˜$Ôà×&Ñ&ˆ	Ø×Ñ˜u¨}ÐÓ=×BÑBˆØ�?‰?˜5 tˆ?Ô,Ø˜ FÐ+Ð+à×Ñ˜Ð(>ÐÔ?ð �?‰?˜5 tˆ?Ô,Ø˜ FÐ+Ð+ä*ØØ Ø;ô
‰ð $×,Ñ,ˆÜ$ YÓ/ˆ	Ø×Ñ˜$Ôà�?‰?˜5 tˆ?Ô,Ø˜ FÐ+Ð+ä*ØØ&ñ ñ XàGô
ˆð �˜FÐ#Ð#r   c               ó°   — | j                  d«      s| j                  d|› d�|d¬«       | j                  «        t        | «      }| j	                  d«       |S )z3
    requirement_marker = SEMICOLON marker WS?
    Ú	SEMICOLONz	Expected z or endN©ra   Úspan_endrO   )rb   Úraise_syntax_errorrc   Ú_parse_markerrT   )rY   ra   rR   rD   s       r   re   re   ”   s^   € ð �?‰?˜;Ô'Ø×$Ñ$Ø˜�z Ð)Ø!Øð 	%ô 	
ð
 ‡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_BRACKETTr_   ÚRIGHT_BRACKETrB   ©ÚaroundrO   N)rb   Úenclosing_tokensrT   Ú_parse_extras_list)rY   rB   s     r   rW   rW   ©   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)*
    rP   TrO   r_   z"Expected comma between extra namesÚCOMMAzextra name after commarQ   )rb   Úappendrc   rV   rT   rm   rU   )rY   rB   Úextra_tokens      r   ru   ru   ¼   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_PARENTHESISzversion specifierrr   rO   N)rt   rT   Ú_parse_version_many)rY   Úparsed_specifierss     r   rf   rf   ×   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)*)?
    r\   Ú	SPECIFIERÚVERSION_PREFIX_TRAILTr_   z6.* suffix can only be used with `==` or `!=` operatorsr
   rk   ÚVERSION_LOCAL_LABEL_TRAILz@Local version label can only be used with `==` or `!=` operatorsrO   rw   )rb   rd   rc   rV   rm   rT   )rY   r~   ra   s      r   r}   r}   è   s  € ð ÐØ
�/‰/˜+Ô
&Ø×'Ñ'ˆ
Ø˜YŸ^™^Ó-×2Ñ2Ñ2ÐØ�?‰?Ð1¸ˆ?Ô=Ø×(Ñ(ØHØ%Ø"×+Ñ+¨aÑ/ð )ô ð
 �?‰?Ð6¸Tˆ?ÔBØ×(Ñ(ØRØ%Ø"×+Ñ+ð )ô ð
 	×Ñ˜$ÔØ�‰˜wÔ'Øð Ðð 	˜YŸ^™^Ó-×2Ñ2Ñ2ÐØ×Ñ˜$Ôð' �/‰/˜+Õ
&ð* Ðr   c                ó6   — t        t        | t        ¬«      «      S rG   )Ú_parse_full_markerr   r   rJ   s    r   Úparse_markerr…     rM   r   c                óB   — t        | «      }| j                  dd¬«       |S )NrS   zend of marker expressionrQ   )rn   rU   )rY   Ú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_atomrb   rc   ÚextendrV   )rY   Ú
expressionÚtokenÚ
expr_rights       r   rn   rn     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?
    rO   r{   Tr_   r|   zmarker expressionrr   N)rT   rb   rt   rn   Ú_parse_marker_item)rY   rD   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?
    rO   )rT   Ú_parse_marker_varÚ_parse_marker_op)rY   Úmarker_var_leftÚ	marker_opÚmarker_var_rights       r   r�   r�   4  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)rb   Úprocess_env_varrc   rV   ÚreplaceÚprocess_python_strrm   ©rY   s    r   r’   r’   B  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�   P  s"   € ØÐMÑMÜÐ8Ó9Ð9ä˜Ó Ð r   c                óT   — t        j                  | «      }t        t        |«      «      S r   )ÚastÚliteral_evalr3   r#   )Ú
python_strr   s     r   rŸ   rŸ   W  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ÚNOTrO   zwhitespace after 'not'rQ   z'in' after 'not'znot inÚOPzJExpected marker operator, one of <=, <, !=, ==, >=, >, ~=, ===, in, not in)rb   rc   r7   rU   rV   rm   r    s    r   r“   r“   \  s¥   € ð ‡��tÔØ�‰ÔÜ�$‹xˆØ	�‰˜Ô	Ø�‰ÔØ×Ñ˜Ð(@ÐÔAØ×Ñ˜Ð(:ÐÔ;Ü�(‹|ÐØ	�‰˜Ô	Ü�)—.‘.Ó"×'Ñ'Ó(Ð(à×+Ñ+ØXó
ð 	
r   )rK   r#   r$   r>   )rY   r   r$   r>   )rY   r   r$   z"tuple[str, str, MarkerList | None])rY   r   ra   ÚintrR   r#   r$   r<   )rY   r   r$   rA   )rY   r   r$   r#   )rK   r#   r$   r<   )rY   r   r$   r<   )rY   r   r$   r;   )rY   r   r$   Ú
MarkerItem)rY   r   r$   Ú	MarkerVar)r¤   r#   r$   r,   )r¨   r#   r$   r3   )rY   r   r$   r7   ))Ú__doc__Ú
__future__r   r¦   Útypingr   r   r   r   r   r	   Ú
_tokenizerr   r   r   r,   r3   r7   ÚMarkerLogicalr°   r¯   r;   r<   r>   rL   rI   rX   re   rW   ru   rf   r}   r…   r„   rn   rŠ   r�   r’   r�   rŸ   r“   r*   r   r   ú<module>r¶      s4  ðñõ #ã 
ß D× Dç 0÷"ñ "ô ˆtô ôˆDô ôˆô ð ˜Ñ$€Ø�(˜E�/Ñ"€	Ø�9˜b )Ð+Ñ,€
Ø�:˜x¨Ñ5Ð5Ñ6€
Ø�%˜ j°-Ð?Ñ@ÑA€
ô˜
ô óFóCð*2$Øð2$à'ó2$ðjØðØ),ðØ8;ðàóó*ó&ó6ó"ó@Fóó	óó,:ó
ó!óô

r   