§
    k•j²-  ã                  óÜ  — 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d3d„Zd4d„Zd5d„Zd6d „Zd7d"„Zd7d#„Zd8d$„Zd8d%„Zd9d&„Z d:d'„Z!d:d(„Z"d;d)„Z#d<d+„Z$d=d-„Z%d>d/„Z&d?d1„Z'd@d2„Z(dS )Az˜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                  óJ   — 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
dS )ÚNode©Úvaluer   ÚstrÚreturnÚNonec                ó   — || _         d S ©Nr   ©Úselfr   s     ú`/var/www/finuniver-perm.ru/html/portfolio/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                ó2   — d| j         j        › d| j        ›d�S )Nú<ú(z)>)Ú	__class__Ú__name__r   r   s    r   Ú__repr__zNode.__repr__   s"   € Ø=�4”>Ô*Ð=Ð=¨T¬ZÐ=Ð=Ð=Ð=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Ðr   Úobjectc                ó|   — t          |t          ¦  «        st          d| j        j        › d|›�¦  «        ‚|| _        d S )NúCannot restore z value from )Ú
isinstancer   Ú	TypeErrorr!   r"   r   r   s     r   Ú_restore_valuezNode._restore_value"   sK   € Ý˜%¥Ñ%Ô%ð 	ÝØP $¤.Ô"9ÐPÐPÀuÐPÐPñô ð ð ˆŒ
ˆ
ˆ
r   Ústatec                óÊ  — t          |t          ¦  «        r|                      |¦  «         d S t          |t          ¦  «        rNt	          |¦  «        dk    r;|\  }}t          |t
          ¦  «        r!d|v r|                      |d         ¦  «         d S t          |t
          ¦  «        r!d|v r|                      |d         ¦  «         d S t          d| j        j        › d|›�¦  «        ‚)Né   r   r+   z from )	r,   r   r.   ÚtupleÚlenÚdictr-   r!   r"   )r   r/   Ú_Ú	slot_dicts       r   Ú__setstate__zNode.__setstate__)   sí   € Ý�e�SÑ!Ô!ð 	à×Ò Ñ&Ô&Ð&ØˆFÝ�e�UÑ#Ô#ð 	­¨E©
¬
°aª¨à ‰LˆAˆyÝ˜)¥TÑ*Ô*ð ¨w¸)Ð/CÐ/CØ×#Ò# I¨gÔ$6Ñ7Ô7Ð7Ø�Ý�e�TÑ"Ô"ð 	 w°%Ð'7Ð'7à×Ò  g¤Ñ/Ô/Ð/ØˆFÝÐR¨$¬.Ô*AÐRÐRÈÐRÐRÑSÔSÐSr   N)r   r   r   r   ©r   r   )r   r)   r   r   )r/   r)   r   r   )r"   Ú
__module__Ú__qualname__Ú	__slots__r   r   r#   r&   r(   r.   r7   © r   r   r   r      s«   € € € € € Ø€Iðð ð ð ðð ð ð ð>ð >ð >ð >ð"ð "ð "ð "ðð ð ð ðð ð ð ðTð Tð Tð Tð Tð Tr   r   c                  ó   — e Zd ZdZdd„ZdS )ÚVariabler<   r   r   c                ó    — t          | ¦  «        S r   ©r   r   s    r   r&   zVariable.serialize>   ó   € Ý�4‰yŒyÐr   Nr8   ©r"   r9   r:   r;   r&   r<   r   r   r>   r>   ;   ó-   € € € € € Ø€Iðð ð ð ð ð r   r>   c                  ó   — e Zd ZdZdd„ZdS )ÚValuer<   r   r   c                ó   — d| › d�S )Nú"r<   r   s    r   r&   zValue.serializeE   s   € Ø�4ˆ{ˆ{ˆ{Ðr   Nr8   rB   r<   r   r   rE   rE   B   s-   € € € € € Ø€Iðð ð ð ð ð r   rE   c                  ó   — e Zd ZdZdd„ZdS )ÚOpr<   r   r   c                ó    — t          | ¦  «        S r   r@   r   s    r   r&   zOp.serializeL   rA   r   Nr8   rB   r<   r   r   rI   rI   I   rC   r   rI   )ÚandÚorÚ
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"   r9   r:   Ú__annotations__r<   r   r   rP   rP   W   sE   € € € € € € Ø€I€I�IØ€H€H�HØÐÐÑØ€N€N�NØÐÐÑÐÐr   rP   Úsourcer   r   c                óH   — t          t          | t          ¬¦  «        ¦  «        S ©N)Úrules)Ú_parse_requirementr   r   ©rX   s    r   Úparse_requirementr^   b   ó   € Ý�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_detailsrP   )r`   Ú
name_tokenrQ   rT   rR   rU   rV   s          r   r\   r\   f   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Ú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)r`   rU   rR   rV   Ú	url_startÚspecifier_starts         r   rk   rk   {   s€  € ð €IØ
€CØ€Fà‡‚�tÑÔð $
Ø�ŠÑÔÐØ×Ò˜$ÑÔÐàÔ&ˆ	Ø×Ò˜u¨}ÐÑ=Ô=ÔBˆØ�?Š?˜5 tˆ?Ñ,Ô,ð 	,Ø˜ FÐ+Ð+à×Ò˜Ð(>ÐÑ?Ô?Ð?ð �?Š?˜5 tˆ?Ñ,Ô,ð 	,Ø˜ FÐ+Ð+å*ØØ Ø;ð
ñ 
ô 
ˆˆð $Ô,ˆÝ$ YÑ/Ô/ˆ	Ø×Ò˜$ÑÔÐà�?Š?˜5 tˆ?Ñ,Ô,ð 	,Ø˜ FÐ+Ð+å*ØØ&ð ðHÐWÐWàGð
ñ 
ô 
ˆð �˜FÐ#Ð#r   rt   Úintre   c               óØ   — |                       d¦  «        s|                      d|› d�|d¬¦  «         |                      ¦   «          t          | ¦  «        }|                      d¦  «         |S )z3
    requirement_marker = SEMICOLON marker WS?
    Ú	SEMICOLONz	Expected z or endN©rt   Úspan_endrb   )ru   Úraise_syntax_errorrv   Ú_parse_markerrg   )r`   rt   re   rV   s       r   rx   rx   °   s�   € ð �?Š?˜;Ñ'Ô'ð 
