
    h;)                     L   S SK rSSKJr  SSKJr  \R                  (       a  S SKrSr	Sr
SrSr SS	\R                  \R                     S
\R                  S   SS4S jjr SS\R                  S
\R                  S   SS4S jjr " S S5      r " S S\5      r " S S\5      rg)    N   )nodes)NodeVisitorparamresolvealias	undefinedr   parent_symbolsSymbolsreturnc                 b    [        US9n[        U5      nU  H  nUR                  U5        M     U$ N)parent)r   FrameSymbolVisitorvisit)r   r
   symvisitornodes        I/var/www/auris/envauris/lib/python3.13/site-packages/jinja2/idtracking.pyfind_symbolsr      s3     
(C %Gd J    r   c                 :    [        US9nUR                  U 5        U$ r   )r   analyze_node)r   r
   r   s      r   symbols_for_noder      s!     
(CTJr   c            	       N   \ rS rSr SS\R
                  S    S\R
                  \   SS4S jjrS\R                  S\R                  SS4S	 jr SS
\S\R
                  \R                  \\R
                  \   4      S\4S jjrS\S\R
                  \R                     4S jrS
\S\R
                  \   4S jrS
\S\4S jrSS jrS
\SS4S jrS
\S\4S jrS
\SS4S jrS\R,                  S    SS4S jrS\R0                  \\4   4S jrS\R4                  \   4S jrSrg)r   !   Nr   levelr   c                     Uc  Uc  SnOUR                   S-   nX l         Xl        0 U l        0 U l        [	        5       U l        g )Nr   r   )r   r   refsloadssetstores)selfr   r   s      r   __init__Symbols.__init__"   sB     =~q(
&(	)+
"%%r   r   kwargsc                 @    [        U 5      nUR                  " U40 UD6  g N)RootVisitorr   )r#   r   r&   r   s       r   r   Symbols.analyze_node1   s    d#d%f%r   nameloadc                 h    SU R                    SU 3nX0R                  U'   Ub  X R                  U'   U$ )Nl__)r   r   r    )r#   r+   r,   idents       r   _define_refSymbols._define_ref5   s<     TZZL$(		$ $JJur   targetc                     XR                   ;   a  U R                   U   $ U R                  b  U R                  R                  U5      $ g r(   )r    r   	find_load)r#   r3   s     r   r5   Symbols.find_load>   s=    ZZ::f%%;;";;((00r   c                     XR                   ;   a  U R                   U   $ U R                  b  U R                  R                  U5      $ g r(   )r   r   find_refr#   r+   s     r   r8   Symbols.find_refG   s<    9999T?";;";;''--r   c                 N    U R                  U5      nUc  [        SU< S35      eU$ )NzFTried to resolve a name to a reference that was unknown to the frame ())r8   AssertionError)r#   r+   rvs      r   refSymbols.refP   s:    ]]4 : **.4  	r   c                 H   [         R                  U R                  5      nUR                  R	                  U R                  5        U R
                  R                  5       Ul        U R                  R                  5       Ul        U R                  R                  5       Ul        U$ r(   )	object__new__	__class____dict__updater   copyr    r"   )r#   r>   s     r   rG   Symbols.copyY   sg    ^^DNN+
