
    ,h;)                     :   d dl ZddlmZ ddlmZ ej                  rd dl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y)    N   )nodes)NodeVisitorparamresolvealias	undefinedr   parent_symbolsSymbolsreturnc                 d    t        |      }t        |      }| D ]  }|j                  |        |S N)parent)r   FrameSymbolVisitorvisit)r   r
   symvisitornodes        S/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/jinja2/idtracking.pyfind_symbolsr      s8     
(C %G dJ    r   c                 @    t        |      }|j                  |        |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j2                  e   fdZy)r   Nr   levelr   c                     ||d}n|j                   dz   }|| _         || _        i | _        i | _        t	               | _        y )Nr   r   )r   r   refsloadssetstores)selfr   r   s      r   __init__zSymbols.__init__"   sF     =~q(
&(	)+
"%%r   r   kwargsc                 @    t        |       } |j                  |fi | y N)RootVisitorr   )r"   r   r$   r   s       r   r   zSymbols.analyze_node1   s    d#d%f%r   nameloadc                 j    d| j                    d| }|| j                  |<   ||| j                  |<   |S )Nl__)r   r   r   )r"   r(   r)   idents       r   _define_refzSymbols._define_ref5   s@     TZZL$(		$ $DJJur   targetc                     || j                   v r| j                   |   S | j                  | j                  j                  |      S y r&   )r   r   	find_load)r"   r/   s     r   r1   zSymbols.find_load>   s?    TZZ::f%%;;";;((00r   c                     || j                   v r| j                   |   S | j                  | j                  j                  |      S y r&   )r   r   find_refr"   r(   s     r   r3   zSymbols.find_refG   s>    49999T?";;";;''--r   c                 J    | j                  |      }|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.refP   s:    ]]4 : **.4  	r   c                 H   t         j                  | j                        }|j                  j	                  | j                         | j
                  j                         |_        | j                  j                         |_        | j                  j                         |_        |S r&   )	object__new__	__class____dict__updater   copyr   r!   )r"   r8   s     r   r@   zSymbols.copyY   sg    ^^DNN+
4==))).."::??$KK$$&		r   c                    | j                   j                  |       || j                  vr]| j                  7| j                  j	                  |      }|| j                  |t        |f       y | j                  |t        d f       y y N)r)   )r!   addr   r   r3   r.   VAR_LOAD_ALIASVAR_LOAD_UNDEFINED)r"   r(   	outer_refs      r   storezSymbols.storea   s     tyy  {{& KK006	($$T0K$L T);T(BC !r   c                 j    | j                   j                  |       | j                  |t        d f      S rB   )r!   rC   r.   VAR_LOAD_PARAMETERr4   s     r   declare_parameterzSymbols.declare_parameters   s.    ,>+EFFr   c                 Z    | j                  |      | j                  |t        |f       y y rB   )r3   r.   VAR_LOAD_RESOLVEr4   s     r   r)   zSymbols.loadw   s/    ==&T)94(@A 'r   branch_symbolsc                 h   t               }|D ]  }|j                  |j                          |j                  | j                         |D ]q  }| j                  j                  |j                         | j
                  j                  |j
                         | j                  j                  |j                         s |D ]p  }| j                  |      }|J d       | j                  3| j                  j                  |      }|t        |f| j
                  |<   \t        |f| j
                  |<   r y )Nzshould not happen)
r    r?   r!   difference_updater   r   r3   r   rD   rL   )r"   rM   r!   branchr   r(   r/   outer_targets           r   branch_updatez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                     i }| }|Bt        |j                        D ]  }||vs| j                  |      ||<    |j                  }|B|S r&   )sortedr!   r3   r   )r"   r8   r   r(   s       r   dump_storeszSymbols.dump_stores   s]    !$(t{{+ 3r>#}}T2BtH3 ;;D  	r   c                     t               }| }|O| j                  j                         D ]#  \  }\  }}|t        k(  s|j	                  |       % |j
                  }|O|S r&   )r    r   itemsrI   rC   r   )r"   r8   r   r/   instrr,   s         r   dump_param_targetszSymbols.dump_param_targets   sg    U$(&*jj&6&6&8 #"
