
    w:ik                     l    d Z ddlmZmZmZmZmZmZ dZ	d Z
 G d de          Z G d de          Zd	S )
z?Support classes for generating code from abstract syntax trees.    )ast_ast_Constant
IS_PYTHON2isstring_ast_Ellipsis_ast_Ellipsis_valuezrestructuredtext enc                 :    t          | d|t          j                  S )N )compile_astPyCF_ONLY_AST)sourcemodes     O/var/www/html/trac/venv/lib/python3.11/site-packages/genshi/template/astutil.pyparser      s    62tT%7888    c                   p   e Zd ZdZd Zd Zd Zd Zd Zd Z	e	Z
e	Zd Zd	 Zesd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZeZd Z d Z!d Z"d Z#d Z$d Z%d  Z&d! Z'd" Z(d# Z)d$ Z*d% Z+d& Z,e-j.        d'e-j/        d(iZ0e,d)             Z1e-j2        d*e-j3        d+e-j4        d,e-j5        d-e-j6        d.e-j7        d/e-j8        d0e-j9        d1e-j:        d2e-j;        d3e-j<        d4e-j=        d5iZ>e,d6             Z?e-j@        d7e-jA        d8e-jB        d*e-jC        d+iZDd9 ZEe,d:             ZFe,d;             ZGd< ZHd= ZId> ZJd? ZKe-jL        d@e-jM        dAe-jN        dBe-jO        dCe-jP        dDe-jQ        dEe-jR        dFe-jS        dGe-jT        dHe-jU        dIi
ZVe,dJ             ZWdK ZXdL ZYdM ZZdN Z[dO Z\esdP Z]dQ Z^dR Z_dS Z`dT ZadU ZbdV ZcdWS )XASTCodeGeneratorzGeneral purpose base class for AST transformations.

    Every visitor method can be overridden to return an AST node that has been
    altered or replaced in some way.
    c                 N   g | _         d | _        d| _        d | _        d | _        d| _        g | _        |                     |           | j                                        r7| xj        | j        dz   z  c_        | j         	                    | j                   d | _        d | _        d S )Nr
   r   
)

lines_info	line_infocodelinelastindentblame_stackvisitstripappend)selftrees     r   __init__zASTCodeGenerator.__init__   s    			

49?? 	3IIT))IIO""4>222	r   c                 &    | xj         |z  c_         d S N)r   )r!   deltas     r   _change_indentzASTCodeGenerator._change_indent.   s    ur   c                 >   | j         7| xj        | j         dz   z  c_        | j                            | j                   d| j        z  | _         t          | j                  dk    rg | _        d | _        d S d| j        d         fg| _        | j        d         | _        d S )Nr   z    r   )	r   r   r   r    r   r   lenr   r   )r!   s    r   	_new_linezASTCodeGenerator._new_line1   s    9 IIT))IIO""4>222$+%	t  A%%DNDIII $"22"689DN(,DIIIr   c                    t          |          dk    rd S t          | j                  dk    rB| j        :d | _        | j                            t          | j                  | j        f           n[| j        | j        d         k    rE| j        d         | _        | j                            t          | j                  | j        f           | xj        |z  c_        d S )Nr   r)   )r*   r   r   r   r    r   )r!   ss     r   _writezASTCodeGenerator._write=   s    q66Q;;Ft  A%%y$ 	%%s49~~ty&ABBByD,R000 ,R0	%%s49~~ty&ABBB		Q				r   c                 .    |d S t          |          t          u rt           fd|D                       S 	  j                            |j        |j        f           d}n# t          $ r d}Y nw xY wt          |t          t          t          t          t          f          rt          |          }t           d|j        j        z  d           }|t#          dt          |          z             ||          }|r j                                         |S )Nc                 :    g | ]}                     |          S  r   .0nr!   s     r   
<listcomp>z*ASTCodeGenerator.visit.<locals>.<listcomp>N   #    666A$**Q--666r   TFvisit_%szUnhandled node type %r)typetupler   r    lineno
col_offsetAttributeError
isinstanceboolbytesfloatintstrr   getattr	__class____name__	Exceptionpop)r!   nodeinfovisitorrets   `    r   r   zASTCodeGenerator.visitJ   s&   <4::6666666777	##T[$/$CDDDDD 	 	 	DDD	dT5%c:;; 	' !&&D$
T^-D DdKK?4tDzzABBBgdmm 	#  """
s   (A! !A0/A0c                 D    |j         D ]}|                     |           d S r%   )bodyr   )r!   rI   r5   s      r   visit_ModulezASTCodeGenerator.visit_Module`   s.     	 	AJJqMMMM	 	r   c                 ^    |                                   |                     |j                  S r%   )r+   r   rN   r!   rI   s     r   visit_Expressionz!ASTCodeGenerator.visit_Expressionf   s&    zz$)$$$r   c                      fddg fd} ||j         |j                   t          |dd           rh                                   d           t	          |j                  r                     |j                   n                     |j                   t          |dd           r ||j        |j                   t          |dd           rk                                   d           t	          |j	                  r                     |j	                   d S                      |j	                   d S d S )	Nc                  P     d         rd d<   d S                      d           d S )Nr   F, r.   )_firstr!   s   r   write_possible_commaz>ASTCodeGenerator.visit_arguments.<locals>.write_possible_commar   s4    ay "!q			D!!!!!r   Tc                 :   t          |           t          |          z
  }t          |           D ]j\  }}                                  |           ||z
  }|dk    r;||         3                    d                               |||z
                      kd S )Nr   =)r*   	enumerater   r.   )argsdefaultsno_default_countiargdefault_idxr!   rX   s         r   
write_argsz4ASTCodeGenerator.visit_arguments.<locals>.write_argsy   s    "4yy3x==8#D// ? ?3$$&&&

3"22!##(=(IKK$$$JJx,<(<=>>>? ?r   vararg*
kwonlyargskwarg**)
r\   r]   rD   r.   r   rc   r   re   kw_defaultsrf   )r!   rI   rb   rW   rX   s   `  @@r   visit_argumentsz ASTCodeGenerator.visit_argumentsq   s   	" 	" 	" 	" 	" 	"
 	? 	? 	? 	? 	? 	? 	