4==))).."::??$KK$$&		r   c                 
   U R                   R                  U5        XR                  ;  aY  U R                  b5  U R                  R	                  U5      nUb  U R                  U[        U4S9  g U R                  U[        S 4S9  g g N)r,   )r"   addr   r   r8   r1   VAR_LOAD_ALIASVAR_LOAD_UNDEFINED)r#   r+   	outer_refs      r   storeSymbols.storea   s     yy  {{& KK006	($$T0K$L T);T(BC !r   c                 d    U R                   R                  U5        U R                  U[        S 4S9$ rJ   )r"   rK   r1   VAR_LOAD_PARAMETERr9   s     r   declare_parameterSymbols.declare_parameters   s.    ,>+EFFr   c                 V    U R                  U5      c  U R                  U[        U4S9  g g rJ   )r8   r1   VAR_LOAD_RESOLVEr9   s     r   r,   Symbols.loadw   s/    ==&T)94(@A 'r   branch_symbolsc                 |   [        5       nU H  nUR                  UR                  5        M      UR                  U R                  5        U Hr  nU R                  R                  UR                  5        U R
                  R                  UR
                  5        U R                  R                  UR                  5        Mt     U Hu  nU R                  U5      nUc   S5       eU R                  b5  U R                  R                  U5      nUb  [        U4U R
                  U'   M`  [        U4U R
                  U'   Mw     g )Nzshould not happen)
r!   rF   r"   difference_updater   r    r8   r   rL   rV   )r#   rX   r"   branchr   r+   r3   outer_targets           r   branch_updateSymbols.branch_update{   s     U$FMM&--( % 	  -!CIISXX&JJcii(KKszz* "
 D]]4(F%:'::%{{&#{{33D9+*8,)GDJJv&"2D!9DJJv r   c                     0 nU nUbG  [        UR                  5       H  nX1;  d  M
  U R                  U5      X'   M     UR                  nUb  MG  U$ r(   )sortedr"   r8   r   )r#   r>   r   r+   s       r   dump_storesSymbols.dump_stores   sT    !$(t{{+>#}}T2BH , ;;D  	r   c                     [        5       nU nUbT  U R                  R                  5        H%  u  nu  pEU[        :X  d  M  UR	                  U5        M'     UR
                  nUb  MT  U$ r(   )r!   r    itemsrR   rK   r   )r#   r>   r   r3   instrr/   s         r   dump_param_targetsSymbols.dump_param_targets   s`    U$(&*jj&6&6&8"
..FF6N '9 ;;D  	r   )r   r    r   r   r"   )NNr(   )r   zte.Self)__name__
__module____qualname____firstlineno__tOptionalintr$   r   NodeAnyr   strTupler1   r5   r8   r?   rG   rO   rS   r,   Sequencer]   Dictra   Setrf   __static_attributes__ r   r   r   r   !   sv   MQ(jj+(;<::c?(	(& &quu & &
 LP zz!''#qzz#2F*GH	 

155(9 S QZZ_   D# D$ D$Gc Gc GB B B:AJJy,A :d :0QVVCH- AEE#J r   c            	          \ rS rSrSS jrS\R                  S\R                  SS4S jr	\	r
\	r\	r\	r\	r\	r\	rS\R"                  S\R                  SS4S jrS\R&                  S\R                  SS4S	 jrS\R*                  S\R                  SS4S
 jr SS\R.                  S\S\R                  SS4S jjrS\R4                  S\R                  SS4S jrS\R                  S\R                  S\R                  SS4S jrSrg)r)      r   Nc                 $    [        U5      U l        g r(   )r   sym_visitorr#   symbolss     r   r$   RootVisitor.__init__   s    -g6r   r   r&   c                 h    UR                  5        H  nU R                  R                  U5        M      g r(   iter_child_nodesr{   r   r#   r   r&   childs       r   _simple_visitRootVisitor._simple_visit   s)    **,E""5) -r   c                 `    UR                    H  nU R                  R                  U5        M      g r(   bodyr{   r   r   s       r   visit_AssignBlockRootVisitor.visit_AssignBlock   $    YYE""5) r   c                 f    UR                  SS9 H  nU R                  R                  U5        M      g )N)call)excluder   r   s       r   visit_CallBlockRootVisitor.visit_CallBlock   s.    **9*=E""5) >r   c                 `    UR                    H  nU R                  R                  U5        M      g r(   r   r   s       r   visit_OverlayScopeRootVisitor.visit_OverlayScope   r   r   
for_branchc                    US:X  a1  U R                   R                  UR                  SS9  UR                  nO{US:X  a  UR                  nOhUS:X  aW  U R                   R                  UR                  SS9  UR
                  b%  U R                   R                  UR
                  5        g [        S5      eU(       a%  U H  nU R                   R                  U5        M      g g )Nr   T)store_as_paramelsetestzUnknown for branch)r{   r   r3   r   else_r   RuntimeError)r#   r   r   r&   r[   items         r   	visit_ForRootVisitor.visit_For   s     ""4;;t"DYYF6!ZZF6!""4;;t"Dyy$  &&tyy1344  &&t,  r   c                     UR                    H  nU R                  R                  U5        M      UR                   H  nU R                  R                  U5        M      g r(   )targetsr{   r   r   )r#   r   r&   r3   r   s        r   
visit_WithRootVisitor.visit_With   sF    llF""6* #YYE""5) r   argsc                 F    [        S[        U5      R                  < 35      e)NzCannot find symbols for )NotImplementedErrortyperh   )r#   r   r   r&   s       r   generic_visitRootVisitor.generic_visit   s     !$<T$Z=P=P<S"TUUr   )r{   r}   r   r   N)r   )rh   ri   rj   rk   r$   r   ro   rl   rp   r   visit_Templatevisit_Blockvisit_Macrovisit_FilterBlockvisit_Scopevisit_Ifvisit_ScopedEvalContextModifierAssignBlockr   	CallBlockr   OverlayScoper   Forrq   r   Withr   r   rv   rw   r   r   r)   r)      sA   7*%** * *$ * #NKK%KH&3#*e&7&7 *155 *T **EOO *quu * **u'9'9 *QUU *t *
 28-II-+.-CD55-	-(*uzz *QUU *t *V%** VQUU Vaee VPT Vr   r)   c            	          \ rS rSrSrSS jr SS\R                  S\S\	R                  SS4S	 jjrS\R                  S\	R                  SS4S
 jrS\R                  S\	R                  SS4S jrS\R                   S\	R                  SS4S jrS\R$                  S\	R                  SS4S jrS\R(                  S\	R                  SS4S jrS\R,                  S\	R                  SS4S jrS\R0                  S\	R                  SS4S jrS\R4                  S\	R                  SS4S jrS\R8                  S\	R                  SS4S jrS\R<                  S\	R                  SS4S jrS\R@                  S\	R                  SS4S jr!S\RD                  S\	R                  SS4S jr#S\RH                  S\	R                  SS4S jr%S\RL                  S\	R                  SS4S jr'Sr(g)r      zA visitor for `Frame.inspect`.r   Nc                     Xl         g r(   r}   r|   s     r   r$   FrameSymbolVisitor.__init__   s    r   r   r   r&   c                 V   U(       d  UR                   S:X  a&  U R                  R                  UR                  5        gUR                   S:X  a&  U R                  R	                  UR                  5        gUR                   S:X  a&  U R                  R                  UR                  5        gg)z2All assignments to names go through this function.r   rO   r,   N)ctxr}   rS   r+   rO   r,   )r#   r   r   r&   s       r   
visit_NameFrameSymbolVisitor.visit_Name   sq     TXX0LL**4995XX LLtyy)XXLLdii(  r   c                 N    U R                   R                  UR                  5        g r(   )r}   r,   r+   r#   r   r&   s      r   visit_NSRefFrameSymbolVisitor.visit_NSRef   s    $))$r   c                 n  ^ ^^ T R                   " UR                  40 TD6  T R                  mS[        R                  [
        R                     SS4UUU 4S jjnU" UR                  5      nU" UR                  5      nU" UR                  =(       d    S5      nT R                  R                  XEU/5        g )Nr   r   r   c                 |   > TR                  5       =Tl        nU  H  nTR                  " U40 TD6  M     TTl        U$ r(   )rG   r}   r   )r   r>   subnoder&   original_symbolsr#   s      r   inner_visit0FrameSymbolVisitor.visit_If.<locals>.inner_visit   sA     0 5 5 77DL2 

7-f- ! ,DLIr   rw   )r   r   r}   rl   Iterabler   ro   r   elif_r   r]   )r#   r   r&   r   body_symbolselif_symbolselse_symbolsr   s   ` `    @r   r   FrameSymbolVisitor.visit_If   s    