Ø×$Ò$Ø)˜Ð)Ð)Ð)Ø!Øð 	%ñ 	
ô 	
ð 	
ð
 ‡N‚NÑÔÐå˜9Ñ%Ô%€FØ×Ò�dÑÔÐà€Mr   rS   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_BRACKETTrr   ÚRIGHT_BRACKETrT   ©Úaroundrb   N)ru   Úenclosing_tokensrg   Ú_parse_extras_list)r`   rT   s     r   rj   rj   Å   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)*
    rc   Trb   rr   z"Expected comma between extra namesÚCOMMAzextra name after commard   )ru   Úappendrv   ri   rg   r�   rh   )r`   rT   Úextra_tokens      r   r‰   r‰   Ø   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_PARENTHESISzversion specifierr†   rb   N)rˆ   rg   Ú_parse_version_many)r`   Úparsed_specifierss     r   ry   ry   ó   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)*)?
    ro   Ú	SPECIFIERÚVERSION_PREFIX_TRAILTrr   z6.* suffix can only be used with `==` or `!=` operatorsr
   r   ÚVERSION_LOCAL_LABEL_TRAILz@Local version label can only be used with `==` or `!=` operatorsrb   r‹   )ru   rw   rv   ri   r�   rg   )r`   r’   rt   s      r   r‘   r‘     s@  € ð ÐØ