49dm,,,44(( 	(  """KK$$ (DK((((

4;'''4t,, 	:Jt(89994$'' 	'  """KK
## 'DJ'''''

4:&&&&&	' 	'r   c                 :    |                      |j                   d S r%   )r.   r`   rQ   s     r   	visit_argzASTCodeGenerator.visit_arg   s    KK!!!!!r   c                 d    |                      d           |                     |j                   d S )Nrd   r.   r   valuerQ   s     r   visit_StarredzASTCodeGenerator.visit_Starred   s.    C

4:r   c                 L   d}t          |d          rt          |d          }nt          |dd          }|D ]@}|                                  |                     d           |                     |           A|                                  |                     d|j        z   dz              |                     |j                   |                     d           |                     d           |j        D ]}|                     |           |                     d	           d S )
Nr1   decorator_list
decorators@zdef (z):   r)   )	hasattrrD   r+   r.   r   namer\   r'   rN   )r!   rI   
decaratorsrr   	decorator	statements         r   visit_FunctionDefz"ASTCodeGenerator.visit_FunctionDef   s+   
4)** 	9 '788JJ |R88J# 	" 	"INNKKJJy!!!!FTY&,---

49DA 	" 	"IJJy!!!!Br   c                 >   |                                   |                     d|j        z              |j        r|                     d           |                     |j        d                    |j        dd          D ],}|                     d           |                     |           -|                     d           |                     d           |                     d           |j        D ]}|                     |           |                     d           d S )	Nzclass rt   r   ru   rU   ):r)   )r+   r.   rw   basesr   r'   rN   )r!   rI   baserz   s       r   visit_ClassDefzASTCodeGenerator.visit_ClassDef   s   Hty())): 	KKJJtz!}%%%
122 ! !D!!!

4    KKCA 	" 	"IJJy!!!!Br   c                     |                                   |                     d           t          |dd           r1|                     d           |                     |j                   d S d S )Nreturnrn    )r+   r.   rD   r   rn   rQ   s     r   visit_ReturnzASTCodeGenerator.visit_Return   sn    H4$'' 	#KKJJtz"""""	# 	#r   c                    |                                   |                     d           |                     |j        d                    |j        dd          D ],}|                     d           |                     |           -d S )Nzdel r   ru   rU   )r+   r.   r   targetsr!   rI   targets      r   visit_DeletezASTCodeGenerator.visit_Delete   s    F

4<?###l122& 	 	FKKJJv	 	r   c                     |                                   |j        D ],}|                     |           |                     d           -|                     |j                   d S )Nz = )r+   r   r   r.   rn   r   s      r   visit_AssignzASTCodeGenerator.visit_Assign   sd    l 	 	FJJvKK

4:r   c                     |                                   |                     |j                   |                     d| j        |j        j                 z   dz              |                     |j                   d S )Nr   z= )r+   r   r   r.   binary_operatorsoprE   rn   rQ   s     r   visit_AugAssignz ASTCodeGenerator.visit_AugAssign   si    

4;C$/0ABBTIJJJ

4:r   c                 f   |                                   |                     d           t          |dd           rV|                     d           |                     |j                   t          |dd           r|                     d           n|                     d           t          |dd           r\|                     |j        d                    |j        dd          D ],}|                     d           |                     |           -|j        s|                     d	           d S d S )
Nprintdestz >> valuesrU   r   r   ru   ,)r+   r.   rD   r   r   r   nl)r!   rI   rn   s      r   visit_PrintzASTCodeGenerator.visit_Print   s/   G4&& 	KKJJty!!!tXt,, "D!!!KK44(( 	"JJt{1~&&&QRR " "D!!!

5!!!!w 	KK	 	r   c                    |                                   |                     d           |                     |j                   |                     d           |                     |j                   |                     d           |                     d           |j        D ]}|                     |           |                     d           t          |dd           rt|                                   |                     d           |                     d           |j        D ]}|                     |           |                     d           d S d S )Nzfor  in r~   ru   r)   orelseelse:)	r+   r.   r   r   iterr'   rN   rD   r   r!   rI   rz   s      r   	visit_ForzASTCodeGenerator.visit_For   sR   F

4;F

49CA 	" 	"IJJy!!!!B44(( 	$NNKK   """![ & &	

9%%%%#####	$ 	$r   c                 R   |                                   |                     d           |                     |j                   |                     d           |                     d           |j        D ]}|                     |           |                     d           t          |dd           rt|                                   |                     d           |                     d           |j        D ]}|                     |           |                     d           d S d S )Nzwhile r~   ru   r)   r   r   r+   r.   r   testr'   rN   rD   r   r   s      r   visit_WhilezASTCodeGenerator.visit_While  s,   H

49CA 	" 	"IJJy!!!!B44(( 	$NNKK   """![ & &	

9%%%%#####	$ 	$r   c                 R   |                                   |                     d           |                     |j                   |                     d           |                     d           |j        D ]}|                     |           |                     d           t          |dd           rt|                                   |                     d           |                     d           |j        D ]}|                     |           |                     d           d S d S )Nzif r~   ru   r)   r   r   r   r   s      r   visit_IfzASTCodeGenerator.visit_If  s,   E

49CA 	" 	"IJJy!!!!B44(( 	$NNKK   """![ & &	

9%%%%#####	$ 	$r   c                 4   |                                   |                     d           t          |dd           }d}||g}|D ]u}|s|                     d           d}|                     |j                   t          |dd           r/|                     d           |                     |j                   v|                     d           |                     d	           |j        D ]}|                     |           |                     d
           d S )Nzwith itemsTrU   Foptional_vars as r~   ru   r)   )r+   r.   rD   r   context_exprr   r'   rN   )r!   rI   r   firstitemrz   s         r   
visit_WithzASTCodeGenerator.visit_With1  s+   Ggt,,=FE 	/ 	/D "D!!!EJJt()))t_d33 /F###

4-...CA 	" 	"IJJy!!!!Br   c                    |                                   |                     d           t          r|j        sd S |                     d           |                     |j                   |j        sd S |                     d           |                     |j                   |j        sd S |                     d           |                     |j                   d S |j        sd S |                     d           |                     |j                   |j        sd S |                     d           |                     |j                   d S )Nraiser   rU   z from )	r+   r.   r   r9   r   insttbackexccauserQ   s     r   visit_RaisezASTCodeGenerator.visit_RaiseG  sA   G 	#9 KKJJty!!!9 KKJJty!!!: KKJJtz"""""8 KKJJtx   : KK!!!JJtz"""""r   c                 T   |                                   |                     d           |                     d           |j        D ]}|                     |           |                     d           t          |dd           r|j        D ]}|                     |           |                                   t          |dd           r`|                     d           |                     d           |j        D ]}|                     |           |                     d           d S d S )Ntry:ru   r)   handlersr   r   )r+   r.   r'   rN   r   rD   r   r   r!   rI   rz   handlers       r   visit_TryExceptz ASTCodeGenerator.visit_TryExceptb  s@   FA 	" 	"IJJy!!!!B4T** 	$= $ $

