ó
    ùÞ j‡M  ã                   óÔ  • S r SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SS	KJ	r	  SS
KJ
r
  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SS KJ r   \S!\S"0r!\S#\S$\S%\S&\
S'\S(\S)\S*\S+\S,\S-0r"\	S.\S/\S0\S1\S2\S3\S4\S5\S6\S70
r#\S8\S9\S#\ S$0r$0 r%\%RM                  \!5        \%RM                  \"5        \%RM                  \#5        \%RM                  \$5        SCS: jr'S; r( " S< S=5      r) " S> S?\)5      r* " S@ SA\)5      r+gB)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                 ó$   • [        XU[        5      $ )z%Parse an expression into an AST node.)Úcompiler   )ÚexprÚfilenameÚmodes      ÚH/var/www/html/gaurav/venv/lib/python3.13/site-packages/mako/_ast_util.pyÚparser8   W   s   € ä�4 4¬Ó7Ð7ó    c              #   ót   #   • U R                    H  n U[        X5      4v •  M     g! [         a     M%  f = f7f)zAIterate over all fields of a node, only yielding existing fields.N)Ú_fieldsÚgetattrÚAttributeError)ÚnodeÚfields     r7   Úiter_fieldsr@   \   s=   é € ð —”ˆð	Øœ Ó-Ð-Ô-ò øô ó 	Úð	üs   ‚8“'¢8§
5±8´5µ8c                   ó*   • \ rS rSrSrS rS rS rSrg)ÚNodeVisitoréf   a¦  
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                 óL   • SUR                   R                  -   n[        XS5      $ )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_visitorÚNodeVisitor.get_visitorw   s%   € ð ˜DŸN™N×3Ñ3Ñ3ˆÜ�t TÓ*Ð*r9   c                 ó\   • U R                  U5      nUb  U" U5      $ U R                  U5      $ )zVisit a node.)rJ   Úgeneric_visit)rH   r>   Úfs      r7   ÚvisitÚNodeVisitor.visit€   s1   € à×Ñ˜TÓ"ˆØ‰=Ù�T“7ˆNØ×!Ñ! $Ó'Ð'r9   c                 ó  • [        U5       Hu  u  p#[        U[        5      (       a3  U H+  n[        U[        5      (       d  M  U R	                  U5        M-     MM  [        U[        5      (       d  Md  U R	                  U5        Mw     g)z9Called if no explicit visitor function exists for a node.N)r@   Ú
isinstanceÚlistr   rO   )rH   r>   r?   ÚvalueÚitems        r7   rM   ÚNodeVisitor.generic_visit‡   s^   € ä'¨Ö-‰LˆEÜ˜%¤×&Ñ&Û!�DÜ! $¬×,Ó,ØŸ
™
 4Ö(ó "ô ˜E¤3×'Ó'Ø—
‘
˜5Ö!ò .r9   © N)	rG   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rJ   rO   rM   Ú__static_attributes__rW   r9   r7   rB   rB   f   s   † ñò +ò(õ"r9   rB   c                   ó   • \ rS rSrSrS rSrg)ÚNodeTransformeré’   a¨  
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                 óâ  • [        U5       Hß  u  p#[        XS 5      n[        U[        5      (       au  / nU Hg  n[        U[        5      (       a>  U R                  U5      nUc  M.  [        U[        5      (       d  UR                  U5        MV  UR                  U5        Mi     XCS S & M›  [        U[        5      (       d  M²  U R                  U5      nUc  [        X5        MÓ  [        XU5        Má     U$ ©N)
r@   r<   rR   rS   r   rO   ÚextendÚappendÚdelattrÚsetattr)rH   r>   r?   Ú	old_valueÚ
new_valuesrT   Únew_nodes          r7   rM   ÚNodeTransformer.generic_visitµ   sÎ   € Ü +¨DÖ 1ÑˆEÜ ¨TÓ2ˆIÜ˜)¤T×*Ñ*Ø�
Û&�EÜ! %¬×-Ñ-Ø $§
¡
¨5Ó 1˜Ø ™=Ù$Ü!+¨E´3×!7Ñ!7Ø&×-Ñ-¨eÔ4Ù$Ø×%Ñ% eÖ,ñ 'ð  *™!’Ü˜I¤s×+Ó+ØŸ:™: iÓ0�ØÑ#Ü˜DÖ(ä˜D¨Ö2ñ' !2ð( ˆr9   rW   N)rG   rX   rY   rZ   r[   rM   r\   rW   r9   r7   r^   r^   ’   s   † ñ õDr9   r^   c                   ó¾  • \ rS rSrSrS rS rSAS jrS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(\(" S'S(5      r)\(" S)S*5      r*C(S+ r+S, r,S- r-S. r.S/ r/S0 r0S1 r1S2 r2S3 r3S4 r4S5 r5\5" S'S(5      r6\5" S6S75      r7\5" S)S*5      r8C5S8 r9S9 r:S: r;S; r<S< r=S= r>S> r?S?r@g@)BÚSourceGeneratoréÍ   z¦
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                 ó:   • / U l         Xl        SU l        SU l        g )Nr   )ÚresultÚindent_withÚindentationÚ	new_lines)rH   ro   s     r7   Ú__init__ÚSourceGenerator.__init__Ô   s   € ØˆŒØ&ÔØˆÔØˆ�r9   c                 ó@  • U R                   (       ar  U R                  (       a(  U R                  R                  SU R                   -  5        U R                  R                  U R                  U R                  -  5        SU l         U R                  R                  U5        g )NÚ
r   )rq   rn   rc   ro   rp   )rH   Úxs     r7   ÚwriteÚSourceGenerator.writeÚ   sg   € Ø�>�>Ø�{�{Ø—‘×"Ñ" 4¨$¯.©.Ñ#8Ô9Ø�K‰K×Ñ˜t×/Ñ/°$×2BÑ2BÑBÔCØˆDŒNØ�‰×Ñ˜1Õr9   c                 ó:   • [        U R                  U5      U l        g ra   )Úmaxrq   )rH   Úns     r7   ÚnewlineÚSourceGenerator.newlineâ   s   € Ü˜TŸ^™^¨QÓ/ˆ�r9   c                 óš   • SU l         U =R                  S-  sl        U H  nU R                  U5        M     U =R                  S-  sl        g )NTé   )Únew_linerp   rO   )rH   Ú
statementsÚstmts      r7   ÚbodyÚSourceGenerator.bodyå   sA   € ØˆŒØ×Ò˜AÑÕÛˆDØ�J‰J�tÖñ à×Ò˜AÑÖr9   c                 óÖ   • U R                  UR                   5        UR                  (       a=  U R                  5         U R                  S5        U R                  UR                  5        g g )Núelse:)rƒ   Úorelser|   rw   ©rH   r>   s     r7   Úbody_or_elseÚSourceGenerator.body_or_elseì   sC   € Ø�	‰	�$—)‘)ÔØ�;�;Ø�L‰LŒNØ�J‰J�wÔØ�I‰I�d—k‘kÕ"ð r9   c                 ó>  ^ ^• / mU U4S jnS /[        UR                  5      [        UR                  5      -
  -  n[        UR                  X1R                  -   5       HD  u  pEU" 5         T R	                  U5        Uc  M"  T R                  S5        T R	                  U5        MF     UR                  b/  U" 5         T R                  SUR                  R                  -   5        UR                  b0  U" 5         T R                  SUR                  R                  -   5        g g )Nc                  óZ   >• T(       a  T R                  S5        g TR                  S5        g ©Nú, T©rw   rc   ©rH   Ú
want_commas   €€r7   Úwrite_commaÚ.SourceGenerator.signature.<locals>.write_commaö   ó    ø€ ÞØ—
‘
˜4Õ à×!Ñ! $Õ'r9   Ú=r&   ú**)	ÚlenÚargsÚdefaultsÚziprO   rw   ÚvarargÚargÚkwarg)rH   r>   r’   Úpaddingrœ   Údefaultr‘   s   `     @r7   Ú	signatureÚSourceGenerator.signatureó   sÔ   ù€ Øˆ
ö	(ð �&œC §	¡	›N¬S°·±Ó-?Ñ?Ñ@ˆÜ §	¡	¨7·]±]Ñ+BÖC‰LˆCÙŒMØ�J‰J�sŒOØÓ"Ø—
‘
˜3”Ø—
‘
˜7Ö#ñ Dð �;‰;Ñ"ÙŒMØ�J‰J�s˜TŸ[™[Ÿ_™_Ñ,Ô-Ø�:‰:Ñ!ÙŒMØ�J‰J�t˜dŸj™jŸn™nÑ,Õ-ð "r9   c                 óŽ   • UR                    H5  nU R                  5         U R                  S5        U R                  U5        M7     g )NÚ@)Údecorator_listr|   rw   rO   )rH   r>   Ú	decorators      r7   Ú
decoratorsÚSourceGenerator.decorators
  s2   € Ø×,Ô,ˆIØ�L‰LŒNØ�J‰J�sŒOØ�J‰J�yÖ!ò -r9   c                 ó
  • U R                  5         [        UR                  5       H.  u  p#U(       a  U R                  S5        U R	                  U5        M0     U R                  S5        U R	                  UR
                  5        g )NrŽ   z = )r|   Ú	enumerateÚtargetsrw   rO   rT   ©rH   r>   ÚidxÚtargets       r7   Úvisit_AssignÚSourceGenerator.visit_Assign  sY   € Ø�‰ŒÜ$ T§\¡\Ö2‰KˆCÞØ—
