
    e*Y                        d dl mZ ddlmZ ddlmZ d dlmZ d dlZd dl	Z
dd	d
dddZ G d de      Z G d de      Z G d de      Zy)    )annotations   )mparser   )
AstVisitor)zip_longestN+-%*/)addsubmodmuldivc                     e Zd Zd$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+d	Zd,d
Zd-dZd,dZd-dZd.dZd/dZd0dZd1dZd2dZd3dZd4dZd5dZd6dZd7dZd8dZd9dZd:dZd;dZd<dZd=dZd>dZ d?dZ!d@d Z"dAd!Z#dBd"Z$y#)C
AstPrinterc                z    d| _         || _        || _        d| _        d| _        d| _        |rd| _        y d | _        y )N Tr   r   )resultindentarg_newline_cutoffci
is_newline
last_level	curr_line)selfr   r   update_ast_line_noss       8/usr/lib/python3/dist-packages/mesonbuild/ast/printer.py__init__zAstPrinter.__init__#   s<    "41t    c                P    t        j                  dd| j                        | _        y )Nz\s+\n
)rer   r   r   s    r    post_processzAstPrinter.post_process,   s    ffXtT[[9r"   c                    |j                   | _        | j                  r/| xj                  d|j                   | j                  z  z  z  c_        | xj                  |z  c_        d| _        y )N F)levelr   r   r   r   r   datanodes      r    appendzAstPrinter.append/   sI    **??KK3$**t{{":;;Ktr"   c                r    | j                   r| j                   d   dvrd|z   }| j                  |dz   |       y )N)r)   r$   r)   )r   r.   r+   s      r    append_paddedzAstPrinter.append_padded6   s3    ;;4;;r?+=:DD3J%r"   c                    | xj                   dz  c_         d| _        | j                  | xj                  dz  c_        y y )Nr$   Tr   )r   r   r   r&   s    r    newlinezAstPrinter.newline;   s4    t>>%NNaN &r"   c                    | j                  |j                  rdnd|       | j                  xs |j                  |_        y Ntruefalse)r.   valuer   linenor   r-   s     r    visit_BooleanNodezAstPrinter.visit_BooleanNodeA   s,    djjFgt<nn3r"   c                    t        |j                  t              sJ | j                  |j                  |       | j                  xs |j
                  |_        y N
isinstancer8   strr.   r   r9   r:   s     r    visit_IdNodezAstPrinter.visit_IdNodeE   s<    $**c***DJJ%nn3r"   c                    | j                  t        |j                        |       | j                  xs |j                  |_        y r=   )r.   r@   r8   r   r9   r:   s     r    visit_NumberNodezAstPrinter.visit_NumberNodeJ   s,    C

OT*nn3r"   c                P    |j                  t        j                  ddd            S )Nz\'z\\)'\)	translater@   	maketrans)r   vals     r    escapezAstPrinter.escapeN   s(    }}S]]&28,: ; < 	<r"   c                    t        |j                  t              sJ | j                  d| j	                  |j                        z   dz   |       | j
                  xs |j                  |_        y NrE   r?   r8   r@   r.   rJ   r   r9   r:   s     r    visit_StringNodezAstPrinter.visit_StringNodeR   sO    $**c***C$++djj11C7>nn3r"   c                    t        |j                  t              sJ | j                  d| j	                  |j                        z   dz   |       | j
                  xs |j                  |_        y )Nzf'rE   rM   r:   s     r    visit_FormatStringNodez!AstPrinter.visit_FormatStringNodeW   sO    $**c***D4;;tzz22S8$?nn3r"   c                    t        |j                  t              sJ | j                  d|j                  z   dz   |       | j                  xs |j
                  |_        y N'''r>   r:   s     r    visit_MultilineStringNodez$AstPrinter.visit_MultilineStringNode\   sF    $**c***EDJJ&.5nn3r"   c                    t        |j                  t              sJ | j                  d|j                  z   dz   |       | j                  xs |j
                  |_        y )Nzf'''rS   r>   r:   s     r    visit_FormatMultilineStringNodez*AstPrinter.visit_FormatMultilineStringNodea   sF    $**c***FTZZ'%/6nn3r"   c                f    | j                  d|       | j                  xs |j                  |_        y Ncontinuer.   r   r9   r:   s     r    visit_ContinueNodezAstPrinter.visit_ContinueNodef   s$    J%nn3r"   c                f    | j                  d|       | j                  xs |j                  |_        y NbreakrZ   r:   s     r    visit_BreakNodezAstPrinter.visit_BreakNodej   s$    GT"nn3r"   c                    | j                   xs |j                  |_        | j                  d|       |j                  j	                  |        | j                  d|       y N[]r   r9   r.   argsacceptr:   s     r    visit_ArrayNodezAstPrinter.visit_ArrayNoden   D    nn3C		Cr"   c                    | j                   xs |j                  |_        | j                  d|       |j                  j	                  |        | j                  d|       y )N{}rd   r:   s     r    visit_DictNodezAstPrinter.visit_DictNodet   rh   r"   c                    |j                   j                  |        | j                  d|       | j                  xs |j                  |_        |j
                  j                  |        y )Norleftrf   r1   r   r9   rightr:   s     r    visit_OrNodezAstPrinter.visit_OrNodez   sJ    		4&nn3

