
    gO                        d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lm	Z	 dd
lm
Z
 ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd lm Z  ed!ed"iZ!ed#ed$ed%ed&e
d'ed(ed)ed*ed+ed,ed-iZ"e	d.ed/ed0ed1ed2ed3ed4ed5ed6ed7i
Z#ed8ed9ed#e d$iZ$i Z%e%jM                  e!       e%jM                  e"       e%jM                  e#       e%jM                  e$       dCd:Z'd; Z( G d< d=      Z) G d> d?e)      Z* G d@ dAe)      Z+yB)Dz
    ast
    ~~~

    This is a stripped down version of Armin Ronacher's ast module.

    :copyright: Copyright 2008 by Armin Ronacher.
    :license: Python License.
    )Add)And)AST)BitAnd)BitOr)BitXor)Div)Eq)FloorDiv)Gt)GtE)If)In)Invert)Is)IsNot)LShift)Lt)LtE)Mod)Mult)Name)Not)NotEq)NotIn)Or)PyCF_ONLY_AST)RShift)Sub)UAdd)USubandor+-*/z//%z<<z>>|&^z==>z>=iniszis not<z<=z!=znot in~notc                 &    t        | ||t              S )z%Parse an expression into an AST node.)compiler   )exprfilenamemodes      M/var/www/html/AdoubleTech/venv/lib/python3.12/site-packages/mako/_ast_util.pyparser8   Y   s    4477    c              #   n   K   | j                   D ]  }	 |t        | |      f  y# t        $ r Y "w xY ww)zAIterate over all fields of a node, only yielding existing fields.N)_fieldsgetattrAttributeError)nodefields     r7   iter_fieldsr@   ^   sE       	u---  		s   5&5	2525c                   "    e Zd ZdZd Zd Zd Zy)NodeVisitora  
    Walks the abstract syntax tree and call visitor functions for every node
    found.  The visitor functions may return values which will be forwarded
    by the `visit` method.

    Per default the visitor functions for the nodes are ``'visit_'`` +
    class name of the node.  So a `TryFinally` node visit function would
    be `visit_TryFinally`.  This behavior can be changed by overriding
    the `get_visitor` function.  If no visitor function exists for a node
    (return value `None`) the `generic_visit` visitor is used instead.

    Don't use the `NodeVisitor` if you want to apply changes to nodes during
    traversing.  For this a special visitor exists (`NodeTransformer`) that
    allows modifications.
    c                 N    d|j                   j                  z   }t        | |d      S )z
        Return the visitor function for this node or `None` if no visitor
        exists for this node.  In that case the generic visit function is
        used instead.
        visit_N)	__class____name__r<   )selfr>   methods      r7   get_visitorzNodeVisitor.get_visitorz   s'     DNN333tVT**r9   c                 Z    | j                  |      }| ||      S | j                  |      S )zVisit a node.)rI   generic_visit)rG   r>   fs      r7   visitzNodeVisitor.visit   s1    T"=T7N!!$''r9   c                     t        |      D ]a  \  }}t        |t              r*|D ]$  }t        |t              s| j	                  |       & @t        |t              sQ| j	                  |       c y)z9Called if no explicit visitor function exists for a node.N)r@   
isinstancelistr   rM   )rG   r>   r?   valueitems        r7   rK   zNodeVisitor.generic_visit   sa    '- 	"LE5%&! )D!$,

4() E3'

5!	"r9   N)rF   
__module____qualname____doc__rI   rM   rK    r9   r7   rB   rB   h   s     +("r9   rB   c                       e Zd ZdZd Zy)NodeTransformera  
    Walks the abstract syntax tree and allows modifications of nodes.

    The `NodeTransformer` will walk the AST and use the return value of the
    visitor functions to replace or remove the old node.  If the return
    value of the visitor function is `None` the node will be removed
    from the previous location otherwise it's replaced with the return
    value.  The return value may be the original node in which case no
    replacement takes place.

    Here an example transformer that rewrites all `foo` to `data['foo']`::

        class RewriteName(NodeTransformer):

            def visit_Name(self, node):
                return copy_location(Subscript(
                    value=Name(id='data', ctx=Load()),
                    slice=Index(value=Str(s=node.id)),
                    ctx=node.ctx
                ), node)

    Keep in mind that if the node you're operating on has child nodes
    you must either transform the child nodes yourself or call the generic
    visit function for the node first.

    Nodes that were part of a collection of statements (that applies to
    all statement nodes) may also return a list of nodes rather than just
    a single node.

    Usually you use the transformer like this::

        node = YourTransformer().visit(node)
    c                    t        |      D ]  \  }}t        ||d       }t        |t              rfg }|D ]Y  }t        |t              r6| j                  |      }|'t        |t              s|j                  |       I|j                  |       [ ||d d  t        |t              s| j                  |      }|t        ||       t        |||        |S N)
