ó ÈÏRc @sKdZddlmZddlmZmZddlmZmZm Z m Z m Z m Z m Z ddlmZmZmZddlmZmZmZmZmZmZmZmZddd d d d d ddddddg ZeZd„ZeƒZd„Z d„Z!d(d(d(d(d„Z#defd„ƒYZ$defd„ƒYZ%y!ddl&m'Z'e'j(e%ƒWne)k r‚nXdefd„ƒYZ*defd„ƒYZ+edefd „ƒYƒZ,d efd!„ƒYZ-ed"efd#„ƒYƒZ.ed$e.fd%„ƒYƒZ/ed&e.fd'„ƒYƒZ0e.`1e/`1e0`1d(S()s} jinja2.runtime ~~~~~~~~~~~~~~ Runtime helpers. :copyright: (c) 2010 by the Jinja Team. :license: BSD. iÿÿÿÿ(tchain(t EvalContextt_context_function_types(tMarkupt soft_unicodetescapetmissingtconcatt internalcodetobject_type_repr(tUndefinedErrortTemplateRuntimeErrortTemplateNotFound(tnexttimapt text_typet iteritemstimplements_iteratortimplements_to_stringt string_typestPY2t LoopContexttTemplateReferencetMacroRR RRRt markup_joint unicode_joint to_stringtidentityR cCs|S(N((tx((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyt scCshg}tt|ƒ}xF|D]>}|j|ƒt|dƒrtdƒjt||ƒƒSqWt|ƒS(s@Concatenation that escapes if necessary and converts to unicode.t__html__u(RRtappendthasattrRtjoinRR(tseqtbuftiteratortarg((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyR%s   cCsttt|ƒƒS(s4Simple args to unicode conversion and concatenation.(RRR(R"((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyR0sc Cs´|dkri}n|r$|}nt|p0d|}|r¡|rTt|ƒ}nxJt|ƒD]9\}} |d dkra| tk ra| ||d(t __class__t__name__R5R:(R6((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyt__repr__Ss (R=t __module__t__doc__R8R;R>(((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyRIs  R)cBsàeZdZdZd „Zd „Zdd „Zd „Zd „Z d„Z e d„ƒZ dd„Z d„ZedƒZedƒZedƒZerÀedƒZedƒZedƒZn[d„Zd„Zd„ZRS(sïThe template context holds the variables of a template. It stores the values passed to the template and also the names the template exports. Creating instances is neither supported nor useful as it's created automatically at various stages of the template evaluation and should not be created by hand. The context is immutable. Modifications on :attr:`parent` **must not** happen and modifications on :attr:`vars` are allowed from generated template code only. Template filters and global functions marked as :func:`contextfunction`\s get the active context passed as first argument and are allowed to access the context read-only. The template context supports read only dict operations (`get`, `keys`, `values`, `items`, `iterkeys`, `itervalues`, `iteritems`, `__getitem__`, `__contains__`). Additionally there is a :meth:`resolve` method that doesn't fail with a `KeyError` but returns an :class:`Undefined` object for missing variables. R1R-R*teval_ctxt exported_varsR:R,t __weakref__cCsh||_i|_||_t|j|ƒ|_tƒ|_||_td„t |ƒDƒƒ|_ dS(Ncss$|]\}}||gfVqdS(N((t.0tktv((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pys {s( R1R-R*RRAtsetRBR:R(RR,(R6R*R1R:R,((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyR8ps     cCsjy,|j|}|j|ƒd}||Wn(tk rV|jjd|ddƒSXt||||ƒS(sRender a parent block.is#there is no parent block called %r.R:tsuper(R,tindext LookupErrorR*t undefinedR9(R6R:tcurrentR,RI((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyRH}s    cCs%y ||SWntk r |SXdS(sfReturns an item from the template context, if it doesn't exist `default` is returned. N(tKeyError(R6R2tdefault((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pytget‰s  cCsG||jkr|j|S||jkr4|j|S|jjd|ƒS(sŽLooks up a variable like `__getitem__` or `get` but returns an :class:`Undefined` object with the name of the name looked up. R:(R-R1R*RK(R6R2((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pytresolve’s   cst‡fd†ˆjDƒƒS(s+Get a new dict with the exported variables.c3s"|]}|ˆj|fVqdS(N(R-(RDRE(R6(s2/usr/lib/python2.7/site-packages/jinja2/runtime.pys žs(R(RB(R6((R6s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyt get_exportedœscCst|j|jS(s`Return a copy of the complete context as dict including the exported variables. (R(R1R-(R6((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pytget_all scOsít}|j}x'dD]}t||ƒr|}PqqWt|tƒr·t|ddƒrj|f|}q·t|ddƒr|jf|}q·t|ddƒr·|jf|}q·ny|||ŽSWntk rè|jj dƒSXdS(sðCall the callable with the arguments and keyword arguments provided but inject the active context or environment as first argument if the callable is a :func:`contextfunction` or :func:`environmentfunction`. tcontextfunctiontevalcontextfunctiontenvironmentfunctionisGvalue was undefined because a callable raised a StopIteration exceptionN(RSRTRU( tTruet__call__R t isinstanceRtgetattrRAR*t StopIterationRK(t_Context__selft _Context__objtargstkwargst__traceback_hide__tfntfn_type((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pytcall¦s&   cCsmt|j|ji|jtd|ƒ}|jj|jƒ|j|_|j jd„t |j ƒDƒƒ|S(s5Internal helper function to create a derived context.css'|]\}}|t|ƒfVqdS(N(tlist(RDRERF((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pys ÍsN( R4R*R:R1RVR'R-tupdateRAR,R(R6R0R7((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pytderivedÇs  #cs1‡fd†}ttˆƒj|_ˆ|_|S(Ncst|jƒˆƒƒS(N(RYRR(R6(tmeth(s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyRÑs(RYR(R@R=(Rftproxy((Rfs2/usr/lib/python2.7/site-packages/jinja2/runtime.pyt_allÐs tkeystvaluestitemstiterkeyst itervaluesRcCs||jkp||jkS(N(R-R1(R6R:((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyt __contains__áscCs1|j|ƒ}t|tƒr-t|ƒ‚n|S(sTLookup a variable or raise `KeyError` if the variable is undefined. (RPRXt UndefinedRM(R6R2titem((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyR;äscCs&d|jjt|jƒƒ|jfS(Ns <%s %s of %r>(R<R=treprRRR:(R6((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyR>ís (sparentsvarss environmentseval_ctxs exported_varssnamesblockss __weakref__N(R=R?R@t __slots__R8RHR'RORPRQRRRRbReRhRiRjRkRRlRmRRnR;R>(((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyR)Zs.  !        (tMappingR9cBs5eZdZd„Zed„ƒZed„ƒZRS(s"One block on a template reference.cCs(||_||_||_||_dS(N(R:t_contextt_stackt_depth(R6R:R7tstacktdepth((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyR8s   cCs_|jdt|jƒkr<|jjjd|jddƒSt|j|j|j|jdƒS(sSuper the block.is#there is no parent block called %r.R:RH(RvtlenRuRtR*RKR:R9(R6((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyRHs  cCsAt|j|j|jƒƒ}|jjjr=t|ƒ}n|S(N(RRuRvRtRAt autoescapeR(R6trv((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyRWs(R=R?R@R8tpropertyRHRRW(((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyR9ýs  cBsËeZdZddd„Zd„Zed„ƒZed„ƒZed„ƒZ ed„ƒZ ed„ƒZ ed „ƒZ d „Z d „Zd „Zed „ƒZeZ[ed„ƒZd„ZRS(s%A loop context for dynamic iteration.icCsst|ƒ|_||_|jƒ|_d|_||_yt|ƒ|_Wn t t fk rnd|_nXdS(Niÿÿÿÿ( titert _iteratort_recurset _safe_nextt_aftertindex0tdepth0Ryt_lengtht TypeErrortAttributeErrorR'(R6titerabletrecurseRƒ((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyR8s   cGs*|stdƒ‚n||jt|ƒS(s7Cycles among the arguments with the current loop index.sno items for cycling given(R…R‚Ry(R6R]((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pytcycle+scCs |jdkS(Ni(R‚(R((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyR1scCs |jtkS(N(Rt_last_iteration(R((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyR2scCs |jdS(Ni(R‚(R((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyR3scCs|j|jS(N(tlengthR‚(R((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyR4scCs|j|jS(N(R‹RI(R((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyR5scCs |jdS(Ni(Rƒ(R((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyR6scCs|jS(N(R‹(R6((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyt__len__8scCs t|ƒS(N(tLoopContextIterator(R6((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyt__iter__;scCs*yt|jƒSWntk r%tSXdS(N(R R~RZRŠ(R6((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyR€>s cCs;|jdkrtdƒ‚n|j||j|jdƒS(NsMTried to call non recursive loop. Maybe you forgot the 'recursive' modifier.i(RR'R…Rƒ(R6R‡((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pytloopDscCsQ|jdkrJt|jƒ}t|ƒ|_t|ƒ|jd|_n|jS(Ni(R„R'ttupleR~R}RyR‚(R6R‡((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyR‹Ps cCsd|jj|j|jfS(Ns <%s %r/%r>(R<R=RIR‹(R6((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyR>\s N(R=R?R@R'R8R‰R|tfirsttlastRItrevindext revindex0RxRŒRŽR€RRRWR‹R>(((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyRs"      RcBs/eZdZdZd„Zd„Zd„ZRS(s The iterator for a loop context.R7cCs ||_dS(N(R7(R6R7((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyR8iscCs|S(N((R6((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyRŽlscCsU|j}|jd7_|jtkr3tƒ‚n|j}|jƒ|_||fS(Ni(R7R‚RRŠRZR€(R6tctxt next_elem((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyt__next__os   (scontext(R=R?R@RrR8RŽR—(((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyRds   cBs/eZdZd„Zed„ƒZd„ZRS(sWraps a macro function.c Cs[||_||_t|ƒ|_||_||_||_||_||_||_ dS(N( t _environmentt_funcRyt_argument_countR:t argumentstdefaultst catch_kwargst catch_varargstcaller( R6R*tfuncR:R›RœRRžRŸ((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyR8|s       c OsÛt||j ƒ}t|ƒ}||jkrÛxªt|jt|ƒƒD]Œ\}}y|j|ƒ}Wn]tk rÆy|j||j|}WqÇtk rÂ|j j d|d|ƒ}qÇXnX|j |ƒqHWn|j r-|jddƒ}|dkr|j j dddƒ}n|j |ƒn|jrF|j |ƒn.|rttd|jtt|ƒƒfƒ‚n|jr”|j ||jƒn:t|ƒ|jkrÎtd|jt|jƒfƒ‚n|j|ŒS(Nsparameter %r was not providedR:RŸsNo caller defineds%macro %r takes no keyword argument %rs+macro %r takes not more than %d argument(s)(RcRšRyt enumerateR›tpopRMRœt IndexErrorR˜RKRRŸR'RR…R:R R}RžR™( R6R]R^R›tofftidxR:R3RŸ((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyRWˆs< &       " cCs2d|jj|jdkr!dp-t|jƒfS(Ns<%s %s>t anonymous(R<R=R:R'Rq(R6((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyR>²s (R=R?R@R8RRWR>(((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyRys *RocBsõeZdZdZdeded„Zed„ƒZ ed„ƒZ e Z Z Z ZZZZZZZZZZZZZZZZZZZ Z!Z"Z#d„Z$d „Z%d „Z&d „Z'd „Z(d „Z)d„Z*d„Z+RS(sVThe default undefined type. This undefined type can be printed and iterated over, but every other access will raise an :exc:`UndefinedError`: >>> foo = Undefined(name='foo') >>> str(foo) '' >>> not foo True >>> foo + 42 Traceback (most recent call last): ... UndefinedError: 'foo' is undefined t_undefined_hintt_undefined_objt_undefined_namet_undefined_exceptioncCs(||_||_||_||_dS(N(R§R¨R©Rª(R6thinttobjR:texc((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyR8Ës   cOsš|jdkr~|jtkr.d|j}q‡t|jtƒs_dt|jƒ|jf}q‡dt|jƒ|jf}n |j}|j|ƒ‚dS(siRegular callback function for undefined objects that raises an `UndefinedError` on call. s%r is undefineds%s has no element %rs%r has no attribute %rN( R§R'R¨RR©RXRR Rª(R6R]R^R«((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyt_fail_with_undefined_errorÑs   cCs)|d dkrt|ƒ‚n|jƒS(Nit__(R†R®(R6R:((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyt __getattr__çscCst|ƒt|ƒkS(N(ttype(R6tother((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyt__eq__ôscCs|j|ƒ S(N(R³(R6R²((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyt__ne__÷scCstt|ƒƒS(N(tidR±(R6((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyt__hash__úscCsdS(Nu((R6((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyt__str__ýscCsdS(Ni((R6((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyRŒsccsdS(N((R6((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyRŽscCstS(N(tFalse(R6((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyt __nonzero__scCsdS(NRo((R6((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyR> s(s_undefined_hints_undefined_objs_undefined_names_undefined_exceptionN(,R=R?R@RrR'RR R8RR®R°t__add__t__radd__t__mul__t__rmul__t__div__t__rdiv__t __truediv__t __rtruediv__t __floordiv__t __rfloordiv__t__mod__t__rmod__t__pos__t__neg__RWR;t__lt__t__le__t__gt__t__ge__t__int__t __float__t __complex__t__pow__t__rpow__R³R´R¶R·RŒRŽR¹R>(((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyRo¹s f       tDebugUndefinedcBseZdZdZd„ZRS(sAn undefined that returns the debug info when printed. >>> foo = DebugUndefined(name='foo') >>> str(foo) '{{ foo }}' >>> not foo True >>> foo + 42 Traceback (most recent call last): ... UndefinedError: 'foo' is undefined cCsN|jdkrC|jtkr)d|jSdt|jƒ|jfSd|jS(Nu{{ %s }}s{{ no such element: %s[%r] }}u!{{ undefined value printed: %s }}(R§R'R¨RR©R (R6((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyR·s   ((R=R?R@RrR·(((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyRÑs tStrictUndefinedcBs9eZdZdZejZZZZ Z Z Z Z RS(s=An undefined that barks on print and iteration as well as boolean tests and all kinds of comparisons. In other words: you can do nothing with it except checking if it's defined using the `defined` test. >>> foo = StrictUndefined(name='foo') >>> str(foo) Traceback (most recent call last): ... UndefinedError: 'foo' is undefined >>> not foo Traceback (most recent call last): ... UndefinedError: 'foo' is undefined >>> foo + 42 Traceback (most recent call last): ... UndefinedError: 'foo' is undefined ((R=R?R@RrRoR®RŽR·RŒR¹R³R´t__bool__R¶(((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyRÒ)sN(2R@t itertoolsRt jinja2.nodesRRt jinja2.utilsRRRRRRR tjinja2.exceptionsR R R tjinja2._compatR RRRRRRRt__all__RRtobjectRŠRRR'R4RR)t collectionsRstregistert ImportErrorR9RRRRoRÑRÒRr(((s2/usr/lib/python2.7/site-packages/jinja2/runtime.pyt sF4:       œ L@T