499''<<	qzz%**5 	) 	 	 #499-"4::."4::#34""L#MNr   c                 N    U R                   R                  UR                  5        g r(   )r}   rO   r+   r   s      r   r   FrameSymbolVisitor.visit_Macro  s    499%r   c                 t    U R                   " U40 UD6  U R                  R                  UR                  5        g r(   )r   r}   rO   r3   r   s      r   visit_ImportFrameSymbolVisitor.visit_Import  s+    4*6*4;;'r   c                     U R                   " U40 UD6  UR                   HS  n[        U[        5      (       a   U R                  R                  US   5        M8  U R                  R                  U5        MU     g )Nr   )r   names
isinstancetupler}   rO   )r#   r   r&   r+   s       r   visit_FromImport#FrameSymbolVisitor.visit_FromImport  sX    4*6*JJD$&&""47+""4(	 r   c                 x    U R                   " UR                  40 UD6  U R                   " UR                  40 UD6  g)z'Visit assignments in the correct order.N)r   r   r3   r   s      r   visit_AssignFrameSymbolVisitor.visit_Assign  s,    

499''

4;;)&)r   c                 >    U R                   " UR                  40 UD6  g)zaVisiting stops at for blocks.  However the block sequence
is visited as part of the outer scope.
N)r   iterr   s      r   r   FrameSymbolVisitor.visit_For#  s     	