..FF6N# ;;D  	r   )NNr&   )r   zte.Self)__name__
__module____qualname__tOptionalintr#   r   NodeAnyr   strTupler.   r1   r3   r9   r@   rG   rJ   r)   SequencerR   DictrU   SetrY    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            	          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j2                  dej                  ddfdZdej
                  dej                  dej                  ddfdZy)r'   r   Nc                 $    t        |      | _        y r&   )r   sym_visitorr"   symbolss     r   r#   zRootVisitor.__init__   s    -g6r   r   r$   c                 d    |j                         D ]  }| j                  j                  |        y r&   iter_child_nodesrj   r   r"   r   r$   childs       r   _simple_visitzRootVisitor._simple_visit   s.    **, 	*E""5)	*r   c                 \    |j                   D ]  }| j                  j                  |        y r&   bodyrj   r   rp   s       r   visit_AssignBlockzRootVisitor.visit_AssignBlock   )    YY 	*E""5)	*r   c                 h    |j                  d      D ]  }| j                  j                  |        y )N)call)excludern   rp   s       r   visit_CallBlockzRootVisitor.visit_CallBlock   s3    **9*= 	*E""5)	*r   c                 \    |j                   D ]  }| j                  j                  |        y r&   rt   rp   s       r   visit_OverlayScopezRootVisitor.visit_OverlayScope   rw   r   
for_branchc                    |dk(  r4| j                   j                  |j                  d       |j                  }n{|dk(  r|j                  }ni|dk(  rY| j                   j                  |j                  d       |j
                  %| j                   j                  |j
                         y t        d      |r#|D ]  }| j                   j                  |        y y )Nru   T)store_as_paramelsetestzUnknown for branch)rj   r   r/   ru   else_r   RuntimeError)r"   r   r~   r$   rP   items         r   	visit_ForzRootVisitor.visit_For   s     ""4;;t"DYYF6!ZZF6!""4;;t"Dyy$  &&tyy1344 -  &&t,- r   c                     |j                   D ]  }| j                  j                  |        |j                  D ]  }| j                  j                  |        y r&   )targetsrj   r   ru   )r"   r   r$   r/   rq   s        r   
visit_WithzRootVisitor.visit_With   sP    ll 	+F""6*	+YY 	*E""5)	*r   argsc                 D    t        dt        |      j                        )NzCannot find symbols for )NotImplementedErrortyperZ   )r"   r   r   r$   s       r   generic_visitzRootVisitor.generic_visit   s     !$<T$Z=P=P<S"TUUr   rl   r   r   N)ru   )rZ   r[   r\   r#   r   r`   r]   ra   rr   visit_Templatevisit_Blockvisit_Macrovisit_FilterBlockvisit_Scopevisit_Ifvisit_ScopedEvalContextModifierAssignBlockrv   	CallBlockr{   OverlayScoper}   Forrb   r   Withr   r   rg   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            	          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j2                  dej                  ddfdZdej6                  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jB                  dej                  ddfdZ"dejF                  dej                  ddfdZ$dejJ                  dej                  ddfdZ&y)r   zA visitor for `Frame.inspect`.r   Nc                     || _         y r&   )rl   rk   s     r   r#   zFrameSymbolVisitor.__init__   s	    r   r   r   r$   c                 F   |s|j                   dk(  r&| j                  j                  |j                         y|j                   dk(  r&| j                  j	                  |j                         y|j                   dk(  r&| j                  j                  |j                         yy)z2All assignments to names go through this function.r   rG   r)   N)ctxrl   rJ   r(   rG   r)   )r"   r   r   r$   s       r   
visit_NamezFrameSymbolVisitor.visit_Name   sq     TXX0LL**4995XX LLtyy)XXLLdii(  r   c                 N    | j                   j                  |j                         y r&   )rl   r)   r(   r"   r   r$   s      r   visit_NSRefzFrameSymbolVisitor.visit_NSRef   s    $))$r   c                 b      j                   |j                  fi   j                  dt        j                  t
        j                     ddf fd} ||j                        } ||j                        } ||j                  xs d      } j                  j                  |||g       y )Nr   r   r   c                 x    j                         x_        }| D ]  } j                  |fi   _        |S r&   )r@   rl   r   )r   r8   subnoder$   original_symbolsr"   s      r   inner_visitz0FrameSymbolVisitor.visit_If.<locals>.inner_visit   sH     0 5 5 77DL2  .