$r"   c                    |j                   j                  |        | j                  d|       | j                  xs |j                  |_        |j
                  j                  |        y )Nandro   r:   s     r    visit_AndNodezAstPrinter.visit_AndNode   sJ    		5$'nn3

$r"   c                    |j                   j                  |        | j                  |j                  |       | j                  xs |j
                  |_        |j                  j                  |        y r=   )rp   rf   r1   ctyper   r9   rq   r:   s     r    visit_ComparisonNodezAstPrinter.visit_ComparisonNode   sN    		4::t,nn3

$r"   c                    |j                   j                  |        | j                  t        |j                     |       | j
                  xs |j                  |_        |j                  j                  |        y r=   )rp   rf   r1   arithmic_map	operationr   r9   rq   r:   s     r    visit_ArithmeticNodezAstPrinter.visit_ArithmeticNode   sS    		<7>nn3

$r"   c                    | j                   xs |j                  |_        | j                  d|       |j                  j	                  |        y )Nnotr   r9   r1   r8   rf   r:   s     r    visit_NotNodezAstPrinter.visit_NotNode   s8    nn35$'

$r"   c                    | j                   xs |j                  |_        |j                  D ]#  }|j                  |        | j	                          % y r=   )r   r9   linesrf   r3   r   r-   is      r    visit_CodeBlockNodezAstPrinter.visit_CodeBlockNode   s=    nn3 	AHHTNLLN	r"   c                    |j                   j                  |        | j                  xs |j                  |_        | j	                  d|       |j
                  j                  |        | j	                  d|       y ra   )iobjectrf   r   r9   r.   indexr:   s     r    visit_IndexNodezAstPrinter.visit_IndexNode   sV    D!nn3C

$Cr"   c                *   | j                   xs |j                  |_        |j                  j                  |        | j	                  d|j
                  j                  z   dz   |       |j                  j                  |        | j	                  d|       y )N.())r   r9   source_objectrf   r.   namer8   re   r:   s     r    visit_MethodNodezAstPrinter.visit_MethodNode   sj    nn3!!$'C$))//)C/6		Cr"   c                    | j                   xs |j                  |_        | j                  |j                  j                  dz   |       |j
                  j                  |        | j                  d|       y )Nr   r   )r   r9   r.   	func_namer8   re   rf   r:   s     r    visit_FunctionNodezAstPrinter.visit_FunctionNode   sS    nn3DNN((3.5		Cr"   c                    | j                   xs |j                  |_        | j                  |j                  j                  dz   |       |j                  j                  |        y )Nz = r   r9   r.   var_namer8   rf   r:   s     r    visit_AssignmentNodezAstPrinter.visit_AssignmentNode   sE    nn3DMM''%/6

$r"   c                    | j                   xs |j                  |_        | j                  |j                  j                  dz   |       |j                  j                  |        y )Nz += r   r:   s     r    visit_PlusAssignmentNodez#AstPrinter.visit_PlusAssignmentNode   sE    nn3DMM''&0$7

$r"   c                   | j                   xs |j                  |_        | j                  d|       | j                  dj                  d |j                  D              |       | j                  d|       |j
                  j                  |        | j                          |j                  j                  |        | j                  d|       y )Nforeach, c              3  4   K   | ]  }|j                     y wr=   )r8   ).0varnames     r    	<genexpr>z5AstPrinter.visit_ForeachClauseNode.<locals>.<genexpr>   s     $PwW]]$Ps   :
