
    -Ph<                        d dl mZ ddlmZ ddlmZmZ d dlZd dlZ	 G d de          Z
 G d	 d
e          Z G d de          ZdS )    )annotations   )mparser   )
AstVisitorFullAstVisitorNc                     e Zd ZdIdJd	ZdKdZdLdZdLdZdKdZdMdZdNdZ	dOdZ
dPdZdQdZdRdZdSd!ZdTd#ZdUd%ZdVd'ZdWd)ZdXd+ZdYd-ZdZd/Zd[d1Zd\d3Zd]d5Zd^d7Zd_d9Zd`d;Zdad=Zdbd?ZdcdAZdddCZdedEZ dfdGZ!dHS )g
AstPrinterr      Findentintarg_newline_cutoffupdate_ast_line_nosboolc                p    d| _         || _        || _        d| _        d| _        d| _        |rdnd | _        d S )N Tr   r   )resultr   r   ci
is_newline
last_level	curr_line)selfr   r   r   s       V/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/ast/printer.py__init__zAstPrinter.__init__   sA    "41;t    returnNonec                F    t          j        dd| j                  | _        d S )Nz\s+\n
)resubr   r   s    r   post_processzAstPrinter.post_process   s    fXtT[99r   datastrnodemparser.BaseNodec                    |j         | _        | j        r | xj        d|j         | j        z  z  z  c_        | xj        |z  c_        d| _        d S )N F)levelr   r   r   r   r   r$   r&   s      r   appendzAstPrinter.append   sN    *? 	<KK3$*t{":;;KKtr   c                n    | j         r| j         d         dvrd|z   }|                     |dz   |           d S )N)r)   r   r)   )r   r,   r+   s      r   append_paddedzAstPrinter.append_padded#   sC    ; 	4;r?+==:DD3J%%%%%r   c                f    | xj         dz  c_         d| _        | j        | xj        dz  c_        d S d S )Nr   Tr   )r   r   r   r"   s    r   newlinezAstPrinter.newline(   s=    t>%NNaNNNN &%r   mparser.BooleanNodec                j    |                      |j        rdnd|           | j        p|j        |_        d S Ntruefalse)r,   valuer   linenor   r&   s     r   visit_BooleanNodezAstPrinter.visit_BooleanNode.   s5    dj5FFgt<<<n3r   mparser.IdNodec                    t          |j        t                    sJ |                     |j        |           | j        p|j        |_        d S N)
isinstancer7   r%   r,   r   r8   r9   s     r   visit_IdNodezAstPrinter.visit_IdNode2   sD    $*c*****DJ%%%n3r   mparser.NumberNodec                |    |                      t          |j                  |           | j        p|j        |_        d S r=   )r,   r%   r7   r   r8   r9   s     r   visit_NumberNodezAstPrinter.visit_NumberNode7   s2    C
OOT***n3r   valc                V    |                     dd                               dd          S )N\z\\')replace)r   rC   s     r   escapezAstPrinter.escape;   s&    {{4((00d;;;r   mparser.StringNodec                X   t          |j        t                    sJ |j        r|                     d|           |j        r"|                     d|j        z   dz   |           n4|                     d|                     |j                  z   dz   |           | j        p|j        |_        d S Nfz'''rF   )	r>   r7   r%   
is_fstringr,   is_multilinerH   r   r8   r9   s     r   visit_StringNodezAstPrinter.visit_StringNode>   s    $*c*****? 	#KKT""" 	CKK
*U2D9999KKdkk$*555;TBBBn3r   mparser.ContinueNodec                X    |                      d|           | j        p|j        |_        d S Ncontinuer,   r   r8   r9   s     r   visit_ContinueNodezAstPrinter.visit_ContinueNodeI   s*    J%%%n3r   mparser.BreakNodec                X    |                      d|           | j        p|j        |_        d S NbreakrT   r9   s     r   visit_BreakNodezAstPrinter.visit_BreakNodeM   s*    GT"""n3r   mparser.ArrayNodec                    | j         p|j        |_        |                     d|           |j                            |            |                     d|           d S N[]r   r8   r,   argsacceptr9   s     r   visit_ArrayNodezAstPrinter.visit_ArrayNodeQ   V    n3C	Cr   mparser.DictNodec                    | j         p|j        |_        |                     d|           |j                            |            |                     d|           d S )N{}r`   r9   s     r   visit_DictNodezAstPrinter.visit_DictNodeW   rd   r   mparser.OrNodec                    |j                             |            |                     d|           | j        p|j        |_        |j                            |            d S )Norleftrb   r/   r   r8   rightr9   s     r   visit_OrNodezAstPrinter.visit_OrNode]   sZ    	4&&&n3
$r   mparser.AndNodec                    |j                             |            |                     d|           | j        p|j        |_        |j                            |            d S )Nandrm   r9   s     r   visit_AndNodezAstPrinter.visit_AndNodec   sZ    	5$'''n3
$r   mparser.ComparisonNodec                    |j                             |            |                     |j        dk    r|j        nd|           | j        p|j        |_        |j                            |            d S )Nnotinznot in)rn   rb   r/   ctyper   r8   ro   r9   s     r   visit_ComparisonNodezAstPrinter.visit_ComparisonNodei   sl    	w)>)>4::HdSSSn3
$r   mparser.ArithmeticNodec                    |j                             |            |                     |j        j        |           | j        p|j        |_        |j                            |            d S r=   )rn   rb   r/   operatorr7   r   r8   ro   r9   s     r   visit_ArithmeticNodezAstPrinter.visit_ArithmeticNodeo   s_    	4=.555n3
$r   mparser.NotNodec                    | j         p|j        |_        |                     d|           |j                            |            d S )Nnotr   r8   r/   r7   rb   r9   s     r   visit_NotNodezAstPrinter.visit_NotNodeu   sD    n35$'''
$r   mparser.CodeBlockNodec                    | j         p|j        |_        |j        D ]+}|                    |            |                                  ,d S r=   )r   r8   linesrb   r1   )r   r&   is      r   visit_CodeBlockNodezAstPrinter.visit_CodeBlockNodez   sK    n3 	 	AHHTNNNLLNNNN	 	r   mparser.IndexNodec                    |j                             |            | j        p|j        |_        |                     d|           |j                            |            |                     d|           d S r]   )iobjectrb   r   r8   r,   indexr9   s     r   visit_IndexNodezAstPrinter.visit_IndexNode   sl    D!!!n3C
$Cr   mparser.MethodNodec                   | j         p|j        |_        |j                            |            |                     d|j        j        z   dz   |           |j                            |            |                     d|           d S )N.())r   r8   source_objectrb   r,   namer7   ra   r9   s     r   visit_MethodNodezAstPrinter.visit_MethodNode   s{    n3!!$'''C$)/)C/666	Cr   mparser.FunctionNodec                    | j         p|j        |_        |                     |j        j        dz   |           |j                            |            |                     d|           d S )Nr   r   )r   r8   r,   	func_namer7   ra   rb   r9   s     r   visit_FunctionNodezAstPrinter.visit_FunctionNode   s`    n3DN(3.555	Cr   mparser.AssignmentNodec                    | j         p|j        |_        |                     |j        j        dz   |           |j                            |            d S )Nz = r   r8   r,   var_namer7   rb   r9   s     r   visit_AssignmentNodezAstPrinter.visit_AssignmentNode   sL    n3DM'%/666
$r   mparser.PlusAssignmentNodec                    | j         p|j        |_        |                     |j        j        dz   |           |j                            |            d S )Nz += r   r9   s     r   visit_PlusAssignmentNodez#AstPrinter.visit_PlusAssignmentNode   sL    n3DM'&0$777
$r   mparser.ForeachClauseNodec                   | j         p|j        |_        |                     d|           |                     d                    d |j        D                       |           |                     d|           |j                            |            |                                  |j                            |            | 	                    d|           d S )Nforeach, c              3  $   K   | ]}|j         V  d S r=   r7   .0varnames     r   	<genexpr>z5AstPrinter.visit_ForeachClauseNode.<locals>.<genexpr>   s$      $P$PwW]$P$P$P$P$P$Pr   :
endforeach)
r   r8   r/   joinvarnamesitemsrb   r1   blockr,   r9   s     r   visit_ForeachClauseNodez"AstPrinter.visit_ForeachClauseNode   s    n39d+++499$P$P$-$P$P$PPPRVWWW3%%%
$
$L$'''''r   mparser.IfClauseNodec                   | j         p|j        |_        d}|j        D ]2}|                     |dz   |           d}|                    |            3t          |j        t          j                  sD| 	                    d|           | 
                                 |j                            |            | 	                    d|           d S )Nr   ifelelseendif)r   r8   ifsr/   rb   r>   	elseblockr   	EmptyNoder,   r1   )r   r&   prefixr   s       r   visit_IfClauseNodezAstPrinter.visit_IfClauseNode   s    n3 	 	Av}d333FHHTNNNN$.'*;<< 	(KK%%%LLNNNN!!$'''GT"""""r   mparser.UMinusNodec                    | j         p|j        |_        |                     d|           |j                            |            d S )N-r   r9   s     r   visit_UMinusNodezAstPrinter.visit_UMinusNode   sD    n33%%%
