Ñò žòœMc @sÃdZddkZddkZddklZddklZlZlZl Z l Z dZ e e e e e e eed„Zdefd„ƒYZd efd „ƒYZd efd „ƒYZdS( sVprovides functionality for rendering a parsetree constructing into module source code.iÿÿÿÿN(t PythonPrinter(tutiltastt parsetreetfilterst exceptionsic Cs~ti o#t|tƒo|i|ƒ}ntiƒ} t| ƒ} t| t||||||||| ƒ |ƒ| i ƒS(s\Generate module source code given a parsetree node, uri, and optional source filename( Rtpy3kt isinstancetunicodetencodetFastEncodingBufferRt_GenerateRenderMethodt_CompileContexttgetvalue( tnodeturitfilenametdefault_filterstbuffer_filterstimportstsource_encodingtgenerate_magic_commenttdisable_unicodetstrict_undefinedtbuftprinter((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pytcompiles   R cBseZd„ZRS(c CsU||_||_||_||_||_||_||_||_| |_dS(N( RRRRRRRRR( tselfRRRRRRRRR((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyt__init__7s        (t__name__t __module__R(((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyR 6sR cBseZdZd„Zed„ƒZd„Zd„Zd„Zd„Z d„Z e dd„Z d „Zd „Zd „Zed „Ze e d „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(s_A template visitor object which generates the full module source for a template. c Cs ||_d|_||_||_dg|_t|titi fƒ|_ |i od|i }|i ƒ}t |iiƒdj}t|iiddƒƒ}t|iiddƒƒ}d} d} |io|i o|dg7}q…n‘|iƒ} |ii} d}| dj oL| ii ƒ}| iip|dg7}nt| iiddƒƒ}ndg}t}t}}|djo d g}n)g} d g|D] } | | q±~ }|i| p||||||ƒ| dj o%x"| D]}t|||ƒqþWndS( Niÿÿÿÿs render_%sitbufferedtFalsetcacheds **pageargst render_bodytcontext(Rtlast_source_linetcompilerRtNonetidentifier_stackRRtDefTagtBlockTagtin_deftfuncnametget_argument_expressionstlent filter_argstargstevalt attributestgettis_blockt is_anonymoustwrite_topleveltpagetagt body_decltkwargsR twrite_render_callableR ( RRR%RtnameR/tfilteredRR!tdefsR6t_[1]ta((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRPsL                (   cCs |idS(Niÿÿÿÿ(R'(R((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyt identifiers~sc sjg‰h‰g‰dg}dˆi_dtf‡‡‡‡fd†ƒY}|ƒ}x!ˆiiD]}|i|ƒqbWˆˆi_tƒ}x#ˆD]}|i |i ƒƒ}q•Wt ƒ}||_ ˆii o+ˆiioˆiidˆiiƒnˆiidƒˆiidƒˆiidƒˆiidƒˆiidtƒˆiid tiƒƒˆiid ˆiiƒˆiid ˆiiƒˆiid ƒˆiid ˆiiƒˆiiofd}x2ˆiiD]$}||d7}ˆii|ƒqêWti|ddddddddƒ} nd} |iˆiƒ} |ii | iƒ|_|i idƒ| o|i i| i ƒn|ˆi_ˆiidg} | iiƒD]}| |iqÇ~ ƒˆiidƒt ˆƒoˆi!ˆƒnt ˆƒo"ˆi"ˆƒˆi#ˆdƒnt ˆƒoˆi"ˆƒn| iiƒS(syTraverse a template structure for module-level directives and generate the start of module-level code. t FindTopLevelcsDeZ‡fd†Z‡fd†Z‡fd†Z‡fd†ZRS(csˆi|ƒdS(N(tappend(tsR(tinherit(s2/usr/lib/python2.6/vendor-packages/mako/codegen.pytvisitInheritTagscs|ˆ|i tags in the template.N(twrite_source_commentRtwrite_indented_blockttext(RRIRg((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRbs cCs(|iiddd|iddƒdS(s:write the module-level inheritance-determination callable.s%def _mako_inherit(template, context):s"_mako_generate_namespaces(context)s8return runtime._inherit_from(context, %s, _template_uri)tfileN(RRqtparsed_attributesR&(RR((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRds   c sŽˆiiddddddddƒˆiidƒx!|iƒD]}|iidƒotˆi_ nˆi |ƒt |i ƒoÀˆiidƒg‰ˆii i|ƒ‰tˆ_d tf‡‡‡fd †ƒY}|ƒ}x|i D]}|i|ƒqñWˆiid d iˆƒƒˆiidƒtˆ_d }nd}d|ijo3ˆiid|i|iiddƒ|fƒnad|ijo3ˆiid|i||iiddƒfƒnˆiid|i|fƒt|iiddƒƒoˆiid|iƒnˆiidt|iƒƒˆiidƒqBWt |ƒpˆiidƒnˆiidƒdS(s5write the module-level namespace-generating callable.s'def _mako_get_namespace(context, name):stry:s+return context.namespaces[(__name__, name)]sexcept KeyError:s"_mako_generate_namespaces(context)s'def _mako_generate_namespaces(context):timportsdef make_namespace():t NSDefVisitorcs/eZd„Zd„Z‡‡‡fd†ZRS(cSs|i|ƒdS(N(tvisitDefOrBase(RBR((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyt visitDefTag8scSs|i|ƒdS(N(R(RBR((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyt visitBlockTag;scsM|iotid|i‚nˆi|ˆdtƒˆi|iƒdS(Ns.Can't put anonymous blocks inside <%namespace>tnested(R4RtCompileExceptiontexception_kwargstwrite_inline_defR RAR+(RBR(RR?texport(s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyR>s  (RRR‚RƒR((RR?Rˆ(s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyR€7s  s return [%s]Rmsmake_namespace()R&R}s€ns = runtime.TemplateNamespace(%r, context._clean_inheritance_tokens(), templateuri=%s, callables=%s, calling_uri=_template_uri)tmodulesyns = runtime.ModuleNamespace(%r, context._clean_inheritance_tokens(), callables=%s, calling_uri=_template_uri, module=%s)shns = runtime.Namespace(%r, context._clean_inheritance_tokens(), callables=%s, calling_uri=_template_uri)t inheritableR scontext['self'].%s = nss'context.namespaces[(__name__, %s)] = nss tpassN(RRqR&RXR`R1thas_keyRvR%thas_ns_importsRzR-RQR?R\R*RPRRRrR R~R:R2R0treprRa(RRERR€tvisRgt callable_name((RR?Rˆs2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRc sh     "         c Cs4tg}|iD]}||i|fq~ƒ}tƒ}|i|iƒ}|ig}|iiƒD]}||iqh~ƒ}|i|i ƒ}|i|i ƒ}|dj o|i |ƒ}n|ot |idtƒo‡|iidƒt|i_xh|iiiƒD]P\} } | iidƒo1|iid| tid| idƒfƒqqWnx±|D]©} | |jo‡|| } | io8| ip|i| |ƒq |i| |dtƒq| iƒo|i| |ƒq|i| |dtƒqs| |iijo|iid| | fƒqst |idtƒos|iioE|ii d| | fd | d d | | fd d | ddƒq|iid| | | fƒqs|iio.|ii d d | | fd d | dƒqs|iid| | fƒqsW|iidƒdS(s write 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. Rs_import_ns = {}Rs:_mako_get_namespace(context, %r)._populate(_import_ns, %r)s\s*,\s*R„s%%s = _mako_get_namespace(context, %r)s"%s = _import_ns.get(%r, UNDEFINED)sif %s is UNDEFINED:stry:s%s = context[%r]sexcept KeyError:s&raise NameError("'%s' is not defined")s3%s = _import_ns.get(%r, context.get(%r, UNDEFINED))s%s = context.get(%r, UNDEFINED)s__M_writer = context.writer()N(!tdictR<R+RSRTt undeclaredt closuredefsR`t differenceRstlocally_declaredR&t intersectiontgetattrR%R RRXRvt has_importsREt iteritemsR1RŒtretsplitR3R4twrite_def_declR‡tis_rootRRq( RR?RotlimitR=tct comp_identstto_writet_[2]tidenttnstcomp((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRuvsv3 6    *                cCs>|i|ijo'|iid|iƒ|i|_ndS(sUwrite a source comment containing the line number of the corresponding template line.s# SOURCE LINE %dN(R$RMRRX(RR((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRzæscCsâ|i}|iƒ}|idtƒ}|i oFt|iiƒdjpt|iiƒdjo|iddƒn|iddƒ|i i d|di |ƒfƒ|i i d|di |ƒfƒ|i i dƒdS( s>write a locally-available callable referencing a top-level deftinclude_defaultsiscontext.locals_(__M_locals)R#s def %s(%s):Rmsreturn render_%s(%s)N( R+R,R R*R-R?RtRstinsertRRXRrR&(RRR?R+t namedeclstnameargs((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRœìs   ##c Cs¡|iƒ}|i}|o|iid|ƒn|iid|idi|ƒfƒt|iiƒdj}t |i i ddƒƒ}t |i i ddƒƒ}|ii dd ƒ|p|p|o|ii d ƒn|i |d |ƒ}|i|ƒ|ii|ƒx|iD]} | i|ƒq W|iiƒ|i||||ƒ|iidƒ|o,|i||i|t|d td tƒndS(s?write a locally-available def callable inside an enclosing def.s&@runtime._decorate_inline(context, %s)s def %s(%s):RmiRR R!s"context.caller_stack._push_frame()stry:scontext._push_buffer()R„tinlineRoN(R,RpRRXR+RrR-R.R/R0R1R2RqR\RuR'RARQRRtpopRwR&RxR Rv( RRR?R„R¨RpR;RR!Rg((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyR‡üs6  &       cCsd| oE| o=| o5|iidƒ|o|iiddd ƒqMn|p|p|oþ|p|o|iiddƒn|iiddƒ|o|iidƒnd}|o|i|ii|tƒ}n|iid ƒ|o'| o|i|ii |tƒ}n|p|o|iid|ƒq`|iid|dƒnd S( s;write 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.s return ''sfinally:s!context.caller_stack._pop_frame()s__M_buf = context._pop_buffer()s6__M_buf, __M_writer = context._pop_buffer_and_writer()s__M_buf.getvalue()s return %ss__M_writer(%s)N( RRXRqR&tcreate_filter_callableR.R/R R%R(RRRR;R!t callstackRB((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRw!s8     cCsß|iid||fƒ|iidt|ƒƒ}h} x ddddfD]õ} |ii| d dƒ} | dj oA| d djott| ƒƒ| | d t pass_argsR¢tktvRBt_[3]((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRxRsN   "#F = =c s‡fd†}d|joW|oLˆiioˆiiii|}nˆiioˆii|}qoqsnx£|D]›}|djoqzntid|ƒ}|o2|iddƒ\}}||ƒ} | |}n'|} ||ƒ}|dj pt ‚d||f}qzW|S(s©write a filter-applying expression based on the filters present in the given filter names, adjusting for the global 'default' filter aliases as needed.csTtid|ƒo d|Sˆiiotii||ƒStii||ƒSdS(Ns decode\..+sfilters.(RštmatchR%RRtNON_UNICODE_ESCAPESR2tDEFAULT_ESCAPES(R:(R(s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyt locate_encode“s   Rgs (.+?)(\(.*\))iis%s(%s)N( R%R6R.R/RRšRÃtgroupR&tAssertionError( RR/ttargett is_expressionRÆtetmR£tfargsRfRy((Rs2/usr/lib/python2.6/vendor-packages/mako/codegen.pyR¬Žs*      cCs±|i|ƒt|iƒp?|iidj ot|iiiiƒpt|iiƒo:|i |i id|i t ƒ}|i id|ƒn|i id|i ƒdS(Ns%ss__M_writer(%s)(RzR-tescapesR%R6R&R.R/RR¬t escapes_codeR|RvRRX(RRRB((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pytvisitExpression±s "cCsc|io5|iƒp|iidƒn|iidƒn!|i|ƒ|ii|iƒdS(NR‹(tisendt get_childrenRRXR&RzR|(RR((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pytvisitControlLine¿s    cCs.|i|ƒ|iidt|iƒƒdS(Ns__M_writer(%s)(RzRRXRŽtcontent(RR((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyt visitTextÈs c Cs˜t|iiƒdj}|o|iiddƒnx|iD]}|i|ƒq@W|o6|iiddd|i|iidtƒdƒndS(Nis#__M_writer = context._push_writer()stry:sfinally:s6__M_buf, __M_writer = context._pop_buffer_and_writer()s__M_writer(%s)s__M_buf.getvalue()( R-R.R/RRqRQRRR¬R R&(RRR;Rg((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyt visitTextTagÌs$     cCs®|ip |i|ƒ|ii|iƒ|i oqt|iiƒdjoX|ii dƒ|ii ddi g}|i ƒD]}|t |ƒq~ƒƒqªndS(Nis0__M_locals_builtin_stored = __M_locals_builtin()s__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]))Rm( RHRzRR{R|R*R-R?RtRXRrRURŽ(RRR=Ry((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRJás  $ cCsj|i|ƒ|iidƒ}|o%|iid|id|fƒn|iid|idƒdS(NR/s5runtime._include_file(context, %s, _template_uri, %s)R}s1runtime._include_file(context, %s, _template_uri)(RzR1R2RRXR~(RRR/((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pytvisitIncludeTagòs   cCsdS(N((RR((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRFþscCsdS(N((RR((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyR‚scCs•|io|iid|iƒnm|idtƒ}|dg7}|iid|iƒ|iid|idi|ƒfƒ|iidƒdS(Ns%s()R¦s **pageargssOif 'parent' not in context._data or not hasattr(context._data['parent'], '%s'):scontext['self'].%s(%s)Rms (R4RRXR+R,R Rr(RRR©((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRƒs    &cCs|i|ƒdS(N(t visitCallTag(RR((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pytvisitCallNamespaceTagsc sïˆiidƒdg‰ˆii|dtƒ‰ˆi|dtƒ‰ˆidƒˆiiˆƒdt f‡‡‡‡fd†ƒY}|ƒ}x|i D]}|i |ƒq›Wˆii ƒ|i iƒ}ˆiiddi|ƒƒt}|oˆiid d ƒnˆiˆƒˆiiˆƒx|i D]}|i ˆƒq6Wˆii ƒˆi||ttd tƒˆiidd diˆƒdƒˆiid dd ƒˆi|ƒˆiidˆig|itƒdddƒdS(Nsdef ccall(caller):tbodyR„tcallert DefVisitorcs2eZd„Zd„Z‡‡‡‡fd†ZRS(cSs|i|ƒdS(N(R(RBR((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyR‚#scSs|i|ƒdS(N(R(RBR((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRƒ&scs\ˆi|ˆdtƒ|ipˆi|iƒn|iˆijoˆi|i=ndS(NR„(R‡R R4RAR+R“(RBR(tbody_identifiersRRˆtcallable_identifiers(s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyR)s  (RRR‚RƒR((RÝRRˆRÞ(s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRÜ"s  s def body(%s):Rmscontext._push_buffer()stry:R­s return [%s]s+caller = context.caller_stack._get_caller()s_context.caller_stack.nextcaller = runtime.Namespace('caller', context, callables=ccall(caller))s__M_writer(%s)sfinally:s&context.caller_stack.nextcaller = None(RRXR?R\RvR t add_declaredR'RARPRQRRR«R7R,RrRqRuRwR&RzR¬t expression(RRRÜRRgtbodyargsR((RÝRRˆRÞs2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRØsP  %            N( RRt__doc__RtpropertyR?R5R9RbRdRcR R&RuRzRœR‡RvRwRxR¬RÐRÓRÕRÖRJR×RFR‚RƒRÙRØ(((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyR Ks4 . ^ .  Vp   % 3: #       RVcBs¶eZdZdded„Zd„Zed„ƒZd„Z d„Z d„Z d„Z d„Z d „Zd „Zd „Zd „Zd „Zd„Zd„Zd„Zd„ZRS(sCtracks the status of identifier names as template code is rendered.cCsZ|dj oÈt|tiƒotƒ|_tiƒ|_qðt|iƒi g}|i i ƒD]}||i qb~ƒi |i ƒi |iƒ|_|o|ii |iƒ|_nti|i|_ntƒ|_tiƒ|_tƒ|_tƒ|_ tƒ|_tƒ|_tiƒ|_ ||_|dj o|i|ƒndS(N(R&RRt NamespaceTagRSRWRt SetLikeDictR]RTR“R`R:R•RsR’RtRRR(RRtparentR„R=RŸ((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRbs*  0        cKst|||S(sXcreate a new Identifiers for a new Node, with this Identifiers as the parent.(RV(RRR8((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyR\™scCst|ii|iƒiƒƒS(N(RSR]RTR“R`(R((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyR<Ÿsc Cs†dt|iƒt|iƒt|iƒg}|iiƒD]}||iq;~g}|iiƒD]}||iqe~|ifS(NsrIdentifiers(declared=%r, locally_declared=%r, undeclared=%r, topleveldefs=%r, closuredefs=%r, argumentdeclared=%r)( tlistRWR•R’R]R`R:R“Rs(RR=RŸR¢((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyt__repr__£s   **cCsxQ|iƒD]C}|djo0||ii|iƒjo|ii|ƒq q Wx$|iƒD]}|ii|ƒqaWdS(squpdate the state of this Identifiers with the undeclared and declared identifiers of the given node.R#N(R¹RWRTR•R’R^RU(RRR£((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pytcheck_declared®s ) cCs8|ii|ƒ||ijo|ii|ƒndS(N(RWR^R’tremove(RR£((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyR߸scCs|i|ƒdS(N(Ré(RR((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRнscCs|i|ƒdS(N(Ré(RR((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRÓÀscCs:|ip,|i|ƒ|ii|iƒƒ|_ndS(N(RHRéRtRTRU(RR((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRJÃs  cCs9|i|jo%x"|iD]}|i|ƒqWndS(N(RRQRR(RRRg((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRFÈs cCsq|i|iƒ}|||i<|dj oA||j o4|ip |io tid|i|i‚ndS(Ns<%%def or %%block named '%s' already exists in this template.(R2R+R&R3RR…R†(Rt collectionRtexisting((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyt_check_name_existsÐs   cCs |iƒo"|i o|i|i|ƒn(||ij o|i|i|ƒnxQ|iƒD]C}|djo0||ii|i ƒjo|i i |ƒqcqcW||ijoLx$|i ƒD]}|i i |ƒqÇWx"|iD]}|i|ƒqëWndS(NR#(RR4RíR]RR“R¹RWRTR•R’R^RURsRQRR(RRR£Rg((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyR‚Ûs )  cCsJ||ij o“|i oˆt|itiƒo,tid|i|iif|i‚q£t|iti ti fƒo#tid|if|i‚q£n|ip*|i |i |ƒ|i i|iƒn(||ij o|i |i|ƒnx$|iƒD]}|ii|ƒq Wx|iD]}|i|ƒq/WdS(Ns/Named block '%s' not allowed inside of def '%s's3Named block '%s' not allowed inside of <%%call> tag(RR4RRR(RR…R:R†tCallTagtCallNamespaceTagRíR]R’R^R+R“RURsRQRR(RRR£Rg((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRƒìs* #   cCs|i|ƒdS(N(Ré(RR((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyR×scCs8x$|iƒD]}|ii|ƒq W|i|ƒdS(N(RURsR^Ré(RRR£((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRGs cCs|i|ƒdS(N(RØ(RR((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRÙ scCs||ijo xQ|iƒD]C}|djo0||ii|iƒjo|ii|ƒqqWx$|iƒD]}|ii|ƒqqWxv|i D]}|i |ƒq•WnUxQ|iƒD]C}|djo0||ii|iƒjo|ii|ƒq½q½WdS(NR#( RR¹RWRTR•R’R^RURsRQRR(RRR£Rg((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRØs )   )N(RRRâR&R RR\RãR<RèRéRßRÐRÓRJRFRíR‚RƒR×RGRÙRØ(((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyRV_s$7           (RâRZRšt mako.pygenRtmakoRRRRRRYR&RvR RRPR R RV(((s2/usr/lib/python2.6/vendor-packages/mako/codegen.pyts&  ( ÿÿÿ