zmc
2023-12-22 9fdbf60165db0400c2e8e6be2dc6e88138ac719a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
U
Þ=®dÐ)ã@s ddlZddlmZddlmZdZdZdZdZ    dej
ej ej d    d    d
œd d „Z dej ej d    d    d œdd„ZGdd    „d    ƒZGdd„deƒZGdd„deƒZdS)éNé)Únodes)Ú NodeVisitorÚparamÚresolveÚaliasZ    undefinedÚSymbols)rÚparent_symbolsÚreturncCs*t|d}t|ƒ}|D]}| |¡q|S©N)Úparent)rÚFrameSymbolVisitorÚvisit)rr    ÚsymÚvisitorÚnode©rúHd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\jinja2/idtracking.pyÚ find_symbols s
 
 r)rr    r
cCst|d}| |¡|Sr )rÚ analyze_node)rr    rrrrÚsymbols_for_nodes
 
rc@s*eZdZd#ejdejeddœdd„Zejej    ddœdd„Z
d$e ejej e eje fe dœd    d
„Z e ejej    d œd d „Ze eje dœdd„Ze e dœdd„Zddœdd„Ze ddœdd„Ze e dœdd„Ze ddœdd„Zejdddœdd„Zeje e fdœdd „Zeje dœd!d"„ZdS)%rN)r Úlevelr
cCsD|dkr |dkrd}n
|jd}||_||_i|_i|_tƒ|_dS)Nrr)rr ÚrefsÚloadsÚsetÚstores)Úselfr rrrrÚ__init__s
zSymbols.__init__©rÚkwargsr
cKst|ƒ}|j|f|ŽdS©N)Ú RootVisitorr)rrrrrrrr.szSymbols.analyze_node)ÚnameÚloadr
cCs2d|j›d|›}||j|<|dk    r.||j|<|S)NZl_Ú_)rrr)rr"r#ÚidentrrrÚ _define_ref2s
 
 
zSymbols._define_ref)Útargetr
cCs.||jkr|j|S|jdk    r*|j |¡SdSr )rr Ú    find_load)rr'rrrr(;s
 
 
 
 zSymbols.find_load)r"r
cCs.||jkr|j|S|jdk    r*|j |¡SdSr )rr Úfind_ref©rr"rrrr)Ds
 
 
 
 zSymbols.find_refcCs&| |¡}|dkr"td|›dƒ‚|S)NzFTried to resolve a name to a reference that was unknown to the frame (ú))r)ÚAssertionError)rr"ÚrvrrrÚrefMs 
 