7####44(( 	$KK   """![ & &	

9%%%%#####	$ 	$r   c                    |                                   |                     d           t          |dd           r/|                     d           |                     |j                   t          |dd           r/|                     d           |                     |j                   |                     d           |                     d           |j        D ]}|                     |           |                     d           d S )	Nexceptr9   r   rw   rU   r~   ru   r)   )r+   r.   rD   r   r9   rw   r'   rN   r   s      r   visit_ExceptHandlerz$ASTCodeGenerator.visit_ExceptHandleru  s    H4&& 	"KKJJty!!!4&& 	"KKJJty!!!CA 	" 	"IJJy!!!!Br   c                    |                                   |                     d           |                     d           |j        D ]}|                     |           |                     d           t          |dd           rt|                                   |                     d           |                     d           |j        D ]}|                     |           |                     d           d S d S )Nr   ru   r)   	finalbodyfinally:)r+   r.   r'   rN   r   rD   r   r   s      r   visit_TryFinallyz!ASTCodeGenerator.visit_TryFinally  s   FA 	" 	"IJJy!!!!B4d++ 	$NNKK
###"""!^ & &	

9%%%%#####	$ 	$r   c                 Z   |                                   |                     d           |                     d           |j        D ]}|                     |           |                     d           t          |dd           r|j        D ]}|                     |           |                                   t          |dd           r^|                     d           |                     d           |j        D ]}|                     |           |                     d           t          |dd           rt|                                   |                     d           |                     d           |j        D ]}|                     |           |                     d           d S d S )	Nr   ru   r)   r   r   r   r   r   )	r+   r.   r'   rN   r   rD   r   r   r   r   s       r   	visit_TryzASTCodeGenerator.visit_Try  s   FA 	" 	"IJJy!!!!B4T** 	$= $ $

