§
    ÇÁ³gü'  ã                  óÄ  — 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d2d„Zd3d„Zd4d„Zd5d„Zd6d!„Zd6d"„Zd7d#„Zd7d$„Zd8d%„Zd9d&„Zd9d'„Z d:d(„Z!d;d*„Z"d<d,„Z#d=d.„Z$d>d0„Z%d?d1„Z&dS )@z˜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d	S )ÚNodeÚvalueÚstrÚreturnÚNonec                ó   — || _         d S ©N©r   )Úselfr   s     úO/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/packaging/_parser.pyÚ__init__zNode.__init__   s   € ØˆŒ
ˆ
ˆ
ó    c                ó   — | j         S r   r   ©r   s    r   Ú__str__zNode.__str__   s
   € ØŒzÐr   c                ó(   — d| j         j        › d| › d�S )Nú<z('z')>)Ú	__class__Ú__name__r   s    r   Ú__repr__zNode.__repr__   s    € Ø7�4”>Ô*Ð7Ð7¨dÐ7Ð7Ð7Ð7r   c                ó   — t           ‚r   )ÚNotImplementedErrorr   s    r   Ú	serializezNode.serialize   s   € Ý!Ð!r   N)r   r   r   r   ©r   r   )r   Ú
__module__Ú__qualname__r   r   r   r"   © r   r   r   r      sd   € € € € € ðð ð ð ðð ð ð ð8ð 8ð 8ð 8ð"ð "ð "ð "ð "ð "r   r   c                  ó   — e Zd Zdd„ZdS )ÚVariabler   r   c                ó    — t          | ¦  «        S r   ©r   r   s    r   r"   zVariable.serialize   ó   € Ý�4‰yŒyÐr   Nr#   ©r   r$   r%   r"   r&   r   r   r(   r(      ó(   € € € € € ðð ð ð ð ð r   r(   c                  ó   — e Zd Zdd„ZdS )ÚValuer   r   c                ó   — 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dS )ÚOpr   r   c                ó    — 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                  óB   — e Zd ZU ded<   ded<   ded<   ded<   ded<   d	S )
ÚParsedRequirementr   ÚnameÚurlú	list[str]ÚextrasÚ	specifierzMarkerList | NoneÚmarkerN)r   r$   r%   Ú__annotations__r&   r   r   r8   r8   2   sE   € € € € € € Ø€I€I�IØ€H€H�HØÐÐÑØ€N€N�NØÐÐÑÐÐr   r8   Úsourcer   r   c                óH   — t          t          | t          ¬¦  «        ¦  «        S ©N)Úrules)Ú_parse_requirementr
   r	   ©r@   s    r   Úparse_requirementrF   =   ó   € Ý�i¨µmÐDÑDÔDÑEÔEÐEr   Ú	tokenizerr
   c                óT  — |                       d¦  «         |                      dd¬¦  «        }|j        }|                       d¦  «         t          | ¦  «        }|                       d¦  «         t	          | ¦  «        \  }}}|                      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   )rH   Ú
