
     f)                        d dl ZddlmZ ddlmZ dZdZdZdZ		 dd	ej
        ej                 d
ej        d         ddfdZ	 ddej        d
ej        d         ddfdZ G d d          Z G d de          Z G d de          ZdS )    N   )nodes)NodeVisitorparamresolvealias	undefinedr   parent_symbolsSymbolsreturnc                 x    t          |          }t          |          }| D ]}|                    |           |S N)parent)r   FrameSymbolVisitorvisit)r   r
   symvisitornodes        T/var/www/api.educacionweb.es/myenv/lib/python3.11/site-packages/jinja2/idtracking.pyfind_symbolsr      sJ     
(
(
(C %%G  dJ    r   c                 P    t          |          }|                    |            |S r   )r   analyze_node)r   r
   r   s      r   symbols_for_noder      s-     
(
(
(CTJr   c            	          e Zd Z	 ddej        d          dej        e         ddfdZdej        dej	        ddfdZ
	 dd	ed
ej        ej        eej        e         f                  defdZdedej        ej	                 fdZd	edej        e         fdZd	edefdZddZd	eddfdZd	edefdZd	eddfdZdej        d          ddfdZdej        eef         fdZdej        e         fdZdS )r   Nr   levelr   c                     ||d}n
|j         dz   }|| _         || _        i | _        i | _        t	                      | _        d S )Nr   r   )r   r   refsloadssetstores)selfr   r   s      r   __init__zSymbols.__init__   sL     =~q(
&(	)+
"%%%r   r   kwargsc                 @    t          |           } |j        |fi | d S N)RootVisitorr   )r"   r   r$   r   s       r   r   zSymbols.analyze_node.   s/    d##d%%f%%%%%r   nameloadc                 L    d| j          d| }|| j        |<   |
|| j        |<   |S )Nl__)r   r   r   )r"   r(   r)   idents       r   _define_refzSymbols._define_ref2   s=     )TZ(($((	$ $DJur   targetc                 t    || j         v r| j         |         S | j        | j                            |          S d S r&   )r   r   	find_load)r"   r/   s     r   r1   zSymbols.find_load;   s?    TZ:f%%;";((000tr   c                 t    || j         v r| j         |         S | j        | j                            |          S d S r&   )r   r   find_refr"   r(   s     r   r3   zSymbols.find_refD   s>    499T?";";''---tr   c                 Z    |                      |          }|t          d|d          |S )NzFTried to resolve a name to a reference that was unknown to the frame ())r3   AssertionError)r"   r(   rvs      r   refzSymbols.refM   sH    ]]4  : 4*.4 4 4   	r   c                 6   t                               | j                  }|j                            | j                   | j                                        |_        | j                                        |_        | j                                        |_        |S r&   )	object__new__	__class____dict__updater   copyr   r!   )r"   r8   s     r   r@   zSymbols.copyV   sm    ^^DN++
4=)))).."":??$$K$$&&		r   c                    | j                             |           || j        vrc| j        <| j                            |          }| |                     |t          |f           d S |                     |t          d f           d S d S N)r)   )r!   addr   r   r3   r.   VAR_LOAD_ALIASVAR_LOAD_UNDEFINED)r"   r(   	outer_refs      r   storezSymbols.store^   s     ty   {& K0066	($$T0K$LLLF T);T(BCCCCC ! r   c                 r    | j                             |           |                     |t          d f          S rB   )r!   rC   r.   VAR_LOAD_PARAMETERr4   s     r   declare_parameterzSymbols.declare_parameterp   s5    ,>+EFFFr   c                 p    |                      |           |                     |t          |f           d S d S rB   )r3   r.   VAR_LOAD_RESOLVEr4   s     r   r)   zSymbols.loadt   sA    ==&T)94(@AAAAA '&r   branch_symbolsc                 b   i }|D ]2}|j         D ](}|| j         v r|                    |d          dz   ||<   )3|D ]_}| j                            |j                   | j                            |j                   | j                             |j                    `|                                D ]\  }}|t          |          k    r|                     |          }|
J d            | j        .| j                            |          }|t          |f| j        |<   ot          |f| j        |<   d S )Nr   r   zshould not happen)r!   getr   r?   r   itemslenr3   r   rD   rL   )	r"   rM   r!   branchr/   r   r(   branch_countouter_targets	            r   branch_updatezSymbols.branch_updatex   sc   #%$ 	; 	;F - ; ;T[((!'FA!6!6!:v;
 " 	+ 	+CISX&&&Jci(((Ksz****"(,,.. 	: 	:D,s>2222]]4((F%%':%%%{&#{33D99+*8,)GDJv&"2D!9DJv	: 	:r   c                     i }| }|<t          |j                  D ]}||vr|                     |          ||<   |j        }|<|S r&   )sortedr!   r3   r   )r"   r8   r   r(   s       r   dump_storeszSymbols.dump_stores   s`    !&*t{++ 3 3r>>#}}T22BtH;D  	r   c                     t                      }| }|K| j                                        D ](\  }\  }}|t          k    r|                    |           )|j        }|K|S r&   )r    r   rP   rI   rC   r   )r"   r8   r   r/   instrr,   s         r   dump_param_targetszSymbols.dump_param_targets   sn    UU&*&*j&6&6&8&8 # #"
...FF6NNN;D  	r   )NNr&   )r   r   )__name__
__module____qualname__tOptionalintr#   r   NodeAnyr   strTupler.   r1   r3   r9   r@   rG   rJ   r)   SequencerU   DictrX   Setr[    r   r   r   r      sD       MQ( (j+(;<:c?(	( ( ( (& &qu & & & & &
 LP  z!'#qz#2F*GH	    
