§
    øyIfì   ã            	       óh  — d Z ddlZddlZddlZddlmZmZmZmZm	Z	 ddl
mZmZmZmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZ  G d„ de¦  «        Zdee         dee         fd„Z d'de!dee         defd„Z"de!dede#fd„Z$dede!fd„Z% G d„ de&¦  «        Z'de!de	e(e(f         de#dej)        fd„Z*de!dej)        fd„Z+de!d e!de!fd!„Z,dej)        dee!         fd"„Z-dej)        d#eej)                 d$ej)        dee!         fd%„Z.dej)        d#eej)                 dee!         fd&„Z/dS )(z/
Parse Python code and perform AST validation.
é    N)ÚIterableÚIteratorÚListÚSetÚTuple)ÚVERSION_TO_FEATURESÚFeatureÚTargetVersionÚsupports_feature)Úsyms)Úpygram)Údriver)ÚGrammar)Ú
ParseError)Ú
TokenError)ÚLeafÚNodec                   ó   — e Zd ZdZdS )ÚInvalidInputz7Raised when input source code fails all parse attempts.N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úA/var/www/piapp/venv/lib/python3.11/site-packages/black/parsing.pyr   r      s   € € € € € ØAÐAÐAÐAr   r   Útarget_versionsÚreturnc                 óÜ  — | s#t           j        t           j        t           j        gS g }t	          | t
          j        ¦  «        s9t	          | t
          j        ¦  «        s|                     t           j        ¦  «         t	          | t
          j	        ¦  «        s|                     t           j        ¦  «         t          d„ | D ¦   «         ¦  «        r|                     t           j        ¦  «         |S )Nc              3   óH   K  — | ]}t           j        t          |         v V — Œd S ©N)r	   ÚPATTERN_MATCHINGr   )Ú.0Úvs     r   ú	<genexpr>zget_grammars.<locals>.<genexpr>.   s0   è è € Ð
WÐ
WÀ!�7Ô#Õ':¸1Ô'=Ð=Ð
WÐ
WÐ
WÐ
WÐ
WÐ
Wr   )r   Úpython_grammar_async_keywordsÚpython_grammarÚpython_grammar_soft_keywordsr   r	   ÚASYNC_IDENTIFIERSr#   ÚappendÚASYNC_KEYWORDSÚany)r   Úgrammarss     r   Úget_grammarsr/      sÚ   € Øð 	
õ Ô0åÔ!åÔ/ð
ð 	
ð €HåØ�Ô2ñô ð >å˜µÔ0HÑIÔIð>ð 	�Š�Ô<Ñ=Ô=Ð=Ý˜O­WÔ-CÑDÔDð /à�Š�Ô-Ñ.Ô.Ð.Ý
Ð
WÐ
WÀÐ
WÑ
WÔ
WÑWÔWð =à�Š�Ô;Ñ<Ô<Ð<ð €Or   r   Úsrc_txtc                 ó   — |                       d¦  «        s| dz  } t          t          |¦  «        ¦  «        }i }|D ]õ}t          j        |¦  «        }	 |                     | d¦  «        } nô# t          $ rm}|j        d         \  }}	|                      ¦   «         }
	 |
|dz
           }n# t          $ r d}Y nw xY wt          d|› d|	› d|› �¦  «        ||j        <   Y d}~Œ¡d}~wt          $ rE}|j        d         \  }}	t          d|› d|	› d|j        d	         › �¦  «        ||j        <   Y d}~Œîd}~ww xY wt          |¦  «        dk    sJ ‚|t          |¦  «                 }|d‚t!          |t"          ¦  «        rt%          t&          j        |g¦  «        }|S )