r@   r<   rO   rP   r   rM   extendappenddelattrsetattr)rG   r>   r?   	old_value
new_valuesrQ   new_nodes          r7   rK   zNodeTransformer.generic_visit   s     +D 1 	3E9eT2I)T*
& -E!%- $

5 1 =$!+E3!7&--e4$%%e,-  *	!Is+::i0#D%(D%2'	3( r9   N)rF   rS   rT   rU   rK   rV   r9   r7   rX   rX      s     Dr9   rX   c                      e Zd ZdZd Zd ZdDd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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%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+ e+d*d+      Z, e+d,d-      Z-[+d. Z.d/ Z/d0 Z0d1 Z1d2 Z2d3 Z3d4 Z4d5 Z5d6 Z6d7 Z7d8 Z8d9 Z9 e9d*d+      Z: e9d:d;      Z; e9d,d-      Z<[9d< Z=d= Z>d> Z?d? Z@d@ ZAdA ZBdB ZCyC)ESourceGeneratorz
    This visitor is able to transform a well formed syntax tree into python
    sourcecode.  For more details have a look at the docstring of the
    `node_to_source` function.
    c                 <    g | _         || _        d| _        d| _        y )Nr   )resultindent_withindentation	new_lines)rG   rf   s     r7   __init__zSourceGenerator.__init__   s     &r9   c                 ,   | j                   rm| j                  r(| j                  j                  d| j                   z         | j                  j                  | j                  | j                  z         d| _         | j                  j                  |       y )N
r   )rh   re   r\   rf   rg   )rG   xs     r7   writezSourceGenerator.write   sg    >>{{""4$..#89KKt//$2B2BBCDN1r9   c                 :    t        | j                  |      | _        y rZ   )maxrh   )rG   ns     r7   newlinezSourceGenerator.newline   s    T^^Q/r9   c                     d| _         | xj                  dz  c_        |D ]  }| j                  |        | xj                  dz  c_        y )NT   )new_linerg   rM   )rG   
statementsstmts      r7   bodyzSourceGenerator.body   sF    A 	DJJt	Ar9   c                     | j                  |j                          |j                  r=| j                          | j                  d       | j                  |j                         y y )Nelse:)rw   orelserq   rm   rG   r>   s     r7   body_or_elsezSourceGenerator.body_or_else   sC    		$));;LLNJJwIIdkk" r9   c                 4    g  fd}d gt        |j                        t        |j                        z
  z  }t        |j                  ||j                  z         D ]B  \  }} |         j	                  |       |! j                  d        j	                  |       D |j                  / |         j                  d|j                  j                  z          |j                  0 |         j                  d|j                  j                  z          y y )Nc                  P    r j                  d       y j                  d       y N, Trm   r\   rG   
want_commas   r7   write_commaz.SourceGenerator.signature.<locals>.write_comma        

4 !!$'r9   =r&   **)	lenargsdefaultsziprM   rm   varargargkwarg)rG   r>   r   paddingr   defaultr   s   `     @r7   	signaturezSourceGenerator.signature   s    
	( &C		NS-??@		7T]]+BC 	$LCMJJsO"

3

7#	$ ;;"MJJsT[[__,-::!MJJtdjjnn,- "r9   c                     |j                   D ]4  }| j                          | j                  d       | j                  |       6 y )N@)decorator_listrq   rm   rM   )rG   r>   	decorators      r7   
decoratorszSourceGenerator.decorators  s7    ,, 	"ILLNJJsOJJy!	"r9   c                     | j                          t        |j                        D ])  \  }}|r| j                  d       | j	                  |       + | j                  d       | j	                  |j
                         y )Nr   z = )rq   	enumeratetargetsrm   rM   rQ   rG   r>   idxtargets       r7   visit_AssignzSourceGenerator.visit_Assign  s`    $T\\2 	KC

4 JJv	 	

5

4::r9   c                     | j                          | j                  |j                         | j                  t        t        |j                           dz          | j                  |j                         y )Nr   )rq   rM   r   rm   BINOP_SYMBOLStypeoprQ   r{   s     r7   visit_AugAssignzSourceGenerator.visit_AugAssign   sI    

4;;

=dgg/#56

4::r9   c                    | j                          | j                  dd|j                  z  |j                  d       t	        |j
                        D ])  \  }}|r| j                  d       | j                  |       + y )Nzfrom .z import r   )rq   rm   levelmoduler   namesrG   r>   r   rR   s       r7   visit_ImportFromz SourceGenerator.visit_ImportFrom&  s`    

