From 3ef20437d9454fab3d13ac313875fef7d093e8fe Mon Sep 17 00:00:00 2001 From: Armin Ronacher Date: Mon, 9 Jun 2008 18:27:19 +0200 Subject: [PATCH] updated documentation --HG-- branch : trunk --- Makefile | 7 +- docs/_static/darkmetal.png | Bin 0 -> 21366 bytes docs/_static/jinja.js | 26 ++++++++ docs/_static/style.css | 112 +++++++++++++++++++++----------- docs/_static/watermark.png | Bin 4530 -> 7629 bytes docs/_static/watermark_blur.png | Bin 5957 -> 7563 bytes docs/_templates/layout.html | 13 ++-- docs/faq.rst | 22 +++++-- docs/jinjaext.py | 23 ++++++- docs/templates.rst | 13 ++++ jinja2/utils.py | 8 ++- 11 files changed, 168 insertions(+), 56 deletions(-) create mode 100644 docs/_static/darkmetal.png create mode 100644 docs/_static/jinja.js diff --git a/Makefile b/Makefile index 5728fdb..6622bd1 100644 --- a/Makefile +++ b/Makefile @@ -14,8 +14,11 @@ test: test-coverage: @(cd tests; py.test -C $(TESTS)) -documentation: - @(cd docs; ./generate.py) +html-documentation: + @(cd docs; make html) + +pdf-documentation: + @(cd docs; make latex; cd _build/latex; make all-pdf) webpage: @(cd ../www; ./generate.py) diff --git a/docs/_static/darkmetal.png b/docs/_static/darkmetal.png new file mode 100644 index 0000000000000000000000000000000000000000..4000a94b648975db2e186a749c79dd924a1b3ed6 GIT binary patch literal 21366 zcmZ6z2RNJWAOB0KJzCTZYHu|oW(T!Li>h6F?^(OGDQXkMC}Pi0d(V)>9HjJh5N6-nuF;aB5M2ee4ecD-9JToV$Oo!mhG3>>6SZRU>a498&6kZ(N+5JbLU( zLLW7)mxPN1#KaVmgbz#)aBv>us3|?yf4_7LSvBB*r&ectC^u{IZg@fxxuG>-?XUPe z|C4zB$i`3J=MS65bo1K+>TerIlO@Z`yps`2shISH+*fc&>J z5;bS*auZc$Wo2_t&BkVCW@(Rxo<9d^aR*_oGbKtNltTbI4r0CvY~Vfni|@`t;= zW|!-iIXAh11??v{Zx?iXCKgQ1&4t%Pa-ciEcO~cS5$BzOp`qqx=H@5C=6}}PPqMPI zc6tua19}dF7Otum{+;0+vFk7PAiFT95a-1A?@%DnH;aFlcu3f$dZ}XCguS+& zu)F#DsD;_Ys;lcizpu`Qy!*T!Qp?fN(N!HD9_}y_eF+S?$A0%UG@mquG&3ygGz(`e z*KEDCwum-z10G~>XGW@f2U+h@;5q$-%U;)P{_YCMnvJg%DrNrm3MbFgV+oXfa(cRZ zd!Md6XvTP@Q_WXqn=g&-y{~VxAZ=f!R6OawMVL4Dj$RS|S`d)wJr2cf#&_^#iW z79Jqg2c}e9Q%QZ-9Lm{nz*6vEQ?RhGV1yUY0Y#B+2;YNYkCrM@f$zx|YK?q~t(*x5 zr)SYN<>|6r$LYTE*XEfjVkHM>2(k(K#y8!$Jh~8Co9@FPv03C*Wsq%T%FYr&Y*kei zS6J_Ge!t&fsx2CmdHK-V%Q{WhXgAK~im!T=ICklQjJsyWpt}+nvBt-oF z{ac!DeQ~k#xiUyp%8K5)gT-C&qhn;2=&)R0w)alZ+`ZkygFpN+JLK#Z^tvXkh-v0= zZQq`>huR`y3A+^txh{p4wWp`|y^+;#7rIpI|4($DoM1Rj4gJ`zEvzW=X~BAPNd>ZY z=02+z;tMOKI8pAb7?cD{07i|k&3zHKyl*6%$K^r_6v zuuM5_{TlQG+8CU!X^+WYNxWV%ZAx;*@MV;#W>nLAiSls%cInlbj@5+CB~h1GGnHkR zSto;e(w=eb1sMDAP@E&hDYWSbHP8)f)n{clE#`G^tLB_8fBkBO!NhtRUUBL$&zFNa z&c;)E8$^WEgy+AC7mTeW8M{#_3@3f|IgvB+wnzQ8Y<#1xl{UD=XK^J#2N{#8vh_cZ zs-0mVEc+Bun)T7$BJc;c6J`D*qrp;qo36#|(k)`v@=z~;@w+`@)9cFiPmXPscA_$F zQj~*!(%eAW1~(D>ukKzd8@2~MPmM4+&b8zt?(1xM^HW1)ci(Tg&+(fDpKR^Iq3zp4 zb%~WWFTy5cpls7GF8c5k>DrZgfgX`taq{+t>YuB+pwt4eukp#`5&z-Y4r1W?w>A|b zCb^IYPv?~={!X(!v#j%qJs=NA;TOnIeVN)Jr&vZdP<@_2E*dcN%ilE8lqesEfT*$i zX9!uki^k5WYWG7LF1;Op8^h7>;sbJ-D4FME41aDJn(_31qt*H*mfh%2_ywfH&x z-orE(`zFgt-?rc1>sOAq%?{(LPvx@<1EJqVe}dp=c&)jNZaOXsWfQ;6zDsdAh?R++ zxILjE-s!T@dlgm7?JfUpL&8&Jb#)bqxbhN}kz^#MJXo)RI?J*y%aG%!8Kzhst82E! zwpklntNv}-fmS=_hORhWLU2aNr)#S1qaZ4N?fdxgvFBB;KAr5ryd+ zaB*}_yor_?YuYv-<>5sz$GBFy?D1}Ju?^h{;u_mbmP2N5ZqVs74_^dKRCj^26l4-V zppzaxAbvdVtOr-A=^^$;fxb`k=|N5-Blb^D+*mTyt4+q78g9>46^HB?E6aF2HrKOB z5Ettxf zAsMoVngSXV69XR3qLHFE0l$;U)m*H2DUzKjC)70E+h=Hu_wpo?GgL4gIX~6z`84eB z%5|HX+adnmb}hswixd?Eo;Slh8U={=seLF}LXBA)$W#?TJU2iVaMTU3o0I~Iv=cAm zsFk!mvR2YUXB1`a*qUXTVV=S*b|c^(a6@ykJ|pVdQ{|uoxy^&nbY~CYQS7MD_BE;E z>tw@Wt2KG2^#!p*e5mSIu8%J?I~K{bK4#~F(ec7RM}(^wDq{ljuYErpU1 z5|I6_0DH!xDAfbbZtVRy_LI$Z6*qHjoAF&bLm@MY9^4o|s6(gwo%CVOhyvJ8UDGw?no;(?GKpeznE`A<2Izbiz={IBPsBSA?@P|c__CG=WdF|AjrjwZ>s zbl+*`I8B?Az7fCOb^aMZmFGG6?E@uc2V)QR-gb0!w87j?&SZ- zQ|#!mNtA5a(CK>5I|lnkA8SPsLsksR{4^`~1(f3L+qbe`H)!UP6At?O<%G^;Iz%mO zVghoq&FEP1m!bw6&8WSN!7GZ zCfZUi;?1d)A19a_t&6qDmEW!++|_DDO%MCs1g@s?S6-~Ad=p-n#sCc8{be9D&!|U} zDo-;@QpD>c+MN_|B%13B#5={mln4yG0;E8hhU>*T`KRmrG{*F1E@Ntn49dwA*Ev=WvZJ)w)yiO7#SO{mCU)d-XO*L#;?Az|S6x1X3){Wr2c?Euv?u9^W&9M1ciGL0DP0#C(>)7%*Q!lQC&k)lMgXsC!i(x<M+pxxEw~G5*rg6!MyKf4|Uwuz1OR*RLyK3 zFxubXRwmhOB4wGa7i~zQ&Ow|Om#Gi@O;@d{-wSsrw)W=B6J_#bA{kpa^Fhq?CP=9o zibeuqX?g>=#cf-RRD^Kx?Fa`*j*Due*W=UUqD>1mh68R9%6+9rnOBK810o4WP0b68 z^)8D%bv3k|<2x_~(}jzIyIcER+&aF2u)9B30%tW|I?=ZCqc8q|&gGLN?D=M%<(KKK z;Z@1|V~QZm*A*L&iMKns-7X%vrgxJChf{3EsFhwC$?Q#zFQfhT6N$DJBUr%B!x96G-Y0|KR zm_BRzoUeNJB9p`{-Nc%|ViVqG^E!WBb!Djp_UZ;+)-A=sJ|Ayyag+5{ut_#w^v+98 z#cIdF92*y^)+XuZK>=TzhIM3k?JLMw`wIxPMcCL~7XtG~3kXoV^t* z(w>@B%YKdx-k2%-Xr36IwK6)bvsvX)Z$04VQh%)3oLpQhs?LYh;yLd|tpeAdj99|% z9?#idPugpNHw(bwx7Y^s_4I7OHlS($sLybPb2V>-HU}vtK>t_veotf?t8(8KVXunVhepJ1;*hJNEJQX+G2pOExgB)|oi(Z13(4oy*T< z(jQ^xK|4@92QN^+A6_#Nc=GhK@^)eU!z0Y?~vzb5Vv1c%O zK~P@_j9x#c(5-Y+Gz<9bNbBsn10Kr}9aGu(HyMYutu6sTsQ}2{p!TCf8(3O|G7}#; zbR=x8+Sp}$0aleLrLgKNMp#PIoc^g<<1NVWv0A-vSry!T|6V$!k{1KwNrkca`o|PQ zTN|RlYLKeugO>`I`EO)S(m!m+S078ChHX8T=1)xxc5tPJBiW>kC}yrz0j7T^?rtaU ziu_qZ_OCJ^)n;GCqnf7Px%{!=AYRs~IJBc5OErHR4Nom@yVHHsYFuOR`SWMla3~p5 zfV_du>7tWB!Bn__8h={vNtL6&G@r)1k=Tf-NItjsZ47#2x0Pr@FROD034l#S+BwVl zM-*>)HwWDAr(Q7Ue~FQ_w+Dag*_KM0gEDZ@j&z6$fctFR^?YoCDNT#dsHJ&QNT(-w zQ9U@F%oPIk*|tQ1Z}68h+AMv{-v=Z@eQaVL|M}CNmcv7&VM?P5QmnT61BvPR8vAO^)8_b1BCfD~Vo;FmGCNP2@ut=q5$PW%DOfHX zsI6eAd;|7iKOf~(9JN@`f-VX6yv@JW(b17b)HXlq>FlijdvjQ~V;payDl+$51kv5u zY5M2ak8gAEb>E*2G)q6oIG?Eq4Q5&|1;<$r<4VnutsYL+lYiv2fjZAyWUxIo=}Ma! zBVt!myOCHlY?i^H3JVYcZ(pzfON=Z)s!{qapFDS^M3wD*Up|jseJ?p;^JZU^qFM_LLNEQi+mPr-hUHUCji3B8S(Vyek850Wrfu$PQ&ps753lH zfn&C#`>At7D1R2F-C59BTCc(jwv992^K-oF{wweCZ}y13-A`1ql6s4g@SEn6h4fIs)29rJme6&@F~v`NK3!tu-#z$55J5{df2~4K&}spH`k)l`Knr({fW* zelYF2+p+Puhw0pRtW=shHPyA_Nx%eb8>ugF`UVQ{2|v-)QHIK%CPn1t=7KpowV-3K zxL$&;KlqY)&qv6LKZMOS_7%!WzCWO&tDm^!(dkYH&e-xWoLm^$M5Ywh8B3ZJ>mf&3 zNZp)fIllLa*M20E*HN19M05RucqG48{F|WH8cPg)!l(Q#;XV_0ZULCH405Zs#z>Js z{Yw=fXscrGBV`GEXP@Tc^}HQ2nxp&PDfv0lncV}CTX0oqSI#@I87FBUu+#nlCRjLs~$ol=)=fCISaMs?!()jBSr#55PNx-XwboLyUHT3hy3 zHkfQkCqb-@&C7K8?dCJr#SSP*+MJk8@s_{!{%W0Q1qIc-=6Y5;fx&&tdcp8*muFFzg%+}+SYD&XMrT*Yv?8?vU0$PqyNm4 z7D)ZRz7B9q#IUD}RKQf1rLqV8F63;H5S~6GCwT3k&HUQDt7BPIqPMIvz_23qA^RUn z*+blF#~lnF1r1cAUMRl-EM- z!tQ{nEdb?IXd`j1%vhd0sGgiO9G1HVxe8a;{F{GW%@CL!M=E)ye~*QqqCGTp>q7wO zQD`+u!;*N;@ZcyL!ySt3E0d*vIVjuB%?JJK?FNd>haEsq8@`?lFD6Vd$)e`Yd%LYjGTPJ6!ht{-2jL7`_BAUF&jl&g(qrf zxY2k&mA=o`{#JGFO3Gkujy35aMC$Bad5nS#bqR#;X+7Sfw2$ZeZ6bzYp0YRhYSS>L zY-6y=9-Jqt=L{0N`oc{6Qfu|SxUdD4k-_@unVu})nbJQQuS`p?5e2`uIWseZiuNl9 zjq(a%r*~3FLP)7ntpG;^>I5P4U_W@yX#Si{-T`oXbLspQj61Ka9v&x@2SIZy2EZgv zohDZ4U8s0&8=+GzskF}1zBSnF;}eZESBEmdXw<0gN&mFWb!r9BTQ541=EU&5Thent ziPeGXHv$TBLbOQwqXY^<#|)K6+`08Kw~C zFJq9sd`c@IN^-*eB8N)3uUyL(dfLapbG-v5ey@^u_r`r^(?!apj#$Jf`~+v)4RkP! z(8OBO@t-=FC&1*HNMWBu%QRxeu;0@LOO;-fe@I(jzfyKF`?Qixg>%h#-udknjddxx z(!3p_Ks4*r%ZBR1S1`*x3a4WFOI{Ddc=>ETU6_7&sl9=KOZF2E;-3cD%3G6IWo&H? z#raZq9g^mNbd~aV8BcT2?>kFXdyeFaJ?bGgaJg+w(J&HHjoJ+CGMAT^KhAbY7T|sU zddC$_^Cl%?Zc_I7XL1os+u~d(;s9qLRFBB7O(^7s0+)~v!zR6mt^?1>*gt7JdoCSl zT(a{=>ZI2Nsh+bYsmUyceHd&H(NM?Ys2^N|JkqQjU8$zL-<# z#WWe*eA@XKZLw4gBQ0?0h{#!O2fiS!LH)qyuBLSH8JZzG_z^|+_^#p$TQ+-Ej3g&9 zI^zLaJO4`P+=c1`rtevt>`aN`NS{ww*i(NheIVY{%aOeINcS}t2)$eGd@fGI47l#H`DU5W{avF)u?INyUgK2!4c!u_o^UOajHW-bWB8T zgP@f2IeTFqXuRP9TA#?)Oo1NtlK`ofS}im>YY7TAB!f>P=~f@;j60&)hVQF7SH7lW zefrr&WT$r3W#Fa*KSy%))wugTf&AFj52>}E!@Y^B2bCdRBwL9Mu+|F*}|Q?+7c|4*7a|B|}Fz+i3z9?-T*4J3O#Dz;2K(GEfi zzdze0o@yg7$zp~NdyT10C?AkkySY(}r6Y`Qthx@cDtFJ*%L5ury)cAHAC*?ve=gu@ zA(ND@Db7DixDYI;$MK4fS@EKi5;!ItH-{4IsWKO-;Y9$%D4_3pLXiw8pHeE0kVXdU zf=zD!XBf}mU*tXr`Tg*L1}o)w(O_HN;kJ;Ai(QHGl#U0i^fRf;SCWnK*zQ$7axM|^ zqo#sisxoi(77Z$wlt}z|O+1a?!ud^trsz}Z<_Ad4skWJUzpSbkgT)IAnm%ctM<5|vMfnx>#1DMA%@%dmw2Y@1=zIo}pK3}*rZK6kV zd#W4g3EcUo7X8HZ8@{ti85)2fcNM3+uGHU34*t?4ay{1~>jlRl#@5TMWxD+r;`61* z+X!aYi@CZm#}?Nd0)>sQo_LQFDpJ zJ8U`%7FK4#4i*|ZBt4nBJGhdSa)z^mKHCpGu*Qp_H?lqkIBj;EMrW&+bdBT7&Tvu* zX<>E0#}VDx=Yz2{e@QD9*IYYQ#*rc;{!pA$azf6W+AOFI?se1fL#+6>+klqBJ;LJP zu5Y2`R?PvlcG-ICTp1DWeYi-g>YzFHg%uyoK^s2kWnwTN1=cdP2cEyOb22j+Ph!`z zs|jhFVO(?;WZVnB6#_IHyJB)z{z&)d=ElLjYB=o}Nfa(1?uE!VnzZs#0*8$fiM>gZ zw5>QxU2|7=s(|cVDvbyZz@o>J>6OIT&Vx4;y9}Ej>|_EyqYn@caZ6Dl2fej?CsiKb zD~}wmA0B2OH6BDq+wm}}NgiIEaE^Typ{=z0HL-AX_;OdxO%6{d#7%oR>s6(C_;fIv zY=8$=jU{<1>xl?QL<+OUMW7Bv#$y4|{pm%r7Og+QKjq}*yS7}`!XpCjwrN_g9}+@8 ziNyKYXK9b{S{;ge)VmM?$8s^G0pbYSJgfMW#OzCw`lZQ4TE!<~Pt0*)@k3}K4V z7c^O~EK;?eBs^&6lb^R8p#WJ2C%)PeUL#ih^*~n~_5JfkL&0+EcWsQb(BOrONYN)x z@ykC2`T2f;NY(fyRapV%ZXOEt$(K;sx)JRinLgMba0~&@Q?#9SgRz?vILmvmeY22B z^l3a!?0U$ZAbY9p2JdkwB|xx??4n=8plw`Q>vCkZ+S&&Bte;U4p-^LzUOVKcpDFSC zN64zH0c0<5R(2QQJ;7#z)DvOtbhCPsq^=Res;$U9nvn3P1+-yrKRD#k$w6Y&D5>1d zVFy!Br6kwL*2I$m_)xe0dN89D!U-j&s z**gVAX;^fl*#yyx?k8P4x_dSpFck}!@G}m-1P#k?#5yF(a&lm`4>|Sxs~>cI!5AoK z!x}ZAO*az1NkGL|!mf2pMn>mbI+&UeZKd_xC?+E363y(!fSYoAgb3_VbW?iPNP2}m zvLb&YkE|LaOmH`87?36_q{A-IV7OcOCyBkVT{Jz&&r3UK(S`nKG@<|En;GoQ$jwO_ zJco8*sT+pKEDHK*>CtUVQFcsIa{4iXy=M&B-tpONCpI`~^YM5jCd>jfx;K&ol>z8e z1HyC!9}@20vwajR9JL3G*`A-SI9%VbXm4u+%M#ZUOY({W*%A7tW>JOOP8@%#jYhTg ze;zN}S^raw*`k1E`n@yxh1N{Xd}8GKwEXA!Mp`R^9p{{N^%>T??fEHJgSd0aE^J?= zBLuzuc=+`w&KS&!liRGPxIcq7p4$&v_>CF+J|+)nw-lKtoF=b>H*H`iwg1?U{ek&8 z#fplPra3?3$-R`yreJp{v!Ai($RR;{`$pBM&QF^k>g>Ng90&!Xe3Qn_?iUX9?dW5RE>vWn$P09}KLJ?qsWwuGM~56qY%AKH^z&ud#>EXt zB0Ik@l@6VmEu>GEQV;un4?OagX-M0@gBiRlMCcuhd-P5;=+?Zk*0r_>oA}rm5GFGb zUM-WYLii?Y_z`+IdBF*^cl0fwraHfR!Pz%1kP@Joi?q{*P1&5oii!^>trcu`o<+AS z1DAx=b{^5iF4*ozr&tcpFZue}Bwb4yRwOgtvuKrzRfB1CD2>AeW!=p7lyZYVT($2GRb0 zV;Gcm<6BHN;-Hui})KvU7w)JwG5(9GAWm>^w%pNT*>)h zmk43R%W)6orf4LyQ>tp?@|CA{x!so_YU^WgSCVu|Nivu(u81pr0k87;Bm3LKB8FsU z6|18(px{3)cVjm2UdsWPTGe)trRki!UQ(kKKOomuj*;PKA_+T~2D zRmzeXWtDG!!23W+LDKxt}^|kx@q-3A_ zGSRxY z445@9EQbC`@G=szSWwXDM$(Y+j)g1oNjxW5+SMrO;HFJ+Okc)$pBe2 zWzHqiP#V!eHw(S(#!^k}7u*chKaaF*^vW1lD1wv#n#;$2-22HTW>nnz>pR(kW3Gvh zMH_`!X*+(^HZN)injmVICvyTu-(-U;aT}}3{0}6ZxDYG-{nv8fgV1S-fnU^Kk_<8! zdsapYRhgwfN9+m)G-o%}Xi{GtF#Zf1&R}t(r4a)r+^Gv)XT(7c05 z2vvcYe`_%lcig8fHgX25&3~%9!qAXSDt*Ahso}N`nKtp3MqO3KED*$`CLa*w=^l^p zX~cYpFxAK(yfsJ9TASsjzc)d{4wHA{G%_&$1OEj+<{gkzOvNS*0T1Q@FRfU5XNmhV zISlfN1ee2xdkZn=yoGQ~4V;OEp$?>PIU`-FLy zi&1MwzWeW^HAN3LZ+@Tlyt90w<~}3EDIHV|G6Y42K+E+j8iu5XSfpvV;JiO=mq9}9 zTQ*5(wR}F?lj#0b=fZmkeQR_F3ME4N=M4AIWxHd_(ZEiO?F}YHIcZwza~DAceaT;} z(vX~@xZA#(GG{hm2<1*U6%QGuZmz96beG23&|PHdi;b%pY@dWg&YAOBfb)=R-RKjn zdQ&%R9~|OF#=*5+&b+YbAfv!FH8hhT+Y{#{GcK;T>U(K__SmJycH-H>1M6UtbF|_> z9~S?VS5WxM^9SpTpFPkEs-HLs=7}KyYKmlCZDX;G5u1z`#Lm7*rYw9?MVBN*ZQ2|W zxwt%>6eUtI!zrIETP^H{cNVQDxUWII0m!XxdCc7p69Chq3gr%jN-Zc!#j)-l4F zf|xMxE_qXCE)6JHmaBkrQi@MN^r6`&uuKl5jm$2})=ee&)#!#^rzIPyZ6##w17&N9 zj$aOsgabD|RoKZm6)+Y)#}y zQ!0M>!`QZAD3MK>{TA22-_zI#+w|o<%lcKMrjlXzSi9rNVAHGdcD~Yvc_!^w>7IP# z5)4#c3oXehBwz7AeH@R}a%5bNNPXZYdQDF(gF1%(iKxSPnb({oT2mirbv?R72lRJmUq;yp8MF6mQJ-0|ZLD z%DHjNPVwDyrww=x?B2AmnenHphsvui8uz{&P3a0G@9wP$kIW_ddtZt@9s7>2xA@%^)4yubyc4!!4Za6QfHW69?WWeM5WT zTN5`sGa~qj`uWDV*CVDrWsJC8q*Dm%NCMvSM#nWEcth(ln}0B^zwghVKQ8CTE)s1i zVvubZ6P|mZe?C9i>aQTyIk0JhmuY{ z;_GD5g%W8MlB%SKgw^k>DB^RjH_U{*$~UsNg4_q(cf3KMWy{O*OqUjCI1u?zlMB+F}NnM=$|*p82}QD z7dq45&HGC$sLRW!6I< zk>*W}FygEO*+$v(S&#Y)u|*HkWmoA3vwn4MsC)JphT?T{VV9G@pBkA{qw_zU1+f2`2^HB8^BSB46EOZ{*3R=of!<3J4=0g2+zl(n+CN#Uw zrVO+1vVT*lH_|7zoT3z;D1A!f;v>;010?3|wxi&NE|2RuIU+@2i zv;6A*Kh6>ek{D1tX_B^$k*Aoa7t2|jXr2LDQkFarn{uPBo>Kxhm;+l3AUiV|m|&XWg8RGM}#ms*80gQgb; zvAm^t&7jQ3G&F2k3%X$LAD9QYiP7)u!Z~oa-kh@m90y zc1n8cLt_`388$)OWd=uZ>)Y$06u!;Xc7c%Q|8MAW%2By_Bp%P}h0kL#?|E?wz<*=D z9DjykOZuGE_0AQ!G#oPCK8!d|w4rofLJ*%TGenr!J-lRr4qJ;86;t974NSg{h~F8o zBOZCRobC)C&V9PhdvQ9}H1YxO{Kb*neH4iPf5i)q!D^ln4Hm2F%K`i z;prum@&edR8PETiox7l*;O#$Qa;MmS`Yma5yPoy>1xtRVKE}xL$(=1Z*j6TbfSb;) zJQx8I84o>wgDs0lh=8Dzn(Eo7W>UnVM_V=w7%X$iTsHkG-ig|+ofye!;}uc9QV;9b z7H}J1JzJ82F1;A3Jx^U&5WT^dc=;6gWu=pS@ne>=p9`p7bx=KMmLSjbJ0qbi;6-C= z+qaZC=F7g%nw$vE=}zkNQ^)K+GZ3!bw`JLxSE;fUJQL0+l%*cJG?IEg#RhiZZ> zd_ORM9DH8$je#&cVtIKPEZe%173O7Zh@3Z0M-tYiMM3wuqe6&rrqSGC zHz0>A)rvIl+)7M>Ezq%2EvUm$Dd5ZNVVN^dkO4qswnh6T?6G*?Oa+#D>*&apJ;VsR zi{h%iRryMoQQN+%Wfh^E^Cf-V40W$QuntMH9qD*L@1laSNI-bbu;dr0h*gr3o;Quo zlriBc`(^*91U@fx{U!SCF;kI4$+&NWC9gf;_7vlfbx6cZ#N&9>zMwk$y#{NyQiQ4=~@7ve_h*&+J<~{w=G6`ua7cd`Z=YAycncO|6i=7+2S8*13>-iqI#IAVtzW$ z=Lq&kX^A=*bgcB>yiLeME;EK`uEF5mL`&QE*s7j`A3r>=jrb{SmQoTo#BCv%+w&c8Tb*{>^JG_SbhVD-Pzu09v z$%hn4yJgoGSyb6J^lE7|YtQ_m(X$&?86A0gbLJpVp%I`IQ>qnIt!)2O*So8ZT7WI^ zA|^f}_{J(0F$nn;$Km;h*LSlXMD z+d8x0Z$%FlXNRr1DznHPYie2_!AiN(SGtD^K3YPJhS2-=_?Ek2qv?mqp1lS?gCA29 z226a?D<__I{M&CS6kw6ZPeD7vc~B)=Ok|!Q-BjQ9#X98JE_tOWh?1}oW6x=LSfY9w zgy{pP8PS=a9Kfl>T@Fbj7u1SX%3SG~q8@)8&$ZwMJLy>@#xjLRu>^r>OAZpu-T@n;U7G-g zmTaDDrs^7rMBnatCle6El8*NOM_~5k8rvuuy9#gGZxx!HyZyvD&Gp1vRWr}{z{%D& z%#Ew?2%w486JSwv#ipwW-gdMw}OZ37I0+Kh27EhBM?3Ls3`IS#Ldn)=O4gH*qM{bEEtIZ4Euq8x-TcHN1)zve-;abn7xDeb^V_9$+lbtNs5Of8C3PGgV@Ey}g5-Xunurq|b(DrV^B`g6z3yoFK( zTDVo)@g!1H<5-(Nx6OFI7)>;!mz=4OMWi(x#=oOvkky|dzD|DQQ$sP~EF_LZH*#GG zoB*ue_4T443Xg-Fn$S!w@dcOHQ@O`uhaXCZt zqDOKcy?!8+GJI`A%`tHSXC^I%tCMavi&%FT3;bAv|5)f1zYjE2B+f|RRvArSCU&!8 z{d-kTS&*nQJQqw$L8LtHDwM;yk;uB?%S{1FkM<356U&gPUO2=SRQ>(=A9P@M$Ry=W zDn3--8M_(eMxg(}HZJn-jlPp8zNE8<_SgMLHhdutTwy_HG$wsOE*U`Vtr*>H5XAC- zWUem?g`Z{>@Cbtq86+2#c!LVGmrN<^=dM)725!vZto6t3>RIcL2tWC>dFLRR%UD)w z?*sjxDZKi9al~yanG%1Qm?k0Nn;VxYvx_!;#uy2OvYl&S%7M`W15)Sk!xg{xl|DPX z&Pt8cOO^Lc%Rcvi^u6yV7m>IRlO~}RGCb(l`uti^tpJw7=lLqqx`MWc7uw!;?_)q62xiWK`6i>SWLZ9w_VS5v{h!6o;v`sYn!6V`YSnDZ+#EGD}5 z;oeikyv{=N%;q>#FYRePLpUj_$~O@*2HEvD_C3d8m(o z5HqGG+szF7d>JikN!K_$huddAk4H0c=a}vvv-r$uHom$PDBnoJf8=E&X^-B7Yc=e8%GWN>Af9o*p25+k+_or~ z?!}q1pHrvA4I)(!sL93pT!F*+ce*9hg5?}VrnAbQ?~no(0UT`Sflr}|@#SGsG(02A zJoALaMs&Id-1xKLGYA<6wAVUznV(9a9)%@4W7U)F&_6eqm2DMzL`%fa(jJn2KKgis z`C;4hypjUUPqXZdAZ=BHXW13Dix(>FAe{v zMyWhJ56U$>-bHODPuUx$G}JfFb9|UcU^ZQ21jCb?MOna;(=H1Fz@lO>Yn! zuv_+CyHh9C)vzwvZrHF8Rka*_nWB^5x@xn$LVtFJ_UQ9SnaPr|Hyu-kDcM+>NzL)} zXsG8Ri3U~q&3Vk;yF7Lb<$S5lGh-YiZ`B?Mi@;Oh#c|v8 zt=Nfc$4CFgCyaX?y$+`ayXH0vQWI9Zwj>GA#FoZliw|c>jyR^PFD!wJ)vn^F4QHu4 zHD*ElI!`Lw&+w(9Y=l*{*}qcA#DlZxyaGS}=@w|i$ZNkbjrs!olF$Y;EBWauOk*kf z<`)l0L^K5{dgRgTz|NY#?c!qBZ{peOJK;RKmQ}05ao-tzJ4mr)>Yp?s>+`>%PsmHb z=h51BqR2g7|6eP|)rm7+nxWl}^{$;6YSK0SY&vyhPpL05*S2@Lj2!)}S69N>ix&&r zzco>16Cb6_W>C$$(erw13he%+26%|q5LUw|PnFAz+NSU&;5_uwOPi02BT#3q1$_K- z@h+F#75P&OSm}A+wvaKAgzv=4j8aZfF~)*1dd)2Es{< zGH2ajxn*R8@MrEi%fEPo&lxMXBeefUydEstviMh=YA^DF3eG)ayypfnXe&PNYf4j4 z44#kVt1_!wkcmccezmC;nr#H?Q_I?tSVP>QO(j%bHhw8rVgozcE$+Fj|75n3Wt53$ z@&a-Oq23XPcj(uQ%l}Vg3sV+yAHpTq^wRGnF00;=J`GSi*Q&|B;-ASodslvT`Fvvo zgR#R9xu;dwm8Z(;94lSE@~f$y=Wr97nc8Lz4ak8cU%>0sm4mSgP%I5@d(=ba#aJAPZihE%|6vuKijSwMlzn=e=iP7z?TsfI~)76CkX z3v7)}VV@!X55Dx;k-HXe9Q}Pc2QnN>>U1~^ns~LYo&Nfqid?F75&=hhIxHw@2(DG9 zv%)&F3lG~xUD*;!7_^=q931&DY!Ug9vPlaI!g*wo-Z0J8NXfxPZuDj^Q18&Iq@nU9 zQzrL!Y+3W{gL);0;yqDx2*BKr>EO4!X&2*Z!aD4*HmmjfT*zT7fBA0Egp6Qy5gG06U?|%V){P;1a2$qSj>;1S?@2~ZU8EwT4<>nU~PRqlMv85^JWjkr- z4G1s&=#(0^@1o&_)Xu4;I-~vkG`du92h2N?@G>#mrlWD^OK_}FQZoh|0@_=OJwGqs zE6D(>Ig=As|6T@+CP|DFI%DNC%!P;?OZ?(+&fEep~25!$KD#g0?UzdS37EQyvCr*&?1S;)spoCF2 zBQ@asQDrsXxb`QMRO9%976Ul)t$m1FG)w0E_umb1dpe$zrCJHxu7Yj*cdif>jvaDB zKYAae9GYifY}!GoE2XwrS)NG*_CHGf;4D24Zol=P1Fmwpers{^7pR-K@_$uvCf-oK z?;o!ZVzOl^%TP*0jNOD8OR^0^WeeG78p~M5GD=BlLdw2n$7w z4B=d#EF68}*cP4a%>e3}B_!NbMDeG1uSrUy4t`ty5AXT3KDk?rDw2o{7hecxAf=Fm zaBFqS+ZH__;!QVhigRq~Sc4@4LZLlA*7*EA_?d)jJP^TRI)z&~w0ceu)5OTO=2`OT zdJWwgaD~5sg%K6+X#CSCIC&*#Hgu%4bPk!gT{mQfe!S{vQK2Ute7CKo%~z`88b>q!b`YRyU>uDjy+6;t&upEr}O^L zXm-yo@I?K6`Q~3omzBynJwoZG*<-uRVKO!boX+Hbo61Tim^7)+31GDFgLTycQUUBf zSd6UGxU_pnd+S6)6j>uCl7o}aJdg6~D-dwcxxME@msLJQJicWU491ZMMZSGLqKU*Wp|&l}ELACb}_wIe_}Vf~ioqVeHb7XRj_g zxgR)`{A_qGUh$II6R^wseaSo3{Wo6O*PayxnC~1{#drKJ13rcD&!E(v{|cfrsfbk3 zsuSP5s$dYnB{jzT)Y~e#w8DJ`Bl9i)_e%q{TyW(zCWFlQgCu=zxPTKHDMH+BZJDc| ztC-Cby`YQnW^AO%^j~&pvLMcKY(b@bx8IUERSTiug$`>#Dm}D~ru`NE1 z+5o-1DRIv12aG;0Y;JtB%?dZ5-{OM4Z9i>WBfV@A=@ZbCu>CR&K}X_CS^Qxx9C>ZC*rV{)zZEmdAp zzvqN#e3i$0%>CaW>XbhSKRoP96%=ARlMW}W5YuWQ>ndCkrN;I*f=6=r{*>Foua#2k zgSj0FZumL4< zx2kWoQ6L;5o%Y$^YZ@GK#pdIQhCyo2X@w|_%m5GKSA)Rd0v-y~=tzU$MVrHT#N}%$# z>g%!lCR>Qkcu`Dcb?(osD*MmGNDY6XI^YmoIEWX+NbW9e^VM8~*s; z-LKSv40XGOeX!ktX356za*DNNqY?g==gko>`h0h}>yF{*%*u#{Phr;KHH&91grq^! z>V04JYOj8exVO4!GqA zdjfF>{TD$F zfrU5NjPoKrSQdjaIR2@b1oK3LSA|iN+<~ZKO;`bT%u9vCEW?@-x&A3j$kgB){%?_& zy&&!q2R7$W(h!;O_B;t%plmmL7t=f}ap$mDEca?rLawr9F(!uWdnFjB9U8s%Tt9-S zQ(qMHaKB8Ls?*AgEPmn*z}wA_Omk%S^xyIW(nGK;1ED!m#PqqT0mfn`)E zR)OCIRqNhJfM&qE23gkRnSVC0xw1TKduRyF{C`e)S!nkp0AOz6(lkk;cj{a7f#lV>Ris zh~lLW2nS$sayKogTiaTa)Q-#h<>OvUhdc2VeDS)sq1Pdj`;ap=jbgohQOV*dAFU`* zp||XJah2YvPDDIjQegl!9Nf$4z-bZ zF9~x?3Cs;*Nj@lR4O*Cm-y&Qi7^w?0L5|x7ns4g>x0BbRGUxXsPLR}b?%eCQlY}28 zdF(8w73jV{PUX|?61=Wa1eNEHc1UMQ8-k4jZ{JHXVFzSIZr6mi3ItO2DG}xa7nE+W zl$jrU1_}Xc|IyAD_^U6#J35#bvL8)uLrteA-h6(EE%5l?FY^a0iSexW>>_Y0vBY`eX%~`~lCNx)6&0Ph?(B zXx(&ZdhEorlh}b;r-(8?EUFGp&Z%yrW$t`$z~Ll3OWba`RmDkquAhG+aj-B<{4V}Z z+gTFZJF6#U4J{y>yB!Z^g%tS@&&>yjo|aE0Vl7-RO+uKQ$)mdSF)pM!U}{Mck$IV3 zS9mc+gHRq`sszW(B{_p7!faF=l%>kL)bhC?d7s7ZHWWVN88UNN%bI;@#SL`S zXTuF8)p5R1Wc#SD#C^(&_793!POeS=RM{f1*7Z#g)W${Kc3BDrVJ-;b`-v9x(rlE}8` z=1PYQofPvZhyi>|EMe65qmoRt6L)LNmvCMP*O)w;?T?dKLw=@O^CUjEDjPNUnP(U_ zyW+qqQuhRUmZCvQXw=E;@{p~El3I(PE+0*J4ejS}4z}2|Uvu4J?c->`lRjquv>qiN zUck?T&`6xo)}yH^VUeGFjH>_f-1rMmxEGnmytZ4iZ&N$q&>iFedx`_@KO0DOcI5Gp zLb3OgN>V>UZsM@44{P+%jy^Ti0sGh+Si--zjw|zRLP73@nCZje-L9Frb9`mNc=J~Y9OT0Jl*tA0ppzo%`{nwLJO^lYEq zaAXE3!RGE0Dc_w(q?`e_+RfIgs6d5*DC}H+epxCv(rVuW{sr65Cv2DlfPmm)j_qPZ z`MNh_|DtCmo*u2+6%HFSC2FXM(!d$wfYKiAxipRx)gSMe;M)mfv`u-0Y;Xn}V|Hwo zBu#l-o_faxj=#clRV_H#2tLmJEUzif<2|gZ2P=8LOE^?{|0Ce5z`K4O8BXIyJN!!o zJ?2!sb#l(A(m>ASI7FdgoU#Kr0jU=Mh>Z#s`lIEPL|9^iBHT+7-V>zJzdJ=ATA=;2 zK_9SCzmwc~@qOaqX1n6(vRly9((ULb2AV=j>hyFecQAu(#0=mgEG<$X;9^e*N6H;5 zpo?4s>P^dmf)AX!EdLBm&Pv8vWduI9!l34z+0ORJ#BGbZbUo|3C;$IIrL|Sy;;AHV z{(^;HkKZUu*G&Pq?j_-z&lcy>=^1ouD^@}fLnXR_?K{RF978hq`BNG7DvP+%C;c?kld(ogqC#5u(Aj3kHAK$}I zeN6DPp(L9b(2t+QgB)daBD7PVGS-C4&xV6fRp&-X_aG%4m8n6{Btsiys_ F{{z6^;eG%B literal 0 HcmV?d00001 diff --git a/docs/_static/jinja.js b/docs/_static/jinja.js new file mode 100644 index 0000000..1c04218 --- /dev/null +++ b/docs/_static/jinja.js @@ -0,0 +1,26 @@ +$(function() { + + var + toc = $('#toc').show(), + items = $('#toc > ul').hide(); + + $('#toc h3') + .click(function() { + if (items.is(':visible')) { + items.animate({ + height: 'hide', + opacity: 'hide' + }, 300, function() { + toc.removeClass('expandedtoc'); + }); + } + else { + items.animate({ + height: 'show', + opacity: 'show' + }, 400); + toc.addClass('expandedtoc'); + } + }); + +}); diff --git a/docs/_static/style.css b/docs/_static/style.css index c5894f6..a52436d 100644 --- a/docs/_static/style.css +++ b/docs/_static/style.css @@ -8,10 +8,11 @@ body { } div.footer { - border-top: 1px solid black; + border-top: 1px solid #111; padding: 8px; font-size: 11px; - text-align: right; + text-align: center; + letter-spacing: 0.5px; } div.footer a { @@ -19,17 +20,20 @@ div.footer a { } div.header { + margin: 0 -15px 0 -15px; background: url(headerbg.png) repeat-x; border-top: 6px solid #D20000; } div.relnav { - border-bottom: 1px solid #ACACAC; + border-bottom: 1px solid #111; background: url(navigation.png); + margin: 0 -15px 0 -15px; padding: 2px 20px 0 28px; line-height: 25px; color: #aaa; font-size: 12px; + text-align: center; } div.relnav a { @@ -45,8 +49,9 @@ div.relnav a:hover { #content { background-color: white; color: #111; - background: url(watermark.png) -110px 0; - padding: 0; + border-bottom: 1px solid black; + background: url(watermark.png) center 0; + padding: 0 15px 0 15px; margin: 0; } @@ -66,7 +71,7 @@ h1.heading:hover { } h1.heading a { - background: url(jinjabanner.png) no-repeat 20px 0; + background: url(jinjabanner.png) no-repeat center 0; display: block; width: 100%; height: 80px; @@ -89,12 +94,12 @@ h1.heading span { } #contentwrapper { - max-width: 700px; + max-width: 680px; padding: 0 18px 20px 18px; - margin: 0 0 0 10px; + margin: 0 auto 0 auto; border-right: 1px solid #eee; border-left: 1px solid #eee; - background: url(watermark_blur.png) -120px -114px; + background: url(watermark_blur.png) center -114px; } #contentwrapper h2, @@ -230,37 +235,9 @@ div.admonition-implementation { background: url(implementation.png) no-repeat 10px 40px; } -#toc { - margin: 20px 0 10px 15px; - padding: 10px; - width: 200px; - float: right; - background-color: #f8f8f8; - border: 1px solid #ccc; - border-right: none; -} - -#toc h3 { - font-size: 20px; - margin: 0 0 10px 0; - padding: 0; - color: #444; -} - -#toc ul { - margin: 0 0 0 30px; - padding: 0; -} - -#toc ul li { - padding: 0; - margin: 2px 0 2px 0; -} - a.headerlink { color: #B4B4B4!important; font-size: 0.8em; - margin-left: 8px; padding: 0 4px 0 4px; text-decoration: none!important; visibility: hidden; @@ -345,3 +322,64 @@ span.highlight { background-color: #eee; border: 1px solid #ccc; } + +#toc { + margin: 0 -17px 0 -17px; + display: none; +} + +#toc h3 { + float: right; + margin: 5px 5px 0 0; + padding: 0; + font-size: 12px; + color: #777; +} + +#toc h3:hover { + color: #333; + cursor: pointer; +} + +.expandedtoc { + background: #222 url(darkmetal.png); + border-bottom: 1px solid #111; + outline-bottom: 1px solid #000; + padding: 5px; +} + +.expandedtoc h3 { + color: #aaa; + margin: 0!important; +} + +.expandedtoc h3:hover { + color: white!important; +} + +#tod h3:hover { + color: white; +} + +#toc a { + color: #ddd; + text-decoration: none; +} + +#toc a:hover { + color: white; + text-decoration: underline; +} + +#toc ul { + margin: 5px 0 12px 17px; + padding: 0 7px 0 7px; +} + +#toc ul ul { + margin-bottom: 0; +} + +#toc ul li { + margin: 2px 0 0 0; +} diff --git a/docs/_static/watermark.png b/docs/_static/watermark.png index cc5eb33dd591f99fcd63ee81b11647eb50062525..d791ea00fabf6921ac61aeb1587720c02b3ec071 100644 GIT binary patch literal 7629 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 diff --git a/docs/_static/watermark_blur.png b/docs/_static/watermark_blur.png index 6f686832af47059c15ea78e70ccdb3c571f6bb23..06e799ec6ba345cc047411893d94762708a5913a 100644 GIT binary patch literal 7563 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 Ze_Wvn5dF!bv0bKAzz*tUQ)A_w@;{~q5%>TA literal 5957 zcmai&S5y3bk-`mK>4*(E6@o#VevT`I3lYIWhw+;Bd z@$d>rOZrT6O8@{Thm7@aARmt`<41j`4gb1DE8jo3Q@eUuvEY`NGpQiuG9OA2HeR3H zKZy?y3l9%(0sxXbuF7%&M1cSR<3CHp+@U35z<(5dK7gJ-0PvqgP8$Fqa0C8_G`BhF zM$JxbZf;IY9PDj>IbpOvOV2xaaT;K@nVlNEn@3>{9S%DEPVpLm5S;*me5~S@ z1HmHZCR@QWioQ>qi=p~_S1o?06x&T)vs_u`sF?zs{zR8&IyKJ2i*aj@)NUr%4U5ry zxd8FPs(QbBawc|upx!?}rlZeyN?{uv>(rFoHvaN4Zg=j{VS&?IbNPz8;}^hLC3`^t zMoX-?&T18_VP``@K!nlKF0KQiLHu;AuxWd@%B2YGP4vb}V5fNU9uD;DqV|Um+v6H6 zd1$<_m)TBnM4?GuQq0pOIxovzWuAlS(*b z+R!R&hE#4Dz&ZkqAVkLskPVH?e2*K|-SGF;kPRzfTHJo)us?R_uQlY)pFfTxnDP-@ zc%DqR7-U0{t3TgDx>G$FIR5bUy-1)XaX}C z{(TB+%-_)&xTntbNv)3Q2^8z=||px+eJ zN>)!Ny+NOxiwCh&IN@vGPXPf_i$y=z@2a2ijdTKL4zgB0Plb|f*DIVmpn3#;4frdP zq0Y+dWzqc&SKPaCR*Z|2b zLyi1^iiE|xjf;G77gQa;II_2MU@hRmG{5}Q&U&|>6q|_2973S~-uq;x9Tx_D5X8~g z(#(dVA8=lP&ieTupz@2wzq6`A&HmvWW2k*vH->Ha3UV_so+GAV`Ab=w(=ahi@44N= z6&J=|6^iUYeCiZZfNcMWU+Nx2uYOBc1ZFaE&zzD92p41q_Qj6U-TKnSP=#)@+o-gO zb>>;?n+Ds-Ss*LskEy!+xgxQK5qC5;!zJc!#kPMfUQ@8y(|r~wcu(RJsis#sF=DPL zd(O`4nkB9DhZ1EU>{MskT6*IG&U5&!H*z)`ckEu=J&Nqjjqah|D6j4q&g+8V>DQ(8 z1@|vtrcn22~43&FT<2h{d_u`6OtXXk1`8=}Vkq==UL<5=w_IcR)i%rBcqk7uI-^A}U%4czQ$ zS2n$+ruc1|mmQQch_fg@B|U~qGYLl(=C}WXG?Cu^j*#xooXwTk&>HZ0uKJ+FNCq|k zot)slFp$r-Q4Kb{jn;pPLXJKY^0!Y#Fi3!LspEm20zSI92!g58NSO^;dnoPE{0ntl zV&XLF<0m86pHxyFXD2s@Thay2_$cV~GY;7F!Ne0KFlFW>g`-!sA4{3QOJr-UM3GVz zt8}|+Zuy(~kW>m$n`lk(FP~iCF=)T(%8v##1ypKY$sFofx$e_0V2l5OUKG7L3+-BQ zNezEP5aAFc0i5_Vs#V$T`MBhWZT|1TXMSmw#KBRstMc)Gyi*+<05;~76Urpld}txn z^3l*3nx4Y5v*8FDe*0m^2POm)-RCyLuH#&UVWS4FuLJ|!=BcMDsKqN?pT8$caYk>- zV%5VeD|+Fg4w=~aX(y)xV0XXqCxerbq#x{)gY5P!8!<$pv)WtyP+&)O)}2k(^;US^ zLscJD$=RU6km{vc^JdTFMS|}arLLjRouZb1KFlAYo)1geUhH1${N>RfuOxW^A+Q- zj#7%-ru_MasS=Te9({XD&U`g4hBnqD&>DMd?vB#?dKv)}E7zx7+3mE*OCijX(MPSB z9w}<`iA5u(iPls%YbGAeTCpfEjZaUyY>xY-kVe4Pv_X=elStY@ou{=%hXyupd`&z0c2 zMQM!-K21~d-Z%rg>XoYwOwHvnwGh|v;6h*K&35Jkdhl12#ruJAV*Eow{W{zc)}2WI zasB9&xm?|dY&mjJNDd{C=IQxN)fL0|d*+q(xl*$knxH6N5t0(c+4h(~WQ|r3K(A&> zp~12xb5%;wFxpId(CBe z8|nPvg0ebb6Q7;p^aCjRt&386rFf#Bd;m%bCO)QN4Jq94_+xo=oA|o?OLXS;*z#kN z@38|4_kPAgSs4|-BllN|dh&vo@MtUn`^IF*e++u#0*5{V^uLalc($k{qVc#6i zmu7k8jBsNmNyZ&y@9 z!7*9pLqbI17M&Jw4Uz#>e}1lx;z~)fglDhT8Ihsq=%8t^!C-yY;6CbY93;;H6$6b{ zK!)k={I!{w)Gc#o`K4bM(#8$5LxBvLV*AS^<$h}ou!NdjP8*y(f@+80x97U;1A5Rd zyrjtt(qCY{>o_hMP47#mVG^NF+0MQBX^q;=N~FR|%hqBCyWL00gh8;aOhJ$1ZRu_f zcA*=?dx>&TXb3~`88NYi_J3hmz6$0Vi+P3!&l-M(QRGxeAv_M@5*koA5fVcniM-E$ zg9>ec46yhqF7c!uXdOD7zKYGee<91E;0875*Gg!TAQ+j`97Klm%;$)^o=3u8|9W+Y zT%ss9Y?x|;vin|SsPhBpgw2=+HVti;V)!cq1)rZLe+vt|Z|XU_d)*|B;7(X<4E>7% zU-h{BnT4=$7_d4{kbd32lAUfhX&&%NxcT|+8?XpfcRhD|m8gE66X#rihOt>4)7Ry z@@y=4*NYNu>FP}?%!>6Z%am};_KlkN8dMJP%p>tGWXejPywma% zzwwVfSig67v2KC^$%53~$!BcyDwB3f3*os7LNn&UfHUew^1$$rkOgX<%FYe!4D}X7 zxNi1Bz2XKU>z-a?2BGD0}Xv#rZ5q5jJBnu#iEi`GOA% z?iBK7x+1Sgh*MQbMn~PR2#T{=P^tti`SOne6LWGDuyI z;6ap{PNGWnqE*0e4(qjk;BeIG2tWHX3eLmZ4f)c7v(i48Wo&0K%po0fb!IPAx}}Qd ziZd?HC7*~5KoJK%0=H)!{4Q03D6YS@c93#CzzYONTw1-w#1Pu1si|pzO^x4UI@6zH zqvmyuw{)hWS)pzVYcdKiwNfT@RO5s5GWo}EBMjRX%#c2=Uty6S0=H-j5Om=#mAKlN zXY@N$%}xdCZ*?1mE5+&6$ItVgcDU5DbZfD8nfT==BN=Np%{D2}X+wW~cHg*xTlP3M zu(#E1AWk}SI%_yS*OmHi8) z-{}6u3q!>Q#PkXm6&qi% z8j+n7AvZR#qvhG^GQ6X+W2V2ApG>Z`2Zqv7Ej`_>^V4meoS({m!}t!r*z$S~`RQ3D zsK0hx&aoQsZ;O=K%(C-%6^-FglKqFB&Ayh}eY){0Y-#Sr#s1sLz);$aHNm5EmE3Y! zC2aAVTBlGFOO{-ezODtg2WW+^p?W9uXB|I1Bp2gitaQqsM9)&x-VgA(@P>Iuo(sh^EG-*li0S6!UZzGOx5;jD;9@fo&pfBudk3)p~L12Fl}plRg{3!cZ9CaOo)Gg2PkVeb@w z8R!EEq@5wuslF?D8EhNyfnk!YCM|3Yr)^%2s zLvF%p_=q%!02ox%4N+Q@$2pjr7DBesw5PNQ1d}RqtV4x=&wry4`&9DqSzVJ&tF)xd z)Zcp3Z9A`f^6;yYz+r=JT{6fPA9~Dm-Jy9?BBTykqv!Ksf-bUZ3&kMPty+&ur6ble zhNH}4h1m+^8~4K2J2onSf&I(AB#mx~3UDjcR2Uy!2y))gB@X?th4$5^W*Vdb46d_0 z$VZ$|eu=QuYiB)YWIXsZK6LMZTnF#%>}20J3`}dl#T}Q2Gt^va>1(esg*%B&Fi=?f!`Y~wpqXn zEv_E(d5y#EC~bEp;p4~HVzI;LV;ECN_mYhz7^hD^Sy-09zPRJEzaCfY#jdwxuzA1r ziFN9jII1LcDIfd!+k=@2k!YNM|Z)I=r3CT(t0vE(svQ zD`JT?SEwQpbB_?4%9Jv*4GF&6(`p==rvY18b&{<^{*ubna=rJF&*7s!Yv@IP{V&)B z+&WIeCeKD@-b1e>Lk^vvjDr4330*q;8JYY_MCSX}mr(lT5_)9WODcYj14;m!p9iFp zYKWj{i?(Q@o&MHBR3NkZbhQ3P?u^AwCntxtQ-?W0P>+$)6;Oy;eVDA{L(lV<`* zy=VMJYIuo1Gt4u~gUuq6!=!vkPs9!0dE{nSJ@fy%hjlH6RYdfJdW$>{-|w2aDHuU$ zN}5KUx4H7WKr$--xM zL_!g>5kbu`=)CiE`r^)cqg+p)PpY;G>IHi<;O3uM%T=R>5L9yR(D0M0&IZ1VI}guU z>l4{iR|1iOr*qQq5I3T&-{nTW&ZxO++L5?0n_{RBB>DT!XNQ+PX`|p)(q=VCj!&2p z@Qgw)sXyTph(agf7R2skF0#3P2$vzB%ISB)n`l|EmUA_|5AHA$SA&_Y?JM5IJWo(a-R;8%x zIjlI1J|;E)=MXkXaQv(f6cO(p%D4JOP>(2CtGi=C7%yRdsktOBE{9bRfIO3 z5iGBTD*)O3v!5JGiaZXI5O+9dMY6k);&{urk|gY549?>*V&EJmNrQi}CWz^0-V?Ye|b_dc7l) zJL0qhZkj>2USlM((}>!9?HenOr|nT^nx&A(ftL>vWb{^MUXD=an5v}(i~%#1?_~Ls ze((Wgfk$Hkwc9|8&eudMqnppGPj|ri5<)jL_{I^F%TqlkTRlXC_k6^GXWmVxPh|Io z(9?p~_TjPCnu`DfK0d|Z^e^2b&hVyd?uLkNT{{nMuYj`SiPS;BM8@ + {%- endif %} {%- if use_opensearch and builder != 'htmlhelp' %} {{ next.title }} » {%- endif %} - {%- if display_toc %} -
-

Table Of Contents

- {{ toc }} -
- {%- endif %}
+ {%- if display_toc %} +
+

Table Of Contents

+ {{ toc }} +
+ {%- endif %} {% block body %}{% endblock %}
diff --git a/docs/faq.rst b/docs/faq.rst index 9f7112e..2042fcc 100644 --- a/docs/faq.rst +++ b/docs/faq.rst @@ -128,13 +128,10 @@ instead that one can assign to a variable by using set:: I don't have the _speedups Module. Is Jinja slower now? -------------------------------------------------------- -To achieve a good performance with automatic escaping enabled the escaping -function is implemented also written in pure C and used if Jinja2 was -installed with the speedups module which automatically happens if a C -compiled is available on the system. It won't affect templates without -auto escaping much if that feature is not enabled. You may however -experience werid tracebacks if you are using a Python installation, for -more information see the next FAQ item. +To achieve a good performance with automatic escaping enabled, the escaping +function is also implemented in pure C and used if Jinja2 was installed with +the speedups module. This happens automatically if a C compiler is available +on the system during installation. My tracebacks look weird. What's happening? -------------------------------------------- @@ -145,3 +142,14 @@ Jinja2 is unable to provide correct debugging information and the traceback may be incomplete. There is currently no good workaround for Jython or the AppEngine as ctypes is unavailable there and it's not possible to use the speedups extension. + +Why is there no Python 2.3 support? +----------------------------------- + +Python 2.3 is missing a lot of features that are used heavily in Jinja2. This +decision was made as with the upcoming Python 2.6 and 3.0 versions it becomes +harder to maintain the code for older Python versions. If you really need +Python 2.3 support you either have to use `Jinja 1`_ or other templating +engines that still support 2.3. + +.. _Jinja 1: http://jinja.pocoo.org/1/ diff --git a/docs/jinjaext.py b/docs/jinjaext.py index 8a15d65..7dc9baf 100644 --- a/docs/jinjaext.py +++ b/docs/jinjaext.py @@ -178,7 +178,6 @@ def jinja_nodes(dirname, arguments, options, content, lineno, doc.append('', '') doc.append('%s :Node type: :class:`%s`' % (p, node.__base__.__name__), '') - # XXX: sphinx bug? Expr gives a rst warning doc.append('', '') children = node.__subclasses__() children.sort(key=lambda x: x.__name__.lower()) @@ -188,8 +187,30 @@ def jinja_nodes(dirname, arguments, options, content, lineno, return parse_rst(state, content_offset, doc) +def inject_toc(app, doctree, docname): + titleiter = iter(doctree.traverse(nodes.title)) + try: + # skip first title, we are not interested in that one + titleiter.next() + title = titleiter.next() + # and check if there is at least another title + titleiter.next() + except StopIteration: + return + tocnode = nodes.section('') + tocnode['classes'].append('toc') + toctitle = nodes.section('') + toctitle['classes'].append('toctitle') + toctitle.append(nodes.title(text='Table Of Contents')) + tocnode.append(toctitle) + tocnode += doctree.document.settings.env.get_toc_for(docname)[0][1] + title.parent.insert(title.parent.children.index(title), tocnode) + + def setup(app): app.add_directive('jinjafilters', jinja_filters, 0, (0, 0, 0)) app.add_directive('jinjatests', jinja_tests, 0, (0, 0, 0)) app.add_directive('jinjachangelog', jinja_changelog, 0, (0, 0, 0)) app.add_directive('jinjanodes', jinja_nodes, 0, (0, 0, 0)) + # uncomment for inline toc. links are broken unfortunately + ##app.connect('doctree-resolved', inject_toc) diff --git a/docs/templates.rst b/docs/templates.rst index 182ef94..11d9978 100644 --- a/docs/templates.rst +++ b/docs/templates.rst @@ -218,6 +218,19 @@ precedes it. For better readability statements that start a block (such as # endfor +.. admonition:: Note + + Line statements can span multiple lines if there are open parentheses, + braces or brackets:: + +
    + # for href, caption in [('index.html', 'Index'), + ('about.html', 'About')]: +
  • {{ caption }}
  • + # endfor +
+ + .. _template-inheritance: Template Inheritance diff --git a/jinja2/utils.py b/jinja2/utils.py index f402704..b1c20b6 100644 --- a/jinja2/utils.py +++ b/jinja2/utils.py @@ -293,10 +293,12 @@ class Markup(unicode): """ __slots__ = () - def __new__(cls, base=u''): + def __new__(cls, base=u'', encoding=None, errors='strict'): if hasattr(base, '__html__'): base = base.__html__() - return unicode.__new__(cls, base) + if encoding is None: + return unicode.__new__(cls, base) + return unicode.__new__(cls, base, encoding, errors) def __html__(self): return self @@ -434,7 +436,7 @@ class _MarkupEscapeHelper(object): __getitem__ = lambda s, x: _MarkupEscapeHelper(s.obj[x]) __unicode__ = lambda s: unicode(escape(s.obj)) __str__ = lambda s: str(escape(s.obj)) - __repr__ = lambda s: str(repr(escape(s.obj))) + __repr__ = lambda s: str(escape(repr(s.obj))) __int__ = lambda s: int(s.obj) __float__ = lambda s: float(s.obj) -- 2.26.2