499''r   c                 >    U R                   " UR                  40 UD6  g r(   )r   r   r   s      r   r   "FrameSymbolVisitor.visit_CallBlock)  s    

499''r   c                 >    U R                   " UR                  40 UD6  g r(   )r   filterr   s      r   r   $FrameSymbolVisitor.visit_FilterBlock,  s    

4;;)&)r   c                 L    UR                    H  nU R                  U5        M     g r(   )valuesr   )r#   r   r&   r3   s       r   r   FrameSymbolVisitor.visit_With/  s    kkFJJv "r   c                 >    U R                   " UR                  40 UD6  g)zStop visiting at block assigns.N)r   r3   r   s      r   r   $FrameSymbolVisitor.visit_AssignBlock3  s    

4;;)&)r   c                     g)zStop visiting at scopes.Nrw   r   s      r   r   FrameSymbolVisitor.visit_Scope7      r   c                     g)zStop visiting at blocks.Nrw   r   s      r   r   FrameSymbolVisitor.visit_Block:  r   r   c                     g)z!Do not visit into overlay scopes.Nrw   r   s      r   r   %FrameSymbolVisitor.visit_OverlayScope=  r   r   r   r   )F))rh   ri   rj   rk   __doc__r$   r   Nameboolrl   rp   r   NSRefr   Ifr   Macror   Importr   
FromImportr   Assignr   r   r   r   r   FilterBlockr   r   r   r   r   Scoper   Blockr   r   r   rv   rw   r   r   r   r      s$   ( 8=	)JJ	)04	)HI	)		)% %quu % %OUXX O O4 O$& &quu & &( ( (4 ()U%5%5 ) )4 )* * *4 *
(eii (155 (T ((EOO (quu ( (*e&7&7 *155 *T *uzz QUU t *e&7&7 *155 *T *' 'quu ' '' 'quu ' '0u'9'9 0QUU 0t 0r   r   r(   )typingrl    r   r   r   TYPE_CHECKINGtyping_extensionsterR   rV   rL   rM   r   ro   rm   r   r   r   r)   r   rw   r   r   <module>r     s       ??"     LP::ejj!34::i3H ?C
**&'jj&;J JZ7V+ 7VtV0 V0r   