o |nh;)@sddlZddlmZddlmZejrddlZdZ dZ dZ dZ dd ej ejd ejd d d fd dZ ddejd ejd d d fddZGdd d ZGdddeZGdddeZdS)N)nodes) NodeVisitorparamresolvealias undefinedrparent_symbolsSymbolsreturncCs*t|d}t|}|D]}||q |SN)parent)r FrameSymbolVisitorvisit)rr symvisitornoderI/usr/local/bin/dhwp/env/lib/python3.10/site-packages/jinja2/idtracking.py find_symbolss  rrcCst|d}|||Sr )r analyze_node)rr rrrrsymbols_for_nodes  rc @sDeZdZ d&dejddejeddfddZdejdej ddfd d Z d'd e d ejej e eje fde fd dZ de dejej fddZd e deje fddZd e de fddZd(ddZd e ddfddZd e de fddZd e ddfddZdejdddfd d!Zdeje e ffd"d#Zdeje fd$d%ZdS))r Nr levelr cCsD|dur|dur d}n|jd}||_||_i|_i|_t|_dS)Nrr)rr refsloadssetstores)selfr rrrr__init__"s  zSymbols.__init__rkwargscKst|}|j|fi|dSN) RootVisitorr)rrrrrrrr1szSymbols.analyze_nodenameloadcCs2d|jd|}||j|<|dur||j|<|S)Nl__)rrr)rr"r#identrrr _define_ref5s   zSymbols._define_reftargetcC.||jvr |j|S|jdur|j|SdSr )rr find_load)rr(rrrr*>    zSymbols.find_loadcCr)r )rr find_refrr"rrrr,Gr+zSymbols.find_refcCs&||}|durtd|d|S)NzFTried to resolve a name to a reference that was unknown to the frame ())r,AssertionError)rr"rvrrrrefPs z Symbols.refte.SelfcCsBt|j}|j|j|j|_|j|_|j|_|Sr ) object__new__ __class____dict__updatercopyrr)rr0rrrr8Ys    z Symbols.copycCsd|j|||jvr0|jdur%|j|}|dur%|j|t|fddS|j|tdfddSdSN)r#)raddrr r,r'VAR_LOAD_ALIASVAR_LOAD_UNDEFINED)rr" outer_refrrrstoreas    z Symbols.storecCs|j||j|tdfdSr9)rr:r'VAR_LOAD_PARAMETERr-rrrdeclare_parameterss zSymbols.declare_parametercCs(||dur|j|t|fddSdSr9)r,r'VAR_LOAD_RESOLVEr-rrrr#wsz Symbols.loadbranch_symbolscCst}|D]}||jq||j|D]}|j|j|j|j|j|jq|D]-}||}|dus?Jd|jdurV|j|}|durVt|f|j|<q0t |f|j|<q0dS)Nzshould not happen) rr7rdifference_updaterrr,r r;rA)rrBrbranchrr"r( outer_targetrrr branch_update{s$    zSymbols.branch_updatecCsHi}|}|dur"t|jD] }||vr||||<q |j}|dus|Sr )sortedrr,r )rr0rr"rrr dump_storesszSymbols.dump_storescCsNt}|}|dur%|jD]\}\}}|tkr||q|j}|dus |Sr )rritemsr?r:r )rr0rr(instrr%rrrdump_param_targetss zSymbols.dump_param_targets)NNr )r r2)__name__ __module__ __qualname__tOptionalintrrNodeAnyrstrTupler'r*r,r1r8r>r@r#SequencerFDictrHSetrKrrrrr !s8      c @seZdZdddZdejdejddfd d ZeZ eZ eZ eZ eZ eZeZdejdejddfd d Zdejdejddfd dZdejdejddfddZ ddejdedejddfddZdejdejddfddZdejdejdejddfddZdS)r!symbolsr r NcCst||_dSr )r sym_visitorrrYrrrrszRootVisitor.__init__rrcKs|D]}|j|qdSr iter_child_nodesrZrrrrchildrrr _simple_visits zRootVisitor._simple_visitcK|jD]}|j|qdSr bodyrZrr^rrrvisit_AssignBlock zRootVisitor.visit_AssignBlockcKs"|jddD]}|j|qdS)N)call)excluder\r^rrrvisit_CallBlockszRootVisitor.visit_CallBlockcKrar rbr^rrrvisit_OverlayScoperezRootVisitor.visit_OverlayScoperc for_branchcKs|dkr|jj|jdd|j}n'|dkr|j}n|dkr4|jj|jdd|jdur2|j|jdStd|rE|D] }|j|qr#N)ctxrYr@r"r>r#)rrrkrrrr visit_Names  zFrameSymbolVisitor.visit_NamecK|j|jdSr )rYr#r"rrrrrr visit_NSRefzFrameSymbolVisitor.visit_NSRefc stj|jfijdtjtjddffdd }||j}||j}||j p-d}j |||gdS)Nrr r cs4_}|D] }j|fiq _|Sr )r8rYr)rr0subnoderoriginal_symbolsrrr inner_visits z0FrameSymbolVisitor.visit_If..inner_visitr) rrmrYrOIterablerrRrcelif_rnrF)rrrr body_symbols elif_symbols else_symbolsrrrr~s" zFrameSymbolVisitor.visit_IfcKrr )rYr>r"rrrrr{rzFrameSymbolVisitor.visit_MacrocKs$|j|fi||j|jdSr )rwrYr>r(rrrr visit_ImportszFrameSymbolVisitor.visit_ImportcKsJ|j|fi||jD]}t|tr|j|dq |j|q dS)Nr)rwnames isinstancetuplerYr>)rrrr"rrrvisit_FromImports   z#FrameSymbolVisitor.visit_FromImportcKs,|j|jfi||j|jfi|dS)z'Visit assignments in the correct order.N)rrr(rrrr visit_AssignszFrameSymbolVisitor.visit_AssigncK|j|jfi|dS)zqVisiting stops at for blocks. However the block sequence is visited as part of the outer scope. N)riterrrrrrq#szFrameSymbolVisitor.visit_ForcK|j|jfi|dSr )rrfrrrrrh)z"FrameSymbolVisitor.visit_CallBlockcKrr )rfilterrrrrr|,rz$FrameSymbolVisitor.visit_FilterBlockcKs|jD]}||qdSr )valuesr)rrrr(rrrrs/s  zFrameSymbolVisitor.visit_WithcKr)zStop visiting at block assigns.N)rr(rrrrrd3sz$FrameSymbolVisitor.visit_AssignBlockcKdS)zStop visiting at scopes.Nrrrrrr}7zFrameSymbolVisitor.visit_ScopecKr)zStop visiting at blocks.Nrrrrrrz:rzFrameSymbolVisitor.visit_BlockcKr)z!Do not visit into overlay scopes.Nrrrrrri=rz%FrameSymbolVisitor.visit_OverlayScoperx)F)'rLrMrN__doc__rrNameboolrOrSrNSRefrIfr~Macror{Importr FromImportrAssignrrrqrrh FilterBlockr|rrsrrdScoper}Blockrzrrirrrrrs6    rr )typingrOrrr TYPE_CHECKINGtyping_extensionster?rAr;r<rrRrPrrr r!rrrrrs:      :