endforeach)
r   r9   r1   joinvarnamesitemsrf   r3   blockr.   r:   s     r    visit_ForeachClauseNodez"AstPrinter.visit_ForeachClauseNode   s    nn39d+499$P$--$PPRVW3%

$

$L$'r"   c                ~   | j                   xs |j                  |_        d}|j                  D ]*  }| j                  |dz   |       d}|j	                  |        , t        |j                  t        j                        s-| j                  d|       |j                  j	                  |        | j                  d|       y )Nr   ifelelseendif)
r   r9   ifsr1   rf   r?   	elseblockr   	EmptyNoder.   )r   r-   prefixr   s       r    visit_IfClauseNodezAstPrinter.visit_IfClauseNode   s    nn3 	Av}d3FHHTN	 $..'*;*;<KK%NN!!$'GT"r"   c                    | j                   xs |j                  |_        | j                  d|       |j                  j	                  |        y )Nr
   r   r:   s     r    visit_UMinusNodezAstPrinter.visit_UMinusNode   s8    nn33%

$r"   c                    | j                   xs |j                  |_        |j                  j                  |        | j	                          |j
                  j                  |        y r=   )r   r9   	conditionrf   r3   r   r:   s     r    visit_IfNodezAstPrinter.visit_IfNode   sC    nn3d#

$r"   c                ,   | j                   xs |j                  |_        |j                  j                  |        | j	                  d|       |j
                  j                  |        | j	                  d|       |j                  j                  |        y )N?r   )r   r9   r   rf   r1   	trueblock
