ó
    ÂÜhí'  ã                  óº  • S r SSKJr  SSKrSSKJrJrJrJr  SSK	J
r
Jr   " S S5      r " S	 S
\5      r " S S\5      r " S S\5      r\\\4   r\\\\4   r\\\S   4   r\\S\\4      r " S S\5      rS$S jrS%S jr    S&S jr        S'S jrS(S jrS(S jrS)S jrS)S jrS*S jrS+S jrS+S jr S,S jr!S-S jr"S.S  jr#S/S! jr$S0S" jr%S1S# jr&g)2z˜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                  ó<   • \ rS rSrSS jrS	S jrS	S jrS	S jrSrg)
ÚNodeé   c                ó   • Xl         g ©N©Úvalue)Úselfr   s     Ú3/usr/lib/python3/dist-packages/packaging/_parser.pyÚ__init__ÚNode.__init__   s   € Ø�
ó    c                ó   • U R                   $ r   r   ©r   s    r   Ú__str__ÚNode.__str__   s   € Ø�z‰zÐr   c                ó<   • SU R                   R                   SU  S3$ )NÚ<z('z')>)Ú	__class__Ú__name__r   s    r   Ú__repr__ÚNode.__repr__   s"   € Ø�4—>‘>×*Ñ*Ð+¨2¨d¨V°3Ð7Ð7r   c                ó   • [         er   )ÚNotImplementedErrorr   s    r   Ú	serializeÚNode.serialize   s   € Ü!Ð!r   r   N)r   ÚstrÚreturnÚNone©r&   r%   )	r   Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r   r#   Ú__static_attributes__© r   r   r   r      s   † ôôô8÷"r   r   c                  ó   • \ rS rSrSS jrSrg)ÚVariableé   c                ó   • [        U 5      $ r   ©r%   r   s    r   r#   ÚVariable.serialize   ó   € Ü�4‹yÐr   r-   Nr(   ©r   r)   r*   r+   r#   r,   r-   r   r   r/   r/      ó   † ÷r   r/   c                  ó   • \ rS rSrSS jrSrg)ÚValueé"   c                ó   • SU  S3$ )NÚ"r-   r   s    r   r#   ÚValue.serialize#   s   € Ø�4�&˜ˆ{Ðr   r-   Nr(   r5   r-   r   r   r8   r8   "   s   † ÷r   r8   c                  ó   • \ rS rSrSS jrSrg)ÚOpé'   c                ó   • [        U 5      $ r   r2   r   s    r   r#   ÚOp.serialize(   r4   r   r-   Nr(   r5   r-   r   r   r>   r>   '   r6   r   r>   Ú
MarkerAtomÚ
MarkerListc                  óH   • \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S	'   S
rg)ÚParsedRequirementé2   r%   ÚnameÚurlú	list[str]ÚextrasÚ	specifierzMarkerList | NoneÚmarkerr-   N)r   r)   r*   r+   Ú__annotations__r,   r-   r   r   rE   rE   2   s   ‡ Ø
ƒIØ	ƒHØÓØƒNØÖr   rE   c                ó0   • [        [        U [        S95      $ ©N)Úrules)Ú_parse_requirementr
   r	   ©Úsources    r   Úparse_requirementrT   =   ó   € Üœi¨´mÑDÓEÐEr   c                ó  • U R                  S5        U R                  SSS9nUR                  nU R                  S5        [        U 5      nU R                  S5        [	        U 5      u  pEnU R                  SSS9  [        X$X5U5      $ )zA
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_detailsrE   )Ú	tokenizerÚ
name_tokenrG   rJ   rH   rK   rL   s          r   rQ   rQ   A   s�   € ð ×Ñ�dÔà×!Ñ!ØÐRð "ð €Jð �?‰?€DØ×Ñ�dÔä˜9Ó%€FØ×Ñ�dÔä7¸	ÓBÑ€C�FØ×Ñ�UÐ%BÐÑCä˜T¨¸6ÓBÐBr   c                ó  • SnSnSnU R                  S5      (       a”  U R                  5         U R                  S5        U R                  nU R	                  SSS9R
                  nU R                  SS	S
9(       a  X!U4$ U R	                  SSS9  U R                  SS	S
9(       a  X!U4$ [        XSS9nOUU R                  n[        U 5      nU R                  S5        U R                  SS	S
9(       a  X!U4$ [        U UU(       a  SOSS9nX!U4$ )zr
requirement_details = AT URL (WS requirement_marker?)?
                    | specifier WS? (requirement_marker)?
Ú NÚATrW   ÚURLzURL after @rY   r[   T©Úpeekzwhitespace after URLzURL and whitespace)Ú
span_startÚafterúversion specifierz#name and no valid version specifier)ÚcheckÚreadr\   Úpositionr]   r^   Ú_parse_requirement_markerÚ_parse_specifier)ra   rK   rH   rL   Ú	url_startÚspecifier_starts         r   r`   r`   V   s&  € ð €IØ
€CØ€Fà‡��t×ÑØ�‰ÔØ×Ñ˜$Ôà×&Ñ&ˆ	Ø×Ñ˜u¨}ÐÐ=×BÑBˆØ�?‰?˜5 tˆ?Ö,Ø FÐ+Ð+à×Ñ˜Ð(>ÐÑ?ð �?‰?˜5 tˆ?Ö,Ø FÐ+Ð+ä*ØÐ3Gñ
‰ð $×,Ñ,ˆÜ$ YÓ/ˆ	Ø×Ñ˜$Ôà�?‰?˜5 tˆ?Ö,Ø FÐ+Ð+ä*ØØ&ö ñ $à:ñ
ˆð ˜FÐ#Ð#r   c               ó²   • U R                  S5      (       d  U R                  SU S3US9  U R                  5         [        U 5      nU R	                  S5        U$ )z+
requirement_marker = SEMICOLON marker WS?
Ú	SEMICOLONz!Expected end or semicolon (after Ú))ri   rW   )rl   Úraise_syntax_errorrm   Ú_parse_markerr\   )ra   ri   rj   rL   s       r   ro   ro   ‰   s^   € ð �?‰?˜;×'Ñ'Ø×$Ñ$Ø/°¨w°aÐ8Ø!ð 	%ñ 	
ð ‡N�NÔä˜9Ó%€FØ×Ñ�dÔà€Mr   c                óæ   • U R                  SSS9(       d  / $ U R                  SSSS9   U R                  S5        [        U 5      nU R                  S5        SSS5        U$ ! , (       d  f       W$ = f)	z?
extras = (LEFT_BRACKET wsp* extras_list? wsp* RIGHT_BRACKET)?
ÚLEFT_BRACKETTrg   ÚRIGHT_BRACKETrJ   ©ÚaroundrW   N)rl   Úenclosing_tokensr\   Ú_parse_extras_list)ra   rJ   s     r   r_   r_   �   s{   € ð �?‰?˜>°ˆ?Ö5Øˆ	à	×	#Ñ	#ØØØð 
$ò 
ð
 	×Ñ˜$ÔÜ# IÓ.ˆØ×Ñ˜$Ô÷
ð €M÷
ô 
ð €Mús   ©.A!Á!
A0c                óÈ  • / nU R                  S5      (       d  U$ UR                  U R                  5       R                  5         U R	                  S5        U R                  SSS9(       a  U R                  S5        OU R                  S5      (       d   U$ U R                  5         U R	                  S5        U R                  SSS9nUR                  UR                  5        MŸ  )	z6
extras_list = identifier (wsp* ',' wsp* identifier)*
rX   TrW   rg   z"Expected comma between extra namesÚCOMMAzextra name after commarY   )rl   Úappendrm   r^   r\   rv   r]   )ra   rJ   Úextra_tokens      r   r~   r~   °   sÆ   € ð €Fà�?‰?˜<×(Ñ(Øˆà
‡M�M�)—.‘.Ó"×'Ñ'Ô(à
Ø×Ñ˜$ÔØ�?‰?˜<¨dˆ?Ö3Ø×(Ñ(Ð)MÕNØ—‘ ×)Ñ)Øð €Mð 	�‰ÔØ×Ñ˜$Ôà×&Ñ& |Ð>VÐ&ÐWˆØ�‰�k×&Ñ&Ô'ñ r   c                ó¸   • U R                  SSSS9   U R                  S5        [        U 5      nU R                  S5        SSS5        U$ ! , (       d  f       W$ = f)zf
specifier = LEFT_PARENTHESIS WS? version_many WS? RIGHT_PARENTHESIS
          | WS? version_many WS?
ÚLEFT_PARENTHESISÚRIGHT_PARENTHESISrk   r{   rW   N)r}   r\   Ú_parse_version_many)ra   Úparsed_specifierss     r   rp   rp   Ë   si   € ð
 
×	#Ñ	#ØØØ"ð 
$ò 
ð
 	×Ñ˜$ÔÜ/°	Ó:ÐØ×Ñ˜$Ô÷
ð Ð÷
ô 
ð Ðús   ’.A
Á

Ac                ó*  • SnU R                  S5      (       aú  U R                  nXR                  5       R                  -  nU R                  SSS9(       a  U R	                  SUU R                  S-   S9  U R                  S	SS9(       a  U R	                  S
UU R                  S9  U R                  S5        U R                  S5      (       d   U$ XR                  5       R                  -  nU R                  S5        U R                  S5      (       a  Mú  U$ )z8
version_many = (SPECIFIER (WS? COMMA WS? SPECIFIER)*)?
rd   Ú	SPECIFIERÚVERSION_PREFIX_TRAILTrg   z6.* suffix can only be used with `==` or `!=` operatorsr   )ri   Úspan_endÚVERSION_LOCAL_LABEL_TRAILz@Local version label can only be used with `==` or `!=` operatorsrW   r€   )rl   rn   rm   r^   rv   r\   )ra   r‡   ri   s      r   r†   r†   Ü   s  € ð ÐØ
�/‰/˜+×
&Ñ
&Ø×'Ñ'ˆ
ØŸ^™^Ó-×2Ñ2Ñ2ÐØ�?‰?Ð1¸ˆ?Ö=Ø×(Ñ(ØHØ%Ø"×+Ñ+¨aÑ/ð )ñ ð
 �?‰?Ð6¸Tˆ?ÖBØ×(Ñ(ØRØ%Ø"×+Ñ+ð )ñ ð
 	×Ñ˜$ÔØ�‰˜w×'Ñ'Øð Ðð 	Ÿ^™^Ó-×2Ñ2Ñ2ÐØ×Ñ˜$Ôð' �/‰/˜+×
&Ó
&ð* Ðr   c                ó0   • [        [        U [        S95      $ rO   )Ú_parse_full_markerr
   r	   rR   s    r   Úparse_markerr�   ü   rU   r   c                ó<   • [        U 5      nU R                  SSS9  U$ )Nr[   zend of marker expressionrY   )rw   r]   )ra   Úretvals     r   rŽ   rŽ      s%   € Ü˜9Ó%€FØ×Ñ�UÐ%?ÐÑ@Ø€Mr   c                óê   • [        U 5      /nU R                  S5      (       aP  U R                  5       n[        U 5      nUR                  UR                  U45        U R                  S5      (       a  MP  U$ )z,
marker = marker_atom (BOOLOP marker_atom)+
ÚBOOLOP)Ú_parse_marker_atomrl   rm   Úextendr^   )ra   Ú
expressionÚtokenÚ
expr_rights       r   rw   rw     sf   € ô % YÓ/Ð0€JØ
�/‰/˜(×
#Ñ
#Ø—‘Ó ˆÜ'¨	Ó2ˆ
Ø×Ñ˜5Ÿ:™: zÐ2Ô3ð �/‰/˜(×
#Ó
#ð Ðr   c                ó<  • U R                  S5        U R                  SSS9(       aH  U R                  SSSS9   U R                  S5        [        U 5      nU R                  S5        SSS5        O[	        U 5      nU R                  S5        W$ ! , (       d  f       N!= f)	zk
marker_atom = WS? LEFT_PARENTHESIS WS? marker WS? RIGHT_PARENTHESIS WS?
            | WS? marker_item WS?
rW   r„   Trg   r…   zmarker expressionr{   N)r\   rl   r}   rw   Ú_parse_marker_item)ra   rL   s     r   r”   r”     s›   € ð ×Ñ�dÔØ‡�Ð)°€Ö5Ø×'Ñ'ØØØ&ð (ò 
ð
 ×Ñ˜dÔ#Ü!.¨yÓ!9ˆFØ×Ñ˜dÔ#÷
ð 
ô $ IÓ.ˆØ×Ñ�dÔØ€M÷
õ 
ús   ¸.BÂ
Bc                óÔ   • U R                  S5        [        U 5      nU R                  S5        [        U 5      nU R                  S5        [        U 5      nU R                  S5        XU4$ )z?
marker_item = WS? marker_var WS? marker_op WS? marker_var WS?
rW   )r\   Ú_parse_marker_varÚ_parse_marker_op)ra   Úmarker_var_leftÚ	marker_opÚmarker_var_rights       r   rš   rš   (  sg   € ð ×Ñ�dÔÜ'¨	Ó2€OØ×Ñ�dÔÜ  Ó+€IØ×Ñ�dÔÜ(¨Ó3ÐØ×Ñ�dÔØÐ(8Ð9Ð9r   c                ó&  • U R                  S5      (       a3  [        U R                  5       R                  R	                  SS5      5      $ U R                  S5      (       a#  [        U R                  5       R                  5      $ U R                  SS9  g)z'
marker_var = VARIABLE | QUOTED_STRING
ÚVARIABLEÚ.Ú_ÚQUOTED_STRINGz+Expected a marker variable or quoted string)ÚmessageN)rl   Úprocess_env_varrm   r^   ÚreplaceÚprocess_python_strrv   ©ra   s    r   rœ   rœ   6  su   € ð ‡��z×"Ñ"Ü˜yŸ~™~Ó/×4Ñ4×<Ñ<¸SÀ#ÓFÓGÐGØ	�‰˜×	)Ñ	)Ü! )§.¡.Ó"2×"7Ñ"7Ó8Ð8à×$Ñ$ØAð 	%ò 	
r   c                ó:   • U S;   a  [        S5      $ [        U 5      $ )N)Úplatform_python_implementationÚpython_implementationr¬   )r/   )Úenv_vars    r   r§   r§   D  s"   € ØÐMÓMÜÐ8Ó9Ð9ä˜Ó Ð r   c                óV   • [         R                  " U 5      n[        [        U5      5      $ r   )ÚastÚliteral_evalr8   r%   )Ú
python_strr   s     r   r©   r©   K  s!   € Ü×Ò˜ZÓ(€EÜ”�U“ÓÐr   c                óš  • U R                  S5      (       a  U R                  5         [        S5      $ U R                  S5      (       a;  U R                  5         U R                  SSS9  U R                  SSS9  [        S5      $ U R                  S	5      (       a#  [        U R                  5       R                  5      $ U R                  S
5      $ )z
marker_op = IN | NOT IN | OP
ÚINÚinÚNOTrW   zwhitespace after 'not'rY   z'in' after 'not'znot inÚOPzJExpected marker operator, one of <=, <, !=, ==, >=, >, ~=, ===, in, not in)rl   rm   r>   r]   r^   rv   rª   s    r   r�   r�   P  s®   € ð ‡��t×ÑØ�‰ÔÜ�$‹xˆØ	�‰˜×	Ñ	Ø�‰ÔØ×Ñ˜Ð(@ÐÑAØ×Ñ˜Ð(:ÐÑ;Ü�(‹|ÐØ	�‰˜×	Ñ	Ü�)—.‘.Ó"×'Ñ'Ó(Ð(à×+Ñ+ØXó
ð 	
r   )rS   r%   r&   rE   )ra   r
   r&   rE   )ra   r
   r&   z"tuple[str, str, MarkerList | None])ra   r
   ri   Úintrj   r%   r&   rC   )ra   r
   r&   rI   )ra   r
   r&   r%   )rS   r%   r&   rC   )ra   r
   r&   rC   )ra   r
   r&   rB   )ra   r
   r&   Ú
MarkerItem)ra   r
   r&   Ú	MarkerVar)r®   r%   r&   r/   )r²   r%   r&   r8   )ra   r
   r&   r>   )'Ú__doc__Ú
__future__r   r°   Útypingr   r   r   r   Ú
_tokenizerr	   r
   r   r/   r8   r>   rº   r¹   rB   r%   rC   rE   rT   rQ   r`   ro   r_   r~   rp   r†   r�   rŽ   rw   r”   rš   rœ   r§   r©   r�   r-   r   r   Ú<module>r¿      s*  ðñõ #ã 
ß 5Ó 5ç 0÷"ñ "ôˆtô ô
ˆDô ô
ˆô ð
 �(˜E�/Ñ"€	Ø�9˜b )Ð+Ñ,€
Ø�:˜x¨Ñ5Ð5Ñ6€
Ø�e˜L¨*°cÐ9Ñ:Ñ;€
ô˜
ô ôFôCð*0$Øð0$à'ô0$ðfØðØ),ðØ58ðàôô(ô&ô6ô"ô@Fôô	ôô,:ô
ô!ôõ

r   