z4Given a string with source, return the lib2to3 Node.ú
Té   z<line number missing in source>zCannot parse: ú:z: Nr   )Úendswithr/   Úsetr   ÚDriverÚparse_stringr   ÚcontextÚ
splitlinesÚ
IndexErrorr   Úversionr   ÚargsÚlenÚmaxÚ
isinstancer   r   r   Ú
file_input)r0   r   r.   ÚerrorsÚgrammarÚdrvÚresultÚpeÚlinenoÚcolumnÚlinesÚfaulty_lineÚteÚexcs                 r   Úlib2to3_parserM   7   sý  € à×Ò˜DÑ!Ô!ð Ø�4‰ˆå�C Ñ0Ô0Ñ1Ô1€HØ€FØð ð ˆÝŒm˜GÑ$Ô$ˆð	Ø×%Ò% g¨tÑ4Ô4ˆFØˆEøåð 		ð 		ð 		ØœZ¨œ]‰NˆF�FØ×&Ò&Ñ(Ô(ˆEð@Ø# F¨Q¡JÔ/��øÝð @ð @ð @Ø?���ð@øøøå&2ØA ÐAÐA¨&ÐAÐA°KÐAÐAñ'ô 'ˆF�7”?Ñ#Ð#Ð#Ð#Ð#Ð#øøøøõ ð 	ð 	ð 	àœW QœZ‰NˆF�FÝ&2Ø@ Ð@Ð@¨&Ð@Ð@°B´G¸A´JÐ@Ð@ñ'ô 'ˆF�7”?Ñ#Ð#Ð#Ð#Ð#Ð#øøøøð	øøøõ �6‰{Œ{˜aÒÐÐÐØ•S˜‘[”[Ô!ˆØ�tÐå�&�$ÑÔð 1Ý•d”o¨ xÑ0Ô0ˆØ€MsH   ÁA*Á*
D.Á4$CÂB%Â$CÂ%B4Â1CÂ3B4Â4#CÃD.Ã);D)Ä)D.rC   c                 ó˜   — t          j        |¦  «        }	 |                     | d¦  «         dS # t          t          t
          f$ r Y dS w xY w)NTF)r   r7   r8   r   r   ÚIndentationError)r0   rC   rD   s      r   Úmatches_grammarrP   a   s_   € Ý
Œ-˜Ñ
 Ô
 €CðØ×Ò˜ $Ñ'Ô'Ð'ð ˆtøõ �
Õ$4Ð5ð ð ð Øˆuˆuðøøøs   –. ®A	ÁA	Únodec                 ó$   — t          | ¦  «        }|S )z7Given a lib2to3 node, return its string representation.)Ústr)rQ   Úcodes     r   Úlib2to3_unparserU   k   s   € åˆt‰9Œ9€DØ€Kr   c                   ó   — e Zd ZdZdS )ÚASTSafetyErrorzDRaised when Black's generated code is not equivalent to the old AST.Nr   r   r   r   rW   rW   q   s   € € € € € ØNÐNÐNÐNr   rW   Úsrcr<   Útype_commentsc                óø   — d}t          j        ¦   «         5  t          j        dt          ¦  «         t          j        dt          ¦  «         t          j        | |||¬¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )Nz	<unknown>Úignore)Úfeature_versionrY   )ÚwarningsÚcatch_warningsÚsimplefilterÚSyntaxWarningÚDeprecationWarningÚastÚparse)rX   r<   rY   Úfilenames       r   Ú_parse_single_versionre   u   sÀ   € ð €HÝ	Ô	 Ñ	"Ô	"ð 
ð 
ÝÔ˜h­Ñ6Ô6Ð6ÝÔ˜hÕ(:Ñ;Ô;Ð;ÝŒyØ�¨7À-ð
ñ 
ô 
ð
ð 
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   –AA/Á/A3Á6A3c                 óŽ  — d„ t          dt          j        d         dz   ¦  «        D ¦   «         }d}t          |d¬¦  «        D ]>}	 t	          | |d¬¦  «        c S # t
          $ r}|st          |¦  «        }Y d }~Œ7d }~ww xY wt          |d¬¦  «        D ]&}	 t	          | |d¬¦  «        c S # t
          $ r Y Œ#w xY wt          |¦  «        ‚)	Nc                 ó   — g | ]}d |f‘ŒS )é   r   )r$   Úminors     r   ú