#

*:DKKHI"4::. 	IC

4 JJt	r9   c                     | j                          |j                  D ]$  }| j                  d       | j                  |       & y )Nzimport )rq   r   rm   rM   )rG   r>   rR   s      r7   visit_ImportzSourceGenerator.visit_Import.  s6    JJ 	DJJy!JJt	r9   c                 F    | j                          | j                  |       y rZ   )rq   rK   r{   s     r7   
visit_ExprzSourceGenerator.visit_Expr4  s    4 r9   c                 4   | j                  d       | j                  |       | j                          | j                  d|j                  z         | j	                  |j
                         | j                  d       | j                  |j                         y )N   rp   zdef %s():)rq   r   rm   namer   r   rw   r{   s     r7   visit_FunctionDefz!SourceGenerator.visit_FunctionDef8  sf    q

9tyy()tyy!

4		$))r9   c                 .    g  fd} j                  d        j                  |        j                           j                  d|j                  z         |j                  D ]  } |         j                  |        t        |d      r|j                  D ]B  } |         j                  |j                  dz           j                  |j                         D t        |dd       r3 |         j                  d        j                  |j                         t        |d	d       r3 |         j                  d
        j                  |j                          j                  xr dxs d        j                  |j                         y )Nc                  r     rj                  d       y  j                  d       j                  d       y )Nr   T(r   )	have_argsrG   s   r7   paren_or_commaz6SourceGenerator.visit_ClassDef.<locals>.paren_or_commaD  s+    

4   &

