§
    ö{Âc·$  ã                   óH  — d 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eef         Zeeeef         ZeZee         Z G d„ de¦  «        Zdedefd„Zdedefd„Zdedeeeee         f         fd„Zdedededefd„Zdedee         fd„Zdedee         fd„Zdedefd„Zdedefd„Zdedefd„Zdedefd„Z dedefd„Z!dedefd „Z"dedefd!„Z#d"edefd#„Z$d$edefd%„Z%dedefd&„Z&dS )'z˜Handwritten parser of dependency specifiers.

The docstring for each __parse_* function contains ENBF-inspired grammar representing
the implementation.
é    N)ÚAnyÚListÚ
NamedTupleÚOptionalÚTupleÚUnioné   )ÚDEFAULT_RULESÚ	Tokenizerc                   óB   — e Zd Zdeddfd„Zdefd„Zdefd„Zdefd„ZdS )ÚNodeÚvalueÚreturnNc                 ó   — || _         d S ©N©r   )Úselfr   s     ú3/usr/lib/python3/dist-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   )r   Ú
__module__Ú__qualname__Ústrr   r   r   r!   © r   r   r   r      s‡   € € € € € ð˜cð  dð ð ð ð ð˜ð ð ð ð ð8˜#ð 8ð 8ð 8ð 8ð"˜3ð "ð "ð "ð "ð "ð "r   r   c                   ó   — e Zd Zdefd„ZdS )ÚVariabler   c                 ó    — t          | ¦  «        S r   ©r$   r   s    r   r!   zVariable.serialize   ó   € Ý�4‰yŒyÐr   N©r   r"   r#   r$   r!   r%   r   r   r'   r'      ó/   € € € € € ð˜3ð ð ð ð ð ð r   r'   c                   ó   — e Zd Zdefd„ZdS )ÚValuer   c                 ó   — d| › d�S )Nú"r%   r   s    r   r!   zValue.serialize!   s   € Ø�4ˆ{ˆ{ˆ{Ðr   Nr+   r%   r   r   r.   r.       s/   € € € € € ð˜3ð ð ð ð ð ð r   r.   c                   ó   — e Zd Zdefd„ZdS )ÚOpr   c                 ó    — t          | ¦  «        S r   r)   r   s    r   r!   zOp.serialize&   r*   r   Nr+   r%   r   r   r2   r2   %   r,   r   r2   c                   óZ   — e Zd ZU eed<   eed<   ee         ed<   eed<   ee         ed<   dS )ÚParsedRequirementÚnameÚurlÚextrasÚ	specifierÚmarkerN)r   r"   r#   r$   Ú__annotations__r   r   Ú
MarkerListr%   r   r   r5   r5   4   sN   € € € € € € Ø
€I€I�IØ	€H€H�HØ�ŒIÐÐÑØ€N€N�NØ�ZÔ Ð Ð Ñ Ð Ð r   r5   Úsourcer   c                 óH   — t          t          | t          ¬¦  «        ¦  «        S ©N)Úrules)Ú_parse_requirementr   r
   ©r=   s    r   Úparse_requirementrC   ?   s   € Ý�i¨µmÐDÑDÔDÑEÔEÐEr   Ú	tokenizerc                 ó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_detailsr5   )rD   Ú
name_tokenr6   r8   r7   r9   r:   s          r   rA   rA   C   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   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ÚATrF   ÚURLzURL after @rH   rJ   T©Úpeekzwhitespace after URLzURL and whitespace)Ú
span_startÚafterzversion specifierz#name and no valid version specifier)ÚcheckÚreadrK   ÚpositionrL   rM   Ú_parse_requirement_markerÚ_parse_specifier)rD   r9   r7   r:   Ú	url_startÚspecifier_starts         r   rO   rO   X   s~  € ð €IØ
€CØ€Fà‡‚�tÑÔð "
Ø�ŠÑÔÐØ×Ò˜$ÑÔÐàÔ&ˆ	Ø×Ò˜u¨}ÐÑ=Ô=ÔBˆØ�?Š?˜5 tˆ?Ñ,Ô,ð 	,Ø˜ FÐ+Ð+à×Ò˜Ð(>ÐÑ?Ô?Ð?ð �?Š?˜5 tˆ?Ñ,Ô,ð 	,Ø˜ FÐ+Ð+å*Ø )Ð3Gð
ñ 
ô 
ˆˆð $Ô,ˆÝ$ YÑ/Ô/ˆ	Ø×Ò˜$ÑÔÐà�?Š?˜5 tˆ?Ñ,Ô,ð 	,Ø˜ FÐ+Ð+å*ØØ&ð ð;Ð#Ð#à:ð
ñ 
ô 
ˆð �˜FÐ#Ð#r   rW   rX   c                óÖ   — |                       d¦  «        s|                      d|› d�|¬¦  «         |                      ¦   «          t          | ¦  «        }|                      d¦  «         |S )z3
    requirement_marker = SEMICOLON marker WS?
    Ú	SEMICOLONz!Expected end or semicolon (after ú))rW   rF   )rY   Úraise_syntax_errorrZ   Ú_parse_markerrK   )rD   rW   rX   r:   s       r   r\   r\   ‹   s~   € ð �?Š?˜;Ñ'Ô'ð 
