
    g6                     4   S r SSKrSSKrSSKJr  SSKJr  SSKJr  SSKJr  1 Skr\R                  " S5      r
\R                  " \5        SS	 jr " S
 S\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S5      rg)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>   NoneTrueFalseprintargc                     [         R                  " U SU5      $ ! [         ag  n[        R                  " S[
        R                  " 5       R                  R                  < S[
        R                  " 5       < SU SS < S340 UD6UeSnAff = f)	zParse an expression into ASTz	<unknown>(z) z (r   2   )N)	r   parse	Exceptionr   SyntaxExceptionr   exception_as	__class____name__)codemodeexception_kwargses       U/Users/Alptekin/Desktop/izin_takip/venv/lib/python3.13/site-packages/mako/pyparser.pyr   r       s    t[$77 	(( ##%//88##%Qr
	
 
 		s    
BA"BBc                   v    \ rS rSrS rS rS rS rS rS r	S r
S	 r\=rrS
 rS rS rS rS rS rS rSrg)FindIdentifiers1   c                 V    SU l         SU l        [        5       U l        Xl        X l        g NF)in_functionin_assign_targetssetlocal_ident_stacklistenerr   selfr$   r   s      r   __init__FindIdentifiers.__init__2   s'     !&!$  0    c                     U R                   (       d&  U R                  R                  R                  U5        g U R                  R                  U5        g N)r    r$   declared_identifiersaddr#   )r&   names     r   _add_declaredFindIdentifiers._add_declared9   s7    MM..2248""&&t,r)   c                 :    U R                  UR                  5        g r+   )r/   r.   r&   nodes     r   visit_ClassDefFindIdentifiers.visit_ClassDef?   s    499%r)   c                     U R                  UR                  5        U R                  nSU l        UR                   H  nU R                  U5        M     X l        g NT)visitvaluer!   targets)r&   r3   in_ans       r   visit_AssignFindIdentifiers.visit_AssignB   sF    
 	

4::%%!%AJJqM !%r)   c                     UR                   b  U R                  UR                   5        UR                  b  U R                  UR                  5        UR                   H  nU R                  U5        M     g r+   )r.   r/   typer8   bodyr&   r3   	statements      r   visit_ExceptHandler#FindIdentifiers.visit_ExceptHandlerN   sR    99 tyy)99 JJtyy!IJJy! #r)   c                 (    U R                  US5        g r7   )_visit_function)r&   r3   argss      r   visit_LambdaFindIdentifiers.visit_LambdaV   s    T4(r)   c                 ^    U R                  UR                  5        U R                  US5        g r   )r/   r.   rG   r2   s     r   visit_FunctionDef!FindIdentifiers.visit_FunctionDefY   s$    499%T5)r)   c                     U R                   (       a/  UR                   H  nU R                  UR                  5        M      g U R	                  U5        g r+   r    
generatorsr8   itergeneric_visitr&   r3   comps      r   visit_ListCompFindIdentifiers.visit_ListComp]   9    

499% ( t$r)   c                     U R                   (       a/  UR                   H  nU R                  UR                  5        M      g U R	                  U5        g r+   rO   rS   s      r   visit_DictCompFindIdentifiers.visit_DictCompf   rW   r)   c              #      #    U H<  n[        U[        R                  5      (       a  UR                   S h  vN   M8  Uv   M>     g  N7fr+   )
isinstance_astTupleelts)r&   rH   r   s      r   _expand_tuplesFindIdentifiers._expand_tuplesm   s5     C#tzz**88##		 #s   4AAAc                    U R                   nSU l         U R                  nUR                  U R                  UR                  R                  5       Vs/ s H  n[        U5      PM     sn5      U l        U(       a  U R                  UR                  5        O$UR                   H  nU R                  U5        M     X0l         X@l        g s  snf r7   )r    r#   unionr`   rH   arg_idr8   rA   )r&   r3   islambdainfr#   r   r<   s          r   rG   FindIdentifiers._visit_functiont   s      22!2!8!8$($7$7		$GH$GSVC[$GH"
 JJtyy!YY

1 !2 Is   Cc                     U R                  UR                  5        U R                  UR                  5        UR                   H  nU R                  U5        M     UR                   H  nU R                  U5        M     g r+   )r8   rQ   targetrA   orelserB   s      r   	visit_ForFindIdentifiers.visit_For   sX     	