�/Š/˜+Ñ
&Ô
&ð  ØÔ'ˆ
Ø˜YŸ^š^Ñ-Ô-Ô2Ñ2ÐØ�?Š?Ð1¸ˆ?Ñ=Ô=ð 	Ø×(Ò(ØHØ%Ø"Ô+¨aÑ/ð )ñ ô ð ð
 �?Š?Ð6¸Tˆ?ÑBÔBð 	Ø×(Ò(ØRØ%Ø"Ô+ð )ñ ô ð ð
 	×Ò˜$ÑÔÐØ�Š˜wÑ'Ô'ð 	ØØ˜YŸ^š^Ñ-Ô-Ô2Ñ2ÐØ×Ò˜$ÑÔÐð' �/Š/˜+Ñ
&Ô
&ð  ð* Ðr   c                óH   — t          t          | t          ¬¦  «        ¦  «        S rZ   )Ú_parse_full_markerr   r   r]   s    r   Úparse_markerr™   $  r_   r   c                óR   — t          | ¦  «        }|                      dd¬¦  «         |S )Nrf   zend of marker expressionrd   )r‚   rh   )r`   Ú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_atomru   rv   Úextendri   )r`   Ú
expressionÚtokenÚ
expr_rights       r   r‚   r‚   .  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?
    rb   r�   Trr   r�   zmarker expressionr†   N)rg   ru   rˆ   r‚   Ú_parse_marker_item)r`   rV   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?
    rb   )rg   Ú_parse_marker_varÚ_parse_marker_op)r`   Úmarker_var_leftÚ	marker_opÚmarker_var_rights       r   r¤   r¤   P  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ú.r5   ÚQUOTED_STRINGz+Expected a marker variable or quoted string)ÚmessageN)ru   Úprocess_env_varrv   ri   ÚreplaceÚprocess_python_strr�   ©r`   s    r   r§   r§   ^  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²   l  s+   € ØÐMÐMÐMÝÐ8Ñ9Ô9Ð9å˜Ñ Ô Ð r   Ú
python_strc                ób   — t          j        | ¦  «        }t          t          |¦  «        ¦  «        S r   )ÚastÚliteral_evalrE   r   )rº   r   s     r   r´   r´   s  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ÚNOTrb   zwhitespace after 'not'rd   z'in' after 'not'znot inÚOPzJExpected marker operator, one of <=, <, !=, ==, >=, >, ~=, ===, in, not in)ru   rv   rI   rh   ri   r�   rµ   s    r   r¨   r¨   x  sá   € ð ‡‚�tÑÔð 
Ø�ŠÑÔÐÝ�$‰xŒxˆØ	�Š˜Ñ	Ô	ð 

Ø�ŠÑÔÐØ×Ò˜Ð(@ÐÑAÔAÐAØ×Ò˜Ð(:ÐÑ;Ô;Ð;Ý�(‰|Œ|ÐØ	�Š˜Ñ	Ô	ð 
Ý�)—.’.Ñ"Ô"Ô'Ñ(Ô(Ð(à×+Ò+ØXñ
ô 
ð 	
r   )rX   r   r   rP   )r`   r   r   rP   )r`   r   r   rm   )r`   r   rt   r|   re   r   r   rN   )r`   r   r   rS   )r`   r   r   r   )rX   r   r   rN   )r`   r   r   rN   )r`   r   r   rM   )r`   r   r   r¥   )r`   r   r   r¬   )r¶   r   r   r>   )rº   r   r   rE   )r`   r   r   rI   ))Ú__doc__Ú
__future__r   r¼   Útypingr   r   r   r   r   r	   Ú
_tokenizerr   r   r   r>   rE   rI   ÚMarkerLogicalr¬   r¥   rM   rN   rP   r^   r\   rk   rx   rj   r‰   ry   r‘   r™   r˜   r‚   rž   r¤   r§   r²   r´   r¨   r<   r   r   ú<module>rÈ      s  ððð ð #Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ Dà 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0ð)Tð )Tð )Tð )Tð )Tñ )Tô )Tð )TðXð ð ð ð ˆtñ ô ð ðð ð ð ð ˆDñ ô ð ðð ð ð ð ˆñ ô ð ð ˜Ô$€Ø�(˜E�/Ô"€	Ø�9˜b )Ð+Ô,€
Ø�:˜x¨Ô5Ð5Ô6€
Ø�%˜ j°-Ð?Ô@ÔA€
ðð ð ð ð ˜
ñ ô ð ðFð Fð Fð FðCð Cð Cð Cð*2$ð 2$ð 2$ð 2$ðjð ð ð ð*ð ð ð ð&ð ð ð ð6ð ð ð ð"ð ð ð ð@Fð Fð Fð Fðð ð ð ð	ð 	ð 	ð 	ðð ð ð ð,:ð :ð :ð :ð
ð 
ð 
ð 
ð!ð !ð !ð !ðð ð ð ð

ð 
ð 
ð 
ð 
ð 
r   