<listcomp>zparse_ast.<locals>.<listcomp>ƒ   s   € ÐJÐJÐJ˜u��E�
ÐJÐJÐJr   rh   r3   Ú T)Úreverse)rY   F)ÚrangeÚsysÚversion_infoÚsortedre   ÚSyntaxErrorrS   )rX   ÚversionsÚfirst_errorr<   Úes        r   Ú	parse_astru   �   s  € àJÐJ­¨aµÔ1AÀ!Ô1DÀqÑ1HÑ(IÔ(IÐJÑJÔJ€Hà€KÝ˜(¨DÐ1Ñ1Ô1ð %ð %ˆð	%Ý(¨¨gÀTÐJÑJÔJÐJÐJÐJøÝð 	%ð 	%ð 	%Øð %Ý! !™fœf�øøøøøøøøøð	%øøøõ
 ˜(¨DÐ1Ñ1Ô1ð ð ˆð	Ý(¨¨gÀUÐKÑKÔKÐKÐKÐKøÝð 	ð 	ð 	ØˆDð	øøøõ �kÑ
"Ô
"Ð"s*   ÁAÁ
A=Á"A8Á8A=ÂB(Â(
B5Â4B5ÚlineendÚvaluec                 ó�   — d„ |                      ¦   «         D ¦   «         }|                      |¦  «        }|                     ¦   «         S )Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   )Ústrip)r$   Úis     r   rj   z_normalize.<locals>.<listcomp>š   s    € ÐAÐAÐA¨˜1Ÿ7š7™9œ9ÐAÐAÐAr   )r:   Újoinrz   )rv   rw   ÚstrippedÚ
normalizeds       r   Ú
_normalizer   —   sI   € ð BÐA¨e×.>Ò.>Ñ.@Ô.@ÐAÑAÔA€HØ—’˜hÑ'Ô'€Jð ×ÒÑÔÐr   c                 ó"   — t          | g ¦  «        S )z=Simple visitor generating strings to compare ASTs by content.)Ú_stringify_ast)rQ   s    r   Ústringify_astr‚   ¡   s   € å˜$ Ñ#Ô#Ð#r   Úparent_stackÚ
new_parentc              #   óˆ   K  — |                      |¦  «         t          | |¦  «        E d {V —† |                     ¦   «          d S r"   )r+   r�   Úpop)rQ   rƒ   r„   s      r   Ú_stringify_ast_with_new_parentr‡   ¦   sV   è è € ð ×Ò˜
Ñ#Ô#Ð#Ý˜d LÑ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ø×ÒÑÔÐÐÐr   c              #   óh  K  — t          | t          j        ¦  «        r,t          | j        t          ¦  «        r| j        dk    rd | _        dt          |¦  «        z  › | j        j        › d�V — t          | j
        ¦  «        D �]}t          | t          j        ¦  «        r �nï	 t          | |¦  «        }n# t          $ r Y Œ>w xY wdt          |¦  «        dz   z  › |› d�V — t          |t          ¦  «        r”|D ]�}|dk    rVt          | t          j        ¦  «        r<t          |t          j        ¦  «        r"|j        D ]}t%          ||| ¦  «        E d {V —† ŒŒ^t          |t          j        ¦  «        rt%          ||| ¦  «        E d {V —† Œ��Œt          |t          j        ¦  «        rt%          ||| ¦  «        E d {V —† �Œ:t          | t          j        ¦  «        r_|dk    rYt          |t          ¦  «        rDt          |¦  «        dk    r1t          |d	         t          j        ¦  «        rt+          d
|¦  «        }n2|dk    r*t          |t          ¦  «        r|                     ¦   «         }n|}dt          |¦  «        dz   z  › |›d|j        j        › �V — �Œdt          |¦  «        z  › d| j        j        › �V — d S )NÚuz    ú(r3   ú=Útargetsrw   é   éÿÿÿÿr2   Útype_commentz,  # z)  # /)r@   rb   ÚConstantrw   rS   Úkindr>   Ú	__class__r   rp   Ú_fieldsÚ
TypeIgnoreÚgetattrÚAttributeErrorÚlistÚDeleter   Úeltsr‡   ÚASTÚExprr   Úrstrip)rQ   rƒ   Úfieldrw   ÚitemÚeltr~   s          r   r�   r�   ®   sV  è è € å�4�œÑ&Ô&ðå�t”z¥3Ñ'Ô'ðð ŒI˜ÒÐð
 ˆŒ	à•c˜,Ñ'Ô'Ñ'Ð