Ø×$Ò$Ø8°Ð8Ð8Ð8Ø!ð 	%ñ 	
ô 	
ð 	
ð ‡N‚NÑÔÐå˜9Ñ%Ô%€FØ×Ò�dÑÔÐà€Mr   c                 ó  — |                       dd¬¦  «        sg S |                      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_BRACKETTrU   ÚRIGHT_BRACKETrF   N)rY   Úenclosing_tokensrK   Ú_parse_extras_list)rD   r8   s     r   rN   rN   Ÿ   sÈ   € ð �?Š?˜>°ˆ?Ñ5Ô5ð Øˆ	à	×	#Ò	# N°OÑ	DÔ	Dð  ð  Ø×Ò˜$ÑÔÐÝ# IÑ.Ô.ˆØ×Ò˜$ÑÔÐð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð
 €Ms   °:A6Á6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)*
    rG   TrF   rU   z"Expected comma between extra namesÚCOMMAzextra name after commarH   )rY   ÚappendrZ   rM   rK   rc   rL   )rD   r8   Úextra_tokens      r   ri   ri   ®   sÿ   € ð €Fà�?Š?˜<Ñ(Ô(ð Øˆà
‡M‚M�)—.’.Ñ"Ô"Ô'Ñ(Ô(Ð(ð(Ø×Ò˜$ÑÔÐØ�?Š?˜<¨dˆ?Ñ3Ô3ð 	Ø×(Ò(Ð)MÑNÔNÐNÐNØ—’ Ñ)Ô)ð 	Øà�ŠÑÔÐØ×Ò˜$ÑÔÐà×&Ò& |Ð>VÐ&ÑWÔWˆØ�Š�kÔ&Ñ'Ô'Ð'ð(ð €Mr   c                 óÔ   — |                       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_PARENTHESISrF   N)rh   rK   Ú_parse_version_many©rD   Úparsed_specifierss     r   r]   r]   É   s¯   € ð
 
×	#Ò	#Ð$6Ð8KÑ	LÔ	Lð  ð  Ø×Ò˜$ÑÔÐÝ/°	Ñ:Ô:ÐØ×Ò˜$ÑÔÐð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð
 Ðs   —:AÁA!Á$A!c                 óN  — d}|                       d¦  «        r�||                      ¦   «         j        z  }|                      d¦  «         |                       d¦  «        snF||                      ¦   «         j        z  }|                      d¦  «         |                       d¦  «        °�|S )z@
    version_many = (SPECIFIER (WS? COMMA WS? SPECIFIER)*)?
    rR   Ú	SPECIFIERrF   rk   )rY   rZ   rM   rK   rr   s     r   rq   rq   Ö   s«   € ð ÐØ
�/Š/˜+Ñ
&Ô
&ð  Ø˜YŸ^š^Ñ-Ô-Ô2Ñ2ÐØ×Ò˜$ÑÔÐØ�Š˜wÑ'Ô'ð 	ØØ˜YŸ^š^Ñ-Ô-Ô2Ñ2ÐØ×Ò˜$ÑÔÐð �/Š/˜+Ñ
&Ô
&ð  ð Ðr   c                 óH   — t          t          | t          ¬¦  «        ¦  «        S r?   )rd   r   r
   rB   s    r   Úparse_markerrw   é   s   € Ý� 6µÐ?Ñ?Ô?Ñ@Ô@Ð@r   c                 óø   — t          | ¦  «        g}|                      d¦  «        rT|                      ¦   «         }t          | ¦  «        }|                     |j        |f¦  «         |                      d¦  «        °T|S )z4
    marker = marker_atom (BOOLOP marker_atom)+
    ÚBOOLOP)Ú_parse_marker_atomrY   rZ   ÚextendrM   )rD   Ú