3r9      r   zclass %skeywordsr   starargsr&   kwargsr   r   :)rq   r   rm   r   basesrM   hasattrr   r   rQ   r<   r   r   rw   )rG   r>   r   basekeywordr   s   `    @r7   visit_ClassDefzSourceGenerator.visit_ClassDefA  s9   		  	q

:		)*JJ 	DJJt	
 4$== * 

7;;,-

7==)* tZ. 

3

4==)tXt, 

4 

4;;'

9%,-		$))r9   c                 r   | j                          | j                  d       | j                  |j                         | j                  d       | j	                  |j                         	 |j
                  }t        |      dk(  rt        |d   t              rn|d   }| j                          | j                  d       | j                  |j                         | j                  d       | j	                  |j                         n3| j                          | j                  d       | j	                  |       y )Nzif r   rs   r   zelif ry   )	rq   rm   rM   testrw   rz   r   rO   r   )rG   r>   else_s      r7   visit_IfzSourceGenerator.visit_Ifd  s    

5

499

3		$))KKE5zQ:eAh#;Qx

7#

499%

3		$))$

7#		%  r9   c                    | j                          | j                  d       | j                  |j                         | j                  d       | j                  |j                         | j                  d       | j                  |       y )Nzfor  in r   )rq   rm   rM   r   iterr|   r{   s     r7   	visit_ForzSourceGenerator.visit_Fory  s\    

6

4;;

6

499

3$r9   c                     | j                          | j                  d       | j                  |j                         | j                  d       | j	                  |       y )Nzwhile r   )rq   rm   rM   r   r|   r{   s     r7   visit_WhilezSourceGenerator.visit_While  s@    

8

499

3$r9   c                 D   | j                          | j                  d       | j                  |j                         |j                  ,| j                  d       | j                  |j                         | j                  d       | j                  |j
                         y )Nzwith  as r   )rq   rm   rM   context_exproptional_varsrw   r{   s     r7   
visit_WithzSourceGenerator.visit_With  sn    

7

4$$%)JJvJJt))*

3		$))r9   c                 F    | j                          | j                  d       y )Npassrq   rm   r{   s     r7   
visit_PasszSourceGenerator.visit_Pass  s    

6r9   c                 h   | j                          | j                  d       d}|j                  .| j                  d       | j                  |j                         d}|j                  D ](  }|r| j                  d       | j                  |       d}* |j
                  s| j                  d       y y )Nzprint Fz >> Tr   ,)rq   rm   destrM   valuesnl)rG   r>   r   rQ   s       r7   visit_PrintzSourceGenerator.visit_Print  s    

8
99 JJvJJtyy!J[[ 	E

4 JJuJ		
 wwJJsO r9   c                     | j                          | j                  d       t        |      D ])  \  }}|r| j                  d       | j                  |       + y )Nzdel r   )rq   rm   r   rM   r   s       r7   visit_DeletezSourceGenerator.visit_Delete  sI    

6$T? 	KC

4 JJv	r9   c                     | j                          | j                  d       | j                  |j                         |j                  D ]  }| j	                  |        y )Ntry:)rq   rm   rw   handlersrM   )rG   r>   handlers      r7   visit_TryExceptzSourceGenerator.visit_TryExcept  sF    

6		$))}} 	 GJJw	 r9   c                     | j                          | j                  d       | j                  |j                         | j                          | j                  d       | j                  |j                         y )Nr   zfinally:)rq   rm   rw   	finalbodyr{   s     r7   visit_TryFinallyz SourceGenerator.visit_TryFinally  sL    

6		$))

:		$..!r9   c                 ~    | j                          | j                  ddj                  |j                        z          y )Nzglobal r   rq   rm   joinr   r{   s     r7   visit_GlobalzSourceGenerator.visit_Global  s)    

9tyy445r9   c                 ~    | j                          | j                  ddj                  |j                        z          y )Nz	nonlocal r   r   r{   s     r7   visit_NonlocalzSourceGenerator.visit_Nonlocal  s)    

;4::!667r9   c                 |    | j                          | j                  d       | j                  |j                         y )Nzreturn )rq   rm   rM   rQ   r{   s     r7   visit_ReturnzSourceGenerator.visit_Return  s'    

9

4::r9   c                 F    | j                          | j                  d       y )Nbreakr   r{   s     r7   visit_BreakzSourceGenerator.visit_Break  s    

7r9   c                 F    | j                          | j                  d       y )Ncontinuer   r{   s     r7   visit_ContinuezSourceGenerator.visit_Continue  s    

:r9   c                    | j                          | j                  d       t        |d      rr|j                  f| j                  d       | j	                  |j                         |j
                  -| j                  d       | j	                  |j
                         y y t        |d      r|j                  | j	                  |j                         |j                  ,| j                  d       | j	                  |j                         |j                  -| j                  d       | j	                  |j                         y y y y )Nraiseexc z from r   r   )	rq   rm   r   r   rM   causer   insttbackr{   s     r7   visit_RaisezSourceGenerator.visit_Raise  s    

74DHH$8JJsOJJtxx zz%

8$

4::& & T6"tyy'<JJtyy!yy$

4 

499%zz%

4 

4::& & (="r9   c                 v    | j                  |j                         | j                  d|j                  z          y )Nr   )rM   rQ   rm   attrr{   s     r7   visit_AttributezSourceGenerator.visit_Attribute  s&    

4::

3?#r9   c                     g  fd} j                  |j                          j                  d       |j                  D ]  } |         j                  |        |j                  D ]B  } |         j                  |j
                  dz           j                  |j                         D t        |dd       r3 |         j                  d        j                  |j                         t        |dd       r3 |         j                  d        j                  |j                          j                  d       y )	Nc                  P    r j                  d       y j                  d       y r   r   r   s   r7   r   z/SourceGenerator.visit_Call.<locals>.write_comma  r   r9   r   r   r   r&   r   r   ))
rM   funcrm   r   r   r   rQ   r<   r   r   )rG   r>   r   r   r   r   s   `    @r7   
visit_CallzSourceGenerator.visit_Call  s    
	( 	

499

399 	CMJJsO	 }} 	&GMJJw{{S()JJw}}%	& 4T*MJJsOJJt}}%44(MJJtJJt{{#

3r9   c                 :    | j                  |j                         y rZ   )rm   idr{   s     r7   
visit_NamezSourceGenerator.visit_Name	  s    

477r9   c                 L    | j                  t        |j                               y rZ   )rm   strrQ   r{   s     r7   visit_NameConstantz"SourceGenerator.visit_NameConstant  s    

3tzz?#r9   c                 :    | j                  |j                         y rZ   )rm   r   r{   s     r7   	visit_argzSourceGenerator.visit_arg  s    

488r9   c                 L    | j                  t        |j                               y rZ   rm   reprsr{   s     r7   	visit_StrzSourceGenerator.visit_Str      

4< r9   c                 L    | j                  t        |j                               y rZ   r  r{   s     r7   visit_ByteszSourceGenerator.visit_Bytes  r  r9   c                 L    | j                  t        |j                               y rZ   )rm   r  rp   r{   s     r7   	visit_NumzSourceGenerator.visit_Num  r  r9   c                 L    | j                  t        |j                               y rZ   )rm   r  rQ   r{   s     r7   visit_ConstantzSourceGenerator.visit_Constant  s    

4

#$r9   c                     | j                  d       d}t        |j                        D ])  \  }}|r| j                  d       | j                  |       + | j                  |xr dxs d       y )Nr   r   r  z,)rm   r   eltsrM   r   s       r7   visit_TuplezSourceGenerator.visit_Tuple  s`    

3"499- 	IC

4 JJt	 	

3;3&$'r9   c                       fd}|S )Nc                     | j                         t        |j                        D ])  \  }}|r| j                  d       | j                  |       + | j                         y Nr   r  )rG   r>   r   rR   leftrights       r7   rM   z-SourceGenerator.sequence_visit.<locals>.visit)  sT    JJt&tyy1 !	TJJt$

4 ! JJur9   rV   r   r!  rM   s   `` r7   sequence_visitzSourceGenerator.sequence_visit(  s    	 r9   []{}c                 <   | j                  d       t        t        |j                  |j                              D ]N  \  }\  }}|r| j                  d       | j                  |       | j                  d       | j                  |       P | j                  d       y )Nr&  r   : r'  )rm   r   r   keysr   rM   )rG   r>   r   keyrQ   s        r7   
visit_DictzSourceGenerator.visit_Dict7  sx    

3!*3tyy$+++F!G 	C#u

4 JJsOJJtJJu	 	

3r9   c                    | j                  d       | j                  |j                         | j                  dt        t	        |j
                           z         | j                  |j                         | j                  d       y Nr   z %s r  )rm   rM   r   r   r   r   r!  r{   s     r7   visit_BinOpzSourceGenerator.visit_BinOpA  sV    

3

499

6M$tww-889

4::

3r9   c                    | j                  d       t        |j                        D ]F  \  }}|r.| j                  dt        t	        |j
                           z         | j                  |       H | j                  d       y r.  )rm   r   r   BOOLOP_SYMBOLSr   r   rM   )rG   r>   r   rQ   s       r7   visit_BoolOpzSourceGenerator.visit_BoolOpH  sc    