15(9    S QZ_            D# D$ D D D D$Gc Gc G G G GB B B B B B:AJy,A :d : : : :6QVCH-    AE#J      r   c            	       `   e Zd ZddZdej        dej        ddfdZeZ	eZ
eZeZeZeZeZdej        dej        ddfd	Zdej        dej        ddfd
Zdej        dej        ddfdZ	 ddej        dedej        ddfdZdej        dej        ddfdZdej        dej        dej        ddfdZdS )r'   symbolsr   r   Nc                 .    t          |          | _        d S r&   )r   sym_visitorr"   rk   s     r   r#   zRootVisitor.__init__   s    -g66r   r   r$   c                 h    |                                 D ]}| j                            |           d S r&   iter_child_nodesrm   r   r"   r   r$   childs       r   _simple_visitzRootVisitor._simple_visit   sA    **,, 	* 	*E""5))))	* 	*r   c                 N    |j         D ]}| j                            |           d S r&   bodyrm   r   rr   s       r   visit_AssignBlockzRootVisitor.visit_AssignBlock   7    Y 	* 	*E""5))))	* 	*r   c                 l    |                     d          D ]}| j                            |           d S )N)call)excluderp   rr   s       r   visit_CallBlockzRootVisitor.visit_CallBlock   sF    **9*== 	* 	*E""5))))	* 	*r   c                 N    |j         D ]}| j                            |           d S r&   rv   rr   s       r   visit_OverlayScopezRootVisitor.visit_OverlayScope   ry   r   rw   
for_branchc                    |dk    r)| j                             |j        d           |j        }nl|dk    r|j        }n^|dk    rI| j                             |j        d           |j        | j                             |j                   d S t          d          |r|D ]}| j                             |           d S d S )Nrw   T)store_as_paramelsetestzUnknown for branch)rm   r   r/   rw   else_r   RuntimeError)r"   r   r   r$   rR   items         r   	visit_ForzRootVisitor.visit_For   s     ""4;t"DDDYFF6!!ZFF6!!""4;t"DDDy$ &&ty111F3444 	- - - &&t,,,,	- 	-- -r   c                     |j         D ]}| j                            |           |j        D ]}| j                            |           d S r&   )targetsrm   r   rw   )r"   r   r$   r/   rs   s        r   
visit_WithzRootVisitor.visit_With   sb    l 	+ 	+F""6****Y 	* 	*E""5))))	* 	*r   argsc                 J    t          dt          |          j                  )NzCannot find symbols for )NotImplementedErrortyper\   )r"   r   r   r$   s       r   generic_visitzRootVisitor.generic_visit   s"    !"TT$ZZ=P"T"TUUUr   rk   r   r   N)rw   )r\   r]   r^   r#   r   rb   r_   rc   rt   visit_Templatevisit_Blockvisit_Macrovisit_FilterBlockvisit_Scopevisit_Ifvisit_ScopedEvalContextModifierAssignBlockrx   	CallBlockr}   OverlayScoper   Forrd   r   Withr   r   ri   r   r   r'   r'      s       7 7 7 7*%* * *$ * * * * #NKK%KH&3#*e&7 *15 *T * * * **EO *qu * * * * **u'9 *QU *t * * * *
 28- -I-+.-CD5-	- - - -(*uz *QU *t * * * *V%* VQU Vae VPT V V V V V Vr   r'   c            	       z   e Zd ZdZddZ	 ddej        d	ed
ej	        ddfdZ
dej        d
ej	        ddfdZdej        d
ej	        ddfdZdej        d
ej	        ddfdZdej        d
ej	        ddfdZdej        d
ej	        ddfdZdej        d
ej	        ddfdZdej        d
ej	        ddfdZdej        d
ej	        ddfdZdej        d
ej	        ddfdZdej        d
ej	        ddfdZdej        d
ej	        ddfdZ dej!        d
ej	        ddfdZ"dej#        d
ej	        ddfdZ$dej%        d
ej	        ddfdZ&dS )r   zA visitor for `Frame.inspect`.rk   r   r   Nc                     || _         d S r&   )rk   rn   s     r   r#   zFrameSymbolVisitor.__init__   s    r   Fr   r   r$   c                    |s|j         dk    r!| j                            |j                   dS |j         dk    r!| j                            |j                   dS |j         dk    r!| j                            |j                   dS dS )z2All assignments to names go through this function.r   rG   r)   N)ctxrk   rJ   r(   rG   r)   )r"   r   r   r$   s       r   
visit_NamezFrameSymbolVisitor.visit_Name   s      	)TX00L**4955555X  Lty)))))XLdi(((((  r   c                 D    | j                             |j                   d S r&   )rk   r)   r(   r"   r   r$   s      r   visit_NSRefzFrameSymbolVisitor.visit_NSRef   s     $)$$$$$r   c                 *      j         |j        fi   j        dt          j        t
          j                 ddf fd} ||j                  } ||j                  } ||j	        pd          } j        
                    |||g           d S )Nr   r   r   c                 r                                     x_        }| D ]} j        |fi  _        |S r&   )r@   rk   r   )r   r8   subnoder$   original_symbolsr"   s      r   inner_visitz0FrameSymbolVisitor.visit_If.<locals>.inner_visit   sS     0 5 5 7 77DL2  . .