expressionÚtokenÚ
expr_rights       r   rd   rd   í   s}   € õ % YÑ/Ô/Ð0€JØ
�/Š/˜(Ñ
#Ô
#ð 4Ø—’Ñ Ô ˆÝ'¨	Ñ2Ô2ˆ
Ø×Ò˜5œ: zÐ2Ñ3Ô3Ð3ð �/Š/˜(Ñ
#Ô
#ð 4ð Ðr   c                 óv  — |                       d¦  «         |                      dd¬¦  «        rh|                      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?
    rF   ro   TrU   rp   N)rK   rY   rh   rd   Ú_parse_marker_item)rD   r:   s     r   rz   rz   ù   sü   € ð ×Ò�dÑÔÐØ‡‚Ð)°€Ñ5Ô5ð /Ø×'Ò'Ð(:Ð<OÑPÔPð 	$ð 	$Ø×Ò˜dÑ#Ô#Ð#Ý!.¨yÑ!9Ô!9ˆFØ×Ò˜dÑ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$øõ
 $ IÑ.Ô.ˆØ×Ò�dÑÔÐØ€Ms   Á:B	Â	BÂBc                 ó  — |                       d¦  «         t          | ¦  «        }|                       d¦  «         t          | ¦  «        }|                       d¦  «         t          | ¦  «        }|                       d¦  «         |||fS )zG
    marker_item = WS? marker_var WS? marker_op WS? marker_var WS?
    rF   )rK   Ú_parse_marker_varÚ_parse_marker_op)rD   Ú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   c                 ó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)rY   Úprocess_env_varrZ   rM   ÚreplaceÚprocess_python_strrc   ©rD   s    r   r‚   r‚     sœ   € ð ‡‚�zÑ"Ô"ð 
Ý˜yŸ~š~Ñ/Ô/Ô4×<Ò<¸SÀ#ÑFÔFÑGÔGÐGØ	�Š˜Ñ	)Ô	)ð 
Ý! )§.¢.Ñ"2Ô"2Ô"7Ñ8Ô8Ð8à×$Ò$ØAð 	%ñ 	
ô 	
ð 	
ð 	
ð 	
r   Úenv_varc                 óV   — | dk    s| dk    rt          d¦  «        S t          | ¦  «        S )NÚplatform_python_implementationÚpython_implementation)r'   )r‘   s    r   r�   r�   '  s7   € àÐ3Ò3Ð3ØÐ-Ò-Ð-åÐ8Ñ9Ô9Ð9å˜Ñ Ô Ð r   Ú
python_strc                 ób   — t          j        | ¦  «        }t          t          |¦  «        ¦  «        S r   )ÚastÚliteral_evalr.   r$   )r•   r   s     r   r�   r�   1  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ÚNOTrF   zwhitespace after 'not'rH   z'in' after 'not'znot inÚOPzJExpected marker operator, one of <=, <, !=, ==, >=, >, ~=, ===, in, not in)rY   rZ   r2   rL   rM   rc   r�   s    r   rƒ   rƒ   6  sã   € ð ‡‚�tÑÔð 
Ø�ŠÑÔÐÝ�$‰xŒxˆØ	�Š˜Ñ	Ô	ð 
Ø�ŠÑÔÐØ×Ò˜Ð(@ÐÑAÔAÐAØ×Ò˜Ð(:ÐÑ;Ô;Ð;Ý�(‰|Œ|ÐØ	�Š˜Ñ	Ô	ð 
Ý�)—.’.Ñ"Ô"Ô'Ñ(Ô(Ð(à×+Ò+ð8ñ
ô 
ð 	
r   )'Ú__doc__r—   Útypingr   r   r   r   r   r   Ú
_tokenizerr
   r   r   r'   r.   r2   Ú	MarkerVarÚ
MarkerItemÚ
MarkerAtomr<   r5   r$   rC   rA   rO   Úintr\   rN   ri   r]   rq   rw   rd   rz   r€   r‚   r�   r�   rƒ   r%   r   r   ú<module>r¥      sÏ  ððð ð €
€
€
Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0ð"ð "ð "ð "ð "ñ "ô "ð "ðð ð ð ð ˆtñ ô ð ð
ð ð ð ð ˆDñ ô ð ð
ð ð ð ð ˆñ ô ð ð
 �(˜E�/Ô"€	Ø�9˜b )Ð+Ô,€
ð
 €
Ø�#ŒY€
ð!ð !ð !ð !ð !˜
ñ !ô !ð !ðF˜cð FÐ&7ð Fð Fð Fð FðC )ð CÐ0Að Cð Cð Cð Cð*0$Øð0$à
ˆ3��X˜jÔ)Ð)Ô*ð0$ð 0$ð 0$ð 0$ðfØðØ),ðØ58ðàðð ð ð ð(˜Yð ¨4°¬9ð ð ð ð ð )ð °°S´	ð ð ð ð ð6
 	ð 
¨cð 
ð 
ð 
ð 
ð 9ð °ð ð ð ð ð&A˜ð A ð Að Að Að Að	˜Yð 	¨:ð 	ð 	ð 	ð 	ð )ð °
ð ð ð ð ð$: )ð :°
ð :ð :ð :ð :ð
 ð 
¨yð 
ð 
ð 
ð 
ð!˜Sð ! Xð !ð !ð !ð !ð 3ð ¨5ð ð ð ð ð

 	ð 
¨bð 
ð 
ð 
ð 
ð 
ð 
r   