3#DKK0 	JC

6N4=$AABJJu	 	

3r9   c                 8   | j                  d       | j                  |j                         t        |j                  |j
                        D ]:  \  }}| j                  dt        t        |         z         | j                  |       < | j                  d       y r.  )rm   rM   r   r   opscomparatorsCMPOP_SYMBOLSr   )rG   r>   r   r!  s       r7   visit_ComparezSourceGenerator.visit_CompareP  st    

3

499TXXt'7'78 	IBJJvd2h 778JJu	 	

3r9   c                    | j                  d       t        t        |j                           }| j                  |       |dk(  r| j                  d       | j	                  |j
                         | j                  d       y )Nr   r1   r   r  )rm   UNARYOP_SYMBOLSr   r   rM   operand)rG   r>   r   s      r7   visit_UnaryOpzSourceGenerator.visit_UnaryOpX  sW    

3T$'']+

2;JJsO

4<< 

3r9   c                     | j                  |j                         | j                  d       | j                  |j                         | j                  d       y )Nr$  r%  )rM   rQ   rm   slicer{   s     r7   visit_SubscriptzSourceGenerator.visit_Subscripta  s8    

4::

3

4::

3r9   c                    |j                   | j                  |j                          | j                  d       |j                  | j                  |j                         |j                  a| j                  d       t        |j                  t              r|j                  j                  dk(  s| j                  |j                         y y y )Nr   None)lowerrM   rm   uppersteprO   r   r  r{   s     r7   visit_SlicezSourceGenerator.visit_Sliceg  s    ::!JJtzz"

3::!JJtzz"99 JJsOtyy$/DIILLF4J

499% 5K !r9   c                 t    |j                   D ])  \  }}|r| j                  d       | j                  |       + y r  )dimsrm   rM   r   s       r7   visit_ExtSlicezSourceGenerator.visit_ExtSlicer  s4     	IC