499

4;;IJJy! #IJJy! %r)   c                    [        UR                  [        R                  5      (       a  U R	                  UR
                  5        g UR
                  [        ;  ap  UR
                  U R                  R                  ;  aK  UR
                  U R                  ;  a0  U R                  R                  R                  UR
                  5        g g g g r+   )r\   ctxr]   Storer/   idreservedr$   r,   r#   undeclared_identifiersr-   r2   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                     UR                    HZ  nUR                  b  U R                  UR                  5        M-  U R                  UR                  R	                  S5      S   5        M\     g )N.r   )namesasnamer/   r.   splitr&   r3   r.   s      r   visit_ImportFindIdentifiers.visit_Import   sL    JJD{{&""4;;/""499??3#7#:;	 r)   c                    UR                    Hy  nUR                  b  U R                  UR                  5        M-  UR                  S:X  a!  [        R
                  "  S0 U R                  D6eU R                  UR                  5        M{     g )N*)z'import *' is not supported, since all identifier names must be explicitly declared.  Please use the form 'from <modulename> import <name1>, <name2>, ...' instead.)rw   rx   r/   r.   r   CompileExceptionr   rz   s      r   visit_ImportFrom FindIdentifiers.visit_ImportFrom   st    JJD{{&""4;;/c! 11$
 ++  ""499- r)   )r   r!   r    r$   r#   N)r   
__module____qualname____firstlineno__r'   r/   r4   r=   rD   rI   rL   rU   visit_SetCompvisit_GeneratorExprY   r`   rG   rk   rs   r{   r   __static_attributes__ r)   r   r   r   1   sZ    1-&
&")*% *87M&%3,"
><.r)   r   c                        \ rS rSrS rS rSrg)	FindTuple   c                 (    Xl         X0l        X l        g r+   )r$   r   code_factory)r&   r$   r   r   s       r   r'   FindTuple.__init__   s      0(r)   c                 *   UR                    GH  nU R                  " U40 U R                  D6nU R                  R                  R                  U5        U R                  R                  R                  [        U5      R                  5       5        U R                  R                  nUR                  UR                  5      U R                  l	        U R                  R                  nUR                  UR                  5      U R                  l        GM     g r+   )r_   r   r   r$   codeargsappendrH   ExpressionGeneratorr9   r,   rc   rr   )r&   r3   r<   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)   r   r   r      s    )
r)   r   c                        \ rS rSrS rS rSrg)	ParseFunc   c                     Xl         X l        g r+   )r$   r   r%   s      r   r'   ParseFunc.__init__   s      0r)   c                    UR                   U R                  l        UR                  R                   Vs/ s H  n[	        U5      PM     nnUR                  R
                  (       a/  UR                  UR                  R
                  R                  5        UR                  R                   Vs/ s H  n[	        U5      PM     nnUR                  R                  (       a/  UR                  UR                  R                  R                  5        X0R                  l
        UR                  R                  U R                  l        X@R                  l        UR                  R                  U R                  l        UR                  R
                  U R                  l        UR                  R                  U R                  l        g s  snf s  snf r+   )r.   r$   funcnamerH   rd   varargr   r   
kwonlyargskwargargnamesdefaults
kwargnameskw_defaults
kwdefaultsvarargskwargs)r&   r3   r   r   r   s        r   rL   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'   rL   r   r   r)   r   r   r      s    1/r)   r   c                        \ rS rSrS rS rSrg)r      c                 p    [         R                  " S5      U l        U R                  R                  U5        g )Nz    )r   SourceGenerator	generatorr8   )r&   astnodes     r   r'   ExpressionGenerator.__init__   s&    "227;W%r)   c                 L    SR                  U R                  R                  5      $ )N )joinr   result)r&   s    r   r9   ExpressionGenerator.value   s    wwt~~,,--r)   )r   N)r   r   r   r   r'   r9   r   r   r)   r   r   r      s    &.r)   r   )exec)__doc__operatorr]   makor   r   r   r   rq   
attrgetterrd   restore__astr   NodeVisitorr   r   r   r   r   r)   r   <module>r      s          . 
		U	#   $ "C.i++ C.L	%% */	%% /.. .r)   