‘
˜4Ô Ø�J‰J�vÖñ 3ð 	�
‰
�5ÔØ�
‰
�4—:‘:Õr9   c                 óì   • U R                  5         U R                  UR                  5        U R                  [        [        UR                  5         S-   5        U R                  UR                  5        g )Nr•   )r|   rO   r­   rw   ÚBINOP_SYMBOLSÚtypeÚoprT   rˆ   s     r7   Úvisit_AugAssignÚSourceGenerator.visit_AugAssign  sI   € Ø�‰ŒØ�
‰
�4—;‘;ÔØ�
‰
”=¤ d§g¡g£Ñ/°#Ñ5Ô6Ø�
‰
�4—:‘:Õr9   c                 ó  • U R                  5         U R                  SSUR                  -  < UR                  < S35        [	        UR
                  5       H.  u  p#U(       a  U R                  S5        U R                  U5        M0     g )Nzfrom Ú.z import rŽ   )r|   rw   ÚlevelÚmoduler©   Únames©rH   r>   r¬   rU   s       r7   Úvisit_ImportFromÚ SourceGenerator.visit_ImportFrom!  sY   € Ø�‰ŒØ�
Š
¨#°·
±
Ó*:¸D¿K¼KÐHÔIÜ" 4§:¡:Ö.‰IˆCÞØ—
‘
˜4Ô Ø�J‰J�tÖò /r9   c                 óŽ   • U R                  5         UR                   H%  nU R                  S5        U R                  U5        M'     g )Nzimport )r|   rº   rw   rO   )rH   r>   rU   s      r7   Úvisit_ImportÚSourceGenerator.visit_Import)  s1   € Ø�‰ŒØ—J”JˆDØ�J‰J�yÔ!Ø�J‰J�tÖò r9   c                 óF   • U R                  5         U R                  U5        g ra   )r|   rM   rˆ   s     r7   Ú
visit_ExprÚSourceGenerator.visit_Expr/  s   € Ø�‰ŒØ×Ñ˜4Õ r9   c                 ó.  • U R                  SS9  U R                  U5        U R                  5         U R                  SUR                  -  5        U R	                  UR
                  5        U R                  S5        U R                  UR                  5        g )Né   ©r{   zdef %s(ú):)r|   r¦   rw   Únamer    r˜   rƒ   rˆ   s     r7   Úvisit_FunctionDefÚ!SourceGenerator.visit_FunctionDef3  sf   € Ø�‰�qˆÑØ�‰˜ÔØ�‰ŒØ�
‰
�9˜tŸy™yÑ(Ô)Ø�‰�t—y‘yÔ!Ø�
‰
�4ÔØ�	‰	�$—)‘)Õr9   c                 ód  ^ ^• / mUU 4S jnT R                  SS9  T R                  U5        T R                  5         T R                  SUR                  -  5        UR                   H  nU" 5         T R                  U5        M     [        US5      (       aÝ  UR                   HC  nU" 5         T R                  UR                  S-   5        T R                  UR                  5        ME     [        USS 5      (       a3  U" 5         T R                  S5        T R                  UR                  5        [        US	S 5      (       a3  U" 5         T R                  S
5        T R                  UR                  5        T R                  T=(       a    S=(       d    S5        T R                  UR                  5        g )Nc                  ó|   >• T (       a  TR                  S5        g T R                  S5        TR                  S5        g )NrŽ   TÚ(r�   )Ú	have_argsrH   s   €€r7   Úparen_or_commaÚ6SourceGenerator.visit_ClassDef.<locals>.paren_or_comma?  s+   ø€ ÞØ—
‘
˜4Õ à× Ñ  Ô&Ø—
‘
˜3•r9   é   rÆ   zclass %sÚkeywordsr•   Ústarargsr&   Úkwargsr–   rÇ   Ú:)r|   r¦   rw   rÈ   ÚbasesrO   ÚhasattrrÒ   rœ   rT   r<   rÓ   rÔ   rƒ   )rH   r>   rÏ   ÚbaseÚkeywordrÎ   s   `    @r7   Úvisit_ClassDefÚSourceGenerator.visit_ClassDef<  s8  ù€ Øˆ	ö	 ð 	�‰�qˆÑØ�‰˜ÔØ�‰ŒØ�
‰
�: §	¡	Ñ)Ô*Ø—J”JˆDÙÔØ�J‰J�tÖñ ô
 �4˜×$Ñ$ØŸ=œ=�ÙÔ Ø—
‘
˜7Ÿ;™;¨Ñ,Ô-Ø—
‘
˜7Ÿ=™=Ö)ñ )ô �t˜Z¨×.Ñ.ÙÔ Ø—
‘
˜3”Ø—
‘
˜4Ÿ=™=Ô)Ü�t˜X t×,Ñ,ÙÔ Ø—
‘
˜4Ô Ø—
‘
˜4Ÿ;™;Ô'Ø�
‰
�9×% ×,¨Ô-Ø�	‰	�$—)‘)Õr9   c                 ó€  • U R                  5         U R                  S5        U R                  UR                  5        U R                  S5        U R	                  UR                  5         UR
                  n[        U5      S:X  a†  [        US   [        5      (       an  US   nU R                  5         U R                  S5        U R                  UR                  5        U R                  S5        U R	                  UR                  5        O3U R                  5         U R                  S5        U R	                  U5        g MÖ  )Nzif rÕ   r   r   zelif r†   )	r|   rw   rO   Útestrƒ   r‡   r—   rR   r   )rH   r>   Úelse_s      r7   Úvisit_IfÚSourceGenerator.visit_If_  sÛ   € Ø�‰ŒØ�
‰
�5ÔØ�
‰
�4—9‘9ÔØ�
‰
�3ŒØ�	‰	�$—)‘)ÔØØ—K‘KˆEÜ�5‹z˜Q‹¤:¨e°A©h¼×#;Ñ#;Ø˜Q‘x�Ø—‘”Ø—
‘
˜7Ô#Ø—
‘
˜4Ÿ9™9Ô%Ø—
‘
˜3”Ø—	‘	˜$Ÿ)™)Õ$à—‘”Ø—
‘
˜7Ô#Ø—	‘	˜%Ô Øñ r9   c                 ó  • U R                  5         U R                  S5        U R                  UR                  5        U R                  S5        U R                  UR                  5        U R                  S5        U R                  U5        g )Nzfor ú in rÕ   )r|   rw   rO   r­   Úiterr‰   rˆ   s     r7   Ú	visit_ForÚSourceGenerator.visit_Fort  s\   € Ø�‰ŒØ�
‰
�6ÔØ�
‰
�4—;‘;ÔØ�
‰
�6ÔØ�
‰
�4—9‘9ÔØ�
‰
�3ŒØ×Ñ˜$Õr9   c                 óÀ   • U R                  5         U R                  S5        U R                  UR                  5        U R                  S5        U R	                  U5        g )Nzwhile rÕ   )r|   rw   rO   rÝ   r‰   rˆ   s     r7   Úvisit_WhileÚSourceGenerator.visit_While}  s@   € Ø�‰ŒØ�
‰
�8ÔØ�
‰
�4—9‘9ÔØ�
‰
�3ŒØ×Ñ˜$Õr9   c                 óF  • U R                  5         U R                  S5        U R                  UR                  5        UR                  b,  U R                  S5        U R                  UR                  5        U R                  S5        U R                  UR
                  5        g )Nzwith ú as rÕ   )r|   rw   rO   Úcontext_exprÚoptional_varsrƒ   rˆ   s     r7   Ú
visit_WithÚSourceGenerator.visit_With„  sn   € Ø�‰ŒØ�
‰
�7ÔØ�
‰
�4×$Ñ$Ô%Ø×ÑÑ)Ø�J‰J�vÔØ�J‰J�t×)Ñ)Ô*Ø�
‰
�3ŒØ�	‰	�$—)‘)Õr9   c                 óF   • U R                  5         U R                  S5        g )NÚpass©r|   rw   rˆ   s     r7   Ú
visit_PassÚSourceGenerator.visit_PassŽ  s   € Ø�‰ŒØ�
‰
�6Õr9   c                 ó‚  • U R                  5         U R                  S5        SnUR                  b.  U R                  S5        U R                  UR                  5        SnUR                   H.  nU(       a  U R                  S5        U R                  U5        SnM0     UR
                  (       d  U R                  S5        g g )Nzprint Fz >> TrŽ   Ú,)r|   rw   ÚdestrO   ÚvaluesÚnl)rH   r>   r‘   rT   s       r7   Úvisit_PrintÚSourceGenerator.visit_Print’  sŽ   € à�‰ŒØ�
‰
�8ÔØˆ
Ø�9‰9Ñ Ø�J‰J�vÔØ�J‰J�t—y‘yÔ!ØˆJØ—[”[ˆEÞØ—
‘
˜4Ô Ø�J‰J�uÔØŠJñ	 !ð
 �w�wØ�J‰J�s�Oð r9   c                 óÀ   • U R                  5         U R                  S5        [        U5       H.  u  p#U(       a  U R                  S5        U R                  U5        M0     g )Nzdel rŽ   )r|   rw   r©   rO   r«   s       r7   Úvisit_DeleteÚSourceGenerator.visit_Delete£  sB   € Ø�‰ŒØ�
‰
�6ÔÜ$ Tž?‰KˆCÞØ—
‘
˜4Ô Ø�J‰J�vÖò +r9   c                 óÄ   • U R                  5         U R                  S5        U R                  UR                  5        UR                   H  nU R	                  U5        M     g )Nútry:)r|   rw   rƒ   ÚhandlersrO   )rH   r>   Úhandlers      r7   Úvisit_TryExceptÚSourceGenerator.visit_TryExcept«  sA   € Ø�‰ŒØ�
‰
�6ÔØ�	‰	�$—)‘)ÔØ—}”}ˆGØ�J‰J�wÖò %r9   c                 óô   • U R                  5         U R                  S5        U R                  UR                  5        U R                  5         U R                  S5        U R                  UR                  5        g )Nrÿ   zfinally:)r|   rw   rƒ   Ú	finalbodyrˆ   s     r7   Úvisit_TryFinallyÚ SourceGenerator.visit_TryFinally²  sL   € Ø�‰ŒØ�
‰
�6ÔØ�	‰	�$—)‘)ÔØ�‰ŒØ�
‰
�:ÔØ�	‰	�$—.‘.Õ!r9   c                 ó~   • U R                  5         U R                  SSR                  UR                  5      -   5        g )Nzglobal rŽ   ©r|   rw   Újoinrº   rˆ   s     r7   Úvisit_GlobalÚSourceGenerator.visit_Globalº  s)   € Ø�‰ŒØ�
‰
�9˜tŸy™y¨¯©Ó4Ñ4Õ5r9   c                 ó~   • U R                  5         U R                  SSR                  UR                  5      -   5        g )Nz	nonlocal rŽ   r	  rˆ   s     r7   Úvisit_NonlocalÚSourceGenerator.visit_Nonlocal¾  s)   € Ø�‰ŒØ�
‰
�; §¡¨4¯:©:Ó!6Ñ6Õ7r9   c                 ó|   • U R                  5         U R                  S5        U R                  UR                  5        g )Nzreturn )r|   rw   rO   rT   rˆ   s     r7   Úvisit_ReturnÚSourceGenerator.visit_ReturnÂ  s'   € Ø�‰ŒØ�
‰
�9ÔØ�
‰
�4—:‘:Õr9   c                 óF   • U R                  5         U R                  S5        g )NÚbreakrñ   rˆ   s     r7   Úvisit_BreakÚSourceGenerator.visit_BreakÇ  s   € Ø�‰ŒØ�
‰
�7Õr9   c                 óF   • U R                  5         U R                  S5        g )NÚcontinuerñ   rˆ   s     r7   Úvisit_ContinueÚSourceGenerator.visit_ContinueË  s   € Ø�‰ŒØ�
‰
�:Õr9   c                 ó¬  • U R                  5         U R                  S5        [        US5      (       at  UR                  bg  U R                  S5        U R	                  UR                  5        UR
                  b-  U R                  S5        U R	                  UR
                  5        g g [        US5      (       a�  UR                  b�  U R	                  UR                  5        UR                  b,  U R                  S5        U R	                  UR                  5        UR                  b-  U R                  S5        U R	                  UR                  5        g g g g )NÚraiseÚexcÚ z from r²   rŽ   )	r|   rw   r×   r  rO   Úcauser²   ÚinstÚtbackrˆ   s     r7   Úvisit_RaiseÚSourceGenerator.visit_RaiseÏ  sô   € à�‰ŒØ�
‰
�7ÔÜ�4˜×Ñ D§H¡HÑ$8Ø�J‰J�sŒOØ�J‰J�t—x‘xÔ Ø�z‰zÑ%Ø—
‘
˜8Ô$Ø—
‘
˜4Ÿ:™:Õ&ð &ô �T˜6×"Ñ" t§y¡yÑ'<Ø�J‰J�t—y‘yÔ!Ø�y‰yÑ$Ø—
‘
˜4Ô Ø—
‘
˜4Ÿ9™9Ô%Ø�z‰zÑ%Ø—
‘
˜4Ô Ø—
‘
˜4Ÿ:™:Õ&ð &ð (=Ð"r9   c                 óv   • U R                  UR                  5        U R                  SUR                  -   5        g )Nr·   )rO   rT   rw   Úattrrˆ   s     r7   Úvisit_AttributeÚSourceGenerator.visit_Attributeä  s&   € Ø�
‰
�4—:‘:ÔØ�
‰
�3˜Ÿ™‘?Õ#r9   c                 ó¤  ^ ^• / mU U4S jnT R                  UR                  5        T R                  S5        UR                   H  nU" 5         T R                  U5        M     UR                   HC  nU" 5         T R                  UR
                  S-   5        T R                  UR                  5        ME     [        USS 5      (       a3  U" 5         T R                  S5        T R                  UR                  5        [        USS 5      (       a3  U" 5         T R                  S5        T R                  UR                  5        T R                  S5        g )	Nc                  óZ   >• T(       a  T R                  S5        g TR                  S5        g r�   r�   r�   s   €€r7   r’   Ú/SourceGenerator.visit_Call.<locals>.write_commaë  r”   r9   rÍ   r•   rÓ   r&   rÔ   r–   Ú))
rO   Úfuncrw   r˜   rÒ   rœ   rT   r<   rÓ   rÔ   )rH   r>   r’   rœ   rÙ   r‘   s   `    @r7   Ú
visit_CallÚSourceGenerator.visit_Callè  sî   ù€ Øˆ
ö	(ð 	�
‰
�4—9‘9ÔØ�
‰
�3ŒØ—9”9ˆCÙŒMØ�J‰J�sŽOñ ð —}”}ˆGÙŒMØ�J‰J�w—{‘{ SÑ(Ô)Ø�J‰J�w—}‘}Ö%ñ %ô �4˜ T×*Ñ*ÙŒMØ�J‰J�sŒOØ�J‰J�t—}‘}Ô%Ü�4˜ 4×(Ñ(ÙŒMØ�J‰J�tÔØ�J‰J�t—{‘{Ô#Ø�
‰
�3�r9   c                 ó:   • U R                  UR                  5        g ra   )rw   Úidrˆ   s     r7   Ú
visit_NameÚSourceGenerator.visit_Name  s   € Ø�
‰
�4—7‘7Õr9   c                 ó:   • U R                  UR                  5        g ra   )rw   rœ   rˆ   s     r7   Ú	visit_argÚSourceGenerator.visit_arg  s   € Ø�
‰
�4—8‘8Õr9   c                 óL   • U R                  [        UR                  5      5        g ra   )rw   ÚreprrT   rˆ   s     r7   Úvisit_ConstantÚSourceGenerator.visit_Constant
  s   € Ø�
‰
”4˜Ÿ
™
Ó#Õ$r9   c                 óþ   • U R                  S5        Sn[        UR                  5       H.  u  p#U(       a  U R                  S5        U R                  U5        M0     U R                  U=(       a    S=(       d    S5        g )NrÍ   éÿÿÿÿrŽ   r+  z,)©rw   r©   ÚeltsrO   r»   s       r7   Úvisit_TupleÚSourceGenerator.visit_Tuple  sY   € Ø�
‰
�3ŒØˆÜ" 4§9¡9Ö-‰IˆCÞØ—
‘
˜4Ô Ø�J‰J�tÖñ .ð 	�
‰
�3—;˜3×& $Õ'r9   c                 ó   ^ ^• U U4S jnU$ )Nc                 óØ   >• U R                  T5        [        UR                  5       H.  u  p#U(       a  U R                  S5        U R                  U5        M0     U R                  T5        g ©NrŽ   r<  )rH   r>   r¬   rU   ÚleftÚrights       €€r7   rO   Ú-SourceGenerator.sequence_visit.<locals>.visit  sM   ø€ Ø�J‰J�tÔÜ& t§y¡yÖ1‘	�ÞØ—J‘J˜tÔ$Ø—
‘
˜4Ö ñ 2ð �J‰J�uÕr9   rW   ©rC  rD  rO   s   `` r7   Úsequence_visitÚSourceGenerator.sequence_visit  s   ù€ ö	ð ˆr9   Ú[Ú]Ú{Ú}c                 óH  • U R                  S5        [        [        UR                  UR                  5      5       HS  u  nu  p4U(       a  U R                  S5        U R                  U5        U R                  S5        U R                  U5        MU     U R                  S5        g )NrK  rŽ   ú: rL  )rw   r©   rš   Úkeysr÷   rO   )rH   r>   r¬   ÚkeyrT   s        r7   Ú
visit_DictÚSourceGenerator.visit_Dict%  sr   € Ø�
‰
�3ŒÜ!*¬3¨t¯y©y¸$¿+¹+Ó+FÖ!GÑˆC‘�#ÞØ—
‘
˜4Ô Ø�J‰J�sŒOØ�J‰J�tÔØ�J‰J�uÖñ "Hð 	�
‰
�3�r9   c                 ó  • U R                  S5        U R                  UR                  5        U R                  S[        [	        UR
                  5         -  5        U R                  UR                  5        U R                  S5        g ©NrÍ   z %s r+  )rw   rO   rC  r±   r²   r³   rD  rˆ   s     r7   Úvisit_BinOpÚSourceGenerator.visit_BinOp/  sV   € Ø�
‰
�3ŒØ�
‰
�4—9‘9ÔØ�
‰
�6œM¬$¨t¯w©w«-Ñ8Ñ8Ô9Ø�
‰
�4—:‘:ÔØ�
‰
�3�r9   c                 ó  • U R                  S5        [        UR                  5       HK  u  p#U(       a.  U R                  S[        [	        UR
                  5         -  5        U R                  U5        MM     U R                  S5        g rT  )rw   r©   r÷   ÚBOOLOP_SYMBOLSr²   r³   rO   )rH   r>   r¬   rT   s       r7   Úvisit_BoolOpÚSourceGenerator.visit_BoolOp6  s\   € Ø�
‰
�3ŒÜ# D§K¡KÖ0‰JˆCÞØ—
‘
˜6¤N´4¸¿¹³=Ñ$AÑAÔBØ�J‰J�uÖñ 1ð 	�
‰
�3�r9   c                 ó:  • U R                  S5        U R                  UR                  5        [        UR                  UR
                  5       H:  u  p#U R                  S[        [        U5         -  5        U R                  U5        M<     U R                  S5        g rT  )rw   rO   rC  rš   ÚopsÚcomparatorsÚCMPOP_SYMBOLSr²   )rH   r>   r³   rD  s       r7   Úvisit_CompareÚSourceGenerator.visit_Compare>  sm   € Ø�
‰
�3ŒØ�
‰
�4—9‘9ÔÜ˜TŸX™X t×'7Ñ'7Ö8‰IˆBØ�J‰J�v¤¬d°2«hÑ 7Ñ7Ô8Ø�J‰J�uÖñ 9ð 	�
‰
�3�r9   c                 ó  • U R                  S5        [        [        UR                  5         nU R                  U5        US:X  a  U R                  S5        U R	                  UR
                  5        U R                  S5        g )NrÍ   r1   r  r+  )rw   ÚUNARYOP_SYMBOLSr²   r³   rO   Úoperand)rH   r>   r³   s      r7   Úvisit_UnaryOpÚSourceGenerator.visit_UnaryOpF  sW   € Ø�
‰
�3ŒÜœT $§'¡'›]Ñ+ˆØ�
‰
�2ŒØ�‹;Ø�J‰J�sŒOØ�
‰
�4—<‘<Ô Ø�
‰
�3�r9   c                 ó´   • U R                  UR                  5        U R                  S5        U R                  UR                  5        U R                  S5        g )NrI  rJ  )rO   rT   rw   Úslicerˆ   s     r7   Úvisit_SubscriptÚSourceGenerator.visit_SubscriptO  s8   € Ø�
‰
�4—:‘:ÔØ�
‰
�3ŒØ�
‰
�4—:‘:ÔØ�
‰
�3�r9   c                 ó®  • UR                   b  U R                  UR                   5        U R                  S5        UR                  b  U R                  UR                  5        UR                  bg  U R                  S5        [        UR                  [        5      (       a  UR                  R                  S:X  d  U R                  UR                  5        g g g )NrÕ   ÚNone)ÚlowerrO   rw   ÚupperÚsteprR   r   r0  rˆ   s     r7   Úvisit_SliceÚSourceGenerator.visit_SliceU  s‘   € Ø�:‰:Ñ!Ø�J‰J�t—z‘zÔ"Ø�
‰
�3ŒØ�:‰:Ñ!Ø�J‰J�t—z‘zÔ"Ø�9‰9Ñ Ø�J‰J�sŒOÜ˜tŸy™y¬$×/Ñ/°D·I±I·L±LÀFÓ4JØ—
‘
˜4Ÿ9™9Õ%ð 5Kð !r9   c                 ó€   • UR                    H.  u  p#U(       a  U R                  S5        U R                  U5        M0     g rB  )Údimsrw   rO   r»   s       r7   Úvisit_ExtSliceÚSourceGenerator.visit_ExtSlice`  s-   € ØŸœ‰IˆCÞØ—
‘
˜4Ô Ø�J‰J�tÖò #r9   c                 ó\   • U R                  S5        U R                  UR                  5        g )Nzyield ©rw   rO   rT   rˆ   s     r7   Úvisit_YieldÚSourceGenerator.visit_Yieldf  s   € Ø�
‰
�8ÔØ�
‰
�4—:‘:Õr9   c                 ó´   • U R                  S5        U R                  UR                  5        U R                  S5        U R                  UR                  5        g )Nzlambda rN  )rw   r    r˜   rO   rƒ   rˆ   s     r7   Úvisit_LambdaÚSourceGenerator.visit_Lambdaj  s:   € Ø�
‰
�9ÔØ�‰�t—y‘yÔ!Ø�
‰
�4ÔØ�
‰
�4—9‘9Õr9   c                 ó   ^ ^• U U4S jnU$ )Nc                 óÈ   >• U R                  T5        U R                  UR                  5        UR                   H  nU R                  U5        M     U R                  T5        g ra   )rw   rO   ÚeltÚ
generators)rH   r>   ÚcomprehensionrC  rD  s      €€r7   rO   Ú.SourceGenerator.generator_visit.<locals>.visitq  sE   ø€ Ø�J‰J�tÔØ�J‰J�t—x‘xÔ Ø!%§¤�Ø—
‘
˜=Ö)ñ "1à�J‰J�uÕr9   rW   rF  s   `` r7   Úgenerator_visitÚSourceGenerator.generator_visitp  s   ù€ ö	ð ˆr9   rÍ   r+  c                 ó  • U R                  S5        U R                  UR                  5        U R                  S5        U R                  UR                  5        UR                   H  nU R                  U5        M     U R                  S5        g )NrK  rN  rL  )rw   rO   rP  rT   r  )rH   r>   r€  s      r7   Úvisit_DictCompÚSourceGenerator.visit_DictComp  s^   € Ø�
‰
�3ŒØ�
‰
�4—8‘8ÔØ�
‰
�4ÔØ�
‰
�4—:‘:ÔØ!Ÿ_œ_ˆMØ�J‰J�}Ö%ñ -à�
‰
�3�r9   c                 óê   • U R                  UR                  5        U R                  S5        U R                  UR                  5        U R                  S5        U R                  UR                  5        g )Nú if z else )rO   rƒ   rw   rÝ   r‡   rˆ   s     r7   Úvisit_IfExpÚSourceGenerator.visit_IfExpˆ  sJ   € Ø�
‰
�4—9‘9ÔØ�
‰
�6ÔØ�
‰
�4—9‘9ÔØ�
‰
�8ÔØ�
‰
�4—;‘;Õr9   c                 ó\   • U R                  S5        U R                  UR                  5        g )Nr&   rv  rˆ   s     r7   Úvisit_StarredÚSourceGenerator.visit_Starred�  s   € Ø�
‰
�3ŒØ�
‰
�4—:‘:Õr9   c                 ó~   • U R                  S5        U R                  UR                  5        U R                  S5        g )NÚ`rv  rˆ   s     r7   Ú
visit_ReprÚSourceGenerator.visit_Repr“  s(   € à�
‰
�3ŒØ�
‰
�4—:‘:ÔØ�
‰
�3�r9   c                 ó’   • U R                  UR                  5        UR                  b  U R                  SUR                  -   5        g g )Nrê   )rw   rÈ   Úasnamerˆ   s     r7   Úvisit_aliasÚSourceGenerator.visit_alias›  s6   € Ø�
‰
�4—9‘9ÔØ�;‰;Ñ"Ø�J‰J�v §¡Ñ+Õ,ð #r9   c                 óB  • U R                  S5        U R                  UR                  5        U R                  S5        U R                  UR                  5        UR                  (       a6  UR                   H%  nU R                  S5        U R                  U5        M'     g g )Nz for râ   rˆ  )rw   rO   r­   rã   Úifs)rH   r>   Úif_s      r7   Úvisit_comprehensionÚ#SourceGenerator.visit_comprehension   sk   € Ø�
‰
�7ÔØ�
‰
�4—;‘;ÔØ�
‰
�6ÔØ�
‰
�4—9‘9ÔØ�8�8Ø—x”x�Ø—
‘
˜6Ô"Ø—
‘
˜3–ò  ð r9   c                 ó‚  • U R                  5         U R                  S5        UR                  be  U R                  S5        U R                  UR                  5        UR                  b,  U R                  S5        U R                  UR                  5        U R                  S5        U R                  UR
                  5        g )NÚexceptr  rê   rÕ   )r|   rw   r²   rO   rÈ   rƒ   rˆ   s     r7   Úvisit_excepthandlerÚ#SourceGenerator.visit_excepthandlerª  s}   € Ø�‰ŒØ�
‰
�8ÔØ�9‰9Ñ Ø�J‰J�sŒOØ�J‰J�t—y‘yÔ!Ø�y‰yÑ$Ø—
‘
˜6Ô"Ø—
‘
˜4Ÿ9™9Ô%Ø�
‰
�3ŒØ�	‰	�$—)‘)Õr9   )ro   rp   r€   rq   rn   N)r   )ArG   rX   rY   rZ   r[   rr   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-  r1  r4  r8  r>  rG  Ú
visit_ListÚ	visit_SetrQ  rU  rY  r_  rd  rh  ro  rs  rw  rz  r‚  Úvisit_ListCompÚvisit_GeneratorExpÚvisit_SetCompr…  r‰  rŒ  r�  r”  r™  r�  r\   rW   r9   r7   rk   rk   Í   s]  † ñòòô0òò#ò.ò."òòòòò!òò!òFò* ò òòòò"ò ò"ò6ò8òò
òò'ò*$òò8òò%ò(ò	ñ    SÓ)€JÙ˜s CÓ(€IØòòòòòòò	&òòòòñ % S¨#Ó.€NÙ(¨¨cÓ2ÐÙ# C¨Ó-€MØòò òòò-ò
 õ
r9   rk   N)z	<unknown>Úexec),r[   Ú_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!   rX  r±   r^  rb  ÚALL_SYMBOLSÚupdater8   r@   rB   r^   rk   rW   r9   r7   Ú<module>r¨     sw  ðñõ Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý à�u˜b $Ð'€ð ˆØˆØˆ#ØˆØˆdØˆØ
ˆDØ
ˆDØ	ˆ3Ø
ˆCØ
ˆCð€ð ˆØˆØˆØˆØˆØ	ˆ8ØˆØˆØ	ˆ4Ø	ˆ8ð€ð ˜3  U¨D°#°t¸SÐA€à€Ø × Ñ �>Ô "Ø × Ñ �=Ô !Ø × Ñ �=Ô !Ø × Ñ �?Ô #ô8ò
÷)"ñ )"ôX8�kô 8ôvg�kõ gr9   