ÿz Symbols.ref)r
cCsBt |j¡}|j |j¡|j ¡|_|j ¡|_|j ¡|_|Sr )    ÚobjectÚ__new__Ú    __class__Ú__dict__ÚupdaterÚcopyrr)rr-rrrr4Vs     z Symbols.copycCs`|j |¡||jkr\|jdk    rJ|j |¡}|dk    rJ|j|t|fddS|j|tdfddS©N)r#)rÚaddrr r)r&ÚVAR_LOAD_ALIASÚVAR_LOAD_UNDEFINED)rr"Z    outer_refrrrÚstore^s 
 
 z Symbols.storecCs|j |¡|j|tdfdSr5)rr6r&ÚVAR_LOAD_PARAMETERr*rrrÚdeclare_parameterps zSymbols.declare_parametercCs$| |¡dkr |j|t|fddSr5)r)r&ÚVAR_LOAD_RESOLVEr*rrrr#tsz Symbols.load)Úbranch_symbolsr
c    Csèi}|D]0}|jD]$}||jkr"q| |d¡d||<qq|D].}|j |j¡|j |j¡|j |j¡q>| ¡D]l\}}|t|ƒkrŒqv| |¡}|dk    s¦tdƒ‚|j    dk    rÔ|j     |¡}|dk    rÔt
|f|j|<qvt |f|j|<qvdS)Nrrzshould not happen) rÚgetrr3rÚitemsÚlenr)r,r r7r<)    rr=rÚbranchr'rr"Z branch_countZ outer_targetrrrÚ branch_updatexs*
 
 
 
 zSymbols.branch_updatecCsBi}|}|dk    r>t|jƒD]}||kr| |¡||<q|j}q|Sr )Úsortedrr)r )rr-rr"rrrÚ dump_stores“szSymbols.dump_storescCsHtƒ}|}|dk    rD|j ¡D]\}\}}|tkr| |¡q|j}q
|Sr )rrr?r:r6r )rr-rr'Úinstrr$rrrÚdump_param_targets s zSymbols.dump_param_targets)NN)N)Ú__name__Ú
__module__Ú __qualname__ÚtÚOptionalÚintrrÚNodeÚAnyrÚstrÚTupler&r(r)r.r4r9r;r#ÚSequencerBÚDictrDÚSetrFrrrrrs0ÿþ ÿþ                  c@sÚeZdZdddœdd„Zejejddœdd„ZeZ    eZ
eZ eZ eZ eZeZejejddœd    d
„Zejejddœd d „Zejejddœd d„Zdejeejddœdd„Zejejddœdd„Zejejejddœdd„ZdS)r!rN©Úsymbolsr
cCst|ƒ|_dSr )r Ú sym_visitor©rrUrrrr¯szRootVisitor.__init__rcKs| ¡D]}|j |¡qdSr ©Ziter_child_nodesrVr©rrrÚchildrrrÚ _simple_visit²s zRootVisitor._simple_visitcKs|jD]}|j |¡qdSr ©ÚbodyrVrrYrrrÚvisit_AssignBlock¾s
zRootVisitor.visit_AssignBlockcKs"|jddD]}|j |¡q dS)N)Úcall)ÚexcluderXrYrrrÚvisit_CallBlockÂszRootVisitor.visit_CallBlockcKs|jD]}|j |¡qdSr r\rYrrrÚvisit_OverlayScopeÆs
zRootVisitor.visit_OverlayScoper])rÚ
for_branchrr
cKsŽ|dkr"|jj|jdd|j}nN|dkr2|j}n>|dkrh|jj|jdd|jdk    rd|j |j¡dStdƒ‚|rŠ|D]}|j |¡qxdS)Nr]T)Ústore_as_paramÚelseÚtestzUnknown for branch)rVrr'r]Úelse_rfÚ RuntimeError)rrrcrrAÚitemrrrÚ    visit_ForÊs
zRootVisitor.visit_ForcKs4|jD]}|j |¡q|jD]}|j |¡qdSr )ÚtargetsrVrr])rrrr'rZrrrÚ
visit_WithÞs
 
zRootVisitor.visit_With)rÚargsrr
cOstdt|ƒj›ƒ‚dS)NzCannot find symbols for )ÚNotImplementedErrorÚtyperG)rrrmrrrrÚ generic_visitäszRootVisitor.generic_visit)r])rGrHrIrrrMrJrNr[Zvisit_TemplateÚ visit_BlockÚ visit_MacroÚvisit_FilterBlockÚ visit_ScopeÚvisit_IfZvisit_ScopedEvalContextModifierÚ AssignBlockr^Ú    CallBlockraÚ OverlayScoperbÚForrOrjÚWithrlrprrrrr!®s*ÿþ r!c@sneZdZdZdddœdd„Zd(ejeej    ddœd    d
„Z
ej ej    dd œd d „Z ej ej    dd œdd„Zejej    dd œdd„Zejej    dd œdd„Zejej    dd œdd„Zejej    dd œdd„Zejej    dd œdd„Zejej    dd œdd„Zejej    dd œdd„Zejej    dd œdd„Zejej    dd œd d!„Z ej!ej    dd œd"d#„Z"ej#ej    dd œd$d%„Z$ej%ej    dd œd&d'„Z&dS))r zA visitor for `Frame.inspect`.rNrTcCs
||_dSr )rUrWrrrrëszFrameSymbolVisitor.__init__F)rrdrr
cKsT|s|jdkr|j |j¡n2|jdkr8|j |j¡n|jdkrP|j |j¡dS)z2All assignments to names go through this function.rr9r#N)ÚctxrUr;r"r9r#)rrrdrrrrÚ
visit_Nameîs 
 
zFrameSymbolVisitor.visit_NamercKs|j |j¡dSr )rUr#r"©rrrrrrÚ visit_NSRefùszFrameSymbolVisitor.visit_NSRefc snˆj|jfˆŽˆj‰tjtjddœ‡‡‡fdd„ }||jƒ}||jƒ}||j    pTdƒ}ˆj 
|||g¡dS)Nr)rr
cs0ˆ ¡ˆ_}|D]}ˆj|fˆŽqˆˆ_|Sr )r4rUr)rr-Zsubnode©rZoriginal_symbolsrrrÚ inner_visits
z0FrameSymbolVisitor.visit_If.<locals>.inner_visitr) rrfrUrJÚIterablerrMr]Zelif_rgrB)rrrr€Z body_symbolsZ elif_symbolsZ else_symbolsrrrruüs     
 
zFrameSymbolVisitor.visit_IfcKs|j |j¡dSr )rUr9r"r}rrrrrszFrameSymbolVisitor.visit_MacrocKs |j|f|Ž|j |j¡dSr )rprUr9r'r}rrrÚ visit_ImportszFrameSymbolVisitor.visit_ImportcKsF|j|f|Ž|jD],}t|tƒr4|j |d¡q|j |¡qdS)Nr)rpÚnamesÚ
isinstanceÚtuplerUr9)rrrr"rrrÚvisit_FromImports
 
 
z#FrameSymbolVisitor.visit_FromImportcKs$|j|jf|Ž|j|jf|ŽdS)z'Visit assignments in the correct order.N)rrr'r}rrrÚ visit_AssignszFrameSymbolVisitor.visit_AssigncKs|j|jf|ŽdS)zqVisiting stops at for blocks.  However the block sequence
        is visited as part of the outer scope.
        N)rÚiterr}rrrrj#szFrameSymbolVisitor.visit_ForcKs|j|jf|ŽdSr )rr_r}rrrra)sz"FrameSymbolVisitor.visit_CallBlockcKs|j|jf|ŽdSr )rÚfilterr}rrrrs,sz$FrameSymbolVisitor.visit_FilterBlockcKs|jD]}| |¡qdSr )Úvaluesr)rrrr'rrrrl/s
zFrameSymbolVisitor.visit_WithcKs|j|jf|ŽdS)zStop visiting at block assigns.N)rr'r}rrrr^3sz$FrameSymbolVisitor.visit_AssignBlockcKsdS)zStop visiting at scopes.Nrr}rrrrt7szFrameSymbolVisitor.visit_ScopecKsdS)zStop visiting at blocks.Nrr}rrrrq:szFrameSymbolVisitor.visit_BlockcKsdS)z!Do not visit into overlay scopes.Nrr}rrrrb=sz%FrameSymbolVisitor.visit_OverlayScope)F)'rGrHrIÚ__doc__rrÚNameÚboolrJrNr|ZNSRefr~ZIfruZMacrorrZImportr‚Z
FromImportr†ZAssignr‡ryrjrwraZ FilterBlockrsrzrlrvr^ZScopertZBlockrqrxrbrrrrr ès.ÿþ     r )N)N)ÚtypingrJÚrrrr:r<r7r8rrMrKrrrr!r rrrrÚ<module>s,  ÿ
þ ÿþ :