7--f----+DLIr   ri   )r   r   rk   r_   Iterabler   rb   rw   elif_r   rU   )r"   r   r$   r   body_symbolselif_symbolselse_symbolsr   s   ` `    @r   r   zFrameSymbolVisitor.visit_If   s    
49'''''<	qz%*5 	) 	 	 	 	 	 	 	 	 #{49--"{4:.."{4:#344""L,#MNNNNNr   c                 D    | j                             |j                   d S r&   )rk   rG   r(   r   s      r   r   zFrameSymbolVisitor.visit_Macro  s     49%%%%%r   c                 `     | j         |fi | | j                            |j                   d S r&   )r   rk   rG   r/   r   s      r   visit_ImportzFrameSymbolVisitor.visit_Import  s;    4**6***4;'''''r   c                      | j         |fi | |j        D ]R}t          |t                    r!| j                            |d                    8| j                            |           Sd S )Nr   )r   names
isinstancetuplerk   rG   )r"   r   r$   r(   s       r   visit_FromImportz#FrameSymbolVisitor.visit_FromImport  s    4**6***J 	) 	)D$&& )""47++++""4((((		) 	)r   c                 R     | j         |j        fi |  | j         |j        fi | dS )z'Visit assignments in the correct order.N)r   r   r/   r   s      r   visit_AssignzFrameSymbolVisitor.visit_Assign  s@    
49'''''
4;))&)))))r   c                 ,     | j         |j        fi | dS )zqVisiting stops at for blocks.  However the block sequence
        is visited as part of the outer scope.
        N)r   iterr   s      r   r   zFrameSymbolVisitor.visit_For#  s&     	
49'''''''r   c                 ,     | j         |j        fi | d S r&   )r   r{   r   s      r   r}   z"FrameSymbolVisitor.visit_CallBlock)  s$    
49'''''''r   c                 ,     | j         |j        fi | d S r&   )r   filterr   s      r   r   z$FrameSymbolVisitor.visit_FilterBlock,  s$    
4;))&)))))r   c                 D    |j         D ]}|                     |           d S r&   )valuesr   )r"   r   r$   r/   s       r   r   zFrameSymbolVisitor.visit_With/  s2    k 	 	FJJv	 	r   c                 ,     | j         |j        fi | dS )zStop visiting at block assigns.N)r   r/   r   s      r   rx   z$FrameSymbolVisitor.visit_AssignBlock3  s$    
4;))&)))))r   c                     dS )zStop visiting at scopes.Nri   r   s      r   r   zFrameSymbolVisitor.visit_Scope7        r   c                     dS )zStop visiting at blocks.Nri   r   s      r   r   zFrameSymbolVisitor.visit_Block:  r   r   c                     dS )z!Do not visit into overlay scopes.Nri   r   s      r   r   z%FrameSymbolVisitor.visit_OverlayScope=  r   r   r   )F)'r\   r]   r^   __doc__r#   r   Nameboolr_   rc   r   NSRefr   Ifr   Macror   Importr   
FromImportr   Assignr   r   r   r   r}   FilterBlockr   r   r   r   rx   Scoper   Blockr   r   r   ri   r   r   r   r      s       ((    8=	) 	)J	)04	)HI	)		) 	) 	) 	)% %qu % % % % %OUX O O4 O O O O$& &qu & & & & &( ( (4 ( ( ( ()U%5 ) )4 ) ) ) )* * *4 * * * *
(ei (15 (T ( ( ( ((EO (qu ( ( ( ( (*e&7 *15 *T * * * *uz QU t    *e&7 *15 *T * * * *' 'qu ' ' ' ' '' 'qu ' ' ' ' '0u'9 0QU 0t 0 0 0 0 0 0r   r   r&   )typingr_    r   r   r   rI   rL   rD   rE   r   rb   r`   r   r   r   r'   r   ri   r   r   <module>r      sv                             LP :ej!34:i3H    ?C 
*&'j&;   M M M M M M M M`7V 7V 7V 7V 7V+ 7V 7V 7VtV0 V0 V0 V0 V0 V0 V0 V0 V0 V0r   