Ë
    ©Õ°j_1  ã                  ó®  — d Z ddlmZ ddlZddlmZ ddlmZmZm	Z	 ddl
mZ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&d0d"„Z'd1d#„Z(d2d$„Z)d3d%„Z*y)4z˜Handwritten parser of dependency specifiers.

The docstring for each __parse_* function contains EBNF-inspired grammar representing
the implementation.
é    )ÚannotationsN)ÚSequence)ÚLiteralÚ
NamedTupleÚUnioné   )ÚDEFAULT_RULESÚParserSyntaxErrorÚ	Tokenizerc                  óH   — e Zd ZdZd
d„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
y	)ÚNode©Úvaluec                ó   — || _         y ©Nr   ©Úselfr   s     úG/var/www/mission/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   c                ó   — | j                   S r   r   r   s    r   Ú__getstate__zNode.__getstate__   s   € à�z‰zÐr   c                ó|   — t        |t        «      s%t        d| j                  j                  › d|›�«      ‚|| _        y )NúCannot restore z value from )Ú
isinstanceÚstrÚ	TypeErrorr   r   r   r   s     r   Ú_restore_valuezNode._restore_value#   s=   € Ü˜%¤Ô%ÜØ! $§.¡.×"9Ñ"9Ð!:¸,ÀuÀiÐPóð ð ˆ�
r   c                óz  — t        |t        «      r| j                  |«       y t        |t        «      r<t	        |«      dk(  r.|\  }}t        |t
        «      rd|v r| j                  |d   «       y t        |t
        «      rd|v r| j                  |d   «       y t        d| j                  j                  › d|›�«      ‚)Né   r   r&   z from )	r'   r(   r*   ÚtupleÚlenÚdictr)   r   r   )r   ÚstateÚ_Ú	slot_dicts       r   Ú__setstate__zNode.__setstate__*   sª   € Ü�eœSÔ!à×Ñ Ô&ØÜ�eœUÔ#¬¨E«
°aªà ‰LˆAˆyÜ˜)¤TÔ*¨w¸)Ñ/CØ×#Ñ# I¨gÑ$6Ô7ØÜ�eœTÔ" w°%Ñ'7à×Ñ  g¡Ô/ØÜ˜/¨$¯.©.×*AÑ*AÐ)BÀ&ÈÈ	ÐRÓSÐSr   N)r   r(   ÚreturnÚNone©r4   r(   )r   Úobjectr4   r5   )r0   r7   r4   r5   )r   Ú
__module__Ú__qualname__Ú	__slots__r   r   r   r"   r$   r*   r3   © r   r   r   r      s+   „ Ø€Ióóó>ó"óóôT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   Nr6   ©r   r8   r9   r:   r"   r;   r   r   r=   r=   <   ó   „ Ø€Iôr   r=   c                  ó   — e Zd ZdZdd„Zy)ÚValuer;   c                óV   — t        | «      }d|vrd|› d�S d|vrd|› d�S t        d«      ‚)Nú"ú'z>Cannot serialize marker value containing both quote characters)r(   Ú
ValueErrorr   s     r   r"   zValue.serializeF   sG   € Ü�D“	ˆØ�eÑØ�u�g˜Q�<ÐØ�eÑØ�u�g˜Q�<ÐÜØLó
ð 	
r   Nr6   rA   r;   r   r   rD   rD   C   s   „ Ø€Iô
r   rD   c                  ó   — e Zd ZdZdd„Zy)ÚOpr;   c                ó   — t        | «      S r   r?   r   s    r   r"   zOp.serializeT   r@   r   Nr6   rA   r;   r   r   rJ   rJ   Q   rB   r   rJ   )Ú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   r8   r9   Ú__annotations__r;   r   r   rQ   rQ   _   s   … Ø
ƒIØ	ƒHØÓØƒNØÔr   rQ   c                ó6   — t        t        | t        ¬«      «      S ©N)Úrules)Ú_parse_requirementr   r	   ©Úsources    r   Úparse_requirementr_   j   ó   € Üœ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_detailsrQ   )Ú	tokenizerÚ
name_tokenrR   rU   rS   rV   rW   s          r   r\   r\   n   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ÚATrb   ÚURLzURL after @rd   rf   T©Úpeekzwhitespace after URLz$semicolon (after URL and whitespace))Ú
span_startre   zEcomma (within version specifier), semicolon (after version specifier)z0semicolon (after name with no version specifier))ÚcheckÚreadrg   Úpositionrh   ri   Ú_parse_requirement_markerÚ_parse_specifier)rl   rV   rS   rW   Ú	url_startÚspecifier_starts         r   rk   rk   ƒ   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©rt   Úspan_endrb   )ru   Úraise_syntax_errorrv   Ú_parse_markerrg   )rl   rt   re   rW   s       r   rx   rx   ¸   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_BRACKETTrr   ÚRIGHT_BRACKETrU   ©Úaroundrb   N)ru   Úenclosing_tokensrg   Ú_parse_extras_list)rl   rU   s     r   rj   rj   Í   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)*
    rc   Trb   rr   z"Expected comma between extra namesÚCOMMAzextra name after commard   )ru   Úappendrv   ri   rg   r€   rh   )rl   rU   Úextra_tokens      r   rˆ   rˆ   à   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 specifierr…   rb   N)r‡   rg   Ú_parse_version_many)rl   Úparsed_specifierss     r   ry   ry   û   si   € ð
 