7####44(( 	$KK   """![ & &	

9%%%%###4d++ 	$NNKK
###"""!^ & &	

9%%%%#####	$ 	$r   c                    |                                   |                     d           |                     |j                   t	          |dd           r1|                     d           |                     |j                   d S d S )Nzassert msgrU   )r+   r.   r   r   rD   r   rQ   s     r   visit_AssertzASTCodeGenerator.visit_Assert  s    I

494%% 	!KKJJtx     	! 	!r   c                     |                      |j                   t          |dd           r1|                      d           |                      |j                   d S d S )Nasnamer   )r.   rw   rD   r   rQ   s     r   visit_aliaszASTCodeGenerator.visit_alias  s`    DI44(( 	%KKKK$$$$$	% 	%r   c                    |                                   |                     d           |                     |j        d                    |j        dd          D ],}|                     d           |                     |           -d S )Nzimport r   ru   rU   r+   r.   r   namesr!   rI   rw   s      r   visit_ImportzASTCodeGenerator.visit_Import      I

4:a=!!!JqrrN 	 	DKKJJt	 	r   c                    |                                   |                     d           |j        r|                     d|j        z             |                     |j                   |                     d           |                     |j        d                    |j        dd          D ],}|                     d           |                     |           -d S )Nzfrom .z import r   ru   rU   )r+   r.   levelmoduler   r   r   s      r   visit_ImportFromz!ASTCodeGenerator.visit_ImportFrom  s    G: 	*KKdj()))DK   J

4:a=!!!JqrrN 	 	DKKJJt	 	r   c                 l   |                                   |                     d           |                     |j                   |j        sd S |                     d           |                     |j                   |j        sd S |                     d           |                     |j                   d S )Nzexec rU   )r+   r.   r   rN   globalslocalsrQ   s     r   
visit_ExeczASTCodeGenerator.visit_Exec  s    G

49| 	FD

4<   { 	FD

4;r   c                    |                                   |                     d           |                     |j        d                    |j        dd          D ],}|                     d           |                     |           -d S )Nzglobal r   ru   rU   r   r   s      r   visit_GlobalzASTCodeGenerator.visit_Global  r   r   c                 b    |                                   |                     |j                   d S r%   )r+   r   rn   rQ   s     r   
visit_ExprzASTCodeGenerator.visit_Expr  s,    

4:r   c                 X    |                                   |                     d           d S )Npassr+   r.   rQ   s     r   
visit_PasszASTCodeGenerator.visit_Pass  s*    Fr   c                 X    |                                   |                     d           d S )Nbreakr   rQ   s     r   visit_BreakzASTCodeGenerator.visit_Break  s*    Gr   c                 X    |                                   |                     d           d S )Ncontinuer   rQ   s     r   visit_ContinuezASTCodeGenerator.visit_Continue  s*    Jr   c                       fd}|S )Nc                 t    |                      d            | |           |                      d           d S )Nrt   r}   rV   )r!   rI   fs     r   _fz(ASTCodeGenerator.with_parens.<locals>._f  s<    KKAdDMMMKKr   r1   )r   r   s   ` r   with_parenszASTCodeGenerator.with_parens  s#    	 	 	 	 	 	r   andorc                     d| j         |j        j                 z   dz   }|                     |j        d                    |j        dd          D ],}|                     |           |                     |           -d S )Nr   r   ru   )bool_operatorsr   rE   r   r   r.   )r!   rI   joinerrn   s       r   visit_BoolOpzASTCodeGenerator.visit_BoolOp  s    t*47+<==C