4 JJt	r9   c                 \    | j                  d       | j                  |j                         y )Nzyield rm   rM   rQ   r{   s     r7   visit_YieldzSourceGenerator.visit_Yieldx  s    

8

4::r9   c                     | j                  d       | j                  |j                         | j                  d       | j                  |j                         y )Nzlambda r)  )rm   r   r   rM   rw   r{   s     r7   visit_LambdazSourceGenerator.visit_Lambda|  s:    

9tyy!

4

499r9   c                 &    | j                  d       y )NEllipsis)rm   r{   s     r7   visit_EllipsiszSourceGenerator.visit_Ellipsis  s    

:r9   c                       fd}|S )Nc                     | j                         | j                  |j                         |j                  D ]  }| j                  |        | j                         y rZ   )rm   rM   elt
generators)rG   r>   comprehensionr   r!  s      r7   rM   z.SourceGenerator.generator_visit.<locals>.visit  sJ    JJtJJtxx !% *

=)*JJur9   rV   r"  s   `` r7   generator_visitzSourceGenerator.generator_visit  s    	 r9   r   r  c                    | j                  d       | j                  |j                         | j                  d       | j                  |j                         |j                  D ]  }| j                  |        | j                  d       y )Nr&  r)  r'  )rm   rM   r+  rQ   rS  )rG   r>   rT  s      r7   visit_DictCompzSourceGenerator.visit_DictComp  sc    

3

488

4

4::!__ 	&MJJ}%	&

3r9   c                     | j                  |j                         | j                  d       | j                  |j                         | j                  d       | j                  |j                         y )N if z else )rM   rw   rm   r   rz   r{   s     r7   visit_IfExpzSourceGenerator.visit_IfExp  sJ    

499

6

499

8

4;;r9   c                 \    | j                  d       | j                  |j                         y )Nr&   rI  r{   s     r7   visit_StarredzSourceGenerator.visit_Starred  s    

3

4::r9   c                 ~    | j                  d       | j                  |j                         | j                  d       y )N`rI  r{   s     r7   
visit_ReprzSourceGenerator.visit_Repr  s(    

3

4::

3r9   c                     | j                  |j                         |j                  | j                  d|j                  z          y y )Nr   )rm   r   asnamer{   s     r7   visit_aliaszSourceGenerator.visit_alias  s6    

499;;"JJv+, #r9   c                 4   | j                  d       | j                  |j                         | j                  d       | j                  |j                         |j                  r4|j                  D ]$  }| j                  d       | j                  |       & y y )Nz for r   rY  )rm   rM   r   r   ifs)rG   r>   if_s      r7   visit_comprehensionz#SourceGenerator.visit_comprehension  sp    

7

4;;

6

49988xx  

6"

3  r9   c                 ~   | j                          | j                  d       |j                  d| j                  d       | j                  |j                         |j                  ,| j                  d       | j                  |j                         | j                  d       | j                  |j
                         y )Nexceptr   r   r   )rq   rm   r   rM   r   rw   r{   s     r7   visit_excepthandlerz#SourceGenerator.visit_excepthandler  s}    

899 JJsOJJtyy!yy$

6"

499%

3		$))r9   N)rs   )DrF   rS   rT   rU   ri   rm   rq   rw   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#  
visit_List	visit_Setr,  r/  r2  r7  r;  r>  rD  rG  rJ  rL  rO  rU  visit_ListCompvisit_GeneratorExpvisit_SetComprW  rZ  r\  r_  rb  rf  ri  rV   r9   r7   rc   rc      sv   0#.."!!F*  " "68
'*$8$!!!%(	  S)JsC(I	& %S#.N(c2#C-M -
 
r9   rc   N)z	<unknown>exec),rU   _astr   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!   r1  r   r6  r9  ALL_SYMBOLSupdater8   r@   rB   rX   rc   rV   r9   r7   <module>rs     sy                                  ub$' #d
D
D	3
C
C 	8	4	8 3UD#tSA   > "   = !   = !   ? #8
*" *"Z9k 9xxk xr9   