name_tokenr9   r<   r:   r=   r>   s          r   rD   rD   A   sº   € ð ×Ò�dÑÔÐà×!Ò!ØÐRð "ñ ô €Jð Œ?€DØ×Ò�dÑÔÐå˜9Ñ%Ô%€FØ×Ò�dÑÔÐå7¸	ÑBÔBÑ€Cˆ�FØ×Ò�UÐ%BÐÑCÔCÐCå˜T 3¨°	¸6ÑBÔBÐBr   ú"tuple[str, str, MarkerList | None]c                óX  — d}d}d}|                       d¦  «        r®|                      ¦   «          |                      d¦  «         | j        }|                      dd¬¦  «        j        }|                       dd	¬
¦  «        r|||fS |                      dd¬¦  «         |                       dd	¬
¦  «        r|||fS t          | |d¬¦  «        }n]| j        }t          | ¦  «        }|                      d¦  «         |                       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ÚATrJ   ÚURLzURL after @rL   rN   T©Úpeekzwhitespace after URLzURL and whitespace)Ú
span_startÚafterúversion specifierz#name and no valid version specifier)ÚcheckÚreadrO   ÚpositionrP   rQ   Ú_parse_requirement_markerÚ_parse_specifier)rH   r=   r:   r>   Ú	url_startÚspecifier_starts         r   rS   rS   V   s~  € ð €IØ
€CØ€Fà‡‚�tÑÔð "
Ø�ŠÑÔÐØ×Ò˜$ÑÔÐàÔ&ˆ	Ø×Ò˜u¨}ÐÑ=Ô=ÔBˆØ�?Š?˜5 tˆ?Ñ,Ô,ð 	,Ø˜ FÐ+Ð+à×Ò˜Ð(>ÐÑ?Ô?Ð?ð �?Š?˜5 tˆ?Ñ,Ô,ð 	,Ø˜ FÐ+Ð+å*Ø )Ð3Gð
ñ 
ô 
ˆˆð $Ô,ˆÝ$ YÑ/Ô/ˆ	Ø×Ò˜$ÑÔÐà�?Š?˜5 tˆ?Ñ,Ô,ð 	,Ø˜ FÐ+Ð+å*ØØ&ð ð;Ð#Ð#à:ð
ñ 
ô 
ˆð �˜FÐ#Ð#r   r\   Úintr]   c               óÖ   — |                       d¦  «        s|                      d|› d�|¬¦  «         |                      ¦   «          t          | ¦  «        }|                      d¦  «         |S )z3
    requirement_marker = SEMICOLON marker WS?
    Ú	SEMICOLONz!Expected end or semicolon (after ú))r\   rJ   )r_   Úraise_syntax_errorr`   Ú_parse_markerrO   )rH   r\   r]   r>   s       r   rb   rb   ‰   s~   € ð �?Š?˜;Ñ'Ô'ð 
Ø×$Ò$Ø8°Ð8Ð8Ð8Ø!ð 	%ñ 	
ô 	
ð 	
ð ‡N‚NÑÔÐå˜9Ñ%Ô%€FØ×Ò�dÑÔÐà€Mr   r;   c                ó
  — |                       dd¬¦  «        sg S |                      ddd¬¦  «        5  |                      d¦  «         t          | ¦  «        }|                      d¦  «         ddd¦  «         n# 1 swxY w Y   |S )	zG
    extras = (LEFT_BRACKET wsp* extras_list? wsp* RIGHT_BRACKET)?
    ÚLEFT_BRACKETTrZ   ÚRIGHT_BRACKETr<   ©ÚaroundrJ   N)r_   Úenclosing_tokensrO   Ú_parse_extras_list)rH   r<   s     r   rR   rR   �   sØ   € ð �?Š?˜>°ˆ?Ñ5Ô5ð Øˆ	à	×	#Ò	#ØØØð 
$ñ 
ô 
ð  ð  ð
 	×Ò˜$ÑÔÐÝ# IÑ.Ô.ˆØ×Ò˜$ÑÔÐð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð €Ms   ²:A8Á8A<Á?A<c                óø  — g }|                       d¦  «        s|S |                     |                      ¦   «         j        ¦  «         	 |                      d¦  «         |                       dd¬¦  «        r|                      d¦  «         n|                       d¦  «        sn[|                      ¦   «          |                      d¦  «         |                      dd¬¦  «        }|                     |j        ¦  «         Œ³|S )	z>
    extras_list = identifier (wsp* ',' wsp* identifier)*
    rK   TrJ   rZ   z"Expected comma between extra namesÚCOMMAzextra name after commarL   )r_   Úappendr`   rQ   rO   rj   rP   )rH   r<   Úextra_tokens      r   rr   rr   °   sÿ   € ð €Fà�?Š?˜<Ñ(Ô(ð Øˆà
‡M‚M�)—.’.Ñ"Ô"Ô'Ñ(Ô(Ð(ð(Ø×Ò˜$ÑÔÐØ�?Š?˜<¨dˆ?Ñ3Ô3ð 	Ø×(Ò(Ð)MÑNÔNÐNÐNØ—’ Ñ)Ô)ð 	Øà�ŠÑÔÐØ×Ò˜$ÑÔÐà×&Ò& |Ð>VÐ&ÑWÔWˆØ�Š�kÔ&Ñ'Ô'Ð'ð(ð €Mr   c                óØ   — |                       ddd¬¦  «        5  |                      d¦  «         t          | ¦  «        }|                      d¦  «         ddd¦  «         n# 1 swxY w Y   |S )zr
    specifier = LEFT_PARENTHESIS WS? version_many WS? RIGHT_PARENTHESIS
              | WS? version_many WS?
    ÚLEFT_PARENTHESISÚRIGHT_PARENTHESISr^   ro   rJ   N)rq   rO   Ú_parse_version_many)rH   Úparsed_specifierss     r   rc   rc   Ë   s½   € ð
 
×	#Ò	#ØØØ"ð 
$ñ 
ô 
ð  ð  ð
 	×Ò˜$ÑÔÐÝ/°	Ñ:Ô:ÐØ×Ò˜$ÑÔÐð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð Ðs   ™:AÁA#Á&A#c                ó2  — d}|                       d¦  «        rÿ| j        }||                      ¦   «         j        z  }|                       dd¬¦  «        r |                      d|| j        dz   ¬¦  «         |                       d	d¬¦  «        r|                      d
