o
    uJAf*Y  ã                   @  s„   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„ deƒZG dd„ deƒZG dd„ deƒZdS )é    )Úannotationsé   )Úmparseré   )Ú
AstVisitor)Úzip_longestNú+ú-ú%Ú*ú/)ÚaddÚsubÚmodÚmulÚdivc                   @  sb  e Zd Zdodpd	d
„Zdqdd„Zdrdd„Zdrdd„Zdqdd„Zdsdd„Zdtdd„Z	dud d!„Z
dvd#d$„Zdwd&d'„Zdxd)d*„Zdwd+d,„Zdxd-d.„Zdyd0d1„Zdzd3d4„Zd{d6d7„Zd|d9d:„Zd}d<d=„Zd~d?d@„ZddBdC„Zd€dEdF„ZddHdI„Zd‚dKdL„ZdƒdNdO„Zd„dQdR„Zd…dTdU„Zd†dWdX„Zd‡dZd[„Zdˆd]d^„Zd‰d`da„Z dŠdcdd„Z!d‹dfdg„Z"dŒdidj„Z#ddldm„Z$dnS )ŽÚ
AstPrinterr   é   FÚindentÚintÚarg_newline_cutoffÚupdate_ast_line_nosÚboolc                 C  s<   d| _ || _|| _d| _d| _d| _|rd| _d S d | _d S )NÚ Tr   r   )Úresultr   r   ZciÚ
is_newlineÚ
last_levelÚ	curr_line)Úselfr   r   r   © r   ú;/usr/lib/python3.10/site-packages/mesonbuild/ast/printer.pyÚ__init__#   s   zAstPrinter.__init__ÚreturnÚNonec                 C  s   t  dd| j¡| _d S )Nz\s+\nÚ
)Úrer   r   ©r   r   r   r    Úpost_process,   s   zAstPrinter.post_processÚdataÚstrÚnodeúmparser.BaseNodec                 C  s@   |j | _| jr|  jd|j | j  7  _|  j|7  _d| _d S )Nú F)Úlevelr   r   r   r   ©r   r(   r*   r   r   r    Úappend/   s
   
zAstPrinter.appendc                 C  s0   | j r| j d dvrd| }|  |d |¡ d S )Néÿÿÿÿ)r,   r$   r,   )r   r/   r.   r   r   r    Úappend_padded6   s   zAstPrinter.append_paddedc                 C  s4   |  j d7  _ d| _| jd ur|  jd7  _d S d S )Nr$   Tr   )r   r   r   r&   r   r   r    Únewline;   s
   
ÿzAstPrinter.newlineúmparser.BooleanNodec                 C  s(   |   |jrdnd|¡ | jp|j|_d S ©NÚtrueÚfalse)r/   Úvaluer   Úlineno©r   r*   r   r   r    Úvisit_BooleanNodeA   s   zAstPrinter.visit_BooleanNodeúmparser.IdNodec                 C  s0   t |jtƒsJ ‚|  |j|¡ | jp|j|_d S ©N©Ú
isinstancer7   r)   r/   r   r8   r9   r   r   r    Úvisit_IdNodeE   s   zAstPrinter.visit_IdNodeúmparser.NumberNodec                 C  s$   |   t|jƒ|¡ | jp|j|_d S r<   )r/   r)   r7   r   r8   r9   r   r   r    Úvisit_NumberNodeJ   s   zAstPrinter.visit_NumberNodeÚvalc                 C  s   |  t dddœ¡¡S )Nz\'z\\)ú'ú\)Ú	translater)   Ú	maketrans)r   rB   r   r   r    ÚescapeN   s   