$r   mparser.IfNodec                    | j         p|j        |_        |j                            |            |                                  |j                            |            d S r=   )r   r8   	conditionrb   r1   r   r9   s     r   visit_IfNodezAstPrinter.visit_IfNode   sQ    n3d###
$r   mparser.TernaryNodec                    | j         p|j        |_        |j                            |            |                     d|           |j                            |            |                     d|           |j                            |            d S )N?r   )r   r8   r   rb   r/   	trueblock
falseblockr9   s     r   visit_TernaryNodezAstPrinter.visit_TernaryNode   s    n3d###3%%%d###3%%%t$$$$$r   mparser.ArgumentNodec                   | j         p|j        |_        t          |j                  t          |j                  z   | j        k    }|j        t          |j                                                  z   D ]*}t          |t          j
        t          j        f          sd}+|r|                                  |j        D ]C}|                    |            |                     d|           |r|                                  D|j                                        D ]q\  }}|                    |            |                     d|           |                    |            |                     d|           |r|                                  r|r"t#          j        dd| j                  | _        d S t#          j        dd| j                  | _        d S )NTr   r   z, \n$r   z, $r   )r   r8   len	argumentskwargsr   listvaluesr>   r   ElementaryNode	IndexNoder1   rb   r,   r   r/   r    r!   r   )r   r&   