7-f-. ,DLIr   rg   )r   r   rl   r]   Iterabler   r`   ru   elif_r   rR   )r"   r   r$   r   body_symbolselif_symbolselse_symbolsr   s   ` `    @r   r   zFrameSymbolVisitor.visit_If   s    

499''<<	qzz%**5 	) 	 #499-"4::."4::#34""L,#MNr   c                 N    | j                   j                  |j                         y r&   )rl   rG   r(   r   s      r   r   zFrameSymbolVisitor.visit_Macro  s    499%r   c                 t     | j                   |fi | | j                  j                  |j                         y r&   )r   rl   rG   r/   r   s      r   visit_ImportzFrameSymbolVisitor.visit_Import  s-    4*6*4;;'r   c                      | j                   |fi | |j                  D ]L  }t        |t              r| j                  j                  |d          2| j                  j                  |       N y )Nr   )r   names
isinstancetuplerl   rG   )r"   r   r$   r(   s       r   visit_FromImportz#FrameSymbolVisitor.visit_FromImport  s\    4*6*JJ 	)D$&""47+""4(		)r   c                 x     | j                   |j                  fi |  | j                   |j                  fi | y)z'Visit assignments in the correct order.N)r   r   r/   r   s      r   visit_AssignzFrameSymbolVisitor.visit_Assign  s0    

499''

4;;)&)r   c                 >     | j                   |j                  fi | y)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     	

499''r   c                 >     | j                   |j                  fi | y r&   )r   ry   r   s      r   r{   z"FrameSymbolVisitor.visit_CallBlock)  s    

499''r   c                 >     | j                   |j                  fi | y r&   )r   filterr   s      r   r   z$FrameSymbolVisitor.visit_FilterBlock,  s    

4;;)&)r   c                 H    |j                   D ]  }| j                  |        y r&   )valuesr   )r"   r   r$   r/   s       r   r   zFrameSymbolVisitor.visit_With/  s!    kk 	FJJv	r   c                 >     | j                   |j                  fi | y)zStop visiting at block assigns.N)r   r/   r   s      r   rv   z$FrameSymbolVisitor.visit_AssignBlock3  s    

4;;)&)r   c                      y)zStop visiting at scopes.Nrg   r   s      r   r   zFrameSymbolVisitor.visit_Scope7      r   c                      y)zStop visiting at blocks.Nrg   r   s      r   r   zFrameSymbolVisitor.visit_Block:  r   r   c                      y)z!Do not visit into overlay scopes.Nrg   r   s      r   r}   z%FrameSymbolVisitor.visit_OverlayScope=  r   r   r   )F)'rZ   r[   r\   __doc__r#   r   Nameboolr]   ra   r   NSRefr   Ifr   Macror   Importr   
FromImportr   Assignr   r   r   r   r{   FilterBlockr   r   r   r   rv   Scoper   Blockr   r   r}   rg   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&   )typingr]    r   r   r   TYPE_CHECKINGtyping_extensionsterI   rL   rD   rE   r   r`   r^   r   r   r   r'   r   rg   r   r   <module>r      s       ??"     LP::ejj!34::i3H ?C
**&'jj&;J JZ7V+ 7VtV0 V0r   