4;q>"""[_ 	 	EKKJJu	 	r   +-rd   /%rg   z<<z>>|^&z//c                     |                      |j                   |                     d| j        |j        j                 z   dz              |                      |j                   d S Nr   )r   leftr.   r   r   rE   rightrQ   s     r   visit_BinOpzASTCodeGenerator.visit_BinOp$  sY    

49C$/0ABBSHIII

4:r   ~notc                     |                      | j        |j        j                 dz              |                     |j                   d S r   )r.   unary_operatorsr   rE   r   operandrQ   s     r   visit_UnaryOpzASTCodeGenerator.visit_UnaryOp2  s@    D():;cABBB

4<     r   c                     |                      d           |                     |j                   |                      d           |                     |j                   d S )Nzlambda : )r.   r   r\   rN   rQ   s     r   visit_LambdazASTCodeGenerator.visit_Lambda7  sT    I

49D

49r   c                     |                      |j                   |                     d           |                      |j                   |                     d           |                      |j                   d S )N if z else )r   rN   r.   r   r   rQ   s     r   visit_IfExpzASTCodeGenerator.visit_IfExp?  sh    

49F

49H

4;r   c                 B   |                      d           t          |j        |j                  D ]Y\  }}|                     |           |                      d           |                     |           |                      d           Z|                      d           d S )N{r  rU   })r.   zipkeysr   r   )r!   rI   keyrn   s       r   
visit_DictzASTCodeGenerator.visit_DictH  s    Cdi55 	 	JCJJsOOOKKJJuKKCr   c                    |                      d           |                     |j                   |j        D ]}|                      d           |                     |j                   |                      d           |                     |j                   |j        D ],}|                      d           |                     |           -|                      d           d S )N[ for r   r  ]r.   r   elt
generatorsr   r   ifsr!   rI   	generatorifexprs       r   visit_ListCompzASTCodeGenerator.visit_ListCompR      C

48 	# 	#IKK   JJy'(((KKJJy~&&&#- # #F###

6""""# 	Cr   c                    |                      d           |                     |j                   |j        D ]}|                      d           |                     |j                   |                      d           |                     |j                   |j        D ],}|                      d           |                     |           -|                      d           d S )Nrt   r  r   r  r}   r  r  s       r   visit_GeneratorExpz#ASTCodeGenerator.visit_GeneratorExpa  r  r   c                     |                      d           t          |dd           r1|                      d           |                     |j                   d S d S )Nyieldrn   r   )r.   rD   r   rn   rQ   s     r   visit_YieldzASTCodeGenerator.visit_Yieldp  s^    G4$'' 	#KKJJtz"""""	# 	#r   z==z!=<z<=>z>=iszis notinznot inc                     |                      |j                   t          |j        |j                  D ]E\  }}|                     d| j        |j                 z   dz              |                      |           Fd S r   )r   r   r  opscomparatorsr.   comparision_operatorsrE   )r!   rI   r   
comparators       r   visit_ComparezASTCodeGenerator.visit_Compare  s}    

49!$(D,<== 	# 	#NB
KKd8FFLMMMJJz""""	# 	#r   c                 x   |                      |j                   |                     d           d}|j        D ]0}|s|                     d           d}|                      |           1|j        D ]}|s|                     d           d}|j        s|                     d           n/|                     |j                   |                     d           |                      |j                   t          |dd           rH|s|                     d           d}|                     d           |                      |j                   t          |d	d           rH|s|                     d           d}|                     d           |                      |j	                   |                     d
           d S )Nrt   TrU   Frg   rZ   starargsrd   kwargsr}   )