break_argsr   keyrC   s         r   visit_ArgumentNodezAstPrinter.visit_ArgumentNode   s   n3$.))C,<,<<@WW
$t{'9'9';';"<"<< 	" 	"Aa'"8':K!LMM "!
 	LLNNN 	 	AHHTNNNKKd### ))++ 	 	HCJJtsD)))JJtKKd###  	:&4==DKKK&T[99DKKKr   N)r   r   F)r   r   r   r   r   r   r   r   )r$   r%   r&   r'   r   r   r&   r2   r   r   r&   r;   r   r   r&   r@   r   r   )rC   r%   r   r%   r&   rI   r   r   r&   rP   r   r   r&   rV   r   r   r&   r[   r   r   r&   re   r   r   r&   rj   r   r   r&   rq   r   r   r&   ru   r   r   r&   rz   r   r   r&   r~   r   r   r&   r   r   r   r&   r   r   r   r&   r   r   r   r&   r   r   r   r&   r   r   r   r&   r   r   r   r&   r   r   r   r&   r   r   r   r&   r   r   r   r&   r   r   r   r&   r   r   r   r&   r   r   r   )"__name__
__module____qualname__r   r#   r,   r/   r1   r:   r?   rB   rH   rO   rU   rZ   rc   ri   rp   rt   ry   r}   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r   r
   r
      s       < < < < <: : : :       & & & &
       4 4 4 44 4 4 4
4 4 4 4< < < <	4 	4 	4 	44 4 4 44 4 4 4                                         
                   
       
( ( ( (# # # #       
       % % % %: : : : : :r   r
   c                  N    e 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dZ
dS )
RawPrinterr   r   c                    d| _         d S )Nr   )r   r"   s    r   r   zRawPrinter.__init__   s    r   r&   r'   c                    |                      |           t          |d          sJ | xj        |j        z  c_        |                     |           d S Nr7   )
enter_nodehasattrr   r7   	exit_noder9   s     r   visit_default_funczRawPrinter.visit_default_func   sT    tW%%%%%tz!tr   mparser.EmptyNodec                Z    |                      |           |                     |           d S r=   )r   r   r9   s     r   visit_EmptyNodezRawPrinter.visit_EmptyNode   s,    tr   r2   c                    |                      |           | xj        |j        rdndz  c_        |                     |           d S r4   )r   r   r7   r   r9   s     r   r:   zRawPrinter.visit_BooleanNode   sG    8vv8tr   r@   c                    |                      |           | xj        |j        z  c_        |                     |           d S r=   )r   r   	raw_valuer   r9   s     r   rB   zRawPrinter.visit_NumberNode   s>    t~%tr   rI   c                    |                      |           |j        r| xj        dz  c_        |j        r| xj        d|j         dz  c_        n| xj        d|j         dz  c_        |                     |           d S rK   )r   rM   r   rN   r7   r  r   r9   s     r   rO   zRawPrinter.visit_StringNode   s    ? 	KK3KK 	1KK00000KKKKK0t~0000KKtr   rP   c                z    |                      |           | xj        dz  c_        |                     |           d S rR   r   r   r   r9   s     r   rU   zRawPrinter.visit_ContinueNode  s<    z!tr   rV   c                z    |                      |           | xj        dz  c_        |                     |           d S rX   r  r9   s     r   rZ   zRawPrinter.visit_BreakNode	  s<    wtr   Nr   r&   r'   r   r   )r&   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r:   rB   rO   rU   rZ   r   r   r   r   r      s                    
   
      
     r   r   c                      e Zd ZdBdZdCdZdDdZdEdZdFdZdFdZdGdZ	dHdZ