falseblockr:   s     r    visit_TernaryNodezAstPrinter.visit_TernaryNode   sl    nn3d#3%d#3%t$r"   c                   | j                   xs |j                  |_        t        |j                        t        |j                        z   | j
                  kD  }|j                  t        |j                  j                               z   D ]/  }t        |t        j                  t        j                  f      r.d}1 |r| j                          |j                  D ]8  }|j                  |        | j                  d|       |s)| j                          : |j                  j                         D ]^  \  }}|j                  |        | j!                  d|       |j                  |        | j                  d|       |sO| j                          ` |r't#        j$                  dd| j&                        | _        y t#        j$                  dd| j&                        | _        y )NTr   r   z, \n$r$   z, $r   )r   r9   len	argumentskwargsr   listvaluesr?   r   ElementaryNode	IndexNoder3   rf   r.   r   r1   r%   r   r   )r   r-   
break_argsr   keyrI   s         r    visit_ArgumentNodezAstPrinter.visit_ArgumentNode   sf   nn3$..)C,<<@W@WW
$t{{'9'9';"<< 	"Aa'"8"8':K:K!LM!
	" LLN 	AHHTNKKd#		
 ))+ 	HCJJtsD)JJtKKd#	 &&4=DK&&T[[9DKr"   N)r      F)r   intr   r   r   boolreturnNone)r,   r@   r-   mparser.BaseNoder   r   r-   zmparser.BooleanNoder   r   r-   zmparser.IdNoder   r   r-   zmparser.NumberNoder   r   )rI   r@   r   r@   r-   zmparser.StringNoder   r   r-   zmparser.FormatStringNoder   r   r-   zmparser.ContinueNoder   r   r-   zmparser.BreakNoder   r   r-   zmparser.ArrayNoder   r   r-   zmparser.DictNoder   r   r-   zmparser.OrNoder   r   r-   zmparser.AndNoder   r   r-   zmparser.ComparisonNoder   r   r-   zmparser.ArithmeticNoder   r   r-   zmparser.NotNoder   r   r-   zmparser.CodeBlockNoder   r   r-   zmparser.IndexNoder   r   r-   zmparser.MethodNoder   r   r-   zmparser.FunctionNoder   r   r-   zmparser.AssignmentNoder   r   r-   zmparser.PlusAssignmentNoder   r   r-   zmparser.ForeachClauseNoder   r   r-   zmparser.IfClauseNoder   r   r-   zmparser.UMinusNoder   r   r-   zmparser.IfNoder   r   r-   zmparser.TernaryNoder   r   r-   zmparser.ArgumentNoder   r   )%__name__
__module____qualname__r!   r'   r.   r1   r3   r;   rA   rC   rJ   rN   rP   rT   rV   r[   r_   rg   rl   rr   ru   rx   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     
 
 
(
# 
 %:r"   r   c                     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*d	Zd+d
Zd,dZd-dZd.dZd/dZd0dZd1dZd2dZd3dZd4dZd5dZd6dZd7dZd8dZd9dZd:dZd;dZd<dZd=dZd>dZd?dZ d@dZ!dAd Z"dBd!Z#y")C
RawPrinterc                    d| _         y )Nr   )r   r&   s    r    r!   zRawPrinter.__init__   s	    r"   c                    | xj                   |j                  z  c_         |j                  r|j                  j                  |        y y r=   r   r8   whitespacesrf   r:   s     r    visit_default_funczRawPrinter.visit_default_func  s6    tzz!##D) r"   c                    |j                   j                  |        |j                  j                  |        |j                  r|j                  j                  |        y y r=   )operatorrf   r8   r   r:   s     r    visit_unary_operatorzRawPrinter.visit_unary_operator  sH    T"

$##D) r"   c                    |j                   j                  |        |j                  j                  |        |j                  j                  |        |j                  r|j                  j                  |        y y r=   )rp   rf   r   rq   r   r:   s     r    visit_binary_operatorz RawPrinter.visit_binary_operator  sZ    		T"

$##D) r"   c                    | xj                   |j                  rdndz  c_         |j                  r|j                  j                  |        y y r5   r   r:   s     r    r;   zRawPrinter.visit_BooleanNode  s:    v8##D) r"   c                    | xj                   |j                  z  c_         |j                  r|j                  j                  |        y y r=   r   	raw_valuer   rf   r:   s     r    rC   zRawPrinter.visit_NumberNode  s6    t~~%##D) r"   c                    | xj                   d|j                   dz  c_         |j                  r|j                  j                  |        y y rL   r   r:   s     r    rN   zRawPrinter.visit_StringNode  s@    4>>*!,,##D) r"   c                    | xj                   d|j                   dz  c_         |j                  r|j                  j                  |        y y rR   r   r:   s     r    rT   z$RawPrinter.visit_MultilineStringNode#  s?    TZZL,,##D) r"   c                P    | xj                   dz  c_         | j                  |       y Nf)r   rN   r:   s     r    rP   z!RawPrinter.visit_FormatStringNode(  s    sd#r"   c                P    | xj                   dz  c_         | j                  |       y r   )r   rT   r:   s     r    visit_MultilineFormatStringNodez*RawPrinter.visit_MultilineFormatStringNode,  s    s&&t,r"   c                ~    | xj                   dz  c_         |j                  r|j                  j                  |        y y rX   r   r   rf   r:   s     r    r[   zRawPrinter.visit_ContinueNode0  s2    z!##D) r"   c                ~    | xj                   dz  c_         |j                  r|j                  j                  |        y y r]   r  r:   s     r    r_   zRawPrinter.visit_BreakNode5  s2    w##D) r"   c                    |j                   j                  |        |j                  j                  |        |j                  j                  |        |j                  r|j                  j                  |        y y r=   )lbracketrf   re   rbracketr   r:   s     r    rg   zRawPrinter.visit_ArrayNode:  sZ    T"		T"##D) r"   c                    |j                   j                  |        |j                  j                  |        |j                  j                  |        |j                  r|j                  j                  |        y y r=   )lcurlrf   re   rcurlr   r:   s     r    rl   zRawPrinter.visit_DictNodeA  sZ    

$		

$##D) r"   c                    |j                   j                  |        |j                  j                  |        |j                  j                  |        |j                  r|j                  j                  |        y y r=   )lparrf   innerrparr   r:   s     r    visit_ParenthesizedNodez"RawPrinter.visit_ParenthesizedNodeH  sZ    		

$		##D) r"   c                &    | j                  |       y r=   r   r:   s     r    rr   zRawPrinter.visit_OrNodeO      ""4(r"   c                &    | j                  |       y r=   r  r:   s     r    ru   zRawPrinter.visit_AndNodeR  r  r"   c                &    | j                  |       y r=   r  r:   s     r    rx   zRawPrinter.visit_ComparisonNodeU  r  r"   c                &    | j                  |       y r=   r  r:   s     r    r|   zRawPrinter.visit_ArithmeticNodeX  r  r"   c                &    | j                  |       y r=   r   r:   s     r    r   zRawPrinter.visit_NotNode[      !!$'r"   c                    |j                   r|j                   j                  |        |j                  D ]  }|j                  |         |j                  r|j                  j                  |        y y r=   )pre_whitespacesrf   r   r   r   s      r    r   zRawPrinter.visit_CodeBlockNode^  s_      ''- 	AHHTN	##D) r"   c                ,   |j                   j                  |        |j                  j                  |        |j                  j                  |        |j                  j                  |        |j
                  r|j
                  j                  |        y y r=   )r   rf   r  r   r  r   r:   s     r    r   zRawPrinter.visit_IndexNodef  sl    D!T"

$T"##D) r"   c                   |j                   j                  |        |j                  j                  |        |j                  j                  |        |j                  j                  |        |j
                  j                  |        |j                  j                  |        |j                  r|j                  j                  |        y y r=   )r   rf   dotr   r  re   r  r   r:   s     r    r   zRawPrinter.visit_MethodNoden  s    !!$'								##D) r"   c                ,   |j                   j                  |        |j                  j                  |        |j                  j                  |        |j                  j                  |        |j
                  r|j
                  j                  |        y y r=   )r   rf   r  re   r  r   r:   s     r    r   zRawPrinter.visit_FunctionNodex  sl    d#						##D) r"   c                    |j                   j                  |        |j                  j                  |        |j                  j                  |        |j                  r|j                  j                  |        y y r=   r   rf   r   r8   r   r:   s     r    r   zRawPrinter.visit_AssignmentNode  Z    T"T"

$##D) r"   c                    |j                   j                  |        |j                  j                  |        |j                  j                  |        |j                  r|j                  j                  |        y y r=   r!  r:   s     r    r   z#RawPrinter.visit_PlusAssignmentNode  r"  r"   c                   |j                   j                  |        t        |j                  |j                        D ]*  \  }}|j                  |        ||j                  |        , |j
                  j                  |        |j                  j                  |        |j                  j                  |        |j                  j                  |        |j                  r|j                  j                  |        y y r=   )
foreach_rf   r   r   commascolumnr   r   r   r   )r   r-   r   commas       r    r   z"RawPrinter.visit_ForeachClauseNode  s    T")$--E 	#NGUNN4  T"	# 	4 

$

$t$##D) r"   c                L   |j                   D ]  }|j                  |         t        |j                  t        j
                        s|j                  j                  |        |j                  j                  |        |j                  r|j                  j                  |        y y r=   )r   rf   r?   r   r   r   r   r   r   s      r    r   zRawPrinter.visit_IfClauseNode  sz     	AHHTN	$..'*;*;<NN!!$'

$##D) r"   c                &    | j                  |       y r=   r  r:   s     r    r   zRawPrinter.visit_UMinusNode  r  r"   c                    |j                   j                  |        |j                  j                  |        |j                  j                  |        |j                  r|j                  j                  |        y y r=   )if_rf   r   r   r   r:   s     r    r   zRawPrinter.visit_IfNode  sX    d#

$##D) r"   c                    |j                   j                  |        |j                  j                  |        |j                  r|j                  j                  |        y y r=   )else_rf   r   r   r:   s     r    visit_ElseNodezRawPrinter.visit_ElseNode  sH    

$

$##D) r"   c                b   |j                   j                  |        |j                  j                  |        |j                  j                  |        |j                  j                  |        |j
                  j                  |        |j                  r|j                  j                  |        y y r=   )r   rf   questionmarkr   r'  r   r   r:   s     r    r   zRawPrinter.visit_TernaryNode  s    d#  &d#4 t$##D) r"   c                   t        |j                        }|j                  D ]0  }|j                  |        	 t	        |      }|j                  |        2 t        |j                        t        |j                        k(  sJ t        |j                  j                         |j                        D ]X  \  \  }}}|j                  |        |j                  |        |j                  |        	 t	        |      }|j                  |        Z |j                  r|j                  j                  |        y y # t
        $ r Y w xY w# t
        $ r Y w xY wr=   )iterr&  r   rf   nextStopIterationr   columnsr   zipr   r   )r   r-   commas_iterargr(  r   rI   r'  s           r    r   zRawPrinter.visit_ArgumentNode  s&   4;;'>> 	CJJt[)T"		 4<< C$4444"%dkk&7&7&94<<"H 	JS#JJtMM$JJt[)T"	 ##D)  !  ! s#   D4-E4	E E	EEN)r-   r   )r-   zmparser.UnaryOperatorNode)r-   zmparser.BinaryOperatorNoder   r   r   )r-   zmparser.MultilineStringNoder   r   r   )r-   z!mparser.MultilineFormatStringNoder   r   r   r   r   r   )r-   zmparser.ParenthesizedNoder   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r-   zmparser.ElseNoder   r   r   r   )$r   r   r   r!   r   r   r   r;   rC   rN   rT   rP   r  r[   r_   rg   rl   r  rr   ru   rx   r|   r   r   r   r   r   r   r   r   r   r   r   r/  r   r   r   r"   r    r   r      s    *
***
*
*
*
$-*
*
***))))(********(****r"   r   c                     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(d	Zd)d
Zd*dZd+dZd,dZd-dZd.dZd/dZd0dZd1dZd2dZd3dZd4dZd5dZd6dZd7dZd8dZd9dZd:dZd;dZd<dZd=dZ d>dZ!y )?AstJSONPrinterc                4    i | _         | j                   | _        y r=   )r   currentr&   s    r    r!   zAstJSONPrinter.__init__  s    *,{{r"   c                |    | j                   }i }|| _         |j                  |        || _         || j                   |<   y r=   r=  rf   )r   r   r-   oldr,   s        r    _acceptzAstJSONPrinter._accept  s8    ll#%D Sr"   c                    | j                   }g }|D ]*  }i | _         |j                  |        || j                   gz  }, || _         || j                   |<   y r=   r?  )r   r   nodesr@  datalistr   s         r    _accept_listzAstJSONPrinter._accept_list  sX    ll/1 	'ADLHHTN&H	' $Sr"   c                Z    | j                   }|| _         |j                  |        || _         y r=   r?  )r   r-   r,   r@  s       r    _raw_acceptzAstJSONPrinter._raw_accept  s%    llDr"   c                   t        |      j                  | j                  d<   |j                  | j                  d<   |j                  | j                  d<   |j
                  | j                  d<   |j                  | j                  d<   y )Nr-   r9   colno
end_lineno	end_colno)typer   r=  r9   rI  rJ  rK  r:   s     r    setbasezAstJSONPrinter.setbase  sb    #Dz22V!%X $

W%)__\"$(NN[!r"   c                &    | j                  |       y r=   )rM  r:   s     r    r   z!AstJSONPrinter.visit_default_func  s    Tr"   c                X    |j                   | j                  d<   | j                  |       y )Nr8   )r8   r=  rM  r:   s     r    gen_ElementaryNodez!AstJSONPrinter.gen_ElementaryNode  s      $

WTr"   c                &    | j                  |       y r=   rP  r:   s     r    r;   z AstJSONPrinter.visit_BooleanNode      %r"   c                &    | j                  |       y r=   rR  r:   s     r    rA   zAstJSONPrinter.visit_IdNode  rS  r"   c                &    | j                  |       y r=   rR  r:   s     r    rC   zAstJSONPrinter.visit_NumberNode  rS  r"   c                &    | j                  |       y r=   rR  r:   s     r    rN   zAstJSONPrinter.visit_StringNode
  rS  r"   c                &    | j                  |       y r=   rR  r:   s     r    rP   z%AstJSONPrinter.visit_FormatStringNode  rS  r"   c                ^    | j                  d|j                         | j                  |       y Nre   rA  re   rM  r:   s     r    rg   zAstJSONPrinter.visit_ArrayNode       VTYY'Tr"   c                ^    | j                  d|j                         | j                  |       y rY  rZ  r:   s     r    rl   zAstJSONPrinter.visit_DictNode  r[  r"   c                    | j                  d|j                         | j                  d|j                         | j                  |       y Nrp   rq   rA  rp   rq   rM  r:   s     r    rr   zAstJSONPrinter.visit_OrNode  2    VTYY'Wdjj)Tr"   c                    | j                  d|j                         | j                  d|j                         | j                  |       y r^  r_  r:   s     r    ru   zAstJSONPrinter.visit_AndNode  r`  r"   c                    | j                  d|j                         | j                  d|j                         |j                  | j                  d<   | j                  |       y )Nrp   rq   rw   )rA  rp   rq   rw   r=  rM  r:   s     r    rx   z#AstJSONPrinter.visit_ComparisonNode"  sD    VTYY'Wdjj) $