r   funcr.   r\   keywordsr`   rn   rD   r-  r.  )r!   rI   r   r`   keywords        r   
visit_CallzASTCodeGenerator.visit_Call  s   

49C9 	 	C "D!!!EJJsOOOO} 	& 	&G "D!!!E; !D!!!! GK(((C   JJw}%%%%4T** 	& "D!!!EKKJJt}%%%44(( 	$ "D!!!EKKJJt{###Cr   c                     |                      d           |                     |j                   |                      d           d S )N`rm   rQ   s     r   
visit_ReprzASTCodeGenerator.visit_Repr  s@    C

4:Cr   c                 T    |                      t          |j                             d S r%   )r.   reprr5   rQ   s     r   	visit_NumzASTCodeGenerator.visit_Num  "    DLL!!!!!r   c                 T    |                      t          |j                             d S r%   r.   r7  r-   rQ   s     r   	visit_StrzASTCodeGenerator.visit_Str  r9  r   c                 T    |                      t          |j                             d S r%   )r.   r7  rn   rQ   s     r   visit_ConstantzASTCodeGenerator.visit_Constant  s$    D$$%%%%%r   c                 T    |                      t          |j                             d S r%   r;  rQ   s     r   visit_ByteszASTCodeGenerator.visit_Bytes  s"    KKTV%%%%%r   c                     |                      |j                   |                     d           |                     |j                   d S )Nr   )r   rn   r.   attrrQ   s     r   visit_Attributez ASTCodeGenerator.visit_Attribute  sB    

4:CDIr   c                                            |j                                        d            fd} ||j                                        d           d S )Nr  c                    t          | t                    r/t          |           t          k    r                    d           d S t          | t
          j                  rt          | dd          r                    | j	                                       d           t          | dd           r                    | j
                   t          | dd           r1                    d                               | j                   d S d S t          | t
          j                  r                    | j                   d S t          | t
          j                  r^                    | j        d                    | j        dd          D ],}                    d	                               |           -d S                     |            d S )
Nz...lowerNoner~   upperstepr   ru   rU   )r>   r   r   Ellipsisr.   r   SlicerD   r   rF  rH  rI  Indexrn   ExtSlicedims)rI   dimr!   s     r   _process_slicez8ASTCodeGenerator.visit_Subscript.<locals>._process_slice  s   4//!'--99E"""""D$*-- !4&11 +JJtz***C   4$// +JJtz***4.. *KK$$$JJty)))))* * D$*-- !

4:&&&&&D$-00 !