dIdZdJdZdKdZdLdZdMdZdNd ZdOd"ZdPd$ZdQd&ZdRd(ZdSd*ZdTd,ZdUd.ZdVd0ZdWd2ZdXd4ZdYd6ZdZd8Zd[d:Zd\d<Zd]d>Zd^d@Z dAS )_AstJSONPrinterr   r   c                ,    i | _         | j         | _        d S r=   )r   currentr"   s    r   r   zAstJSONPrinter.__init__  s    *,{r   r   r%   r&   r'   c                r    | j         }i }|| _         |                    |            || _         || j         |<   d S r=   r  rb   )r   r   r&   oldr$   s        r   _acceptzAstJSONPrinter._accept  s@    l#%D Sr   nodesT.Sequence[mparser.BaseNode]c                    | j         }g }|D ])}i | _         |                    |            || j         gz  }*|| _         || j         |<   d S r=   r  )r   r   r  r  datalistr   s         r   _accept_listzAstJSONPrinter._accept_list  s\    l/1 	' 	'ADLHHTNNN&HH$Sr   r$   T.Dict[str, T.Any]c                Z    | j         }|| _         |                    |            || _         d S r=   r  )r   r&   r$   r  s       r   _raw_acceptzAstJSONPrinter._raw_accept&  s-    lDr   c                    t          |          j        | j        d<   |j        | j        d<   |j        | j        d<   |j        | j        d<   |j        | j        d<   d S )Nr&   r8   colno
end_lineno	end_colno)typer   r  r8   r  r  r  r9   s     r   setbasezAstJSONPrinter.setbase,  sU    #Dzz2V!%X $
W%)_\"$(N[!!!r   c                0    |                      |           d S r=   )r  r9   s     r   r   z!AstJSONPrinter.visit_default_func3  s    Tr   mparser.ElementaryNodec                N    |j         | j        d<   |                     |           d S r   )r7   r  r  r9   s     r   gen_ElementaryNodez!AstJSONPrinter.gen_ElementaryNode6  s(     $
WTr   r2   c                0    |                      |           d S r=   r"  r9   s     r   r:   z AstJSONPrinter.visit_BooleanNode:      %%%%%r   r;   c                0    |                      |           d S r=   r$  r9   s     r   r?   zAstJSONPrinter.visit_IdNode=  r%  r   r@   c                0    |                      |           d S r=   r$  r9   s     r   rB   zAstJSONPrinter.visit_NumberNode@  r%  r   rI   c                0    |                      |           d S r=   r$  r9   s     r   rO   zAstJSONPrinter.visit_StringNodeC  r%  r   r[   c                f    |                      d|j                   |                     |           d S Nra   r  ra   r  r9   s     r   rc   zAstJSONPrinter.visit_ArrayNodeF  0    VTY'''Tr   re   c                f    |                      d|j                   |                     |           d S r*  r+  r9   s     r   ri   zAstJSONPrinter.visit_DictNodeJ  r,  r   rj   c                    |                      d|j                   |                      d|j                   |                     |           d S Nrn   ro   r  rn   ro   r  r9   s     r   rp   zAstJSONPrinter.visit_OrNodeN  F    VTY'''Wdj)))Tr   rq   c                    |                      d|j                   |                      d|j                   |                     |           d S r/  r0  r9   s     r   rt   zAstJSONPrinter.visit_AndNodeS  r1  r   ru   c                    |                      d|j                   |                      d|j                   |j        | j        d<   |                     |           d S )Nrn   ro   rx   )r  rn   ro   rx   r  r  r9   s     r   ry   z#AstJSONPrinter.visit_ComparisonNodeX  sT    VTY'''Wdj))) $
WTr   rz   c                    |                      d|j                   |                      d|j                   |j        j        | j        d<   |                     |           d S )Nrn   ro   op)r  rn   ro   r|   r7   r  r  r9   s     r   r}   z#AstJSONPrinter.visit_ArithmeticNode^  sW    VTY'''Wdj)))!]0TTr   r~   c                f    |                      d|j                   |                     |           d S Nro   r  r7   r  r9   s     r   r   zAstJSONPrinter.visit_NotNoded  0    Wdj)))Tr   r   c                f    |                      d|j                   |                     |           d S )Nr   )r  r   r  r9   s     r   r   z"AstJSONPrinter.visit_CodeBlockNodeh  s2    '4:...Tr   r   c                    |                      d|j                   |                      d|j                   |                     |           d S )Nobjectr   )r  r   r   r  r9   s     r   r   zAstJSONPrinter.visit_IndexNodel  sF    Xt|,,,Wdj)))Tr   r   c                    |                      d|j                   |                      d|j                   |j        j        | j        d<   |                     |           d S )Nr<  ra   r   )r  r   ra   r   r7   r  r  r9   s     r   r   zAstJSONPrinter.visit_MethodNodeq  sW    Xt1222VTY'''#yVTr   r   c                    |                      d|j                   |j        j        | j        d<   |                     |           d S )Nra   r   )r  ra   r   r7   r  r  r9   s     r   r   z!AstJSONPrinter.visit_FunctionNodew  sA    VTY'''#~3VTr   r   c                    |                      d|j                   |j        j        | j        d<   |                     |           d S Nr7   r   r  r7   r   r  r  r9   s     r   r   z#AstJSONPrinter.visit_AssignmentNode|  A    Wdj)))#'=#6Z Tr   r   c                    |                      d|j                   |j        j        | j        d<   |                     |           d S r@  rA  r9   s     r   r   z'AstJSONPrinter.visit_PlusAssignmentNode  rB  r   r   c                    |                      d|j                   |                      d|j                   d |j        D             | j        d<   |                     |           d S )Nr   r   c                    g | ]	}|j         
S r   r   r   s     r   
<listcomp>z:AstJSONPrinter.visit_ForeachClauseNode.<locals>.<listcomp>  s    #O#O#OgGM#O#O#Or   r   )r  r   r   r   r  r  r9   s     r   r   z&AstJSONPrinter.visit_ForeachClauseNode  sb    Wdj)))Wdj)))#O#O#O#O#OZ Tr   r   c                    |                      d|j                   |                     d|j                   |                     |           d S )Nr   r   )r  r   r  r   r  r9   s     r   r   z!AstJSONPrinter.visit_IfClauseNode  sH    %***VT^,,,Tr   r   c                f    |                      d|j                   |                     |           d S r7  r8  r9   s     r   r   zAstJSONPrinter.visit_UMinusNode  r9  r   r   c                    |                      d|j                   |                      d|j                   |                     |           d S )Nr   r   )r  r   r   r  r9   s     r   r   zAstJSONPrinter.visit_IfNode  sF    [$.111Wdj)))Tr   r   c                    |                      d|j                   |                      d|j                   |                      d|j                   |                     |           d S )Nr   r5   r6   )r  r   r   r   r  r9   s     r   r   z AstJSONPrinter.visit_TernaryNode  s\    [$.111VT^,,,Wdo...Tr   r   c                .   |                      d|j                   g }|j                                        D ]>\  }}i }i }|                     ||           |                     ||           |||dgz  }?|| j        d<   |                     |           d S )N
positional)r   rC   r   )r  r   r   r   r  r  r  )r   r&   kwargs_listr   rC   key_resval_ress          r   r   z!AstJSONPrinter.visit_ArgumentNode  s    ,777?A))++ 	> 	>HC*,G*,GS'***S'***GG<<==KK!,XTr   Nr   )r   r%   r&   r'   r   r   )r   r%   r  r  r   r   )r&   r'   r$   r  r   r   r  )r&   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )!r   r   r   r   r  r  r  r  r   r"  r:   r?   rB   rO   rc   ri   rp   rt   ry   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
  r
    sl       # # # #! ! ! !% % % %   3 3 3 3      & & & && & & && & & && & & &         
   
               
      
   
   
      
      
   
 
 
 
 
 
r   r
  )
__future__r   r   r   visitorr   r   r    typingTr
   r   r
  r   r   r   <module>rT     s    # " " " " "       / / / / / / / / 				    P: P: P: P: P: P: P: P:d+ + + + + + + +\[ [ [ [ [Z [ [ [ [ [r   