PL ix :dZddlZddlZddlZddlmZddlmZddlmZddlmZddlm Z ddl m Z d Z d d hZ d d hje Zdddddddddef dZGddZGddZGddZej"dZdZGddZy)zVprovides functionality for rendering a parsetree constructing into module source code.N)ast) exceptions)filters) parsetree)util) PythonPrinter UNDEFINEDSTOP_RENDERINGcontextloopTFc tj} t| } t| t ||||||||| | | || j S)zYGenerate module source code given a parsetree node, uri, and optional source filename)rFastEncodingBufferr_GenerateRenderMethod_CompileContextgetvalue)nodeurifilenamedefault_filtersbuffer_filtersimportsfuture_importssource_encodinggenerate_magic_commentstrict_undefined enable_loopreserved_namesbufprinters R/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mako/codegen.pycompiler"sc"  ! ! #CC G        "     " <<>ceZdZdZy)rc ||_||_||_||_||_||_||_||_| |_| |_ | |_ yN) rrrrrrrrrrr) selfrrrrrrrrrrrs r!__init__z_CompileContext.__init__HsY  ., ,.&<# 0&,r#N)__name__ __module__ __qualname__r(r#r!rrGs-r#rceZdZdZdZdZedZdZdZ dZ dZ d Z dd Z d Zd Z ddZ ddZdZdZdZdZdZdZdZdZdZdZdZdZy )rzZA template visitor object which generates the full module source for a template. c||_||_||_dg|_t |t j t jf|_|jrd|jz}|j}t|jjdkD}t|jj!dd}t|jj!dd}d} d} |j"r|j$s|dgz }n|j'} |jj(} d}| | j*j}| j*j,s|dgz }t| jj!dd}|jj.xs%t| jj!dd|j_ndg}d }d x}}|d g}nd g|zD cgc]} | }} |j1| xs||||||| | D]}t3||||js|j5yycc} w) Nz render_%srbufferedFalsecached **pageargs render_bodyrFr )r compilerridentifier_stack isinstancerDefTagBlockTagin_deffuncnameget_argument_expressionslen filter_argsargseval attributesgetis_block is_anonymouswrite_toplevelpagetag body_declkwargsrwrite_render_callablerwrite_metadata_struct) r'r r4rnamer>filteredr/r1defsrEas r!r(z_GenerateRenderMethod.__init__js%    !%  (8(8):L:L'MN ;;.D002D4++001A5HDOO// GDEH$//--h@AFDG}}T%6%6&&&(Dmm++G D"((AAC((//\N*Dg0044XwGH,0MM,E,E-&&**='BJ )%~"' 'Hx <;D ){T12!A2D2 "" OtT48V    ?%gx> ?{{  & & (3s0 I ct|jj|jj|jj<|jj |jj |jj|jjd}|jjddtj|dy)N)rrrline_mapz"""__M_BEGIN_METADATAz__M_END_METADATA """) maxr source_maplinenor4rrr writelinesjsondumps)r'structs r!rIz+_GenerateRenderMethod.write_metadata_structs7: LL # #8   3 34 ..==$$#}}<< //     JJv  &  r#c |jdS)N)r5r's r! identifiersz!_GenerateRenderMethod.identifierss$$R((r#c8 g i g dj_G fdd}|}jjD]}|j | j_t } D]!}|j|j}#tj}||_ jjrHjjr2jjdjjzjjrAjjddj!jjjjdjjdjjd jjd jjd jjd t"zjjd t%j$zjjdjj&zjjdjj(zjjdjj*zjjdjjzjj,r[d}jj,D]%}||dzz }jj|'t/j0|dddd}nd}|j3j} |j4} | j| j4|_|jj7t8|r%|jj7|j|j_jjd| j4j=Dcgc]}|j>c}zjjAdtC rjE tC r&jG jI dntC rjG tK| j4j=Scc}w)zxTraverse a template structure for module-level directives and generate the start of module-level code. Nc6eZdZfdZfdZfdZfdZy):_GenerateRenderMethod.write_toplevel..FindTopLevelc(j|yr&)append)srinherits r!visitInheritTagzJ_GenerateRenderMethod.write_toplevel..FindTopLevel.visitInheritTagst$r#c$||j<yr&rJ)rar namespacess r!visitNamespaceTagzL_GenerateRenderMethod.write_toplevel..FindTopLevel.visitNamespaceTags(, 499%r#c(|j_yr&)r4rE)rarr's r! visitPageTagzG_GenerateRenderMethod.write_toplevel..FindTopLevel.visitPageTags(, %r#cB|jrj|yyr&)ismoduler`)rar module_codes r! visitCodezD_GenerateRenderMethod.write_toplevel..FindTopLevel.visitCodes==&&t,!r#N)r)r*r+rcrgrirm)rbrlrfr'sr! FindTopLevelr^s % - - -r#rnz# -*- coding:%s -*-zfrom __future__ import , z(from mako import runtime, filters, cachezUNDEFINED = runtime.UNDEFINEDz'STOP_RENDERING = runtime.STOP_RENDERINGz__M_dict_builtin = dictz__M_locals_builtin = localsz_magic_number = %rz_modified_time = %rz_enable_loop = %rz_template_filename = %rz_template_uri = %rz_source_encoding = %r rztemplate defined imports)sourcerSposrz _exports = %rrY)&r4rErnodesaccept_visitorrfsetuniondeclared_identifiers _Identifiersdeclaredrrr writelinerjoin MAGIC_NUMBERtimerrrrr PythonCodebranch topleveldefsupdateTOPLEVEL_DECLAREDr[valuesrJ write_blanksr<write_module_codewrite_namespaces write_inheritlist)r'rnfn module_identmodule_identifiersrimpimpcodemain_identifiersmitrbrlrfs` @@@r!rDz$_GenerateRenderMethod.write_toplevels   $  - - N A  Q  $.  u  HA'--a.D.D.FGL H*$--8&2# MM 0 0 -- LL " "% (E(EE  == ' ' LL " "99T]]99:=  IJ >? HI 89 <= 3lBC 4tyy{BC 2T]]5N5NNO  % (>(> >  3dmm6G6GGH  #dmm&C&C C  == C}},, ,sTz! &&s+ ,nn3 GG-44TYY? --*-))  ) )+ ' ##**+<=   ' ' . .w/K/K L$6 !  /<<CCEF!qvvF G  !!!$ {   " "; / w<  ! !* -   wr{ + _  ! !* -$1188:;;GsT c f|jr,|j}|r|jjd|z|jj |j |jj d|ddj|ddd|s|s|r|jjd|jj|jjj|j|jr|jjr,d |vr(|jd jj!d |jst#|jj$d kDs"t#|jjd kDrT|jjd dj|jjDcgc] }|d| c}z|j'|jd|jj(D]} | j+||j-|j||||jjd|jj/d|r"|j1|||||jdyycc}w)znwrite a top-level render callable. this could be the main render() method or that of a top-level def.z@runtime._decorate_toplevel(%s)def (,):/__M_caller = context.caller_stack._push_frame()try:context._push_buffer()r2rYpageargsrz!__M_locals = __M_dict_builtin(%s)=T)toplevelNrt)r9 decoratorr r| start_sourcerSrTr}r5r`r4r[rrrBargument_declaredaddr<locally_assignedwrite_variable_declaresrurvwrite_def_finishrwrite_cache_decorator) r'rrJr>r/rKr1rxrs r!rHz+_GenerateRenderMethod.write_render_callables1 ;;I &&5 A !!$++. !388D> 2 =   x6 LL " "#; < $$ MM % % , ,TYY 7  tyy11|t7K  ! !" % 7 7 ; ;J G{{   11 2Q 64##556: LL " "3(("&!1!1!C!C$%a(  $$T%5%5$E #A  T " # dii8VD t$ !!!$   & &dD(D,<, tags in the template.starting_linenoN)r write_indented_blocktextrS)r'rlrs r!rz'_GenerateRenderMethod.write_module_codeVs4 PA LL - -affahh - O Pr#c`|jjddd|jdzdy)z:write the module-level inheritance-determination callable.z%def _mako_inherit(template, context):"_mako_generate_namespaces(context)z8return runtime._inherit_from(context, %s, _template_uri)fileN)r rTparsed_attributesr'rs r!rz#_GenerateRenderMethod.write_inherit\s5  3 0 F%%f- /   r#c xjjddddddddjjd|jD]}d|jvrd j _jj|jt|jr҉jjd gj jj|d _ Gfd d }|}|jD]}|j|jjd djzjjdd_ d}nd}d|j vrJjjd|j"d|j j%ddd|dnd|j vrJjjd|j"d|d|j j%dddn,jjd|j"d|dt'|jj%ddr(jjd |j"zjjd!t)|j"zjj+d"t|sjjd#jjdy)$z5write the module-level namespace-generating callable.z'def _mako_get_namespace(context, name):rz+return context.namespaces[(__name__, name)]except KeyError:rNz'def _mako_generate_namespaces(context):importTzdef make_namespace():c(eZdZdZdZfdZy)<_GenerateRenderMethod.write_namespaces..NSDefVisitorc&|j|yr&visitDefOrBaserars r! visitDefTagzH_GenerateRenderMethod.write_namespaces..NSDefVisitor.visitDefTag((.r#c&|j|yr&rrs r! visitBlockTagzJ_GenerateRenderMethod.write_namespaces..NSDefVisitor.visitBlockTagrr#c|jr tj di|jj |dj |j y)NFnested)z.Can't put anonymous blocks inside <%namespace>)rCrCompileExceptionexception_kwargswrite_inline_defr`r:)rarexportr[r's r!rzK_GenerateRenderMethod.write_namespaces..NSDefVisitor.visitDefOrBases[,,","="=!/##'"7"7# --dK-N dmm4r#Nr)r*r+rrr)rr[r'sr! NSDefVisitorrs//5r#r return [%s]rFzmake_namespace()Nonerzns = runtime.TemplateNamespace(z3, context._clean_inheritance_tokens(), templateuri=z , callables=z, calling_uri=_template_uri)modulezns = runtime.ModuleNamespace(z1, context._clean_inheritance_tokens(), callables=z$, calling_uri=_template_uri, module=)zns = runtime.Namespace(z, calling_uri=_template_uri) inheritabler0zcontext['self'].%s = nsz'context.namespaces[(__name__, %s)] = nspass)r rTr|rr@r4has_ns_importsrrSr<rur[rr9rvr}rrJrAr?reprr) r'rfrrvisr callable_namerr[s ` @@r!rz&_GenerateRenderMethod.write_namespacesgs  5  9  0 9    HI%%'J )D4??*/3 , LL % %dkk 24:: &&'>?"mm77>>tD " 55"#n*A$$S)* &&}8H'IJ &&t,# 2 & /// &&  ..2266B% T333 &&  %..228VD  &&yy-1 DOO'' w?@ &&'@DII'NO LL " "9DOK  LL % %a (UJ )V: LL " "6 * t$r#Nc l|jDcic]}|j|}}t}|j|j}|j|j j Dcgc]}|jc}}|j|j}|j|j}|jjrd|v}|jdnd}||j|}|rt|jddr|jj!dd|j_|jj$j'D]W\}} d| j(vs|jj!d|d t+j,d | j(dd Y|r|jj!d |D]}||vr}||} | j.r4| j0s|j3| |8|j5| |d M| j7r|j3| |p|j5| |d ||jj$vr"|jj!|d|d t|jddrr|jj8r6|jj;|d|dd|zd|d|ddd|zdd"|jj!|d|d|dH|jj8r*|jj;d|d|ddd|zd|jj!|d|d|jj!dycc}wcc}w)awrite variable declarations at the top of a function. the variable declarations are in the form of callable definitions for defs and/or name lookup within the function's context argument. the names declared are based on the names that are referenced in the function body, which don't otherwise have any explicit assignment operation. names that are assigned within the body are assumed to be locally-scoped variables and are not separately declared. for def callable definitions, if the def is a top-level callable then a 'stub' callable is generated which wraps the current Context into a closure. if the def is not top-level, it is fully rendered as a local closure. r FNrz_import_ns = {}Trz_mako_get_namespace(context, z)._populate(_import_ns, z\s*,\s*rz%loop = __M_loop = runtime.LoopStack()rz = _mako_get_namespace(context, z = _import_ns.get(z , UNDEFINED)zif %s is UNDEFINED:rz = context[]rz&raise NameError("'%s' is not defined")z, context.get(z , UNDEFINED))z = context.get(z__M_writer = context.writer())rLr:rwrx undeclared closuredefsr differencerlocally_declaredr4rdiscard intersectiongetattrr r| has_importsrfitemsr@resplitrBrCwrite_def_declris_rootrrT) r'r[rlimitc comp_identsto_writehas_loopidentnscomps r!rz-_GenerateRenderMethod.write_variable_declaress@(/:.>.>?qzz1}? ?5>>+"8"89>>!,!8!8!?!?!A BAQZZ B  &&{'D'DE&&{'C'CD == $ $)H   V $H  ,,U3H  /?G LL " "#4 5(,DMM %!]]55;;=  rr}},LL**"HHZx1HI    LL " "#J K2 E #"5)==,,++D+>--dK-M||~++D+>--dK-M$--222 &&?DeL4==*:EB}}55 //$e-1E9"27?.FN    .. %eU4 }}55 //"27?.FN  ..AFNa2 h >?Q@ Cs N,1N1cD|j}|j}|jd}|jsWt|jj dkDs"t|jj dkDr|jddn|jdd|jjd|ddj|d |jjd |ddj|d |jjd y ) z>write a locally-available callable referencing a top-level defTas_callrzcontext._locals(__M_locals)r rrrrzreturn render_rN) r:r;r9r<r[rrinsertr r|r})r'rr[r: namedeclsnameargss r!rz$_GenerateRenderMethod.write_def_declBs==113 000>{{   11 2Q 64##556: OOA< = OOAy ) #((9:MNO &.0B C  t$r#c |j}|j}|r|jjd|z|jjd|jddj |dt |jjdkD}t|jjdd}t|jjd d}|jjd d |s|s|r|jjd |j|| }|j||jj!||j"D]} | j%||jj'|j)|||||jjd|r#|j+||j|d|ddyy)z?write a locally-available def callable inside an enclosing def.z&@runtime._decorate_inline(context, %s)rrrrrr/r0r1rrrrNFT)inliner)r;rr r|r:r}r<r=r>r?r@rArTrrr5r`rurvpoprr) r'rr[rrrrKr/r1rs r!rz&_GenerateRenderMethod.write_inline_defUs113 NN  LL " "89D  !]]CHHY,? @ t'',,-1++J@Adoo))(G<=  =  x6 LL # #$< =!((f(=  $$[1 $$[1 #A  T " # !!# dHh? t$   & &  '  r#c|s>|s<|s:|jjd|r|jjddd|s|s|r|s|r|jjddn|jjdd|r|jjdd}|r'|j|jj |d}|jjd|r)|s'|j|j j|d}|s|r|jjd |zy|jjd |zdyy) aJwrite the end section of a rendering function, either outermost or inline. this takes into account if the rendering function was filtered, buffered, etc. and closes the corresponding try: block if any, and writes code to retrieve captured content, apply filters, send proper return value. return ''finally:z!context.caller_stack._pop_frame()Nz__M_buf = context._pop_buffer()6__M_buf, __M_writer = context._pop_buffer_and_writer()__M_buf.getvalue()Fz return %s__M_writer(%s))r r|rTcreate_filter_callabler=r>r4r)r'rr/rKr1 callstackras r!rz&_GenerateRenderMethod.write_def_finishs5x LL " "; / '' CT x66  '' A ''L  &&'JK$A//$$))1e LL " "4 (//MM00!U6 &&{Q7 ''(81(z>_GenerateRenderMethod.write_cache_decorator..sL==*r[/@AB..@@DEsAA c3rK|].}|jdr|dk7r|ddj|f0ywr)rr)rrnode_or_pagetags r!rz>_GenerateRenderMethod.write_cache_decorator..sB }}X&2+<V_66r: ; s47timeoutrrrrrz%s=%srrt)rrz.context.get('local').cache._ctx_get_or_create(z , lambda:__M_z ), context, rproz __M_defname=rFzreturn z9__M_writer(context.get('local').cache._ctx_get_or_create(z ), context, z))r)r r|rrArr4rErintr?r}rrundeclared_identifiersrrrrT)r'rrJr>r/r[rrcachekey cache_argsrM pass_argskvras`` r!rz+_GenerateRenderMethod.write_cache_decoratorsQ d;<"4488 d  == ,   --//AA   %77   "$'Z -B(C$DJy ! chhtnEFLP FG#(G Q)A- . A   $$ !88: %  HHY'GG8B8H8H8JK1a+K  ++ ,,aA LL # #IM4 8 LL # # HHY'GG8B8H8H8JK1a+K  = &L(Ls(I/I4I:cd}d|vrx|rv|jjr-|jjjj|z}|jjrd|vr|jj|z}|D]W}|dk(r t j d|}|r#|jdd\}}||} | |z}n ||}|J|d|d}Y|S)zwrite a filter-applying expression based on the filters present in the given filter names, adjusting for the global 'default' filter aliases as needed.cxtjd|rd|zStjj ||S)Nz decode\..+zfilters.)rmatchrDEFAULT_ESCAPESrAres r! locate_encodezC_GenerateRenderMethod.create_filter_callable..locate_encodes4xx t,!D((..224>>r#rz (.+?)(\(.*\))rrtrr)r4rEr=r>rrrgroup) r'r>target is_expressionremrfargsrs r!rz,_GenerateRenderMethod.create_filter_callable s  ? d?==((==00<<AADHD==00S_==884?D ,ACx)1-A wwq!} u!%(I!!$}$}!"F+F , r#c>|jj|jt|jsh|j j 3t|j j jjst|j jrS|j|jjd|jzd}|jjd|zy|jjd|jzy)Nz%sTr)r rrSr<escapesr4rEr=r>rr escapes_coderr|)r'rras r!visitExpressionz%_GenerateRenderMethod.visitExpression)s !!$++.   %%1 --99>>?4==001++!!&&tyy(8$A LL " "#3a#7 8 LL " "#3dii#? @r#cjrz|jjdjrR|jjd|jjd|jjdyy|jj j |j jr&jdk(rt|j}n j}|jj|jfd}r-tdDrtfdDs|r|jjdyy)Nrzloop = __M_loop._exit()forcD]:}t|tjrt|tjryyy)NTFr6rComment ControlLine)rchildrens r!_search_for_control_linezH_GenerateRenderMethod.visitControlLine.._search_for_control_linePs;!!A!!Y%6%67 #Ay'<'<=# !r#c3pK|].}t|tjtjf0ywr&r!)rrs r!rz9_GenerateRenderMethod.visitControlLine..Zs0q9#4#4i6K6K"LMs46c3K|]G}t|tjr+j|jxs |j Iywr&)r6rr# is_ternarykeywordisend)rrrs r!rz9_GenerateRenderMethod.visitControlLine..^sB!!Y%:%:;__QYY/:177:sA Ar) r*r r|has_loop_contextrrSr4rr)mangle_mako_loopr get_childrenall)r'rrr%r$s ` @r!visitControlLinez&_GenerateRenderMethod.visitControlLine:s :: LL " "4 ($$ &&z2 &&'@A &&t,% LL % %dkk 2}}((T\\U-B'dll;yy LL " "4 (((*H !%% ,- &&v..r#c|jj|j|jjdt |j zy)Nr)r rrSr|rcontentrs r! visitTextz_GenerateRenderMethod.visitTextgs9 !!$++. /$t||2DDEr#c Zt|jjdkD}|r|jj dd|j D]}|j ||rG|jj ddd|j|jjddzdyy) Nrz#__M_writer = context._push_writer()rrrrrF)r<r=r>r rTrurvr)r'rrKrs r! visitTextTagz"_GenerateRenderMethod.visitTextTagkst'',,-1  LL # #5v  #A  T " #  LL # #H --$$))+?  r#c |js|jj|j|j|j st |jjdkDrn|jjd|jjddj|jDcgc] }t|c}zyyyycc}w)Nrrz0__M_locals_builtin_stored = __M_locals_builtin()z__M_locals.update(__M_dict_builtin([(__M_key, __M_locals_builtin_stored[__M_key]) for __M_key in [%s] if __M_key in __M_locals_builtin_stored]))r) rkr rrrSr9r<r[rr|r}ryr)r'rrs r!rmz_GenerateRenderMethod.visitCode~s}} LL - - 4;; . ;;3t'7'7'H'H#IA#M  &&F &&Ghh1J1J1LMAQMNO$N; " Ns:Cc>|jj|j|jj d}|r0|jj d|j dd|dy|jj d|j dzy)Nr>zruntime._include_file(context, rz, _template_uri, rz1runtime._include_file(context, %s, _template_uri))r rrSr@rAr|r)r'rr>s r!visitIncludeTagz%_GenerateRenderMethod.visitIncludeTags !!$++.""6*  LL " "))&149  LL " "C))&13 r#cyr&r,rs r!rgz'_GenerateRenderMethod.visitNamespaceTag r#cyr&r,rs r!rz!_GenerateRenderMethod.visitDefTagr9r#c|jr)|jjd|jzy|j d}|dgz }|jjd|jz|jjd|jddj |d |jjd y) Nz%s()Trr2zOif 'parent' not in context._data or not hasattr(context._data['parent'], '%s'):zcontext['self'].rrrrq)rCr r|r:r;r})r'rrs r!rz#_GenerateRenderMethod.visitBlockTags    LL " "6DMM#9 :44T4BH  &H LL " ">@D N  LL " ",0MM388H;MN  LL " "4 (r#c&|j|yr& visitCallTagrs r!visitCallNamespaceTagz+_GenerateRenderMethod.visitCallNamespaceTags $r#c jjddg jj|dj|dj dj j G fdd}|}|jD]}|j|j j|jj}jjd d j|zd}|rjjd d jj j |jD]}|jj jj||ddd jjddd j zdjjdd jj!|j"jjdj%g|j&dzdddy)Nzdef ccall(caller):bodyTrFcallerc*eZdZdZdZfdZy)6_GenerateRenderMethod.visitCallTag..DefVisitorc&|j|yr&rrs r!rzB_GenerateRenderMethod.visitCallTag..DefVisitor.visitDefTag  &r#c&|j|yr&rrs r!rzD_GenerateRenderMethod.visitCallTag..DefVisitor.visitBlockTagrFr#cj|d|jsj|j|jjvrj|j=yy)NFr)rrCr`r:r)rarbody_identifierscallable_identifiersrr's r!rzE_GenerateRenderMethod.visitCallTag..DefVisitor.visitDefOrBases_%%d,@%O((MM$--0==$4$@$@@(44T]]CAr#Nr)rIrJrr'sr! DefVisitorrDs ' ' D Dr#rKz def body(%s):rrr)rrzccontext.caller_stack.nextcaller = runtime.Namespace('caller', context, callables=ccall(__M_caller))rrz&context.caller_stack.nextcaller = None)r r|r[r add_declaredr5r`rurvrrFr;r}rTrrrrSr expression) r'rrKrrbodyargsr/rIrJrs ` @@@r!r>z"_GenerateRenderMethod.visitCallTags 34#//66tD6I/66tE6J %%h/ $$%56 D D l "A  S ! " !!#>>::< (1CCD  LL # #$r,r#r!rrcs /)b "))k,>,E,E,GHqAFFHIU6223U6334  $(MM$7$78I8I$JDM%)$4$4$Kv7J7J$K!EDM $ 0 0 2D   % !$ !$"% ++-      % 44AA  ! !  ..9))M*+  cIsHc 2t|j||fi|S)zUcreate a new Identifiers for a new Node, with this Identifiers as the parent.)rzr4)r'rrGs r!rz_Identifiers.branchHsDMM4@@@r#czt|jj|jj Sr&)rwrrxrrrZs r!rLz_Identifiers.defsNs-4$$**4+;+;<CCEFFr#c dt|jdt|jdt|jd|jj Dcgc]}|j c}d|jj Dcgc]}|j c}d|jd Scc}wcc}w)NzIdentifiers(declared=z, locally_declared=z , undeclared=z, topleveldefs=z, closuredefs=z, argumentdeclared=r) rr{rrrrrJrr)r'rs r!__repr__z_Identifiers.__repr__Rs T]]#T**+T__%!%!2!2!9!9!;c |jD]K}|dk7s ||jj|jvs1|jj |M|j D]}|jj |y)zlupdate the state of this Identifiers with the undeclared and declared identifiers of the given node.r N)r r{rxrrrryr'rrs r!check_declaredz_Identifiers.check_declaredas002 +E !e4==3F3F%%4'##E*  + ..0 -E  ! ! % %e , -r#c|jj|||jvr|jj|yyr&)r{rrremove)r'rs r!rLz_Identifiers.add_declaredms7 % DOO # OO " "5 ) $r#c&|j|yr&r^rs r!rz_Identifiers.visitExpressionr D!r#c&|j|yr&rbrs r!r/z_Identifiers.visitControlLineurcr#c|js@|j||jj|j |_yyr&)rkr^rrxryrs r!rmz_Identifiers.visitCodexsA}}    %$($9$9$?$?))+%D !r#cf|j|ur#|jD]}|j|yyr&)rrurvr'rrs r!rgz_Identifiers.visitNamespaceTags6 99 ZZ '  & ' r#c|j|j}|||j<|K||urF|js |jr-tjd|jzfi|j yyy)Nz<%%def or %%block named '%s' already exists in this template.)rAr:rBrrr)r' collectionrexistings r!_check_name_existsz_Identifiers._check_name_existss>>$--0$( 4==!  $("3"3--+-1]];'' #4% !r#cH|jr)|js|j|j|n*||jur|j|j ||j D]K}|dk7s ||jj|jvs1|jj|M||jurS|jD]}|jj||jD]}|j|yyNr )rrCrkrrrr r{rxrrrryrrurvr'rrrs r!rz_Identifiers.visitDefTags <<>$"3"3  # #D$5$5t <  "  # #D$4$4d ;002 +E !e4==3F3F%%4'##E*  + 499 224 2&&**51 2ZZ '  & ' r#c||jur|jst|jtjrEt j d|jd|jjdfi|jt|jtjtjfr.t j d|jdfi|j|jD]K}|dk7s ||jj|jvs1|jj!|M|jsB|j#|j$||jj!|j&n*||jur|j#|j(||j+D]}|j,j!||j.D]}|j1|y)Nz Named block 'z' not allowed inside of def ''z#' not allowed inside of <%call> tagr )rrCr6rr7rrrJrCallTagCallNamespaceTagr r{rxrrrrkrr:rryrrurvrns r!rz_Identifiers.visitBlockTags tyy ):):$))Y%5%56 11yy$))..2++  I--y/I/IJ!11yy#++ 002 +E !e4==3F3F%%4'##E*  +    # #D$5$5t < OO   .  "  # #D$4$4d ;..0 .E  " " & &u - . #A  T " #r#c|jD]K}|dk7s ||jj|jvs1|jj |Myrm)r r{rxrrrr]s r!r4z_Identifiers.visitTextTagsW002 +E !e4==3F3F%%4'##E*  +r#c&|j|yr&rbrs r!r7z_Identifiers.visitIncludeTagrcr#c|jD]}|jj||j|yr&)ryrrr^r]s r!riz_Identifiers.visitPageTags<..0 .E  " " & &u - . D!r#c&|j|yr&r=rs r!r?z"_Identifiers.visitCallNamespaceTags $r#c>||jur|jD]K}|dk7s ||jj|jvs1|j j |M|jD]}|jj ||jD]}|j|y|jD]K}|dk7s ||jj|jvs1|j j |Myrm) rr r{rxrrrryrrurvrns r!r>z_Identifiers.visitCallTags  499 446 /I%%t}}7J7J))8+OO''.  / 224 2&&**51 2ZZ '  & '446 /I%%t}}7J7J))8+OO''.  /r#)NNF)r)r*r+rOr(rrPrLr[r^rLrr/rmrgrkrrr4r7rir?r>r,r#r!rzrzstMAFA GG   -* ""' '(#B+""  /r#rzz^for\s+((?:\(?)\s*(?:\(?)\s*[A-Za-z_][A-Za-z_0-9]*(?:\s*,\s*(?:[A-Za-z_][A-Za-z_0-9]*),??)*\s*(?:\)?)(?:\s*,\s*(?:(?:\(?)\s*[A-Za-z_][A-Za-z_0-9]*(?:\s*,\s*(?:[A-Za-z_][A-Za-z_0-9]*),??)*\s*(?:\)?)),??)*\s*(?:\)?))\s+in\s+(.*):czt}|j||jrd|jd_t j |j}|r:|jd|jdzdd|jdz}|Std|jz|j}|S) zconverts a for loop into a context manager wrapped around a for loop when access to the `loop` variable has been detected in the for loop body TrYzloop = __M_loop._enter(%s)rtrzfor %s in loop:rzCouldn't apply loop context: %s) LoopVariablervdetectedrur+ _FOR_LOOPrrrTr SyntaxError)rr loop_variablerrs r!r,r,s!NM &*. 2' *    ,u{{1~=  %u{{1~5D K?$))KL Lyy Kr#c.eZdZdZdZdZdZdZdZy)ryzQA node visitor which looks for the name 'loop' within undeclared identifiers.cd|_y)NF)rzrZs r!r(zLoopVariable.__init__s  r#cd|jvrd|_y|jD]}|j|y)Nr T)r rzr-rvrgs r!_loop_reference_detectedz%LoopVariable._loop_reference_detecteds@ T002 2 DM&&( '  & 'r#c&|j|yr&rrs r!r/zLoopVariable.visitControlLine  %%d+r#c&|j|yr&rrs r!rmzLoopVariable.visitCode#rr#c&|j|yr&rrs r!rzLoopVariable.visitExpression&rr#N) r)r*r+rOr(rr/rmrr,r#r!ryrys ',,,r#ry)rOrUrrmakorrrrr mako.pygenrr~rrxRESERVED_NAMES frozensetr"rrrzr{r,ryr,r#r!rs $ !"23V$**+<=  ;%P--8[ [ |k/k/\ BJJ&  .,,r#