|| j        ¬¦  «         |                      d¦  «         |                       d¦  «        snF||                      ¦   «         j        z  }|                      d¦  «         |                       d¦  «        °ÿ|S )z@
    version_many = (SPECIFIER (WS? COMMA WS? SPECIFIER)*)?
    rW   Ú	SPECIFIERÚVERSION_PREFIX_TRAILTrZ   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 `!=` operatorsrJ   rt   )r_   ra   r`   rQ   rj   rO   )rH   r{   r\   s      r   rz   rz   Ü   s@  € ð ÐØ
�/Š/˜+Ñ
&Ô
&ð  ØÔ'ˆ
Ø˜YŸ^š^Ñ-Ô-Ô2Ñ2ÐØ�?Š?Ð1¸ˆ?Ñ=Ô=ð 	Ø×(Ò(ØHØ%Ø"Ô+¨aÑ/ð )ñ ô ð ð
 �?Š?Ð6¸Tˆ?ÑBÔBð 	Ø×(Ò(ØRØ%Ø"Ô+ð )ñ ô ð ð
 	×Ò˜$ÑÔÐØ�Š˜wÑ'Ô'ð 	ØØ˜YŸ^š^Ñ-Ô-Ô2Ñ2ÐØ×Ò˜$ÑÔÐð' �/Š/˜+Ñ
&Ô
&ð  ð* Ðr   c                óH   — t          t          | t          ¬¦  «        ¦  «        S rB   )Ú_parse_full_markerr
   r	   rE   s    r   Úparse_markerrƒ   ü   rG   r   c                óR   — t          | ¦  «        }|                      dd¬¦  «         |S )NrN   zend of marker expressionrL   )rk   rP   )rH   Úretvals     r   r‚   r‚      s.   € Ý˜9Ñ%Ô%€FØ×Ò�UÐ%?ÐÑ@Ô@Ð@Ø€Mr   c                óø   — t          | ¦  «        g}|                      d¦  «        rT|                      ¦   «         }t          | ¦  «        }|                     |j        |f¦  «         |                      d¦  «        °T|S )z4
    marker = marker_atom (BOOLOP marker_atom)+
    ÚBOOLOP)Ú_parse_marker_atomr_   r`   ÚextendrQ   )rH   Ú
expressionÚtokenÚ
expr_rights       r   rk   rk     s}   € õ % YÑ/Ô/Ð0€JØ
�/Š/˜(Ñ
#Ô
#ð 4Ø—’Ñ Ô ˆÝ'¨	Ñ2Ô2ˆ
Ø×Ò˜5œ: zÐ2Ñ3Ô3Ð3ð �/Š/˜(Ñ
#Ô
#ð 4ð Ðr   c                óz  — |                       d¦  «         |                      dd¬¦  «        rj|                      ddd¬¦  «        5  |                       d¦  «         t          | ¦  «        }|                       d¦  «         ddd¦  «         n# 1 swxY w Y   nt	          | ¦  «        }|                       d¦  «         |S )	zw
    marker_atom = WS? LEFT_PARENTHESIS WS? marker WS? RIGHT_PARENTHESIS WS?
                | WS? marker_item WS?
    rJ   rx   TrZ   ry   zmarker expressionro   N)rO   r_   rq   rk   Ú_parse_marker_item)rH   r>   s     r   rˆ   rˆ     s
  € ð ×Ò�dÑÔÐØ‡‚Ð)°€Ñ5Ô5ð 