ÿzAstPrinter.escapeúmparser.StringNodec                 C  s>   t |jtƒsJ ‚|  d|  |j¡ d |¡ | jp|j|_d S ©NrC   ©r>   r7   r)   r/   rG   r   r8   r9   r   r   r    Úvisit_StringNodeR   ó   zAstPrinter.visit_StringNodeúmparser.FormatStringNodec                 C  s>   t |jtƒsJ ‚|  d|  |j¡ d |¡ | jp|j|_d S )Nzf'rC   rJ   r9   r   r   r    Úvisit_FormatStringNodeW   rL   z!AstPrinter.visit_FormatStringNodec                 C  s8   t |jtƒsJ ‚|  d|j d |¡ | jp|j|_d S ©Nú'''r=   r9   r   r   r    Úvisit_MultilineStringNode\   ó   z$AstPrinter.visit_MultilineStringNodec                 C  s8   t |jtƒsJ ‚|  d|j d |¡ | jp|j|_d S )Nzf'''rP   r=   r9   r   r   r    Úvisit_FormatMultilineStringNodea   rR   z*AstPrinter.visit_FormatMultilineStringNodeúmparser.ContinueNodec                 C  ó   |   d|¡ | jp|j|_d S ©NÚcontinue©r/   r   r8   r9   r   r   r    Úvisit_ContinueNodef   ó   zAstPrinter.visit_ContinueNodeúmparser.BreakNodec                 C  rU   ©NÚbreakrX   r9   r   r   r    Úvisit_BreakNodej   rZ   zAstPrinter.visit_BreakNodeúmparser.ArrayNodec                 C  ó6   | j p|j|_|  d|¡ |j | ¡ |  d|¡ d S ©Nú[ú]©r   r8   r/   ÚargsÚacceptr9   r   r   r    Úvisit_ArrayNoden   ó   zAstPrinter.visit_ArrayNodeúmparser.DictNodec                 C  r`   )NÚ{Ú}rd   r9   r   r   r    Úvisit_DictNodet   rh   zAstPrinter.visit_DictNodeúmparser.OrNodec                 C  ó6   |j  | ¡ |  d|¡ | jp|j|_|j | ¡ d S )NÚor©Úleftrf   r1   r   r8   Úrightr9   r   r   r    Úvisit_OrNodez   ó   zAstPrinter.visit_OrNodeúmparser.AndNodec                 C  rn   )NÚandrp   r9   r   r   r    Úvisit_AndNode€   rt   zAstPrinter.visit_AndNodeúmparser.ComparisonNodec                 C  s8   |j  | ¡ |  |j|¡ | jp|j|_|j | ¡ d S r<   )rq   rf   r1   Úctyper   r8   rr   r9   r   r   r    Úvisit_ComparisonNode†   s   zAstPrinter.visit_ComparisonNodeúmparser.ArithmeticNodec                 C  s<   |j  | ¡ |  t|j |¡ | jp|j|_|j | ¡ d S r<   )rq   rf   r1   Úarithmic_mapÚ	operationr   r8   rr   r9   r   r   r    Úvisit_ArithmeticNodeŒ   s   zAstPrinter.visit_ArithmeticNodeúmparser.NotNodec                 C  ó*   | j p|j|_|  d|¡ |j | ¡ d S )NÚnot©r   r8   r1   r7   rf   r9   r   r   r    Úvisit_NotNode’   ó   zAstPrinter.visit_NotNodeúmparser.CodeBlockNodec                 C  s0   | j p|j|_|jD ]}| | ¡ |  ¡  q
d S r<   )r   r8   Úlinesrf   r2   ©r   r*   Úir   r   r    Úvisit_CodeBlockNode—   s
   


þzAstPrinter.visit_CodeBlockNodeúmparser.IndexNodec                 C  sB   |j  | ¡ | jp|j|_|  d|¡ |j | ¡ |  d|¡ d S ra   )Úiobjectrf   r   r8   r/   Úindexr9   r   r   r    Úvisit_IndexNode   s
   zAstPrinter.visit_IndexNodeúmparser.MethodNodec                 C  sN   | j p|j|_|j | ¡ |  d|jj d |¡ |j | ¡ |  d|¡ d S )NÚ.ú(ú))r   r8   Úsource_objectrf   r/   Únamer7   re   r9   r   r   r    Úvisit_MethodNode¤   s
   zAstPrinter.visit_MethodNodeúmparser.FunctionNodec                 C  s>   | j p|j|_|  |jjd |¡ |j | ¡ |  d|¡ d S )Nr   r‘   )r   r8   r/   Ú	func_namer7   re   rf   r9   r   r   r    Úvisit_FunctionNode«   s   zAstPrinter.visit_FunctionNodeúmparser.AssignmentNodec                 C  ó2   | j p|j|_|  |jjd |¡ |j | ¡ d S )Nz = ©r   r8   r/   Úvar_namer7   rf   r9   r   r   r    Úvisit_AssignmentNode±   ó   zAstPrinter.visit_AssignmentNodeúmparser.PlusAssignmentNodec                 C  r™   )Nz += rš   r9   r   r   r    Úvisit_PlusAssignmentNode¶   r   z#AstPrinter.visit_PlusAssignmentNodeúmparser.ForeachClauseNodec                 C  st   | j p|j|_|  d|¡ |  d dd„ |jD ƒ¡|¡ |  d|¡ |j | ¡ |  ¡  |j | ¡ |  	d|¡ d S )NÚforeachú, c                 s  s    | ]}|j V  qd S r<   ©r7   ©Ú.0Úvarnamer   r   r    Ú	<genexpr>¾   s   € z5AstPrinter.visit_ForeachClauseNode.<locals>.<genexpr>ú:Ú
endforeach)
r   r8   r1   ÚjoinÚvarnamesÚitemsrf   r2   Úblockr/   r9   r   r   r    Úvisit_ForeachClauseNode»   s   z"AstPrinter.visit_ForeachClauseNodeúmparser.IfClauseNodec                 C  sr   | j p|j|_d}|jD ]}|  |d |¡ d}| | ¡ qt|jtjƒs1|  	d|¡ |j | ¡ |  	d|¡ d S )Nr   ÚifÚelÚelseÚendif)
r   r8   Úifsr1   rf   r>   Ú	elseblockr   Ú	EmptyNoder/   )r   r*   Úprefixrˆ   r   r   r    Úvisit_IfClauseNodeÅ   s   
zAstPrinter.visit_IfClauseNodeúmparser.UMinusNodec                 C  r€   )Nr	   r‚   r9   r   r   r    Úvisit_UMinusNodeÑ   r„   zAstPrinter.visit_UMinusNodeúmparser.IfNodec                 C  s2   | j p|j|_|j | ¡ |  ¡  |j | ¡ d S r<   )r   r8   Ú	conditionrf   r2   r­   r9   r   r   r    Úvisit_IfNodeÖ   s   zAstPrinter.visit_IfNodeúmparser.TernaryNodec                 C  sN   | j p|j|_|j | ¡ |  d|¡ |j | ¡ |  d|¡ |j | ¡ d S )Nú?r¨   )r   r8   r¼   rf   r1   Ú	trueblockÚ
falseblockr9   r   r   r    Úvisit_TernaryNodeÜ   s   zAstPrinter.visit_TernaryNodeúmparser.ArgumentNodec                 C  s  | j p|j|_t|jƒt|jƒ | jk}|jt|j ¡ ƒ D ]}t|t	j
t	jfƒs+d}q|r2|  ¡  |jD ]}| | ¡ |  d|¡ |rH|  ¡  q5|j ¡ D ] \}}| | ¡ |  d|¡ | | ¡ |  d|¡ |rn|  ¡  qN|r|t dd| j¡| _d S t dd| j¡| _d S )NTr¢   r¨   z, \n$r$   z, $r   )r   r8   ÚlenÚ	argumentsÚkwargsr   ÚlistÚvaluesr>   r   ÚElementaryNodeÚ	IndexNoder2   rf   r/   r¬   r1   r%   r   r   )r   r*   Z
break_argsrˆ   ÚkeyrB   r   r   r    Úvisit_ArgumentNodeä   s2   €

€

€zAstPrinter.visit_ArgumentNodeN)r   r   F)r   r   r   r   r   r   ©r"   r#   )r(   r)   r*   r+   r"   r#   ©r*   r3   r"   r#   ©r*   r;   r"   r#   ©r*   r@   r"   r#   )rB   r)   r"   r)   ©r*   rH   r"   r#   ©r*   rM   r"   r#   ©r*   rT   r"   r#   ©r*   r[   r"   r#   ©r*   r_   r"   r#   ©r*   ri   r"   r#   ©r*   rm   r"   r#   ©r*   ru   r"   r#   ©r*   rx   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#   )%Ú__name__Ú
__module__Ú__qualname__r!   r'   r/   r1   r2   r:   r?   rA   rG   rK   rN   rQ   rS   rY   r^   rg   rl   rs   rw   rz   r~   rƒ   r‰   r   r”   r—   rœ   rŸ   r®   r¸   rº   r½   rÂ   rÌ   r   r   r   r    r   "   sF    
	































r   c                   @  sT  e Zd Zdd„ Zdgdd„Zdhdd	„Zdidd„Zdjdd„Zdkdd„Zdldd„Z	dmdd„Z
dndd„Zdodd „Zdpd"d#„Zdqd%d&„Zdrd(d)„Zdsd+d,„Zdtd.d/„Zdud1d2„Zdvd4d5„Zdwd7d8„Zdxd:d;„Zdyd=d>„Zdzd@dA„Zd{dCdD„Zd|dFdG„Zd}dIdJ„Zd~dLdM„ZddOdP„Zd€dRdS„ZddUdV„Zd‚dXdY„Zdƒd[d\„Z d„d^d_„Z!d…dadb„Z"d†ddde„Z#dfS )‡Ú
RawPrinterc                 C  s
   d| _ d S )Nr   )r   r&   r   r   r    r!   ÿ   s   
zRawPrinter.__init__r*   r+   c                 C  ó*   |  j |j7  _ |jr|j | ¡ d S d S r<   ©r   r7   Úwhitespacesrf   r9   r   r   r    Úvisit_default_func  ó   ÿzRawPrinter.visit_default_funcúmparser.UnaryOperatorNodec                 C  ó2   |j  | ¡ |j | ¡ |jr|j | ¡ d S d S r<   )Úoperatorrf   r7   rî   r9   r   r   r    Úvisit_unary_operator  ó
   ÿzRawPrinter.visit_unary_operatorúmparser.BinaryOperatorNodec                 C  ó>   |j  | ¡ |j | ¡ |j | ¡ |jr|j | ¡ d S d S r<   )rq   rf   ró   rr   rî   r9   r   r   r    Úvisit_binary_operator  ó   ÿz RawPrinter.visit_binary_operatorr3   r"   r#   c                 C  s2   |  j |jrdnd7  _ |jr|j | ¡ d S d S r4   rí   r9   r   r   r    r:     ó   ÿzRawPrinter.visit_BooleanNoder@   c                 C  rì   r<   ©r   Ú	raw_valuerî   rf   r9   r   r   r    rA     rð   zRawPrinter.visit_NumberNoderH   c                 C  ó2   |  j d|j› d7  _ |jr|j | ¡ d S d S rI   rû   r9   r   r   r    rK     rú   zRawPrinter.visit_StringNodeúmparser.MultilineStringNodec                 C  rý   rO   rí   r9   r   r   r    rQ   #  rú   z$RawPrinter.visit_MultilineStringNoderM   c                 C  ó   |  j d7  _ |  |¡ d S ©NÚf)r   rK   r9   r   r   r    rN   (  ó   z!RawPrinter.visit_FormatStringNodeú!mparser.MultilineFormatStringNodec                 C  rÿ   r   )r   rQ   r9   r   r   r    Úvisit_MultilineFormatStringNode,  r  z*RawPrinter.visit_MultilineFormatStringNoderT   c                 C  ó(   |  j d7  _ |jr|j | ¡ d S d S rV   ©r   rî   rf   r9   r   r   r    rY   0  ó   ÿzRawPrinter.visit_ContinueNoder[   c                 C  r  r\   r  r9   r   r   r    r^   5  r  zRawPrinter.visit_BreakNoder_   c                 C  r÷   r<   )Úlbracketrf   re   Úrbracketrî   r9   r   r   r    rg   :  rù   zRawPrinter.visit_ArrayNoderi   c                 C  r÷   r<   )Úlcurlrf   re   Úrcurlrî   r9   r   r   r    rl   A  rù   zRawPrinter.visit_DictNodeúmparser.ParenthesizedNodec                 C  r÷   r<   )Úlparrf   ÚinnerÚrparrî   r9   r   r   r    Úvisit_ParenthesizedNodeH  rù   z"RawPrinter.visit_ParenthesizedNoderm   c                 C  ó   |   |¡ d S r<   ©rø   r9   r   r   r    rs   O  ó   zRawPrinter.visit_OrNoderu   c                 C  r  r<   r  r9   r   r   r    rw   R  r  zRawPrinter.visit_AndNoderx   c                 C  r  r<   r  r9   r   r   r    rz   U  r  zRawPrinter.visit_ComparisonNoder{   c                 C  r  r<   r  r9   r   r   r    r~   X  r  zRawPrinter.visit_ArithmeticNoder   c                 C  r  r<   ©rô   r9   r   r   r    rƒ   [  r  zRawPrinter.visit_NotNoder…   c                 C  sB   |j r	|j  | ¡ |jD ]}| | ¡ q|jr|j | ¡ d S d S r<   )Úpre_whitespacesrf   r†   rî   r‡   r   r   r    r‰   ^  s   
ÿzRawPrinter.visit_CodeBlockNoderŠ   c                 C  óJ   |j  | ¡ |j | ¡ |j | ¡ |j | ¡ |jr#|j | ¡ d S d S r<   )r‹   rf   r  rŒ   r	  rî   r9   r   r   r    r   f  ó   ÿzRawPrinter.visit_IndexNoderŽ   c                 C  sb   |j  | ¡ |j | ¡ |j | ¡ |j | ¡ |j | ¡ |j | ¡ |jr/|j | ¡ d S d S r<   )r’   rf   Údotr“   r  re   r  rî   r9   r   r   r    r”   n  s   ÿzRawPrinter.visit_MethodNoder•   c                 C  r  r<   )r–   rf   r  re   r  rî   r9   r   r   r    r—   x  r  zRawPrinter.visit_FunctionNoder˜   c                 C  r÷   r<   ©r›   rf   ró   r7   rî   r9   r   r   r    rœ   €  rù   zRawPrinter.visit_AssignmentNoderž   c                 C  r÷   r<   r  r9   r   r   r    rŸ   ‡  rù   z#RawPrinter.visit_PlusAssignmentNoder    c                 C  sŠ   |j  | ¡ t|j|jƒD ]\}}| | ¡ |d ur| | ¡ q|j | ¡ |j | ¡ |j | ¡ |j | ¡ |j	rC|j	 | ¡ d S d S r<   )
Úforeach_rf   r   r«   ÚcommasÚcolumnr¬   r­   r©   rî   )r   r*   r¦   Úcommar   r   r    r®   Ž  s   

€ÿz"RawPrinter.visit_ForeachClauseNoder¯   c                 C  sV   |j D ]}| | ¡ qt|jtjƒs|j | ¡ |j | ¡ |jr)|j | ¡ d S d S r<   )r´   rf   r>   rµ   r   r¶   r³   rî   r‡   r   r   r    r¸   ›  s   
ÿzRawPrinter.visit_IfClauseNoder¹   c                 C  r  r<   r  r9   r   r   r    rº   ¤  r  zRawPrinter.visit_UMinusNoder»   c                 C  r÷   r<   )Úif_rf   r¼   r­   rî   r9   r   r   r    r½   §  rù   zRawPrinter.visit_IfNodeúmparser.ElseNodec                 C  rò   r<   )Úelse_rf   r­   rî   r9   r   r   r    Úvisit_ElseNode®  rõ   zRawPrinter.visit_ElseNoder¾   c                 C  sV   |j  | ¡ |j | ¡ |j | ¡ |j | ¡ |j | ¡ |jr)|j | ¡ d S d S r<   )r¼   rf   ÚquestionmarkrÀ   r  rÁ   rî   r9   r   r   r    rÂ   ´  s   ÿzRawPrinter.visit_TernaryNoderÃ   c              	   C  sà   t |jƒ}|jD ]}| | ¡ zt|ƒ}| | ¡ W q ty#   Y qw t|jƒt|jƒks0J ‚t	|j 
¡ |jƒD ])\\}}}| | ¡ | | ¡ | | ¡ zt|ƒ}| | ¡ W q9 tyb   Y q9w |jrn|j | ¡ d S d S r<   )Úiterr  rÅ   rf   ÚnextÚStopIterationrÄ   ÚcolumnsrÆ   Úzipr¬   rî   )r   r*   Zcommas_iterÚargr  rË   rB   r  r   r   r    rÌ   ½  s.   


ÿ


ÿÿzRawPrinter.visit_ArgumentNodeN)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:   rA   rK   rQ   rN   r  rY   r^   rg   rl   r  rs   rw   rz   r~   rƒ   r‰   r   r”   r—   rœ   rŸ   r®   r¸   rº   r½   r!  rÂ   rÌ   r   r   r   r    rë   ý   sD    




























	


	rë   c                   @  sB  e Zd Zdcdd„Zddd	d
„Zdedd„Zdfdd„Zdgdd„Zdgdd„Zdhdd„Z	didd„Z
djdd„Zdkd!d"„Zdld$d%„Zdmd'd(„Zdnd*d+„Zdod-d.„Zdpd0d1„Zdqd3d4„Zdrd6d7„Zdsd9d:„Zdtd<d=„Zdud?d@„ZdvdBdC„ZdwdEdF„ZdxdHdI„ZdydKdL„ZdzdNdO„Zd{dQdR„Zd|dTdU„Zd}dWdX„Zd~dZd[„Zdd]d^„Z d€d`da„Z!dbS )ÚAstJSONPrinterr"   r#   c                 C  s   i | _ | j | _d S r<   )r   Úcurrentr&   r   r   r    r!   ×  s   zAstJSONPrinter.__init__rË   r)   r*   r+   c                 C  s.   | j }i }|| _ | | ¡ || _ || j |< d S r<   ©r*  rf   )r   rË   r*   Úoldr(   r   r   r    Ú_acceptÛ  s   
zAstJSONPrinter._acceptÚnodesúT.Sequence[mparser.BaseNode]c                 C  sD   | j }g }|D ]}i | _ | | ¡ || j g7 }q|| _ || j |< d S r<   r+  )r   rË   r.  r,  Zdatalistrˆ   r   r   r    Ú_accept_listã  s   
zAstJSONPrinter._accept_listr(   úT.Dict[str, T.Any]c                 C  s    | j }|| _ | | ¡ || _ d S r<   r+  )r   r*   r(   r,  r   r   r    Ú_raw_acceptí  s   

zAstJSONPrinter._raw_acceptc                 C  sD   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   r3  r4  r5  r9   r   r   r    Úsetbaseó  s
   zAstJSONPrinter.setbasec                 C  r  r<   )r7  r9   r   r   r    rï   ú  r  z!AstJSONPrinter.visit_default_funcúmparser.ElementaryNodec                 C  s   |j | jd< |  |¡ d S )Nr7   )r7   r*  r7  r9   r   r   r    Úgen_ElementaryNodeý  s   z!AstJSONPrinter.gen_ElementaryNoder3   c                 C  r  r<   ©r9  r9   r   r   r    r:     r  z AstJSONPrinter.visit_BooleanNoder;   c                 C  r  r<   r:  r9   r   r   r    r?     r  zAstJSONPrinter.visit_IdNoder@   c                 C  r  r<   r:  r9   r   r   r    rA     r  zAstJSONPrinter.visit_NumberNoderH   c                 C  r  r<   r:  r9   r   r   r    rK   
  r  zAstJSONPrinter.visit_StringNoderM   c                 C  r  r<   r:  r9   r   r   r    rN     r  z%AstJSONPrinter.visit_FormatStringNoder_   c                 C  ó   |   d|j¡ |  |¡ d S ©Nre   ©r-  re   r7  r9   r   r   r    rg     r  zAstJSONPrinter.visit_ArrayNoderi   c                 C  r;  r<  r=  r9   r   r   r    rl     r  zAstJSONPrinter.visit_DictNoderm   c                 C  ó*   |   d|j¡ |   d|j¡ |  |¡ d S ©Nrq   rr   ©r-  rq   rr   r7  r9   r   r   r    rs     ó   zAstJSONPrinter.visit_OrNoderu   c                 C  r>  r?  r@  r9   r   r   r    rw     rA  zAstJSONPrinter.visit_AndNoderx   c                 C  s6   |   d|j¡ |   d|j¡ |j| jd< |  |¡ d S )Nrq   rr   ry   )r-  rq   rr   ry   r*  r7  r9   r   r   r    rz   "  s   z#AstJSONPrinter.visit_ComparisonNoder{   c                 C  s:   |   d|j¡ |   d|j¡ t|j | jd< |  |¡ d S )Nrq   rr   Úop)r-  rq   rr   r|   r}   r*  r7  r9   r   r   r    r~   (  s   z#AstJSONPrinter.visit_ArithmeticNoder   c                 C  r;  ©Nrr   ©r-  r7   r7  r9   r   r   r    rƒ   .  r  zAstJSONPrinter.visit_NotNoder…   c                 C  r;  )Nr†   )r0  r†   r7  r9   r   r   r    r‰   2  r  z"AstJSONPrinter.visit_CodeBlockNoderŠ   c                 C  r>  )NÚobjectrŒ   )r-  r‹   rŒ   r7  r9   r   r   r    r   6  rA  zAstJSONPrinter.visit_IndexNoderŽ   c                 C  s8   |   d|j¡ |   d|j¡ |jj| jd< |  |¡ d S )NrE  re   r“   )r-  r’   re   r“   r7   r*  r7  r9   r   r   r    r”   ;  ó   zAstJSONPrinter.visit_MethodNoder•   c                 C  s*   |   d|j¡ |jj| jd< |  |¡ d S )Nre   r“   )r-  re   r–   r7   r*  r7  r9   r   r   r    r—   A  rA  z!AstJSONPrinter.visit_FunctionNoder˜   c                 C  ó*   |   d|j¡ |jj| jd< |  |¡ d S ©Nr7   r›   ©r-  r7   r›   r*  r7  r9   r   r   r    rœ   F  rA  z#AstJSONPrinter.visit_AssignmentNoderž   c                 C  rG  rH  rI  r9   r   r   r    rŸ   K  rA  z'AstJSONPrinter.visit_PlusAssignmentNoder    c                 C  s@   |   d|j¡ |   d|j¡ dd„ |jD ƒ| jd< |  |¡ d S )Nr¬   r­   c                 S  s   g | ]}|j ‘qS r   r£   r¤   r   r   r    Ú
<listcomp>S  s    z:AstJSONPrinter.visit_ForeachClauseNode.<locals>.<listcomp>r«   )r-  r¬   r­   r«   r*  r7  r9   r   r   r    r®   P  s   z&AstJSONPrinter.visit_ForeachClauseNoder¯   c                 C  s*   |   d|j¡ |  d|j¡ |  |¡ d S )Nr´   r²   )r0  r´   r-  rµ   r7  r9   r   r   r    r¸   V  rA  z!AstJSONPrinter.visit_IfClauseNoder¹   c                 C  r;  rC  rD  r9   r   r   r    rº   [  r  zAstJSONPrinter.visit_UMinusNoder»   c                 C  r>  )Nr¼   r­   )r-  r¼   r­   r7  r9   r   r   r    r½   _  rA  zAstJSONPrinter.visit_IfNoder¾   c                 C  s8   |   d|j¡ |   d|j¡ |   d|j¡ |  |¡ d S )Nr¼   r5   r6   )r-  r¼   rÀ   rÁ   r7  r9   r   r   r    rÂ   d  rF  z AstJSONPrinter.visit_TernaryNoderÃ   c                 C  sn   |   d|j¡ g }|j ¡ D ]\}}i }i }|  ||¡ |  ||¡ |||dœg7 }q|| jd< |  |¡ d S )NÚ
positional)rË   rB   rÆ   )r0  rÅ   rÆ   r¬   r2  r*  r7  )r   r*   Zkwargs_listrË   rB   Zkey_resZval_resr   r   r    rÌ   j  s   
z!AstJSONPrinter.visit_ArgumentNodeNrÍ   )rË   r)   r*   r+   r"   r#   )rË   r)   r.  r/  r"   r#   )r*   r+   r(   r1  r"   r#   )r*   r+   r"   r#   )r*   r8  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-  r0  r2  r7  rï   r9  r:   r?   rA   rK   rN   rg   rl   rs   rw   rz   r~   rƒ   r‰   r   r”   r—   rœ   rŸ   r®   r¸   rº   r½   rÂ   rÌ   r   r   r   r    r)  Ö  s@    






























r)  )Ú
__future__r   r   r   Úvisitorr   Ú	itertoolsr   r%   ÚtypingÚTr|   r   rë   r)  r   r   r   r    Ú<module>   s"   û \ Z