×	#Ñ	#ØØØ"ð 
$ó 
ñ  ð
 	×Ñ˜$ÔÜ/°	Ó:ÐØ×Ñ˜$Ô÷ ð Ð÷ ð Ðús   •.AÁAc                óˆ  — d}| j                  d«      �r-| j                  }| j                  «       j                  }||z  }| j                  dd¬«      rXd}|j	                  d«      s"|j	                  d«      r|j	                  d	«      sd
}| j                  ||| 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)*)?
    ro   Ú	SPECIFIERÚVERSION_PREFIX_TRAILTrr   z6.* suffix can only be used with `==` or `!=` operatorsz!=z==z===zN.* suffix cannot be used with pre-release, post-release, dev or local versionsr   r~   ÚVERSION_LOCAL_LABEL_TRAILz@Local version label can only be used with `==` or `!=` operatorsrb   rŠ   )ru   rw   rv   ri   Ú
startswithr€   rg   )rl   r‘   rt   rV   Úmessages        r   r�   r�     sJ  € ð ÐØ
�/‰/˜+Õ
&Ø×'Ñ'ˆ
Ø—N‘NÓ$×)Ñ)ˆ	Ø˜YÑ&ÐØ�?‰?Ð1¸ˆ?Ô=ØNˆGØ×#Ñ# DÔ)Ø×$Ñ$ TÔ*°9×3GÑ3GÈÔ3Nð,ð ð ×(Ñ(ØØ%Ø"×+Ñ+¨aÑ/ð )ô ð
 �?‰?Ð6¸Tˆ?ÔBØ×(Ñ(ØRØ%Ø"×+Ñ+ð )ô ð
 	×Ñ˜$ÔØ�‰˜wÔ'Øð Ðð 	˜YŸ^™^Ó-×2Ñ2Ñ2ÐØ×Ñ˜$Ôð9 �/‰/˜+Ö
&ð< Ðr   c                ó6   — t        t        | t        ¬«      «      S rZ   )Ú_parse_full_markerr   r	   r]   s    r   Úparse_markerrš   5  r`   r   c                óB   — t        | «      }| j                  dd¬«       |S )Nrf   zend of marker expressionrd   )r�   rh   )rl   Úretvals     r   r™   r™   9  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_atomru   rv   Úextendri   )rl   Ú
expressionÚtokenÚ
expr_rights       r   r�   r�   ?  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?
    rb   rŽ   Trr   r�   zmarker expressionr…   N)rg   ru   r‡   r�   Ú_parse_marker_item)rl   rW   s     r   rŸ   rŸ   K  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?
    rb   )rg   Ú_parse_marker_varÚ_parse_marker_op)rl   Úmarker_var_leftÚ	marker_opÚmarker_var_rights       r   r¥   r¥   a  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&| j                  «       }	 t        |j                  «      S | j                  d¬	«       y# t        t        f$ rJ}t        d| j                  |j                  |j                  t        |j                  «      z   f¬«      |‚d}~ww xY w)
z/
    marker_var = VARIABLE | QUOTED_STRING
    ÚVARIABLEú.r1   ÚQUOTED_STRINGzInvalid quoted string)r^   ÚspanNz+Expected a marker variable or quoted string)r—   )ru   Úprocess_env_varrv   ri   ÚreplaceÚprocess_python_strÚSyntaxErrorrH   r
   r^   rw   r.   r€   )rl   r¢   Úexcs      r   r§   r§   o  sË   € ð ‡��zÔ"Ü˜yŸ~™~Ó/×4Ñ4×<Ñ<¸SÀ#ÓFÓGÐGØ	�‰˜Ô	)Ø—‘Ó ˆð	Ü% e§j¡jÓ1Ð1ð 	×$Ñ$ØAð 	%õ 	
øô œZÐ(ò 	Ü#Ø'Ø ×'Ñ'Ø—n‘n e§n¡n´s¸5¿:¹:³Ñ&FÐGôð ð	ûð	ús   Á'B ÂC(ÂAC#Ã#C(c                ó6   — | dv rt        d«      S t        | «      S )N)Úplatform_python_implementationÚpython_implementationr·   )r=   )Úenv_vars    r   r±   r±   …  s"   € ØÐMÑMÜÐ8Ó9Ð9ä˜Ó Ð r   c                óT   — t        j                  | «      }t        t        |«      «      S r   )ÚastÚliteral_evalrD   r(   )Ú
python_strr   s     r   r³   r³   Œ  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ÚNOTrb   zwhitespace after 'not'rd   z'in' after 'not'znot inÚOPzJExpected marker operator, one of <=, <, !=, ==, >=, >, ~=, ===, in, not in)ru   rv   rJ   rh   ri   r€   )rl   s    r   r¨   r¨   ‘  s¥   € ð ‡��tÔØ�‰ÔÜ�$‹xˆØ	�‰˜Ô	Ø�‰ÔØ×Ñ˜Ð(@ÐÔAØ×Ñ˜Ð(:ÐÔ;Ü�(‹|ÐØ	�‰˜Ô	Ü�)—.‘.Ó"×'Ñ'Ó(Ð(à×+Ñ+ØXó
ð 	
r   )r^   r(   r4   rQ   )rl   r   r4   rQ   )rl   r   r4   z"tuple[str, str, MarkerList | None])rl   r   rt   Úintre   r(   r4   rO   )rl   r   r4   rT   )rl   r   r4   r(   )r^   r(   r4   rO   )rl   r   r4   rO   )rl   r   r4   rN   )rl   r   r4   Ú
MarkerItem)rl   r   r4   Ú	MarkerVar)r¹   r(   r4   r=   )r½   r(   r4   rD   )rl   r   r4   rJ   )+Ú__doc__Ú
__future__r   r»   Úcollections.abcr   Útypingr   r   r   Ú
_tokenizerr	   r
   r   r   r=   rD   rJ   ÚMarkerLogicalrÅ   r-   rÄ   rN   ÚlistrO   rQ   r_   r\   rk   rx   rj   rˆ   ry   r�   rš   r™   r�   rŸ   r¥   r§   r±   r³   r¨   r;   r   r   ú<module>rÍ      s=  ðñõ #ã 
Ý $ß -Ñ -ç CÑ C÷)Tñ )TôXˆtô ô
ˆDô 
ôˆô ð ˜Ñ$€Ø�(˜E�/Ñ"€	Ø�9˜b )Ð+Ñ,€
Ø�:˜x¨Ñ5Ð5Ñ6€
Ø�%˜ j°-Ð?Ñ@ÑA€
ô˜
ô óFóCð*2$Øð2$à'ó2$ðjØðØ),ðØ8;ðàóó*ó&ó6ó"#óRFóó	óó,:ó
ó,!óô

r   