a `#@spddlmZddlmZdZdZdZdZddd Zdd d Z Gd d d e Z GdddeZ GdddeZ dS)) iteritems) NodeVisitorparamresolvealiasZ undefinedNcCs*t|d}t|}|D]}||q|SN)parent)SymbolsFrameSymbolVisitorvisit)nodesparent_symbolssymvisitornoder5/usr/lib/python3.9/site-packages/jinja2/idtracking.py find_symbols s   rcCst|d}|||Sr)r analyze_node)rr rrrrsymbols_for_nodes  rc@sxeZdZdddZddZdddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZdS)r NcCsD|dur |durd}n |jd}||_||_i|_i|_t|_dS)Nr)levelrrefsloadssetstores)selfrrrrr__init__s zSymbols.__init__cKst|}|j|fi|dSN) RootVisitorr )rrkwargsrrrrr%szSymbols.analyze_nodecCs.d|j|f}||j|<|dur*||j|<|S)Nzl_%d_%s)rrr)rnameloadidentrrr _define_ref)s   zSymbols._define_refcCs.||jvr|j|S|jdur*|j|SdSr)rr find_load)rtargetrrrr%0s   zSymbols.find_loadcCs.||jvr|j|S|jdur*|j|SdSr)rrfind_refrr!rrrr'6s   zSymbols.find_refcCs"||}|durtd||S)NzITried to resolve a name to a reference that was unknown to the frame (%r))r'AssertionError)rr!rvrrrref<s z Symbols.refcCsBt|j}|j|j|j|_|j|_|j|_|Sr) object__new__ __class____dict__updatercopyrr)rr*rrrr1Es     z Symbols.copycCs`|j|||jvr\|jdurJ|j|}|durJ|j|t|fddS|j|tdfddSN)r")raddrrr'r$VAR_LOAD_ALIASVAR_LOAD_UNDEFINED)rr!Z outer_refrrrstoreMs    z Symbols.storecCs|j||j|tdfdSr2)rr3r$VAR_LOAD_PARAMETERr(rrrdeclare_parameter_s zSymbols.declare_parametercCs(||}|dur$|j|t|fddSr2)r'r$VAR_LOAD_RESOLVE)rr!r&rrrr"cs z Symbols.loadc Csi}|D]0}|jD]$}||jvr"q||dd||<qq|D].}|j|j|j|j|j|jq>t|D]l\}}|t|krqv||}|dusJd|jdur|j|}|durt |f|j|<qvt |f|j|<qvdS)Nrrzshould not happen) rgetrr0rrlenr'rr4r9) rZbranch_symbolsrbranchr&rr!Z branch_countZ outer_targetrrr branch_updatehs*      zSymbols.branch_updatecCs>i}|}|dur:|jD]}||vr||||<q|j}q|Sr)rr'r)rr*rr!rrr dump_storess zSymbols.dump_storescCsHt}|}|durDt|jD]\}\}}|tkr||q|j}q |Sr)rrrr7r3r)rr*rr&Zinstr_rrrdump_param_targetss zSymbols.dump_param_targets)NN)N)__name__ __module__ __qualname__rrr$r%r'r+r1r6r8r"r=r>r@rrrrr s    r c@sjeZdZddZddZeZZZZZ Z Z ddZ ddZ d d Zdd d ZddZddZdS)rcCst||_dSr)r sym_visitorrsymbolsrrrrszRootVisitor.__init__cKs|D]}|j|qdSrZiter_child_nodesrDr rrr childrrr _simple_visits zRootVisitor._simple_visitcKs|jD]}|j|qdSrbodyrDr rHrrrvisit_AssignBlocks zRootVisitor.visit_AssignBlockcKs"|jddD]}|j|q dS)N)call)ZexcluderGrHrrrvisit_CallBlockszRootVisitor.visit_CallBlockcKs|jD]}|j|qdSrrKrHrrrvisit_OverlayScopes zRootVisitor.visit_OverlayScoperLcKs|dkr"|jj|jdd|j}nN|dkr2|j}n>|dkrh|jj|jdd|jdurd|j|jdStd|pvdD]}|j|qxdS)NrLT)store_as_paramelsetestzUnknown for branchr)rDr r&rLelse_rS RuntimeError)rrZ for_branchr r<itemrrr visit_Fors  zRootVisitor.visit_ForcKs4|jD]}|j|q|jD]}|j|qdSr)targetsrDr rL)rrr r&rIrrr visit_Withs  zRootVisitor.visit_WithcOstd|jjdS)NzCannot find symbols for %r)NotImplementedErrorr.rA)rrargsr rrr generic_visits zRootVisitor.generic_visitN)rL)rArBrCrrJZvisit_Template visit_Block visit_Macrovisit_FilterBlock visit_Scopevisit_IfZvisit_ScopedEvalContextModifierrMrOrPrWrYr\rrrrrs&  rc@seZdZdZddZd$ddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#S)%r zA visitor for `Frame.inspect`.cCs ||_dSr)rFrErrrrszFrameSymbolVisitor.__init__FcKsT|s|jdkr|j|jn2|jdkr8|j|jn|jdkrP|j|jdS)z2All assignments to names go through this function.rr6r"N)ctxrFr8r!r6r")rrrQr rrr visit_Names   zFrameSymbolVisitor.visit_NamecKs|j|jdSr)rFr"r!rrr rrr visit_NSRefszFrameSymbolVisitor.visit_NSRefc sbj|jfijfdd}||j}||j}||jpHd}j|||gdS)Ncs4_}|D]}j|fiq_|Sr)r1rFr )r r*Zsubnoder Zoriginal_symbolsrrr inner_visits z0FrameSymbolVisitor.visit_If..inner_visitr)r rSrFrLZelif_rTr=)rrr rgZ body_symbolsZ elif_symbolsZ else_symbolsrrfrras  zFrameSymbolVisitor.visit_IfcKs|j|jdSr)rFr6r!rdrrrr^szFrameSymbolVisitor.visit_MacrocKs$|j|fi||j|jdSr)r\rFr6r&rdrrr visit_ImportszFrameSymbolVisitor.visit_ImportcKsJ|j|fi||jD],}t|tr8|j|dq|j|qdS)Nr)r\names isinstancetuplerFr6)rrr r!rrrvisit_FromImports   z#FrameSymbolVisitor.visit_FromImportcKs,|j|jfi||j|jfi|dS)z'Visit assignments in the correct order.N)r rr&rdrrr visit_AssignszFrameSymbolVisitor.visit_AssigncKs|j|jfi|dS)zqVisiting stops at for blocks. However the block sequence is visited as part of the outer scope. N)r iterrdrrrrWszFrameSymbolVisitor.visit_ForcKs|j|jfi|dSr)r rNrdrrrrO sz"FrameSymbolVisitor.visit_CallBlockcKs|j|jfi|dSr)r filterrdrrrr_sz$FrameSymbolVisitor.visit_FilterBlockcKs|jD]}||qdSr)valuesr )rrr r&rrrrYs zFrameSymbolVisitor.visit_WithcKs|j|jfi|dS)zStop visiting at block assigns.N)r r&rdrrrrMsz$FrameSymbolVisitor.visit_AssignBlockcKsdS)zStop visiting at scopes.Nrrdrrrr`szFrameSymbolVisitor.visit_ScopecKsdS)zStop visiting at blocks.Nrrdrrrr]szFrameSymbolVisitor.visit_BlockcKsdS)z!Do not visit into overlay scopes.NrrdrrrrP!sz%FrameSymbolVisitor.visit_OverlayScopeN)F)rArBrC__doc__rrcrerar^rhrlrmrWrOr_rYrMr`r]rPrrrrr s" r )N)N)Z_compatrrrr7r9r4r5rrr,r rr rrrrs    8