49Q<(((9QRR= $ $CKK%%%JJsOOOO$ $ 

4     r   r  )r   rn   r.   slice)r!   rI   rP  s   `  r   visit_Subscriptz ASTCodeGenerator.visit_Subscript  sn    

4:C	! 	! 	! 	! 	!0 	tz"""Cr   c                 :    |                      |j                   d S r%   )r.   idrQ   s     r   
visit_NamezASTCodeGenerator.visit_Name  s    DGr   c                     |j         |                     d           d S |j         du r|                     d           d S |j         du r|                     d           d S t          d|j                   )NrG  TTrueFFalsezUnknown NameConstant )rn   r.   rG   rQ   s     r   visit_NameConstantz#ASTCodeGenerator.visit_NameConstant  s    :KKZ4KKZ5  KK     )EFFFr   c                     |                      d           |j        D ],}|                     |           |                      d           -|                      d           d S )Nr  rU   r  r.   eltsr   r!   rI   r  s      r   
visit_ListzASTCodeGenerator.visit_List  sa    C9 	 	CJJsOOOKKCr   c                     |                      d           |j        D ]C}||                     |          n|                      d           |                      d           D|                      d           d S )Nrt   rG  rU   r}   r[  r]  s      r   visit_TuplezASTCodeGenerator.visit_Tuple  sv    C9 	 	C !$DJJsOOOdkk&6I6IKKCr   N)drF   
__module____qualname____doc__r#   r'   r+   r.   r   rO   visit_Interactivevisit_SuiterR   ri   r   rk   ro   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   visit_excepthandlerr   r   r   r   r   r   r   r   r   r   r   r   r   r   AndOrr   r   AddSubMultDivModPowLShiftRShiftBitOrBitXorBitAndFloorDivr   r   InvertNotUAddUSubr   r  r  r  r  r  r  r!  EqNotEqLtLtEGtGtEIsIsNotInNotInr)  r+  r2  r5  r8  r<  r>  r@  rC  rR  rU  rY  r^  r`  r1   r   r   r   r      s        
    
- 
- 
-    ,   %K% % %"' "' "'H  "	" 	" 	"       (     "# # #        &$ $ $($ $ $$$ $ $&     ,# # #6$ $ $&      .$ $ $$$ $ $4! ! !% % %  
 
 
         
  
  
     
   htw5N   [ 	##	3##$TT
CSSt    [ 	S%	3	3	O! ! !
   [     [       # # # 	
D$$
H
H # # [## # #L  " " "" " "& & &  &	& 	& 	&    >  G G G  
 
 
 
 
r   r   c                       e Zd ZdZd Zd ZeZeZeZeZ	eZ
eZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZ eZ!eZ"eZ#eZ$eZ%eZ&eZ'eZ(eZ)eZ*eZ+eZ,eZ-eZ.eZ/eZ0eZ1eZ2eZ3eZ4eZ5eZ6eZ7eZ8eZ9[dS )ASTTransformerzGeneral purpose base class for AST transformations.
    
    Every visitor method can be overridden to return an AST node that has been
    altered or replaced in some way.
    c                      |d S t          |          t          u rt           fd|D                       S t           d|j        j        z  d           }||S  ||          S )Nc                 :    g | ]}                     |          S r1   r2   r3   s     r   r6   z(ASTTransformer.visit.<locals>.<listcomp>  r7   r   r8   )r9   r:   rD   rE   rF   )r!   rI   rK   s   `  r   r   zASTTransformer.visit  st    <4::6666666777$
T^-D DdKK?Kwt}}r   c           	      
    |                                 }t          |dd          D ]2}	 t          ||t          ||                     ## t          $ r Y /w xY w|j        D ]}	 t          ||          }|njt          |t                    r fd|D             }nFt          |t                    rt           fd|D                       }n                     |          }t          |||           # t          $ r Y w xY w|S )N_attributesr1   c                 :    g | ]}                     |          S r1   r2   r4   xr!   s     r   r6   z)ASTTransformer._clone.<locals>.<listcomp>4  s#    :::qTZZ]]:::r   c              3   B   K   | ]}                     |          V  d S r%   r2   r  s     r   	<genexpr>z(ASTTransformer._clone.<locals>.<genexpr>6  s-      !?!?A$**Q--!?!?!?!?!?!?r   )	rE   rD   setattrr=   _fieldsr>   listr:   r   )r!   rI   clonerw   rn   s   `    r   _clonezASTTransformer._clone$  sR     E="55 	 	DtWT4%8%89999!   M 	, 	,D,d++ =t,, .::::E:::EEu-- .!!?!?!?!?!?!?!???EE JJu--EtU++++ "    s#   A


AA$C33
D ?D N):rF   ra  rb  rc  r   r  rO   rd  rR   re  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+  r2  r5  rC  rR  rU  rY  r^  r`  visit_comprehensionrf  ri   visit_keywordr   visit_Slicevisit_ExtSlicevisit_Indexr1   r   r   r  r    sM            0 LKNLLLOKIKHJKOIL LJLJ LKMLKJNKMJJ OOJJK  OMKKNKr   r  N)rc  genshi.compatr   r   r   r   r   r   r   __docformat__r   objectr   r  r1   r   r   <module>r     s    F E= = = = = = = = = = = = = = = = &9 9 9w w w w wv w w wtf f f f fV f f f f fr   