/Ø×'Ò'ØØØ&ð (ñ 
ô 
ð 	$ð 	$ð
 ×Ò˜dÑ#Ô#Ð#Ý!.¨yÑ!9Ô!9ˆFØ×Ò˜dÑ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$øõ $ IÑ.Ô.ˆØ×Ò�dÑÔÐØ€Ms   Á:BÂBÂBÚ
MarkerItemc                ó  — |                       d¦  «         t          | ¦  «        }|                       d¦  «         t          | ¦  «        }|                       d¦  «         t          | ¦  «        }|                       d¦  «         |||fS )zG
    marker_item = WS? marker_var WS? marker_op WS? marker_var WS?
    rJ   )rO   Ú_parse_marker_varÚ_parse_marker_op)rH   Úmarker_var_leftÚ	marker_opÚmarker_var_rights       r   rŽ   rŽ   (  sŠ   € ð ×Ò�dÑÔÐÝ'¨	Ñ2Ô2€OØ×Ò�dÑÔÐÝ  Ñ+Ô+€IØ×Ò�dÑÔÐÝ(¨Ñ3Ô3ÐØ×Ò�dÑÔÐØ˜YÐ(8Ð9Ð9r   Ú	MarkerVarc                óF  — |                       d¦  «        r:t          |                      ¦   «         j                             dd¦  «        ¦  «        S |                       d¦  «        r&t          |                      ¦   «         j        ¦  «        S |                      d¬¦  «         dS )z/
    marker_var = VARIABLE | QUOTED_STRING
    ÚVARIABLEú.Ú_ÚQUOTED_STRINGz+Expected a marker variable or quoted string)ÚmessageN)r_   Úprocess_env_varr`   rQ   ÚreplaceÚprocess_python_strrj   ©rH   s    r   r‘   r‘   6  sœ   € ð ‡‚�zÑ"Ô"ð 
Ý˜yŸ~š~Ñ/Ô/Ô4×<Ò<¸SÀ#ÑFÔFÑGÔGÐGØ	�Š˜Ñ	)Ô	)ð 
Ý! )§.¢.Ñ"2Ô"2Ô"7Ñ8Ô8Ð8à×$Ò$ØAð 	%ñ 	
ô 	
ð 	
ð 	
ð 	
r   Úenv_varc                óF   — | dv rt          d¦  «        S t          | ¦  «        S )N)Úplatform_python_implementationÚpython_implementationr£   )r(   )r¡   s    r   r�   r�   D  s+   € ØÐMÐMÐMÝÐ8Ñ9Ô9Ð9å˜Ñ Ô Ð r   Ú
python_strc                ób   — t          j        | ¦  «        }t          t          |¦  «        ¦  «        S r   )ÚastÚliteral_evalr/   r   )r¥   r   s     r   rŸ   rŸ   K  s&   € ÝÔ˜ZÑ(Ô(€EÝ•�U‘”ÑÔÐr   c                óÞ  — |                       d¦  «        r#|                      ¦   «          t          d¦  «        S |                       d¦  «        rQ|                      ¦   «          |                      dd¬¦  «         |                      dd¬¦  «         t          d¦  «        S |                       d	¦  «        r&t          |                      ¦   «         j        ¦  «        S |                      d
¦  «        S )z&
    marker_op = IN | NOT IN | OP
    ÚINÚinÚNOTrJ   zwhitespace after 'not'rL   z'in' after 'not'znot inÚOPzJExpected marker operator, one of <=, <, !=, ==, >=, >, ~=, ===, in, not in)r_   r`   r3   rP   rQ   rj   r    s    r   r’   r’   P  sã   € ð ‡‚�tÑÔð 
Ø�ŠÑÔÐÝ�$‰xŒxˆØ	�Š˜Ñ	Ô	ð 
Ø�ŠÑÔÐØ×Ò˜Ð(@ÐÑAÔAÐAØ×Ò˜Ð(:ÐÑ;Ô;Ð;Ý�(‰|Œ|ÐØ	�Š˜Ñ	Ô	ð 
Ý�)—.’.Ñ"Ô"Ô'Ñ(Ô(Ð(à×+Ò+ð8ñ
ô 
ð 	
r   )r@   r   r   r8   )rH   r
   r   r8   )rH   r
   r   rU   )rH   r
   r\   rf   r]   r   r   r6   )rH   r
   r   r;   )rH   r
   r   r   )r@   r   r   r6   )rH   r
   r   r6   )rH   r
   r   r5   )rH   r
   r   r�   )rH   r
   r   r–   )r¡   r   r   r(   )r¥   r   r   r/   )rH   r
   r   r3   )'Ú__doc__Ú
__future__r   r§   Útypingr   r   r   r   Ú
_tokenizerr	   r
   r   r(   r/   r3   r–   r�   r5   r   r6   r8   rF   rD   rS   rb   rR   rr   rc   rz   rƒ   r‚   rk   rˆ   rŽ   r‘   r�   rŸ   r’   r&   r   r   ú<module>r²      sï  ððð ð #Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0ð"ð "ð "ð "ð "ñ "ô "ð "ðð ð ð ð ˆtñ ô ð ð
ð ð ð ð ˆDñ ô ð ð
ð ð ð ð ˆñ ô ð ð
 �(˜E�/Ô"€	Ø�9˜b )Ð+Ô,€
Ø�:˜x¨Ô5Ð5Ô6€
Ø�e˜L¨*°cÐ9Ô:Ô;€
ðð ð ð ð ˜
ñ ô ð ðFð Fð Fð FðCð Cð Cð Cð*0$ð 0$ð 0$ð 0$ðfð ð ð ð(ð ð ð ð&ð ð ð ð6ð ð ð ð"ð ð ð ð@Fð Fð Fð Fðð ð ð ð	ð 	ð 	ð 	ðð ð ð ð,:ð :ð :ð :ð
ð 
ð 
ð 
ð!ð !ð !ð !ðð ð ð ð

ð 
ð 
ð 
ð 
ð 
r   