+
    WBi                     6   R t ^ RIt^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIHt 0 Rmt]P                  ! R4      t
]P                  ! ]4       RR lt ! R R	]P                  4      t ! R
 R]P                  4      t ! R R]P                  4      t ! R R4      tR# )zyHandles parsing of Python code.

Parsing to AST is done via _ast on Python > 2.5, otherwise the compiler
module is used.
N)	_ast_util)compat)
exceptions)utilargc           
     &    \         P                  ! V RV4      #   \         dl   p\        P                  ! R\
        P                  ! 4       P                  P                  : R\
        P                  ! 4       : RT R,          : R23/ TB ThRp?ii ; i)zParse an expression into ASTz	<unknown>(z) z (:    2   N)N)	r   parse	Exceptionr   SyntaxExceptionr   exception_as	__class____name__)codemodeexception_kwargses   &&, 2/usr/lib/python3.14/site-packages/mako/pyparser.pyr   r       s    t[$77 	(( ##%//88##%T

	
 
 		s    BA&BBc                      a  ] tR t^1t o R tR tR tR tR tR t	R t
R t];ttR	 tR
 tR tR tR tR tR tRtV tR# )FindIdentifiersc                X    R V n         R V n        \        4       V n        Wn        W n        R# FN)in_functionin_assign_targetssetlocal_ident_stacklistenerr   selfr   r   s   &&,r   __init__FindIdentifiers.__init__2   s'     !&!$  0    c                    V P                   '       g(   V P                  P                  P                  V4       R # V P                  P                  V4       R # N)r   r   declared_identifiersaddr   )r!   names   &&r   _add_declaredFindIdentifiers._add_declared9   s:    MM..2248""&&t,r$   c                <    V P                  VP                  4       R # r&   )r*   r)   r!   nodes   &&r   visit_ClassDefFindIdentifiers.visit_ClassDef?   s    499%r$   c                    V P                  VP                  4       V P                  pR V n        VP                   F  pV P                  V4       K  	  W n        R# TN)visitvaluer   targets)r!   r.   in_ans   &&  r   visit_AssignFindIdentifiers.visit_AssignB   sF    
 	

4::%%!%AJJqM !%r$   c                    VP                   e   V P                  VP                   4       VP                  e   V P                  VP                  4       VP                   F  pV P                  V4       K  	  R # r&   )r)   r*   typer3   bodyr!   r.   	statements   && r   visit_ExceptHandler#FindIdentifiers.visit_ExceptHandlerN   sR    99 tyy)99 JJtyy!IJJy! #r$   c                *    V P                  VR 4       R# r2   )_visit_function)r!   r.   argss   &&*r   visit_LambdaFindIdentifiers.visit_LambdaV   s    T4(r$   c                `    V P                  VP                  4       V P                  VR 4       R# r   )r*   r)   rB   r-   s   &&r   visit_FunctionDef!FindIdentifiers.visit_FunctionDefY   s$    499%T5)r$   c                    V P                   '       dL   VP                   F9  pV P                  VP                  4       V P                  VP                  4       K;  	  R # V P                  V4       R # r&   r   
generatorsr3   targetitergeneric_visitr!   r.   comps   && r   visit_ListCompFindIdentifiers.visit_ListComp]   L    

4;;'

499% ( t$r$   c                    V P                   '       dL   VP                   F9  pV P                  VP                  4       V P                  VP                  4       K;  	  R # V P                  V4       R # r&   rJ   rO   s   && r   visit_DictCompFindIdentifiers.visit_DictCompg   rS   r$   c              #     "   V F=  p\        V\        P                  4      '       d   VP                   R j  xL
  K9  Vx  K?  	  R #  L5ir&   )
isinstance_astTupleelts)r!   rC   r   s   && r   _expand_tuplesFindIdentifiers._expand_tupleso   s5     C#tzz**88##		 #s   5A
AA
c                   V P                   pR V n         V P                  pTP                  V P                  VP                  P                  4       Uu. uF  p\        V4      NK  	  up4      V n        V'       d   V P                  VP                  4       M$VP                   F  pV P                  V4       K  	  W0n         W@n        R# u upi r2   )r   r   unionr\   rC   arg_idr3   r<   )r!   r.   islambdainfr   r   r7   s   &&&    r   rB   FindIdentifiers._visit_functionv   s      22!2!8!8$($7$7		$GH$GSVC[$GH"
 JJtyy!YY

1 !2 Is   Cc                   V P                  VP                  4       V P                  VP                  4       VP                   F  pV P                  V4       K  	  VP                   F  pV P                  V4       K  	  R # r&   )r3   rM   rL   r<   orelser=   s   && r   	visit_ForFindIdentifiers.visit_For   sX     	

499