C¨¬Ô)@Ð
CÐ
CÐ
CÐCÐCÐCå˜œÑ%Ô%ð 7ñ 7ˆå�d�CœNÑ+Ô+ð 	Ø‰Eð	Ý# D¨%Ñ0Ô0ˆEˆEøÝð 	ð 	ð 	ØˆHð	øøøð �3˜|Ñ,Ô,¨qÑ0Ñ1Ð;°5Ð;Ð;Ð;Ð;Ð;Ð;å�e�TÑ"Ô"ð +	Øð Xð X�ð ˜YÒ&Ð&Ý" 4­¬Ñ4Ô4ð 'å" 4­¬Ñ3Ô3ð 'ð  $œyð ð ˜Ý#AØ ¨tñ$ô $ð ð ð ð ð ð ð ð ðõ
   ¥c¤gÑ.Ô.ð XÝ=¸dÀLÐRVÑWÔWÐWÐWÐWÐWÐWÐWÐWøñXõ  ˜�sœwÑ'Ô'ð 	Ý5°e¸\È4ÑPÔPÐPÐPÐPÐPÐPÐPÐPÑPõ
 ˜4¥¤Ñ.Ô.ð#à˜WÒ$Ð$Ý˜u¥cÑ*Ô*ð %å˜Ñ%Ô%¨Ò*Ð*õ ˜|¨BÔ/µ´Ñ:Ô:ð +õ (¨¨eÑ4Ô4�
�
Ø˜.Ò(Ð(­Z¸½sÑ-CÔ-CÐ(à"Ÿ\š\™^œ^�
�
à"�
à�S Ñ.Ô.°Ñ2Ñ3ð /°Zð /ð /Ø”OÔ,ð/ð /ðð ð ñ ð
 •c˜,Ñ'Ô'Ñ'Ð
HÐ
H¨t¬~Ô/FÐ
HÐ
HÐHÐHÐHÐHÐHs   Â!B2Â2
B?Â>B?)r   )0r   rb   rn   r]   Útypingr   r   r   r   r   Ú
black.moder   r	   r
   r   Úblack.nodesr   Úblib2to3r   Úblib2to3.pgen2r   Úblib2to3.pgen2.grammarr   Úblib2to3.pgen2.parser   Úblib2to3.pgen2.tokenizer   Úblib2to3.pytreer   r   Ú
ValueErrorr   r/   rS   rM   ÚboolrP   rU   Ú	ExceptionrW   Úintrš   re   ru   r   r‚   r‡   r�   r   r   r   ú<module>r­      sS  ððð ð €
€
€
Ø 
€
€
€
Ø €€€Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7à TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TØ Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø *Ð *Ð *Ð *Ð *Ð *Ø +Ð +Ð +Ð +Ð +Ð +Ø .Ð .Ð .Ð .Ð .Ð .Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &ðBð Bð Bð Bð B�:ñ Bô Bð Bð # mÔ"4ð ¸¸g¼ð ð ð ð ð>'ð '˜3ð '°¸-Ô1Hð 'ÐRVð 'ð 'ð 'ð 'ðT˜Sð ¨7ð °tð ð ð ð ð˜$ð  3ð ð ð ð ðOð Oð Oð Oð O�Yñ Oô Oð Oð	
Ø	ð	
Ø˜S #˜X”ð	
Ø:>ð	
à„Wð	
ð 	
ð 	
ð 	
ð#�3ð #˜3œ7ð #ð #ð #ð #ð,˜ð  Cð ¨Cð ð ð ð ð$˜œð $ H¨S¤Mð $ð $ð $ð $ð
Ø
Œ'ðØ!% c¤g¤ðØ<?¼Gðàˆc„]ðð ð ð ðFI˜œð FI°°S´W´ð FIÀ(È3Ä-ð FIð FIð FIð FIð FIð FIr   