WTr"   c                    | j                  d|j                         | j                  d|j                         t        |j                     | j
                  d<   | j                  |       y )Nrp   rq   op)rA  rp   rq   rz   r{   r=  rM  r:   s     r    r|   z#AstJSONPrinter.visit_ArithmeticNode(  sI    VTYY'Wdjj))$..9TTr"   c                ^    | j                  d|j                         | j                  |       y Nrq   rA  r8   rM  r:   s     r    r   zAstJSONPrinter.visit_NotNode.       Wdjj)Tr"   c                ^    | j                  d|j                         | j                  |       y )Nr   )rE  r   rM  r:   s     r    r   z"AstJSONPrinter.visit_CodeBlockNode2  s"    '4::.Tr"   c                    | j                  d|j                         | j                  d|j                         | j                  |       y )Nobjectr   )rA  r   r   rM  r:   s     r    r   zAstJSONPrinter.visit_IndexNode6  s2    Xt||,Wdjj)Tr"   c                    | j                  d|j                         | j                  d|j                         |j                  j                  | j
                  d<   | j                  |       y )Nrk  re   r   )rA  r   re   r   r8   r=  rM  r:   s     r    r   zAstJSONPrinter.visit_MethodNode;  sJ    Xt112VTYY'#yyVTr"   c                    | j                  d|j                         |j                  j                  | j                  d<   | j                  |       y )Nre   r   )rA  re   r   r8   r=  rM  r:   s     r    r   z!AstJSONPrinter.visit_FunctionNodeA  s8    VTYY'#~~33VTr"   c                    | j                  d|j                         |j                  j                  | j                  d<   | j	                  |       y Nr8   r   rA  r8   r   r=  rM  r:   s     r    r   z#AstJSONPrinter.visit_AssignmentNodeF  8    Wdjj)#'==#6#6Z Tr"   c                    | j                  d|j                         |j                  j                  | j                  d<   | j	                  |       y ro  rp  r:   s     r    r   z'AstJSONPrinter.visit_PlusAssignmentNodeK  rq  r"   c                   | j                  d|j                         | j                  d|j                         |j                  D cg c]  }|j                   c}| j
                  d<   | j                  |       y c c}w )Nr   r   r   )rA  r   r   r   r8   r=  rM  )r   r-   r   s      r    r   z&AstJSONPrinter.visit_ForeachClauseNodeP  sY    Wdjj)Wdjj)AE#OgGMM#OZ T $Ps   A<c                    | j                  d|j                         | j                  d|j                         | j	                  |       y )Nr   r   )rE  r   rA  r   rM  r:   s     r    r   z!AstJSONPrinter.visit_IfClauseNodeV  s4    %*VT^^,Tr"   c                ^    | j                  d|j                         | j                  |       y rf  rg  r:   s     r    r   zAstJSONPrinter.visit_UMinusNode[  rh  r"   c                    | j                  d|j                         | j                  d|j                         | j                  |       y )Nr   r   )rA  r   r   rM  r:   s     r    r   zAstJSONPrinter.visit_IfNode_  s2    [$..1Wdjj)Tr"   c                    | j                  d|j                         | j                  d|j                         | j                  d|j                         | j	                  |       y )Nr   r6   r7   )rA  r   r   r   rM  r:   s     r    r   z AstJSONPrinter.visit_TernaryNoded  sD    [$..1VT^^,Wdoo.Tr"   c                &   | j                  d|j                         g }|j                  j                         D ]6  \  }}i }i }| j	                  ||       | j	                  ||       |||dgz  }8 || j
                  d<   | j                  |       y )N
positional)r   rI   r   )rE  r   r   r   rG  r=  rM  )r   r-   kwargs_listr   rI   key_resval_ress          r    r   z!AstJSONPrinter.visit_ArgumentNodej  s    ,7?A))+ 	>HC*,G*,GS'*S'*GG<==K	> "-XTr"   Nr   )r   r@   r-   r   r   r   )r   r@   rC  zT.Sequence[mparser.BaseNode]r   r   )r-   r   r,   zT.Dict[str, T.Any]r   r   )r-   r   r   r   )r-   zmparser.ElementaryNoder   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!   rA  rE  rG  rM  r   rP  r;   rA   rC   rN   rP   rg   rl   rr   ru   rx   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"   r    r;  r;    s    #!%3&&&&&








r"   r;  )
__future__r   r   r   visitorr   	itertoolsr   r%   typingTrz   r   r   r;  r   r"   r    <module>r     s]   " #   ! 	  Y: Y:vW* W*r^Z ^r"   