4;;IJJy! #IJJy! %r$   c                   \        VP                  \        P                  4      '       d   V P	                  VP
                  4       R # VP
                  \        9  dv   VP
                  V P                  P                  9  dO   VP
                  V P                  9  d2   V P                  P                  P                  VP
                  4       R # R # R # R # r&   )rX   ctxrY   Storer*   idreservedr   r'   r   undeclared_identifiersr(   r-   s   &&r   
visit_NameFindIdentifiers.visit_Name   s    dhh

++ tww'GG8#t}}AAAt555MM0044TWW= 6 B $r$   c                    VP                    F_  pVP                  e   V P                  VP                  4       K.  V P                  VP                  P	                  R4      ^ ,          4       Ka  	  R # )N.)namesasnamer*   r)   splitr!   r.   r)   s   && r   visit_ImportFindIdentifiers.visit_Import   sL    JJD{{&""4;;/""499??3#7#:;	 r$   c                   VP                    Fz  pVP                  e   V P                  VP                  4       K.  VP                  R8X  d!   \        P
                  ! R/ V P                  B hV P                  VP                  4       K|  	  R # )N*)z'import *' is not supported, since all identifier names must be explicitly declared.  Please use the form 'from <modulename> import <name1>, <name2>, ...' instead.)rr   rs   r*   r)   r   CompileExceptionr   ru   s   && r   visit_ImportFrom FindIdentifiers.visit_ImportFrom   so    JJD{{&""4;;/c! 11 
 ++  ""499- r$   )r   r   r   r   r   N)r   
__module____qualname____firstlineno__r"   r*   r/   r8   r?   rD   rG   rQ   visit_SetCompvisit_GeneratorExprU   r\   rB   rf   rn   rv   r{   __static_attributes____classdictcell____classdict__s   @r   r   r   1   sb     1-&
&")*% *87M&%3,"
><. .r$   r   c                   ,   a  ] tR t^t o R tR tRtV tR# )	FindTuplec                *    Wn         W0n        W n        R # r&   )r   r   code_factory)r!   r   r   r   s   &&&,r   r"   FindTuple.__init__   s      0(r$   c                ,   VP                    EF  pV P                  ! V3/ V P                  B pV P                  P                  P                  V4       V P                  P                  P                  \        V4      P                  4       4       V P                  P                  pVP                  VP                  4      V P                  n	        V P                  P                  pVP                  VP                  4      V P                  n        EK  	  R # r&   )r[   r   r   r   codeargsappendrC   ExpressionGeneratorr4   r'   r_   rm   )r!   r.   r7   pldiluis   &&    r   visit_TupleFindTuple.visit_Tuple   s    A!!!=t'<'<=AMM""))!,MM%%&9!&<&B&B&DE--44C14&&2DMM. --66C3699((4DMM0 r$   )r   r   r   N)r   r}   r~   r   r"   r   r   r   r   s   @r   r   r      s     )
 r$   r   c                   ,   a  ] tR t^t o R tR tRtV tR# )	ParseFuncc                    Wn         W n        R # r&   )r   r   r    s   &&,r   r"   ParseFunc.__init__   s      0r$   c                   VP                   V P                  n        VP                  P                   Uu. uF  p\	        V4      NK  	  ppVP                  P
                  '       d0   VP                  VP                  P
                  P                  4       VP                  P                   Uu. uF  p\	        V4      NK  	  ppVP                  P                  '       d0   VP                  VP                  P                  P                  4       W0P                  n
        VP                  P                  V P                  n        W@P                  n        VP                  P                  V P                  n        VP                  P
                  V P                  n        VP                  P                  V P                  n        R # u upi u upi r&   )r)   r   funcnamerC   r`   varargr   r   
kwonlyargskwargargnamesdefaults
kwargnameskw_defaults
kwdefaultsvarargskwargs)r!   r.   r   r   r   s   &&   r   rG   ParseFunc.visit_FunctionDef   s    !%+/99>>:>CF3K>:99OODII,,001-1YY-A-AB-AcfSk-A
B99???diioo112!)!%!3!3#- #'99#8#8  $		 0 0#yy ; Cs   G-G	)r   r   N)r   r}   r~   r   r"   rG   r   r   r   s   @r   r   r      s     1/ /r$   r   c                   ,   a  ] tR t^t o R tR tRtV tR# )r   c                r    \         P                  ! R4      V n        V P                  P                  V4       R# ) Nz    )r   SourceGenerator	generatorr3   )r!   astnodes   &&r   r"   ExpressionGenerator.__init__   s&    "227;W%r$   c                L    R P                  V P                  P                  4      # ) )joinr   result)r!   s   &r   r4   ExpressionGenerator.value   s    wwt~~,,--r$   )r   N)r   r}   r~   r   r"   r4   r   r   r   s   @r   r   r      s     &. .r$   r   >   NoneTrueFalseprint)exec)__doc__operatorrY   makor   r   r   r   rl   
attrgetterr`   restore__astr   NodeVisitorr   r   r   r    r$   r   <module>r      s          . 
		U	#   $ "E.i++ E.P	%% */	%% /.. .r$   