From ff0bdb307696194f8a465eecb333050ea645c1b4 Mon Sep 17 00:00:00 2001 From: hpk Date: Thu, 2 Apr 2009 09:37:38 +0200 Subject: [PATCH] [svn r63520] * removing versioning of generated _build directory. * removing an outdated note regarding py.std --HG-- branch : trunk --- py/doc/_build/doctrees/bin.doctree | Bin 15721 -> 0 bytes py/doc/_build/doctrees/code.doctree | Bin 19848 -> 0 bytes py/doc/_build/doctrees/coding-style.doctree | Bin 17693 -> 0 bytes py/doc/_build/doctrees/contact.doctree | Bin 15357 -> 0 bytes py/doc/_build/doctrees/contents.doctree | Bin 4443 -> 0 bytes py/doc/_build/doctrees/download.doctree | Bin 19594 -> 0 bytes py/doc/_build/doctrees/environment.pickle | Bin 120247 -> 0 bytes py/doc/_build/doctrees/execnet.doctree | Bin 35548 -> 0 bytes py/doc/_build/doctrees/future.doctree | Bin 31393 -> 0 bytes py/doc/_build/doctrees/impl-test.doctree | Bin 43442 -> 0 bytes py/doc/_build/doctrees/index.doctree | Bin 15907 -> 0 bytes py/doc/_build/doctrees/io.doctree | Bin 5295 -> 0 bytes py/doc/_build/doctrees/links.doctree | Bin 15606 -> 0 bytes py/doc/_build/doctrees/log.doctree | Bin 47901 -> 0 bytes py/doc/_build/doctrees/misc.doctree | Bin 47143 -> 0 bytes py/doc/_build/doctrees/path.doctree | Bin 33250 -> 0 bytes py/doc/_build/doctrees/release-0.9.0.doctree | Bin 2868 -> 0 bytes py/doc/_build/doctrees/release-0.9.2.doctree | Bin 7376 -> 0 bytes py/doc/_build/doctrees/release-1.0.0.doctree | Bin 8097 -> 0 bytes py/doc/_build/doctrees/releases.doctree | Bin 2784 -> 0 bytes py/doc/_build/doctrees/test-config.doctree | Bin 6344 -> 0 bytes py/doc/_build/doctrees/test-dist.doctree | Bin 22379 -> 0 bytes py/doc/_build/doctrees/test-examples.doctree | Bin 6202 -> 0 bytes py/doc/_build/doctrees/test-ext.doctree | Bin 11226 -> 0 bytes py/doc/_build/doctrees/test-features.doctree | Bin 52493 -> 0 bytes py/doc/_build/doctrees/test-plugins.doctree | Bin 15093 -> 0 bytes .../_build/doctrees/test-quickstart.doctree | Bin 12466 -> 0 bytes py/doc/_build/doctrees/test.doctree | Bin 8739 -> 0 bytes py/doc/_build/doctrees/why_py.doctree | Bin 36928 -> 0 bytes py/doc/_build/doctrees/xml.doctree | Bin 21035 -> 0 bytes py/doc/_build/html/.buildinfo | 4 - py/doc/_build/html/_sources/bin.txt | 69 --- py/doc/_build/html/_sources/code.txt | 141 ------ py/doc/_build/html/_sources/coding-style.txt | 71 --- py/doc/_build/html/_sources/contact.txt | 47 -- py/doc/_build/html/_sources/contents.txt | 28 -- py/doc/_build/html/_sources/download.txt | 116 ----- py/doc/_build/html/_sources/execnet.txt | 235 --------- py/doc/_build/html/_sources/future.txt | 145 ------ py/doc/_build/html/_sources/impl-test.txt | 250 ---------- py/doc/_build/html/_sources/index.txt | 70 --- py/doc/_build/html/_sources/io.txt | 43 -- py/doc/_build/html/_sources/links.txt | 33 -- py/doc/_build/html/_sources/log.txt | 208 -------- py/doc/_build/html/_sources/misc.txt | 216 -------- py/doc/_build/html/_sources/path.txt | 260 ---------- py/doc/_build/html/_sources/release-0.9.0.txt | 7 - py/doc/_build/html/_sources/release-0.9.2.txt | 27 - py/doc/_build/html/_sources/release-1.0.0.txt | 31 -- py/doc/_build/html/_sources/releases.txt | 12 - py/doc/_build/html/_sources/test-config.txt | 23 - py/doc/_build/html/_sources/test-dist.txt | 125 ----- py/doc/_build/html/_sources/test-examples.txt | 54 -- py/doc/_build/html/_sources/test-ext.txt | 64 --- py/doc/_build/html/_sources/test-features.txt | 279 ----------- py/doc/_build/html/_sources/test-plugins.txt | 71 --- .../_build/html/_sources/test-quickstart.txt | 59 --- py/doc/_build/html/_sources/test.txt | 42 -- py/doc/_build/html/_sources/why_py.txt | 182 ------- py/doc/_build/html/_sources/xml.txt | 169 ------- py/doc/_build/html/_static/basic.css | 414 ---------------- py/doc/_build/html/_static/default.css | 201 -------- py/doc/_build/html/_static/doctools.js | 232 --------- py/doc/_build/html/_static/file.png | Bin 392 -> 0 bytes py/doc/_build/html/_static/jquery.js | 32 -- py/doc/_build/html/_static/minus.png | Bin 199 -> 0 bytes py/doc/_build/html/_static/plus.png | Bin 199 -> 0 bytes py/doc/_build/html/_static/pygments.css | 61 --- py/doc/_build/html/_static/searchtools.js | 467 ------------------ py/doc/_build/html/bin.html | 171 ------- py/doc/_build/html/code.html | 247 --------- py/doc/_build/html/coding-style.html | 153 ------ py/doc/_build/html/contact.html | 115 ----- py/doc/_build/html/contents.html | 184 ------- py/doc/_build/html/download.html | 203 -------- py/doc/_build/html/execnet.html | 340 ------------- py/doc/_build/html/future.html | 197 -------- py/doc/_build/html/genindex.html | 89 ---- py/doc/_build/html/impl-test.html | 342 ------------- py/doc/_build/html/index.html | 229 --------- py/doc/_build/html/io.html | 156 ------ py/doc/_build/html/links.html | 120 ----- py/doc/_build/html/log.html | 298 ----------- py/doc/_build/html/misc.html | 321 ------------ py/doc/_build/html/objects.inv | 3 - py/doc/_build/html/path.html | 366 -------------- py/doc/_build/html/release-0.9.0.html | 102 ---- py/doc/_build/html/release-0.9.2.html | 127 ----- py/doc/_build/html/release-1.0.0.html | 131 ----- py/doc/_build/html/releases.html | 112 ----- py/doc/_build/html/search.html | 91 ---- py/doc/_build/html/searchindex.js | 1 - py/doc/_build/html/test-config.html | 137 ----- py/doc/_build/html/test-dist.html | 216 -------- py/doc/_build/html/test-examples.html | 168 ------- py/doc/_build/html/test-ext.html | 172 ------- py/doc/_build/html/test-features.html | 371 -------------- py/doc/_build/html/test-plugins.html | 181 ------- py/doc/_build/html/test-quickstart.html | 155 ------ py/doc/_build/html/test.html | 170 ------- py/doc/_build/html/why_py.html | 269 ---------- py/doc/_build/html/xml.html | 266 ---------- py/doc/misc.txt | 7 +- 103 files changed, 2 insertions(+), 10696 deletions(-) delete mode 100644 py/doc/_build/doctrees/bin.doctree delete mode 100644 py/doc/_build/doctrees/code.doctree delete mode 100644 py/doc/_build/doctrees/coding-style.doctree delete mode 100644 py/doc/_build/doctrees/contact.doctree delete mode 100644 py/doc/_build/doctrees/contents.doctree delete mode 100644 py/doc/_build/doctrees/download.doctree delete mode 100644 py/doc/_build/doctrees/environment.pickle delete mode 100644 py/doc/_build/doctrees/execnet.doctree delete mode 100644 py/doc/_build/doctrees/future.doctree delete mode 100644 py/doc/_build/doctrees/impl-test.doctree delete mode 100644 py/doc/_build/doctrees/index.doctree delete mode 100644 py/doc/_build/doctrees/io.doctree delete mode 100644 py/doc/_build/doctrees/links.doctree delete mode 100644 py/doc/_build/doctrees/log.doctree delete mode 100644 py/doc/_build/doctrees/misc.doctree delete mode 100644 py/doc/_build/doctrees/path.doctree delete mode 100644 py/doc/_build/doctrees/release-0.9.0.doctree delete mode 100644 py/doc/_build/doctrees/release-0.9.2.doctree delete mode 100644 py/doc/_build/doctrees/release-1.0.0.doctree delete mode 100644 py/doc/_build/doctrees/releases.doctree delete mode 100644 py/doc/_build/doctrees/test-config.doctree delete mode 100644 py/doc/_build/doctrees/test-dist.doctree delete mode 100644 py/doc/_build/doctrees/test-examples.doctree delete mode 100644 py/doc/_build/doctrees/test-ext.doctree delete mode 100644 py/doc/_build/doctrees/test-features.doctree delete mode 100644 py/doc/_build/doctrees/test-plugins.doctree delete mode 100644 py/doc/_build/doctrees/test-quickstart.doctree delete mode 100644 py/doc/_build/doctrees/test.doctree delete mode 100644 py/doc/_build/doctrees/why_py.doctree delete mode 100644 py/doc/_build/doctrees/xml.doctree delete mode 100644 py/doc/_build/html/.buildinfo delete mode 100644 py/doc/_build/html/_sources/bin.txt delete mode 100644 py/doc/_build/html/_sources/code.txt delete mode 100644 py/doc/_build/html/_sources/coding-style.txt delete mode 100644 py/doc/_build/html/_sources/contact.txt delete mode 100644 py/doc/_build/html/_sources/contents.txt delete mode 100644 py/doc/_build/html/_sources/download.txt delete mode 100644 py/doc/_build/html/_sources/execnet.txt delete mode 100644 py/doc/_build/html/_sources/future.txt delete mode 100644 py/doc/_build/html/_sources/impl-test.txt delete mode 100644 py/doc/_build/html/_sources/index.txt delete mode 100644 py/doc/_build/html/_sources/io.txt delete mode 100644 py/doc/_build/html/_sources/links.txt delete mode 100644 py/doc/_build/html/_sources/log.txt delete mode 100644 py/doc/_build/html/_sources/misc.txt delete mode 100644 py/doc/_build/html/_sources/path.txt delete mode 100644 py/doc/_build/html/_sources/release-0.9.0.txt delete mode 100644 py/doc/_build/html/_sources/release-0.9.2.txt delete mode 100644 py/doc/_build/html/_sources/release-1.0.0.txt delete mode 100644 py/doc/_build/html/_sources/releases.txt delete mode 100644 py/doc/_build/html/_sources/test-config.txt delete mode 100644 py/doc/_build/html/_sources/test-dist.txt delete mode 100644 py/doc/_build/html/_sources/test-examples.txt delete mode 100644 py/doc/_build/html/_sources/test-ext.txt delete mode 100644 py/doc/_build/html/_sources/test-features.txt delete mode 100644 py/doc/_build/html/_sources/test-plugins.txt delete mode 100644 py/doc/_build/html/_sources/test-quickstart.txt delete mode 100644 py/doc/_build/html/_sources/test.txt delete mode 100644 py/doc/_build/html/_sources/why_py.txt delete mode 100644 py/doc/_build/html/_sources/xml.txt delete mode 100644 py/doc/_build/html/_static/basic.css delete mode 100644 py/doc/_build/html/_static/default.css delete mode 100644 py/doc/_build/html/_static/doctools.js delete mode 100644 py/doc/_build/html/_static/file.png delete mode 100644 py/doc/_build/html/_static/jquery.js delete mode 100644 py/doc/_build/html/_static/minus.png delete mode 100644 py/doc/_build/html/_static/plus.png delete mode 100644 py/doc/_build/html/_static/pygments.css delete mode 100644 py/doc/_build/html/_static/searchtools.js delete mode 100644 py/doc/_build/html/bin.html delete mode 100644 py/doc/_build/html/code.html delete mode 100644 py/doc/_build/html/coding-style.html delete mode 100644 py/doc/_build/html/contact.html delete mode 100644 py/doc/_build/html/contents.html delete mode 100644 py/doc/_build/html/download.html delete mode 100644 py/doc/_build/html/execnet.html delete mode 100644 py/doc/_build/html/future.html delete mode 100644 py/doc/_build/html/genindex.html delete mode 100644 py/doc/_build/html/impl-test.html delete mode 100644 py/doc/_build/html/index.html delete mode 100644 py/doc/_build/html/io.html delete mode 100644 py/doc/_build/html/links.html delete mode 100644 py/doc/_build/html/log.html delete mode 100644 py/doc/_build/html/misc.html delete mode 100644 py/doc/_build/html/objects.inv delete mode 100644 py/doc/_build/html/path.html delete mode 100644 py/doc/_build/html/release-0.9.0.html delete mode 100644 py/doc/_build/html/release-0.9.2.html delete mode 100644 py/doc/_build/html/release-1.0.0.html delete mode 100644 py/doc/_build/html/releases.html delete mode 100644 py/doc/_build/html/search.html delete mode 100644 py/doc/_build/html/searchindex.js delete mode 100644 py/doc/_build/html/test-config.html delete mode 100644 py/doc/_build/html/test-dist.html delete mode 100644 py/doc/_build/html/test-examples.html delete mode 100644 py/doc/_build/html/test-ext.html delete mode 100644 py/doc/_build/html/test-features.html delete mode 100644 py/doc/_build/html/test-plugins.html delete mode 100644 py/doc/_build/html/test-quickstart.html delete mode 100644 py/doc/_build/html/test.html delete mode 100644 py/doc/_build/html/why_py.html delete mode 100644 py/doc/_build/html/xml.html diff --git a/py/doc/_build/doctrees/bin.doctree b/py/doc/_build/doctrees/bin.doctree deleted file mode 100644 index 6b0a19a7a04c566b19f5bb283a732e1e0cb49b53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15721 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 diff --git a/py/doc/_build/doctrees/coding-style.doctree b/py/doc/_build/doctrees/coding-style.doctree deleted file mode 100644 index 143ccfb0ccf8915fcdf17cb3d4a64c3affc107b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17693 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 N9g#@xV9vgd{{dqciy8m` diff --git a/py/doc/_build/doctrees/contact.doctree b/py/doc/_build/doctrees/contact.doctree deleted file mode 100644 index 8f66b60c9a745667f0dcd58578030ed85fd319af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15357 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 diff --git a/py/doc/_build/doctrees/contents.doctree b/py/doc/_build/doctrees/contents.doctree deleted file mode 100644 index 74b3a98090cd0de4fea490d4b499b676735a020d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4443 zcmZ`-2bdex5w_1)B>7H0AGUF&8-$Hd223*@Og#|I&j^E9uXf+*Ene;J%-i+pl59dk zqWBWhLwY4WAw8s$PI@6dAw40Lbkcif-by<8?#uVxx3_QJy#LM2KW}!PZXYN)Zs;Vj z=j+KJbfqrvuqlJM082v{NMTt?s}%{84DiP6uH!ZpE-xjKp?> z&4hI#-?ISLi-H};=+%>$!muHQjU|zDlZZ7nY^uQ#V#M)nt!Z>*4UQ7Iy6x;o4&>1_ zI7TdEuaB+4abhT2vbhGwCt}d|0tqKf4G>s|B`B!@MFBZ+Q9O3b7IC;Ggsmx@R8p(d zYBA{Au?^c6L}F5{Q4>ksPU{R67 z*I|jnX$LB8xTaDa zCe0Z&YelngZ5yu31k*{JpoHt&a6_d!N*c7S7c{o%c-EJ&yA7gJ&5_s*X97R8UD(rx z8!Ocz5)p^{HB{ShQ|1vz$aZ4b+lHH^7*?L^QjXs;Cq})%@e?{-o=+jE)!^2WI!|4o zE>gSHrRs8ZrMgO0)V1n*wOj2`Rkc@&T+?p3GNOQ3Qv-=Qp`tqJv5(1JaM0_C@5|Wo zJxzIHhfq(!S;+75J|%FOV_6cznGmL{OUa)t%x8o7RLrNxeBQ=1aAcc^&udX1>opcm-?rX@v3tZXS2N9)Qy_0hJ-ZB6-2ur-J=51rPB4K+D zumLmu5onbZm4(?99>r&Y0Ry#8t!IQs8-&L&Ldpn_WrW8u!tI$0biN+H_-sTnV9u=; z8C!rSgm6a+Pwaxv(%~5G*MKMSR_&4)A$6{$@MM#qG=hU-q#3%VjLcDWB#~oBraC@l zj%pa`+t{F_f2zr;Zdl+>w)1Ih@zX`#loJE-j0y+jne5K9*okNNoOsTn9FWaO+1k?u zcy0)HrSQDWezNrWCMYjployIY_7PrW^Ik9JU0=e$FHIMklO6oy=P6L_VmGE``|)+plq?i5}{EBZL6ICMCF^*raw5d9is(QDbF*Rdh5 zXG7k=hP<(#=rrO4KJwn%Bkz6l}Pr9=a`av*^kc~O1_Z77ip!T2UGYq1CK2P zhVKyW16^jmYcRjZnBQm2A28+*8S_URiw*42j}0>qrSKDu1uuWF%gj&vnE6?cnV-)y z^NT~7`6V;Mg+22U9_HC^ z=R7xS1F=YB>IBF7jn%lqEFI^iV_iEk3s;gX#R;Anr#j-HbYd&3o*EA`%U1DZPRlr^ z;;nHt4g1RCG@6FRE$p%Vgt}o|L-QdXPR|tAvaXou#?#`a&3w*r9nFxPhtYl^y3`VL z>6d{+%?z%mxr!LYX@?e2dz_$;8%QQLs5p*xmdkM%Qupo2czQC#Mp?y8zlVg(L?A7Q|Yn);^5a>6Ee?i!CY(lKhz`fNOk5r??Nn#H5}eayFm zMnauBEp#Ow!?FPx;IaIYr(Tg-FS{AxaWrNJ3`v$R4@e(3lZ^V%QF4`T0)a^dJl-f4 zlHj>YYO<@v8N&NrtCmCp%jih$B%!4sa znM1v-)#8JP+et?Ju5goPWc89+dz%17e<6@jRWOhr}>7jniHO&oGdN zeaiC#p7!Dp@k}FK?NH;n-;zz+^DS!Vk#1#_FlW)^L9vNkZT1Sod_q||;=t}Cr8%)o z1_$tL1C}`+X_>g>Wz)xVjCfqOqL5PBqgxdQwy*JABcI^t(IwF^+=Bvr9n3fbC}8a2Ep~+ zgr--MZz5?Wsf*PMze47>0o==rmY7R2-c0W)-a=0?amcR{+1IdUrf;PuwF)Kbz|o?2 z{!-&U79LweoBtnO!#e%%{tkc+3)j-O99@3fTti9!6Or%MevQ*4s9}SiVwiKs)u?EY KqQ{!`$^QYq3Ema} diff --git a/py/doc/_build/doctrees/download.doctree b/py/doc/_build/doctrees/download.doctree deleted file mode 100644 index a98ecdfbb7647f507773ca4da7a31f2a900efe13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19594 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 diff --git a/py/doc/_build/doctrees/environment.pickle b/py/doc/_build/doctrees/environment.pickle deleted file mode 100644 index eb18eb1c997dd0f28f3a76a21aa373ac2eedbee5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120247 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 MtkpZG1|_rp1LtK9C;$Ke diff --git a/py/doc/_build/doctrees/execnet.doctree b/py/doc/_build/doctrees/execnet.doctree deleted file mode 100644 index 54489c18d423785734424322185c092e2c55b962..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35548 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 diff --git a/py/doc/_build/doctrees/index.doctree b/py/doc/_build/doctrees/index.doctree deleted file mode 100644 index faf69617478e1d91402c6df93ce1adc6b8cf97f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15907 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 diff --git a/py/doc/_build/doctrees/log.doctree b/py/doc/_build/doctrees/log.doctree deleted file mode 100644 index 823abf229929cdc01f4b9cdaf6ececf6f0a3e4d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47901 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 WQ*`T`NICRWa&-v0w=uC7r4 diff --git a/py/doc/_build/doctrees/misc.doctree b/py/doc/_build/doctrees/misc.doctree deleted file mode 100644 index e380f09d603b1ef3f2c3f033a447be2bbe137b54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47143 zcmeI52YlRh{r}78y3$hihNFz8rAgT%VU#IQDXRxzG|44*>D@KC%YE*yX}~W6in5fY zh=NR!y*DCDL=;dNDgrL13zZ>5RQ}J``}6(YNL#3dACAYrkMv%j{T`n^zsD}y)RQXo zRLa@DQcJ#&N|$1?_NVjZSaF#`aoM1_TvK9fKG~lx4-KSC#pQ$I$fow#h!G3CnEC)pPtNR~6j(X-k&B3v@wUvTO8 z+;l$e@S2}Z55^053lcAM=h8jpQgO`8W!gs*wlq{yTE(&0*Th~+trX8B=cnUQfY_|| zt?y_IqWwz><2 zdBqhVx2?!m1{5ydTX6Agp76<@au!|(v*nCPm(%@mDKA^jrc2Yiv-zaMP#iz2ePd#m zGwHZX_a)2O`RVD&?oy!-K0?y*f%HK0R$FdgoB*k*1nzN#QmJ`hsGK4F`Ds@Yot{EJ zn#*>J!caVu?i;|PxZ&oR?<(S&5Y;NpGQ0RvGL>^R8UnVCFK3 z(W*V!RH+ybiW@d%MkQhcL(NgunUoowh=&!YIhk*+Rh(uk>djVhHp+}iY?N$PwP_Bk zO|z;^b0Kd5nxks7ab|2{bW|la$;1+C)>0`otHLx#zME#oCAJW&&D0iBEsK0(ZE40^ zuJx5=a%P3ZIA2wot*SI-#wWH7>q#^9q`9u1G^?J7BK4%XT2Gp*^<+wBLSkbIS#wlN znxk40(rk`u$<)k>iK+Efq&ci2%?(wgIjSO?WhN$8RLba@3es#9WLjpW#AadjXqIPG zJ;G|&999pBP{6I&oLM=sVpus)w67d3nN<>NT5Q#fW~&*^)tWIqvua|kuwFFRN=?Sc=uyrLdrYDo_OHsUw+sr9$yHJ-0|9Xr#LgSX0no4zAu|k7e6_3Ig$)JyyAYD zWi!Y>t7#zx&`9*9W5xXo#RG!kflZlKYu@);l7{A>Oj~CA%#N9zGCLzXpCqZAa&QpdbZ z$G=Rv0_m*R$MEq`H!bMA&SHg@GFF^lC=Le21(B{oZWH6`0u_g(xTB2qqs98C#Cjms zj}hyihV@yI#*SSmcd1Fqxh^@7i4~746ps&zpOGr_sPfRH%hNHo#%E`;)qX9Gk(O{s zLmnG?rRe48_RV}Oxjh?Znz6VLYAxT#WN zh*EATeioGsQfS9kIVzqY$v$V2eO{8CD9KKeWG73qQ zL4eZ`;CRbZE9PkP^q_c#w7JYOBS!4nE15M=v|*%LCzNC3I@)%|Mj9r>lkx6sd71_5 z&(6)1g1g&~+m0{%hdLqu3B@ssr8DWcqIwZ7I)bAwpw_KR}t_6 z3N)2+bV#~*wOVj8s&t;nAY`Tw9Yb{#_ehp}|M&&+h#_1zE@Z}jS}bw1Yh-DEj- zvvTYf<=CytvD-4!tn0fyGts)fRiZj^hwu9C42s`UHmpuI%%5w%BgG%6NIq>icc$e4-NAEy>vzuCSIDO$NL%j z(LN8-!cB{()x&icQbV-QG=x2cJPlhVt(H^06)hlBDw{V)19~;yHqq@)_auFfrk*nC z`^rkmRwk_P)9}3|ws&DrM5ZZ8X0r61wBga@UoCxJb6YjVVaHJD?PX|7g0$djRkhjx z^e6MgizeNE%wMuzrBEr;NEa(vr#5+#uho-cgk^5T*ttZ5zZa_v=>;^neY;dnCWm4oMl;tR^I?*E@%A47H(U!>~%e^q}RHKX_v731fN9{-0u zZKnDj`TWtzk$}9|~HT`TEP(|&eqBcz_{=Qb-65|`vDgHq%@E@5- zFX-=UEwQwaF20f&!yug*^Za!2PpXH1R*n3NCSb3sg1)9|`MRp*x>2=!!>Z+9gW{X; zqY*q z9K&SXyt>nKvw2NKXs~86DZ&vSR*Is8ebdGah1N_>Gu_`J+vYBYqVuz?(b3e>(v{*a z%i!0q(oL=8X|+=^pVm~h$*d*!x5W3eWfYBXeXM99m!W$mowxBfOSCZGHx$dKHQmV& zt@utYCoe8l!0(AZL!A-AfC zbbQD}R#PHgf5V6JwldSn;t`Xnd`~*&Rwr!1t-){L*5p^2t_AJImS(q>Qb*luTWHk1 zjvP?;x`LG7UwqQfnO=x|H0s>7|Yn4nu@2;4Si^*U7TXlPU1 zw)mns@#Hl(CSuoZXKt3#_80@V1HWQx zO{}iYY4M~V=c>VtC%YjSt5VW1G_UcsUlvLBcW38Tw4oKMQiG}4)o9hew3%`GTo$9? znSH!y`%DWN5TVbp$$&bZZfN!NWK-H((k7C|%}f${)rHvLJKTh{HDG8p9m>Kz(+p#2 zpi+*pYLaEEvWv>yVyiS+2u7QPHdheUY4Psz;Iw!@+nmxlBk|3zJn+ zZhySgY#bmeiRG2g?m)~RybBu^V0RFq6QfA6;(G|osxcc>gWXk=0ZZ19y%ip63t=bx6VCh>za7!_w>Y>9v0sA^s<-rt6Zh9sffDB_&X`8nIsEG}jB9 z)>NQuh`DS=rbB`pWiFsXZ>=+e$Ygsm@d9bO!7LL}o5Hb|)tBwbmczN8j&f)RChK%Yq`D(c zzuvfh24AHLgAO}L!;u4>O=2i&YjA1f&rg9h{PA<(zU(|!$=oSk2X*`Np?z=M!>@~>As8~wPjIWXUnTC zr`!lN%+te-E0^$S3?8ls_A<3i9% z+C>-wcd=Q0t5I7Bc9$r0TTa|GHXGltSeN=(?f0nJ&_Rs<-ooL&DN#HACq%hSqC~~X z+Siv0?sChqE5aOGi5v^}pGx!dEj@i%hS=^(AF-}}Xf?}SWszRVXzj{ftuPd@YlIZM zYlRfN>x2}v>p|6#t)e<|0}fWwZp09{o6Kq@Ef>-gYqd7%W(#(U57w@MUs#iJl~P$N zTWXi`NlxBj(gN48t=(|L)>g)2*3WWGsHG-lR~NhBwJC;e*;ev>+6K^chLyT-?J8`_ zG+W|iVV_GUQ$w^xvmqbu71Wx+=onj>4f}E-R&5Sx80Q(Ew18|xhtU_&s*<`UI83Q^ z$||3Ns+QRf7`DPz-FUF(ls1q}iF9A8&`;c^Y_FDKNN0-XU-OwZ(N5Cp4r_~B+^r~; z0#cXH)(+lgIwwzWmp^%WhmgF!Q%K%_OGqBy1uBoXiSqc{IQVw(ZcKr@M|K*nwpu&5 zG`Z*QB^@f|hfU@_CDWEu$qL)o`!NRYJN$~x)nIdxCB;3Um{fu9T1Zs$pd3)m_k^hC zAt9>yz7W;?08~3GT54w>2Ceizf+28^n$@?ns)K&Rt*&&sA1Y#7P7F3Sxj(W5e(V!y zKaR-%_HyhVgB$YaKZBXa#Y{skKY>f&p5%AYz35LAgWUb8g&=o-CI@o&DIvN0b0N9= zw2<6=2CUEBXR%xE{sKebereW)deL9u3}fP^F-w1Kv3}!YwL4|0^`akZWAL1~>-cw3 ze_qt1OpBJfUNF7980tl%i>XsoMkAWlYXJIhLNgIE73Kwk?t8KO;K?}8}@x#)k zX%Z)aYQ#Gj0{1tw`Wm5KwfDJ!i~caxE0Lmb*7PjL(z5P@kL2utg$hfV3Ak!k!_Ko zTFBi*Me?VPYK|+((dS$!?aG$KDq#{@J+SKGR#iwOT+MutaCJE#;Tl3DTvLdIYYCBX zZLnU#b+DU+>tYDpdS>+!qU#auup!!w0U! z?38ZZvQhnPxMj0zbjxPXhFdoKSX*dru30qNa^kvv6{N+Ih0W>mfX&T?u(^d0Hn$W~ zShfPywpAJ28V4&a+h7RXwq|Y38J&)$W^+4|flbLwIa7&e0c3llu!E=2K8eB@PBuz( zFx4Sp`(cOEWpKbV>;p9Gpk|mWBkfd$t1Wml+o;nEG3bKAnMSmAtuvd0@ydWURV+fI ze$^H2!*U4sV$vKQO8NU#zT-*e?I2PzWyeC9WN02#Js8y0)!E7Jh|bk_c0wAq%7van zpEgw3`KJ@pIVNq|594uwbM|<+LS=4-=}E&%i}kd2I(E=g=MEXmD6L+Tbs28chc?q9 z8NQ?Z$?%y89oD4hVK!T$X#*p(}&$K1#WlQDUrIoRhJ)b58SDp!=3k( zb6ZY%88&2lVPunqUnMhvWE%6*?X4&?0=JI^f#-eY0M9dp@cc<3Jntuj=UJdyG!aoh zw?AlQ^Z*QjJJ77YMTy$+FA zgUp9oa_wPqx?&d=QFoZaBJAPjhpfZnJt} zmxB%!!S&zQNQ`krJ z9LzoD{M>!^pBA4S87EJR=BklPOJtbhuJvRl3GDh=##U*sGZNt{?e+3R^EU{|ksF2N z$W20W;AT)=@XV+Sz6A%%f?F{J?l!Yp7UV*D5(Jfp1EwGWSU zQB?{99-SG9bw`)5wP>qtOl?qc4BXubqhw8;&TPo?E#n{k+$DeX^KBt|yIV+!y+??? z?ggc<{UUwchl3xo+>eQ+MA>P1yFV69xCbCdLH(GheOJ`la?0~?fb}58z3&(D%ba^!TR#G=c>Wke;2txpZz1$} zKv@j;fSA&_8`G&~2Ha?jvkr*3MMA~DLd z=AOk*`SlBNl{=VeQEoOr%AsG%Yid%N_A435%wG%1%-;yfyyt`yY|?pPR9~LQ%{Ke3 zUEHqVUce!6FY=4nHpvYy)7t%1_mX*#_{$iS_-};}{hbg#elMJ2liWYZINs>Zj_Can zH$TaJ1ykVuBs==m+YbjX)!Ps5&mzNgUEteY-DP!uv6SKTRe8YaYeG1ET?nUd2vN&l zLA4=O9^b^l3iVqU0{6CATXROIuatgSht)6qzK6n^k3 z?m}MY7u;xzHpWL&;Rv-pE3iJfXRYEQwJ*uv-;dJ9T2jRFPW^o5-&&gsnA% zu(hTTHr4{wo=GsZXKRBCFW-uRPA>HH$J{yuD7ba`Ww}g&DZARHYW10>t7p?0>*-C6 z>0NGpLP#weSV-u{>h>lOLW$2PgZ8m_(BD^%(4Q%U{wIad-%kkrS)elL zFe!3>ES5nBU|>DNtgSgqAE6F1JBc2QL5a>5l4wFmqK61c^iWVjNd~3c4q65shJhsr zv-%9uj8Pd>)1o^M;B)xD+R&S$p%zFt%mAPGf!6*=ECxora1P^4tlmrHwXPtW0%HF2yH@Z@M&1 znH<+yrb0^Vcy>@Bmf}u%PnmtGTI%-v%212zL;w=}Rz|t7D!@&7TvwA&iCyi-> zS{q-#+==+Yrg&>q@JSZ=WFOgXCM|tcJViwO^`@myN0vI&R4xK=q2TX2zNo>t;xjIR>w2<(p%6XWCjMP1^JE&27cm9PGfR z4`+=i=c%}E*vx-ju?R2r*+WBGe$tSn#hvC^9^M35|jSf?uuNmj(dd}-cwR%Fx z&w9=?Kh*Pe3{ubeLez7C5cOOroNlw8i)38IW<9-;k}k&0&w4Jw6u585P6MYovU;4- zBA$G6mnxyQoVcr>*L>6B!pmjyfS1dK@N$I^Ual09Rab$^swx*(<6v2J4Tiv7Yu47B z(dl@9Uali7yomcyZH2%E>*H}OuIQ(Db1BIh^P)MX`WEwlrOK5 zShG~uSh+Wdgd}3zx5qa35u1Otz2+!{b;q7lAyj52{-on`1G>Z-F6jTbeaYzvClN$yOwY_Qm~h?Qd-qxA7G1VmWzi zFJzd?ZQ&vs19{Y)W?txUg?`HhTSy8W3*AT$Q6}zc$;0Mua)iy@g|NAY5H|M| z!scF}GSMj$KY_(Eac>Nq`!Q>4&eHGrNLbyMBwg*osw42v@jVy47@tYZ&lSCylMQ^IP!!0Ga zIzpasb)*n(=Lq4x!vbuY*(5DqJIxl$j7^Kj1>!NW#vYlm{=u}9Zqywcp*+)0bd3+i}oClXIoAZg~Pfc#=tp#m82im)nq9t zJnAo-Kg?I;0Q2*OFh3}S`2|9l9|AS369w^p6lm4rXbc<-GHY#E7gBP8g16)mOuvv*q~1p2J<|CIqbPJJq%~dsCfqBUH(S= zBHkhI>SXysFSUhhsd^-{F)=Mnl!o#>9Bs_|w}^ZTsc``dv3|r=Yc#{*KinmC;*pWV zppNnHdcZ!Mcs$n2Usq;q3UHhWjoOcwKWhJs5Ve0+h}usOqV~^$DlCt?quetad` zoiC33bE_XC)eA&5Dmd1Du*Ptq>EWVK51XS%#*VtK88$vmtSoRIYI1neLF<&Ifpl_S zOFmtmPB@kvF81lxRZm-TxWv*7mmI#KFy!*3LUQ?=LUQ>sA-Q}xs499)R7J1A!7}Pf z3|xXWtL1hsq$ke9{A88tY72Ia59Z%xvy<9gU0xoR8aUUTv~G#98Rwz~SdwBhhjFu} zgY;4J^8^Z4vh<93EZoqkdyb7OuMF?PMl(EXrIENbhIZhoaS9aURbidV3a^w!uNT|V zI9kk--j22xfvR&OYfvG=J*p%lM;Od!`RqdYX^E~S_{K+9XN$WQJ&@IPSz;~bb*3KF zf4%%s{|!R2%)Jg^uj*;*O=QkBH<-S*ZoGRT5qmh3;#h9>##S9K9Hh4 zJog;IR0f|HQYK#zQdVCSQdVCQQZ`=(t@r*d1}l`m!@!E5S$&~gQr7-J9MmU;)%x*2 zT5_-W@6wg( zL-FYaoDI^@wX61x5j{{)_u(Ce#C#5kVYR-e!(^&Z(!SpiT>~dq7MZhLHUDs}Q}v3911YWGh9)(XFp zsvE$*r&PkiKZ1LdHh`_ArfXz%8RwQEh%fR}QAXX7&c2~ivRrU2ec4J&DLws|q^2kN z)bs%!vd(Wa-7QN*DSbI1nXtT&%o!;pb4CftjM1P~f-xAZ5{$(VxR_aeCD0JI#^SKD z<;D>bl}SmpqQ8PAGTtX*2NsvE1iA@I-5+^e$`n@g{DoPnlV%f*xs^iZw1v`8(A~<4 zF@uF#3xU#Bl>gWMS5%hr#-=5i{Cal8iNhpG4(n(sqZtW#Pp2vT~bky>Zmfj$yQ4HTc zDfHPXDxFE#vSn)xW?_qi4bf1R$$}n-^nwig-kCr!9fTGQXom+sQ|3znduk-9^srEJ-{57bMw5l2pr5I69nR`L%19Uv{x@ zp-Sdg2cU>K;ypLwRWnwz#+zuSw@ zDx{wfQfT)UQkeG3U*-Vw5TmR61N)5bFguImR~g;I%s1o zFLq%I0qO=Ti+M;jTy5(l)m-(?$s&a85?K>67p=@Cams9NLUqfCP(4C~N(m7vEnL-v zIz1Aq7q^;FbFpz^m0t-pGZLyc)EPD!YZU5(MqpXeeP6M1BJ9PAMr-qM%4}g`^~s1> z{X)db3lXazT+PHfBNA%>x0+Z*Y-|khE3tNu#9D$GR%5YioK=-b?|sE7i=Y=Lnt@et z%4}@n%$E^y28D>TK!`X)!Z9Y!nUOe0;Z_spXl(31@GEh2OUH`du!>pBo5eN_0ZF{C z1jmSmmmq3JK8;hR#UwaZMkF{+hy=$Ak>E2zJ_O1@;H*f3&*E0wQab@#;6BGM5-jp` z-{;Mb#81Sa#7`2^e4Q+$5}zX6$WHg2D&uIQcXmYY3%D`xV9V=^m{=y49c{(Y)(3r} z*PX5e+j8Qve%tE|O9P(Hlm|SWC4{Fh3E}C>LKJW|DCw)*d<6$ zmW-#b5eJ?mP1ww`j(V;ocb-qK{cFg!*CIbZ%&3%)?v&H+HQ5>ZbGavuqCOBR%o?eBamJ1NYyld;LLpkcNQhQ17NXTlKxy@yD38B^gCAU8 ziix|>vXjUAfAo5AmytFjm;Z~TFIUoB(*~&HnvPw8F>qJ%D{*xFEXoIWl>*NQ+|}lZ z)~=BQTDw+=)~*wxwd;jw?FLX|QYEi3>5ZTj#hWk$?q;+4-ktgC2xYgsMPb`=Vxw_D zdaK2`&Btlqjqo47V7S{wt>dFg?GB|DX*1e4xzqUmR>-%uy&I0VYx_ivLepfwM{<`> zqpqad9?7>Yez-?+x5A+BdxYe}y+ZQgJ|TL)A5>{QFDk9y!NC;&00!2(&1#Czh4jQ_ zt!_VP!M^8%*yTTwZyJ?bK{dO1US@iT=A8*}8pFDAVHiu;y-rsC*Z=cfQ9zr@Yt4`6@ zBz)h5MyWrLKT3UAh_W9MQn()#qU0ZfQu6tcl7EDQZxVitiObKjQ-`!_xdiHSj}xA< zxTL|KP;jnH17X#D5+kQn`4w56U8&C!_ftif5xAdO03>`$4oLWOArd|MIhezP|vi6#WuI;C^LRUwze1M7i&Nt?+F*vC~+Ee`E2U^YQ%CXHhwE&nr^+^jX#M z1vxgz_@X88QkX>jZph0Di+H~^Kg9c;91!pKLd5%n5b^#fM7&qPdhz~*-NgGd2JQ=+ z)r+?r;%PVJRovi5Of*XNnniitM`@o(@Zlxiy`i`ri}w4g{Hk*1R%dmn;NG+}-wM;z zQdPCqxVIGnVc#)dg#DWw5cXXm!v0-|u>TMu>_5SJVc)}U!j53WD{#y3OQB&n)X^R; z52#Uc%i<1WV#Nf`Z47HFZhYuqIg7cxkJ&y1fB(M9JW_mi{F|8=<(1`YWVG%#+O#w# z)Y4OEX|}#nIM2SC$UVaXEt0+%&V51JMJ>bWT}!RLMSH(Vc7OSpN{Y6WCbef?+I4ls zqHSQ>L%rNl;+h3_qy1yV=_Esx=RMLrm9hp*w3d4{w2-|q?Kj)%Tz@nevwdtG zeNN6#X8UZMr9f&*!te1ayiyAZ8DWl`$PZ?c7NEsb3 zq>N4wQbtz<)uLV!wWt$u@Ga^}n7HOGJ5AdTA4ZFA6;h$Be7HnbRU+II2g25OHH?8< zonNu&*Ym3R<3~_^uCHwc7wg;NoVj zRoIY{+fc#Va$=^jg_>m1HuBNh&q9O$fn~^TEcQG8W7*q8>_xdA4e&NK%}x$A`#hRW zrF-N3Lv$ET15;XKasEx3G%0RbgjBihg`3%Qeg_#>wCVhf5mT+W`RRNcroineJ5^kJfV;awsni_qfE*Hj z>O#$VvYhSC+NWW;>A={v-=~ zN1FYFNHa@_H2VvY<^WLA+#G57Kpae(gD?c{V6(R7jLxv9NM_>)ui`G`m8VD&7VQup z&6agMZ`G$r4mB@W)4?OLc9;;>4j01O5kgoy5`?wtrJOm~qgzTHm;=`-m*}~XF7vM5 zNwQ}~lDH}9ZXqOlgpf=LA&~~vxQl5u?!933O43{`EQHF5Qf8O1>mC#Fg^RaDvWhz+ za5)PIk$G}}NS_em{X*o*3n5wnMN~3~=m2QhT*SZwPE?98f06}-`IF@U^QQ=5{!}5%e?bWIUj*xwej0XD`so+~cZOLP zeln&?(w#{NWDti@cARCAApRveLj21@h@UNl_*aAwKL=EH+$Obs6^muZ*DwU`T(h?3 zEPW(8&+H`nbqq@Md?ATmASBTXg(P|rD2XJ1(!Ch8?6?F2SDDS~vqOU*vLh14U8*SD zUx z(&u!wSItp%9{TY6A6y_!YEQ?m`T4!;(8G4txr@gBIv3Fat7fxE%1tvRF9@$ZoEMmQi>r0G!a^r<%) zb2oeD>YCHq9r#y>D4fe^*?I~G&0-v7)BS0i%Mm^LTn&|`n;9t6Mb#g^-l=(Be>~ZvVNO(WB3jHS zt1I>jr(fe@<*jV6Qa_mgsAlALR9)RsJyy6Dk;z4KuKY7 z`dLi8b|?GdO3E+sR15tp3k11e%K>t~5kl@cA>^JHLhc1nIVhzo2VVp&2VcSvxR=ek zs2u#QB5=wOsOF$W{GCPoy^q*_F4^~=oLzsA7#;udZ2nPf`dkY4@)-2JVw(Pw*R-`# zzSLC*eSbDDO2JVN8uY!1IdE^uB^va-ZQhN8 zzISj_(ti^|@?9Y$|1N~YKR^{UF|C63Pp~@Zdk;(CMzHp#lC34URG~-5x7;#VRG^nN zKhj-J4y3!h5PBnph%!nDozbA^h;7jsgWZ~yu^2c@Xx7%8rQ4Ph;b>qn&b%P80tS&7 zFNDMdAtY85LSiDQDte#NUkQtq`;{?pPS31i`hGPr5@l7qU`%{iPs0thVFR(%EQ!^9 z5;o%~43s$xTS~h%6d66NX`V2-mKY4v6-bY&8K1aA8H37T(hF1iWc*R&*^f2&&`GKxrGouw-mzXR$#pp48k;ptzhk&G zGw_9~SXqoRcC}P?^QqXrK{>skJm``GF}J&7ql-Pv7e@D#1B~t^gwan3VRUaHjP3*0 z>tbK*ri+;v_)fA}{my4Z#qEb9EQ*gvF|#Zj^!Aq{^bQb0??55+4iZA|U{H#AK#G}- z#T1jk5V%9k+M2WUeHp3JJQP1@imPF2S$LGJ27?Q~J~ew!PX`?RT2tM=7%RyB8xfl5tZ3<3D)T2<0lUXCy@lY;7@fu%kFF*X6Q=vP@vak-IYU_`o zGn;}eOos!HXa!1($vQl0!||5b!T!z@-`dbq)OKH9V-9xl?7=)<+|!|WKeT{wa(*G3 zVmzKzZ zU^Mbb;@}scyD{-;VA*M(SEqemw1!=ZAatki6C$k;Z8_yxxOCi$F>rJFRpS1m0K>Du zWfW~j;IbABX>xKvnt4K`=@TMNzYuBipbEMOsq7U%D|-VN0#`JvAK2)L$3}wADOOuf ztWo?Z_0bD4C5v75vD?`g8ewI~RTQD4&SAbB8sr?bs0+fV8xr*cOP(82Du{iQ#X{_( z<$&0q5+ZgWMC@aPi2Z4>UhHGBo7l%;2;A{z^?C|X1|@ufkc2N3 zlJG@B622HzjgSy(2rdDwMtlQ9;4U?*uMvI$ttFJneN!J($x#m9B5ok`D8s4jz zTlKA*aAq8K8zEskvJwj)JE+c`?ehgLP0Lqz%ZHZ=SYo0Zs?DTrT6=}pMP2sVwDw9< z0J(6L{Kb0LHnMN zg7%P*g7$rof?b_D{{VY5b$%Fg;2x1nG0e{1OAJN@i`%S-Ko?QmF93^TW)0K#r=e=X{0>i86DQP5tD3{6&%d`s{@@d_=`&x+W*Ix3a(`50H1Udg z!segk0Godn!scIuu=%PGHeUnlHSs!j)5IGXc;n8jtvO4#Ehoy6Cf+nJNW3LSNW3kC z#5+Pr{7ndncR^|5acSc3SWFZDz`&^u8Vgv`$IMu|j$^=Us zd_=)Fq7V`*fl|X0Qp3tvObx4G2;8b>4b%5;CWMl#h7U>*8;eoG z>XyP9J_UQ6ayJfW?zx~RJy2%;U0yovH zVfy~H%|?MXBLFH9H;YlpG)t)2CuAq8OMGupb71BHN2T+!HTlh=G)GVMEIivyVc*7Q zB6*29IvF*McjL{MIHj1M22Y8(7V&^mryC6<-dqkyyoC^nw-h4rRzf7+8mw39HrP$6 z+hPdZc4lpDpQSSVk@D)cCu!6rokaPxgHeO)Ryo3Tn-H#d6vFjRLb%=;R6hMg`Lqib z%cmI_0=KJKTXU9v$NvTAyFmfYrJ-RNz3|$|?#9y|o+o>Yclgk~rJ)qr^DlOeu_wrtbl_VjEF9}@0mv{2$F@;AyYxedPIb_-#3HOlDA$qLqTfEuABLI{vsX2NnI32}deYc-*(@ zI7g12p>SoS!;lkk_r>oUc4DF#9(Ed)Y$%K@Q#gb1AyB6M1a(7j;2&~vey&>0LY zu9(#et&v2PmdoJ-Z(^uX%6S&C&qr)ug-DAkD*cMyu~_fCyd%l|9M}IQHEc?Z({lnP z${)iTS0L=H#Q5Gqq0Dvfv>pH~xd9wm)8RKU1_#>>cg`G3{5E~S%LZk_aIAx0dpaPw z$h)8OEzqC>&0yUpxx`O}EU<_}il{d^lI#Q1DYlsFIji8tU&Z^mRtsD!F4U%%}NHtdy*j3z3i4%SYA_f_hob6XVzZ(yR$LcE#0qR zurBHx3|uKQt18V5URyH@+?)9f`eA?UU8_L{v8GV#}bowm}%=yh~ zI<*&B7FKKBt>;Cm_S;IhEhir9Rh#pwOsnnD&H=5|-2|DH7?VwP^6Y~vyL+(DTqeQi z-)dE^A{_ndk|~g zC&L)f@kB;G6+0x^SK*UC?tAzb+(Z2GFulSiR<73l?qttAm9LWf0Y31#3iS9cP$$=u zNF&X?C93Pg_{~bJ;Cg#Hb=jq};`-bpxFyyJuUD4~g}zctHeK#*;S&7xOu4^rx_eY1 z#!~xx(jw!2=qXH~8I!2G63MA0_ajSu0z1ChfldyI=(=Oc{n%W`^NnywMm#>I6i4Fk zhTP*akMB$7=T>M^h{!7(PsnZAblyEF!`PIb+%6~k2i#AvO90EHPTx}e6t|f)S%|8a zi>yI&KeK?b4B!3?gFU5S%O}Q%{Ppq8R+#>|!etJgl~`9Dlj}s3LWZNBU9<_%3SxXQc6rr_jjjNWQKSNIg?J8-7j!IDY2gah{@v8 z|D_TdCDwY%?pLym=gvf#Wq{5F>NVZ3aU)k(OjY^^I;#zF$^8a*`cgK!viaUZ82C9K zcmfZL>WLG$;fQs=d)~sXrfkzg&C2~wT4-HdOS>2FOpH;_w8`dMr`(IOuEb+dWflK& zr4(xMB_%yFF-n_Q*}3jzOVaY3(mg+0%5opX{nlJp>**^b=XIueF}1Ig)ls$=r19V3 zd17KcMD4G3YPDk2X-DAP?+J8LVmU6(x<6QAUhsiZx{^Z5{yz6dbDrp*pX#(DZ~0_j z$-QFkD@%K9IG3|!1obNXlchP%cOdH6=D9yx;0dY^bp`n^=DOmr9CNSYoETXt_cm|u zUXz(84=b+6*P_>bO4&SLs;OqOd!sJOUu9mgGnFmrcoOB@6!@ma8%rz0fjy2wxwjNd z)h*fGIhalH0NLBP%p8-L&{#m-I|?{5S?bAV-QQ#$-5K_c?_$gBlo;!uF;j;89hX^& z308P&s``hyuAuTzZ4LgZlr~uOV+*PD{OJTPO?U4p)Vhtr4y!RE7=7lfB=dpJa-p*( z;WGFnmgT+WWo4M4J=(flS`NpP66^R{%JD91MbJb!)7cZ&+2sjBnGaQHWx3==;>hBM zl3d+NH+KTkPJ3LTY(i5)?R>uIV$kE0CtI9;jyc$?ZjE(x6l3N`I fo~+_GF-j#DRji4H#Tb4wo3IuG+AG>g7;E`|DE&+O diff --git a/py/doc/_build/doctrees/path.doctree b/py/doc/_build/doctrees/path.doctree deleted file mode 100644 index cc062e43d18b0e1e6bd3a9b3a865ff95d824c4bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33250 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 Wxg5XtZ5O_!?)ve>?s%mf&;2jf`_}9L diff --git a/py/doc/_build/doctrees/release-0.9.0.doctree b/py/doc/_build/doctrees/release-0.9.0.doctree deleted file mode 100644 index 84a1f96c491c03029cf960def19fc028c2c23001..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2868 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 Qc~@H6lKx%bfAW6kzavlyegFUf diff --git a/py/doc/_build/doctrees/test-config.doctree b/py/doc/_build/doctrees/test-config.doctree deleted file mode 100644 index 22467cc0ecfe9ad83b4a1296ccc6887a663e6114..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6344 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 diff --git a/py/doc/_build/doctrees/test-dist.doctree b/py/doc/_build/doctrees/test-dist.doctree deleted file mode 100644 index 3fc148b4a67888ba5a6db1a713a9ed1a5f69c908..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22379 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 diff --git a/py/doc/_build/doctrees/test-features.doctree b/py/doc/_build/doctrees/test-features.doctree deleted file mode 100644 index 3346b0420ec8c5f3bba6127ff70f49308cbb93b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52493 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 O6l-C7e!5cWX!(D}+rdEq diff --git a/py/doc/_build/doctrees/test-plugins.doctree b/py/doc/_build/doctrees/test-plugins.doctree deleted file mode 100644 index 11392e7602fbf912c7549b100ea27cef0123905e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15093 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

M@sh{~grXs02{7r{R6) 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 BR3ZQX diff --git a/py/doc/_build/doctrees/test.doctree b/py/doc/_build/doctrees/test.doctree deleted file mode 100644 index 8b8144372b017e11d336ba12953c299e57a44642..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8739 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

`Liq26@IOTU z9}~h`A(B4q%e`Rlzc`A2)smH&6jT0vk^eU`_FOQQp3MPF z=fOHW9g6>VM>{#mgh|IhO~KR!-@u_&sHw;}2Iqe@jmZtW)pWv*yVVTBf!%5*;XIkS zSH|P9nuRj$3#i#hMrsazwGy?bXRaAlmpnkTDJ0nJTtaj=j}RElC+wz!pcXK>KzcHg zo))4^+yu1!Lw3ZSAtwRWb)}e&J=`cV} zMJ4-mAC-QHDh>Kha0nl zjD>Kr9Uf+kP_H1d+@nk31}Tg^Eq9~P2txW52wq_sI6_|l@xmGxhX_(O2L{wCjX?)v zI3p`VdIw`x^EnvPO$f%UAp~QNBm`rQ0wiO)6GB_=7CuXu&gl-h#&o;nG?kvbW_ zB!Kxi1T znRNHr@UKs^n%(RAq-y+BLTu@79SW8(cG(((SFSvSeX3Q2C-Fl3%7I!RckZXula7_Ljzm0Jr95SndZ%KSg5?Av zAEN1@gQY+#z#%IN3_?3le*&Enzfk8&GeGk^J_njR34#7DLXcw;0`2nwiS~vB?F&#K zXb&L~sS73BGt>=(dtiLjMW_ywdXTj*X6@cGDc5``YqNM93L>=|zch`nb~UOyDg-f{rN-qf$FZ0cuc_tQ4?dcW-+K&>aWtD6tDsK;yS z+bUX4bTUWE%T&a2qJG1y4Eb4vkZYb0axD--jzvJqabqG!8wDcA5)zRbk*rp~xMOm; zt$vPFb9J?$A@KZ+8kXY>rZL(xVAQ=JS>htDBzuKe(IUhudm$Na)G*wZ8nv4U_ZG47 z(pjm!HIY?ibh00v9hJU8TZPX-Ta^$r*9f7r9wBJ01CrKF39UW~gjR(_qyowIl%=1+ z|65u@^aWbTy*4i!g2tFeV`whmIl@aU=nd}3_0gc$!ngw)L4r8sY{X+)275q=R=Sti zDhU>Vu?7Y_L>pwd(=iF|b=vX5augBpfQ`0x9qnRDBAm*$iWc@$C2HapBnlcjO2Vgh zwNXJ^h(u_sz`6thl+Z?894?X(xFa>Ugm)l*Bj1Gag;KdtfhJ&kOeC(jnN#%w*}Y9! z6-m0aF*lH1T*OOCuENuiiZnBjS*OOqkNt>$kFX2kZ}K_Be+ePP{{%va|A~YUe*{SJ zpOlFINhlEUKN*QgT`Jk0vh*|f2>U0o|0!S(*iRi5jg3Q+>M~*8<(hdCm`oNuvJ82u zJb-wvK!W1Ak`Ur~8X?4U72z6LhU{f>p)5mAPlWVzl<8&2GmwhZGnvQez8WKq4tE`3 z?_50#wShEo>|BIgEsX%FXY&D&dJZ9wx`q%)J(mzV^E^Q6ObeZBQ6M_=d?X_E0?GE2 zrJo16p|4(umw*)MY1{sbq`epG_J$4xb*Fl@0G6*{>6pP|Dlv6mr(f@&N!Ab7%d4R2 z20jN(Hxh!Tmk@%cmlA@emjRNdZ3&BCjsl_S6-Y$tm6GilI^=$FP_IH2OxFjfaT9Cw zmPwVSF`lAdjeJ#4mNj#+nBJz%r2Z;L8D_&EmZ9&M?seLkm1go@vDt3+8f{tz+~R+=AWf)`14`MH4?1 zK55$p)h)vbeGS+$L2Fwx{4HeM#2NmztPC-~ju7I1Jt4&Z211DYjer#QnTfdHgaQ%w zn~{jrTO_Mz__$*VsjZo}O0~D@YD4!zD^3})+*+TZr*3YR${8M+1rSDuFhV?!A9HtB z_FG$L46>=Sd6WeTT?i}9K4TX>0JjFO9YJx?2CkLi$74qo!jQeV&}jq)W)y6urV##i z>zsiQ%!fKi#TbLEVIVqk;#GaUj%|CyV=8dP4ZSB1 zFNJ5uChyH?S1Luns_jcbrTbe0&g3_s*a7@ky{BUww;rlj!wER<>_bUCD3NNFis@62 zV@q$Tly<_n=FF-)G;xzh@(&7O(4`OYIdtj6gwUmr5JHzeN(f#07$9}&;zXA|jsnr8 zPaqMgPfE6@Ed31r8#C%tAOu=Kxr-JgzQ?D9%+F{t_w_wKD-XcP&mloZex4AF`~o2u z`9;E2;(Of5xzONe^8k@$I21Z(*cnIOl^GHs|=^4Xm;M8Qi1coV1K46*ZIPd~z-&PoPOO^|h z<6v6A5gROHFcH9j#_XDlX%^#sXd^Nt$K7y52i(MI4LO8~G5j1JzUjkoJ!V(DI$}rq z^p0J^YN6r*Q876#Ua+1>CGX-~r(JSuve@K=Vg$_^wu5P%+=P|(5rcIru-VqoujddR z6schrO6y}kc$aek9SRH%S)4GG*VX|woB&FBH697UNhJDZ6OIUBi&%~U8C5snTF0<( zI#Xeu!xnDFT;1S6}Fa%_bEjjWOD4(R)y11U}z&~V9z=9DhTv)oraEi zShR@&4cvyTY^6NZ11om2%l7#V{dnB2$U#&f=-8D?pD|kV#=$mn1%mLZ^Z>jP&Xwu1uH|%4=(C{ptZBZR>Yb8p=c&-ES?Q zp%eBo)v*Lj209v3dpY=P-R@)y`i-;+3;Hde!-9TC2n+f>AuQ+*gs`AL0@8wNi3R-$ z1!6&eMj}#wk*q!&^$?L$_u^fw6M3xap}zW8zS>(RgEYJ11>}7wh}7Tk%bECEK)v-* zZKgT+b!>OYRDeM)-u94@vpZ$rPro6nw$}PBevyy$7`s^yrZW1aOAtveKx~bx&to>M zKdKu`xpq^|2I)NOY&dW;JUKmrAR5M3v@@b?Y<6_EQ`gPZ58R3%qwhX!?#_FaA{)`$ zIMrr*(Q7cnHE+D_g6zbFDxYsicXRyq48&g9P3xA z+bZhs5X=N0sI`Qh0%v2=5_T$zsG8FVp|aBnp|Udwp`tSZsiO5nMQ5QvRCG2H*aMfW zUc$y5Q%%}t)+N|hT2y^$ujR{QoRm3^h)-V&oVUcs7G)2s0h>9jtuJ+#%){GaE z2*}JuyAx>DOTu~59mtu_=OAYRA;?@v2n$?92=W#KlDsPt@|K`L$U6v$NF6NMo}n{g zM!V>9JS=#trDzt$`7pP72wUwflj9TY_D~c=>M;D$Zf^!Dn`nEoT|zDGk2g+=Sg_OK z*xXGu&(P)u46(R)v&PwwRA^h%fFZWDr9+iB^*bBlH|og?(xNt;0nzC0Euz;Q`n{>Y zzJ)t2#U_9ts1DZ@wFlUiDla276QeQ9Ss5~3K?vEeB!ujbAcU+}0aDgiC9*b9AhKSK zM5MYUt5rGfn4D{?@*1gjq^>qJ18ROYqv$$vX4NF3GI33-eZ$sb1^QFQMlhVb)TGmj zMMT5kv}1yNfQ4)7LY#qMGzNzYUHHPCj%*w`(Pjeg5Yd0_(o(9Nx#0PG;))Ir%iv4l z4-eB{o#=McQ5R2?camDiE4b{E;X5VEba|~9WYtk%$bM|_XyFs&u$IpuhcqGNvyKop z*h2`p^a4^YS0{4mLxDb2kwGd_S>~a+w?lLPT{*7$K?F?x-RH%blY!*MKtK0JyL`tWE%=)>`Z(1#NMc{YXJ@NCKe zpqS~2NJMIrWW`K}y3kuolhtOv&|4-#Fj^;DK0#(8d3TGvdy;;4=p?-NkE;F2>}~L2 zY3dX(QpHj%RfZj_?%n3 z4Os-^hM_`SL9bmAJ!`ljw-zNtCU-2bS!m?3Fh$rEOIyF;Dmg>V%RHyKMZ?8}T$4ya zYtPflyEv912fgDls1pYs6OmWg34o*_1X-2i@13le8MwkTEI-SpYc}P$wI|(6_ zU4#&dNqD400MBP~kwgHmPegM8%5(&92q_$EVICt4&!fpM1~ewQkgG0Y1HEOU)EW1? zSl$5+kK+U2u$vG#Jf09Z!U z47R*p(ytG>fTzPk5U}ZkZ56%RS_ZA$+9*OaM&O8D>#I{V2z_&^+Q7~Zud}9LgZeb1 zmG{PMm}vXL9b#MXE^y{657TM#$U-aDC9R}-5K;?qNMWJ{_OKgx-rjg}jFNsr)oSK# zL>_CnFI&VB%2Eo9#_ftdvM%FkuJ|ko0)%J}o_dkUY~_7wIj#U=#)TGXI@LOcfGjPW zYZ?ab18zXcnwxP+4iPAl?LX?Sk(MYB>=1v?3!C@IR8N&uAw>7Fzj}V7DS`9GP$^B># z;fH!f_V~CQ(Hh~U5a&ct5xn8<25-19z&8SIn`jgg;B!P7VHDIx8bz59MlnhVqo@$V zD5`)oiW?J?tf4?VW*$&zgb>&h2qCa10@8CLCiI*l zKpDiIghZsCELrV2Ek(ck9TC)}e7UzwG{uWD=Oh%Ur%0K!co~wBx*Wfxg4-yMj3ocL zBgs=CXBgQdVx}+ppDX4oDCT4!6F2WNPhBaN{oWDgs=&r1wBwCl#*8ueq3UmE=iI@VY^s z-pHp1PkL2Xc!^YaDJygpu!@s?JoPdueK~%~7js_nnHg?Ls#l;GAC_tHr1ec2^-6i| zRruZaOCUiLUuUQ$byMml)biA;@r%P_d_yi#Vp@8QWFW3vkT7RfxZS8;i!?59Lawhv zij&mq`857wih2VJGnDNcnSyNJ#K-cj67^;zw=Xeg@aU0xir5gUCEpiF7+MIut~ zldPU3kA<>tBQjv;C=ONeZobi-+(DNM>fLm^>20^}sur{A{cO6oOe|#zb;^1sT`-Zi z>H|_CUDhnV1Gz|j5Wg)Je@HSQ>cdDREdB`6n#CVQiX?uFPZJh@oQ1;TPcQ|FKgq|M z#h*fQ`zr1EM+}4 zA`$d{^;6d9;z0;oz8!S8?qNaQu9H;#U5G&aOd4OnrDr{dC5+siQ$Lr|`Ju-y6CCeh zi!-rcQ%&^?rsw0F_(%iay26WCqx_O()9jl16%$?fP7me>d}2%e8hH{RLdxmk;x{PU zj&Td5;#*oZ8P(KprDDplDq&phcdRzUoFC)I4}pOrzh^z?)IoEFoS4YTeIiIBr?Xfr z7jecy{Q=d?MI<1=iw^p)fE((MES@Q!mr;LWOXecGnzyMk*aN{$COcGrM)_WIrPm0t zguTD^|H6i55w$|7?qy~^Kk!s*RC9YUR#nwsQ3k0lEH14@GNuG`i(_3mD$DkC>!=o zF;O&vn2Xa;zI~=S3+wfgJEEo|J7|i`q1`fLrRz8#(*`NvvHQBlEaZs+|DP* zXX4>i=1P!SZOv?LHOlGRShG-RuQ}bWjj7qvm?pd)*o`8ntX9+#9STo*jP}P92JzlQFyE@F@gx7)l@}QJyxd4wuq-)Q8q+ zu#7FO>iBGnJ~k$!0b;BDs2udG<*c=0BC(S!W(BI0MU!zcIrMUE3Rm*wX>L&+!NdZn zZl{!1p>VIcTwAHFzs3=O6QPrnjU#A~fhy2>3>DNt(d9s`Mj(j3HS(?+MLwOT)*_8NyZB8z z%bd%d)#WQ;X3h$Hq^n!sLo}TGoRv=6S*4E@9;qXYM>y9wYxK>A<<1QabIF8H0cxLe zowVJ9UndLS3?53a^n*#XkA;{tGlZB#vw*GXyPt(JeXnN>> import py - >>> c = py.code.Code(py.path.local.read) - >>> c.path.basename - 'common.py' - >>> isinstance(c.source(), py.code.Source) - True - >>> str(c.source()).split('\n')[0] - "def read(self, mode='rb'):" - -source: :source:`py/code/code.py` - -:api:`py.code.Source` ---------------------- - -Source objects wrap snippets of Python source code, providing a simple yet -powerful interface to read, deindent, slice, compare, compile and manipulate -them, things that are not so easy in core Python. - -Example:: - - >>> s = py.code.Source("""\ - ... def foo(): - ... print "foo" - ... """) - >>> str(s).startswith('def') # automatic de-indentation! - True - >>> s.isparseable() - True - >>> sub = s.getstatement(1) # get the statement starting at line 1 - >>> str(sub).strip() # XXX why is the strip() required?!? - 'print "foo"' - -source: :source:`py/code/source.py` - -:api:`py.code.Traceback` ------------------------- - -Tracebacks are usually not very easy to examine, you need to access certain -somewhat hidden attributes of the traceback's items (resulting in expressions -such as 'fname = tb.tb_next.tb_frame.f_code.co_filename'). The Traceback -interface (and its TracebackItem children) tries to improve this. - -Example:: - - >>> import sys - >>> try: - ... py.path.local(100) # illegal argument - ... except: - ... exc, e, tb = sys.exc_info() - >>> t = py.code.Traceback(tb) - >>> first = t[1] # get the second entry (first is in this doc) - >>> first.path.basename # second is in py/path/local.py - 'local.py' - >>> isinstance(first.statement, py.code.Source) - True - >>> str(first.statement).strip().startswith('raise ValueError') - True - -source: :source:`py/code/traceback2.py` - -:api:`py.code.Frame` --------------------- - -Frame wrappers are used in :api:`py.code.Traceback` items, and will usually not -directly be instantiated. They provide some nice methods to evaluate code -'inside' the frame (using the frame's local variables), get to the underlying -code (frames have a code attribute that points to a :api:`py.code.Code` object) -and examine the arguments. - -Example (using the 'first' TracebackItem instance created above):: - - >>> frame = first.frame - >>> isinstance(frame.code, py.code.Code) - True - >>> isinstance(frame.eval('self'), py.__.path.local.local.LocalPath) - True - >>> [namevalue[0] for namevalue in frame.getargs()] - ['cls', 'path'] - -:api:`py.code.ExceptionInfo` ----------------------------- - -A wrapper around the tuple returned by sys.exc_info() (will call sys.exc_info() -itself if the tuple is not provided as an argument), provides some handy -attributes to easily access the traceback and exception string. - -Example:: - - >>> import sys - >>> try: - ... foobar() - ... except: - ... excinfo = py.code.ExceptionInfo() - >>> excinfo.typename - 'NameError' - >>> isinstance(excinfo.traceback, py.code.Traceback) - True - >>> excinfo.exconly() - "NameError: name 'foobar' is not defined" - diff --git a/py/doc/_build/html/_sources/coding-style.txt b/py/doc/_build/html/_sources/coding-style.txt deleted file mode 100644 index 085902b9a..000000000 --- a/py/doc/_build/html/_sources/coding-style.txt +++ /dev/null @@ -1,71 +0,0 @@ -===================================================== -Coding Style for the Py lib and friendly applications -===================================================== - - -Honour PEP 8: Style Guide for Python Code ------------------------------------------ - -First of all, if you haven't already read it, read the `PEP 8 -Style Guide for Python Code`_ which, if in doubt, serves as -the default coding-style for the py lib. - -Documentation and Testing -------------------------- - -- generally we want to drive and interweave coding of - documentation, tests and real code as much as possible. - Without good documentation others may never know about - your latest and greatest feature. - -naming ------- - -- directories, modules and namespaces are always **lowercase** - -- classes and especially Exceptions are most often **CamelCase** - -- types, i.e. very widely usable classes like the ``py.path`` - family are all lower case. - -- never use plural names in directory and file names - -- functions/methods are lowercase and ``_`` - separated if - you really need to separate at all - -- it's appreciated if you manage to name files in a directory - so that tab-completion on the shell level is as easy as possible. - - -committing ----------- - -- adding features requires adding appropriate tests. - -- bug fixes should be encoded in a test before being fixed. - -- write telling log messages because several people - will read your diffs, and we plan to have a search facility - over the py lib's subversion repository. - -- if you add ``.txt`` or ``.py`` files to the repository then - please make sure you have ``svn:eol-style`` set to native. - which allows checkin/checkout in native line-ending format. - -Miscellaneous -------------- - -- Tests are the insurance that your code will be maintained - further and survives major releases. - -- Try to put the tests close to the tested code, don't - overload directories with names. - -- If you think of exporting new py lib APIs, discuss it first on the - `py-dev mailing list`_ and possibly write a chapter in our - `future_` book. Communication is considered a key here to make - sure that the py lib develops in a consistent way. - -.. _`PEP 8 Style Guide for Python Code`: http://www.python.org/peps/pep-0008.html -.. _`py-dev mailing list`: http://codespeak.net/mailman/listinfo/py-dev -.. _`future`: future.html diff --git a/py/doc/_build/html/_sources/contact.txt b/py/doc/_build/html/_sources/contact.txt deleted file mode 100644 index 2ae637bed..000000000 --- a/py/doc/_build/html/_sources/contact.txt +++ /dev/null @@ -1,47 +0,0 @@ -Contact and communication -=================================== - -- **#pylib on irc.freenode.net**: you are welcome to lurk or ask questions! - -- `py-dev developers list`_ development mailing list. - -- `tetamap`_: Holger Krekel's blog, often about testing and py.test related news. - -- `py-svn general commit mailing list`_ to follow all development commits. - -- `development bug/feature tracker`_ this roundup instance serves to file bugs and track issues. - (soon to be substitued by a google-code or other hosted one). - -- `merlinux.eu`_ offers teaching and consulting services. - -.. _`merlinux.eu`: http://merlinux.eu - -.. _future: future.html - -.. _`get an account`: - -.. _tetamap: http://tetamap.wordpress.com - - -.. - get an account on codespeak - --------------------------- - - codespeak_ is where the subversion repository is hosted. If you know - someone who is active on codespeak already or you are otherwise known in - the community (see also: FOAF_) you will get access. But even if - you are new to the python developer community please come to the IRC - or the mailing list and ask questions, get involved. - -.. _FOAF: http://en.wikipedia.org/wiki/FOAF -.. _`coding style`: coding-style.html -.. _us: http://codespeak.net/mailman/listinfo/py-dev -.. _codespeak: http://codespeak.net/ -.. _`py-dev`: -.. _`development mailing list`: -.. _`py-dev developers list`: http://codespeak.net/mailman/listinfo/py-dev -.. _`subversion commit mailing list`: -.. _`py-svn`: -.. _`py-svn general commit mailing list`: http://codespeak.net/mailman/listinfo/py-svn -.. _`development bug/feature tracker`: https://codespeak.net/issue/py-dev/ - diff --git a/py/doc/_build/html/_sources/contents.txt b/py/doc/_build/html/_sources/contents.txt deleted file mode 100644 index 9bace07d3..000000000 --- a/py/doc/_build/html/_sources/contents.txt +++ /dev/null @@ -1,28 +0,0 @@ - -Contents: - -.. toctree:: - :maxdepth: 2 - :numbered: - - test - execnet - path - code - bin - xml - io - log - misc - why_py - future - coding-style - download - links - contact - - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` - diff --git a/py/doc/_build/html/_sources/download.txt b/py/doc/_build/html/_sources/download.txt deleted file mode 100644 index fa85f5842..000000000 --- a/py/doc/_build/html/_sources/download.txt +++ /dev/null @@ -1,116 +0,0 @@ -============== -Downloading -============== - - -"easy_install py" -=================================================== - -With a working `setuptools installation`_ you can install from the command line:: - - easy_install -U py - -to get the latest release of the py lib. The ``-U`` switch -will trigger an upgrade if you already have an older version installed. -The py lib and its tools are expected to work well on Linux, -Windows and OSX, Python versions 2.3, 2.4, 2.5 and 2.6. - -We provide binary eggs for Windows machines. - -On other systems you need a working C-compiler in order to -install the full py lib. If you don't have a compiler available -you can still install the py lib but without greenlets - look -below for the ``install_lib`` target. - -**IMPORTANT NOTE**: if you are using Windows and have previous -installations of the py lib on your system, please download -and execute http://codespeak.net/svn/py/build/winpathclean.py -This will check that no previous files are getting in the way. -(Unfortunately we don't know about a way to execute this -code automatically during the above install). - -Installing on Debian or Fedora -=================================== - -On Debian systems look for ``python-codespeak-lib``. -*This package is probably outdated - if somebody -can help with bringing this up to date, -that would be very much appreciated.* - -Dwayne Bailey has thankfully put together a Fedora `RPM`_. - -.. _`RPM`: http://translate.sourceforge.net/releases/testing/fedora/pylib-0.9.2-1.fc9.noarch.rpm - -.. _`setuptools installation`: http://pypi.python.org/pypi/setuptools - - -Downloading a tar/zip archive and installing that -=================================================== - -Go to the python package index (pypi) and download a tar or zip file: - - http://pypi.python.org/pypi/py/ - -and unpack it to a directory, where you then type:: - - python setup.py install - -If you don't have a working C-compiler you can do:: - - python setup.py install_lib - -You will then not be able to use greenlets but otherwise -``py.test`` and all tools and APIs are fine to use. - -Installing from subversion / develop mode -============================================ - -To follow development or help with fixing things -for the next release, checkout the complete code -and documentation source:: - - svn co http://codespeak.net/svn/py/release/0.9.x py-0.9.x - -You can then issue:: - - python setup.py develop - -in order to work with your checkout version. - -other interesting svn checkout points:: - - http://codespeak.net/ - svn/py/release # release tags and branches - svn/py/dist # latest stable (may or may not be a release) - svn/py/trunk # head development / merge point - - -Working with multiple py lib versions / svn externals -======================================================= - -If you happen to have multiple versions of the py lib -around or you ship the py lib as an svn-external to -then you might want to use py lib scripts more directly. -For example if you have a project layout like this:: - - mypkg/ - subpkg1/ - tests/ - tests/ - py/ # as svn-external, could be specific tag/version - -then you want to make sure that the actual local py lib is used -and not another system-wide version. For this you need to add -``py/bin`` or ``py\bin\win32`` respectively to your system's PATH settings. - -You can do this by executing (on windows) a script to set the environment:: - - c:\\path\to\checkout\py\env.cmd - -or on linux/osx you can add something like this to your shell -initialization:: - - eval `python ~/path/to/checkout/py/env.py` - -to get good settings for PYTHONPATH and PATH. - diff --git a/py/doc/_build/html/_sources/execnet.txt b/py/doc/_build/html/_sources/execnet.txt deleted file mode 100644 index 545c3e4d1..000000000 --- a/py/doc/_build/html/_sources/execnet.txt +++ /dev/null @@ -1,235 +0,0 @@ -========== -py.execnet -========== - -``py.execnet`` allows to: - -* instantiate local or remote Python Processes -* send code for execution in one or many processes -* asynchronously send and receive data between processes through channels -* completely avoid manual installation steps on remote places - -Gateways: immediately spawn local or remote process -=================================================== - -In order to send code to a remote place or a subprocess -you need to instantiate a so-called Gateway object. -There are currently three Gateway classes: - -* :api:`py.execnet.PopenGateway` to open a subprocess - on the local machine. Useful for making use - of multiple processors to to contain code execution - in a separated environment. - -* :api:`py.execnet.SshGateway` to connect to - a remote ssh server and distribute execution to it. - -* :api:`py.execnet.SocketGateway` a way to connect to - a remote Socket based server. *Note* that this method - requires a manually started - :source:py/execnet/script/socketserver.py - script. You can run this "server script" without - having the py lib installed on the remote system - and you can setup it up as permanent service. - - -remote_exec: execute source code remotely -=================================================== - -All gateways offer remote code execution via this high level function:: - - def remote_exec(source): - """return channel object for communicating with the asynchronously - executing 'source' code which will have a corresponding 'channel' - object in its executing namespace.""" - -With `remote_exec` you send source code to the other -side and get both a local and a remote Channel_ object, -which you can use to have the local and remote site -communicate data in a structured way. Here is -an example for reading the PID:: - - >>> import py - >>> gw = py.execnet.PopenGateway() - >>> channel = gw.remote_exec(""" - ... import os - ... channel.send(os.getpid()) - ... """) - >>> remote_pid = channel.receive() - >>> remote_pid != py.std.os.getpid() - True - -.. _`Channel`: -.. _`channel-api`: -.. _`exchange data`: - -Channels: bidirectionally exchange data between hosts -=================================================== - -A channel object allows to send and receive data between -two asynchronously running programs. When calling -`remote_exec` you will get a channel object back and -the code fragment running on the other side will -see a channel object in its global namespace. - -Here is the interface of channel objects:: - - # - # API for sending and receiving anonymous values - # - channel.send(item): - sends the given item to the other side of the channel, - possibly blocking if the sender queue is full. - Note that items need to be marshallable (all basic - python types are). - - channel.receive(): - receives an item that was sent from the other side, - possibly blocking if there is none. - Note that exceptions from the other side will be - reraised as gateway.RemoteError exceptions containing - a textual representation of the remote traceback. - - channel.waitclose(timeout=None): - wait until this channel is closed. Note that a closed - channel may still hold items that will be received or - send. Note that exceptions from the other side will be - reraised as gateway.RemoteError exceptions containing - a textual representation of the remote traceback. - - channel.close(): - close this channel on both the local and the remote side. - A remote side blocking on receive() on this channel - will get woken up and see an EOFError exception. - - -.. _xspec: - - -XSpec: string specification for gateway type and configuration -=============================================================== - -``py.execnet`` supports a simple extensible format for -specifying and configuring Gateways for remote execution. -You can use a string specification to instantiate a new gateway, -for example a new SshGateway:: - - gateway = py.execnet.makegateway("ssh=myhost") - -Let's look at some examples for valid specifications. -Specification for an ssh connection to `wyvern`, running on python2.4 in the (newly created) 'mycache' subdirectory:: - - ssh=wyvern//python=python2.4//chdir=mycache - -Specification of a python2.5 subprocess; with a low CPU priority ("nice" level). Current dir will be the current dir of the instantiator (that's true for all 'popen' specifications unless they specify 'chdir'):: - - popen//python=2.5//nice=20 - -Specification of a Python Socket server process that listens on 192.168.1.4:8888; current dir will be the 'pyexecnet-cache' sub directory which is used a default for all remote processes:: - - socket=192.168.1.4:8888 - -More generally, a specification string has this general format:: - - key1=value1//key2=value2//key3=value3 - -If you omit a value, a boolean true value is assumed. Currently -the following key/values are supported: - -* ``popen`` for a PopenGateway -* ``ssh=host`` for a SshGateway -* ``socket=address:port`` for a SocketGateway -* ``python=executable`` for specifying Python executables -* ``chdir=path`` change remote working dir to given relative or absolute path -* ``nice=value`` decrease remote nice level if platforms supports it - - -Examples of py.execnet usage -=============================================================== - -Compare cwd() of Popen Gateways ----------------------------------------- - -A PopenGateway has the same working directory as the instantiatior:: - - >>> import py, os - >>> gw = py.execnet.PopenGateway() - >>> ch = gw.remote_exec("import os; channel.send(os.getcwd())") - >>> res = ch.receive() - >>> assert res == os.getcwd() - >>> gw.exit() - -Synchronously receive results from two sub processes ------------------------------------------------------ - -Use MultiChannels for receiving multiple results from remote code:: - - >>> import py - >>> ch1 = py.execnet.PopenGateway().remote_exec("channel.send(1)") - >>> ch2 = py.execnet.PopenGateway().remote_exec("channel.send(2)") - >>> mch = py.execnet.MultiChannel([ch1, ch2]) - >>> l = mch.receive_each() - >>> assert len(l) == 2 - >>> assert 1 in l - >>> assert 2 in l - -Asynchronously receive results from two sub processes ------------------------------------------------------ - -Use ``MultiChannel.make_receive_queue()`` for asynchronously receiving -multiple results from remote code. This standard Queue provides -``(channel, result)`` tuples which allows to determine where -a result comes from:: - - >>> import py - >>> ch1 = py.execnet.PopenGateway().remote_exec("channel.send(1)") - >>> ch2 = py.execnet.PopenGateway().remote_exec("channel.send(2)") - >>> mch = py.execnet.MultiChannel([ch1, ch2]) - >>> queue = mch.make_receive_queue() - >>> chan1, res1 = queue.get() # you may also specify a timeout - >>> chan2, res2 = queue.get() - >>> res1 + res2 - 3 - >>> assert chan1 in (ch1, ch2) - >>> assert chan2 in (ch1, ch2) - >>> assert chan1 != chan2 - -Receive file contents from remote SSH account ------------------------------------------------------ - -Here is a small program that you can use to retrieve -contents of remote files:: - - import py - # open a gateway to a fresh child process - gw = py.execnet.SshGateway('codespeak.net') - channel = gw.remote_exec(""" - for fn in channel: - f = open(fn, 'rb') - channel.send(f.read()) - f.close() - """) - - for fn in somefilelist: - channel.send(fn) - content = channel.receive() - # process content - - # later you can exit / close down the gateway - gw.exit() - - -Instantiate a socket server in a new subprocess ------------------------------------------------------ - -The following example opens a PopenGateway, i.e. a python -child process, and starts a socket server within that process -and then opens a second gateway to the freshly started -socketserver:: - - import py - - popengw = py.execnet.PopenGateway() - socketgw = py.execnet.SocketGateway.new_remote(popengw, ("127.0.0.1", 0)) - - print socketgw._rinfo() # print some info about the remote environment diff --git a/py/doc/_build/html/_sources/future.txt b/py/doc/_build/html/_sources/future.txt deleted file mode 100644 index b18066db4..000000000 --- a/py/doc/_build/html/_sources/future.txt +++ /dev/null @@ -1,145 +0,0 @@ -======================================================= -Visions and ideas for further development of the py lib -======================================================= - - -This document tries to describe directions and guiding ideas -for the near-future development of the py lib. *Note that all -statements within this document - even if they sound factual - -mostly just express thoughts and ideas. They not always refer to -real code so read with some caution.* - - -Distribute tests ad-hoc across multiple platforms -====================================================== - -After some more refactoring and unification of -the current testing and distribution support code -we'd like to be able to run tests on multiple -platforms simultanously and allow for interaction -and introspection into the (remote) failures. - - -Make APIGEN useful for more projects -================================================ - -The new APIGEN tool offers rich information -derived from running tests against an application: -argument types and callsites, i.e. it shows -the places where a particular API is used. -In its first incarnation, there are still -some specialties that likely prevent it -from documenting APIs for other projects. -We'd like to evolve to a `py.apigen` tool -that can make use of information provided -by a py.test run. - -Consider APIGEN and pdb integration -=================================== - -The information provided by APIGEN can be used in many -different ways. An example of this could be to write -an extension to pdb which makes it available. -Imagine you could issue a pdb command -"info " and get information -regarding incoming, and outgoing types, possible -exceptions, field types and call sites. - -Distribute channels/programs across networks -================================================ - -Apart from stabilizing setup/teardown procedures -for `py.execnet`_, we'd like to generalize its -implementation to allow connecting two programs -across multiple hosts, i.e. we'd like to arbitrarily -send "channels" across the network. Likely this -will be done by using the "pipe" model, i.e. -that each channel is actually a pair of endpoints, -both of which can be independently transported -across the network. The programs who "own" -these endpoints remain connected. - -.. _`py.execnet`: execnet.html - -Benchmarking and persistent storage -========================================= - -For storing test results, but also benchmarking -and other information, we need a solid way -to store all kinds of information from test runs. -We'd like to generate statistics or html-overview -out of it, but also use such information to determine when -a certain test broke, or when its performance -decreased considerably. - -.. _`restructured text`: http://docutils.sourceforge.net/docs/user/rst/quickref.html -.. _`python standard library`: http://www.python.org/doc/2.3.4/lib/lib.html -.. _`xpython EuroPython 2004 talk`: http://codespeak.net/svn/user/hpk/talks/xpython-talk.txt -.. _`under the xpy tree`: http://codespeak.net/svn/user/hpk/xpy/xml.py -.. _`future book`: future.html -.. _`PEP-324 subprocess module`: http://www.python.org/peps/pep-0324.html -.. _`subprocess implementation`: http://www.lysator.liu.se/~astrand/popen5/ -.. _`py.test`: test.html - - -.. _`general-path`: -.. _`a more general view on path objects`: - -Refactor path implementations to use a Filesystem Abstraction -============================================================= - -It seems like a good idea to refactor all `py.path`_ Path implementations to -use an internal Filesystem abstraction. The current code base -would be transformed to have Filesystem implementations for e.g. -local, subversion and subversion "working copy" filesystems. Today -the according code is scattered through path-handling code. - -On a related note, Armin Rigo has hacked `pylufs`_ and more recently has -written `pyfuse`_ which allow to -implement kernel-level linux filesystems with pure python. Now -the idea is that the mentioned filesystem implementations would -be directly usable for such linux-filesystem glue code. - -In other words, implementing a `memoryfs`_ or a `dictfs`_ would -give you two things for free: a filesystem mountable at kernel level -as well as a uniform "path" object allowing you to access your -filesystem in convenient ways. - -Also interesting to check out is Will McGugan's work on -his `fs package`_. - -I think the main question is what the very fundamental -filesystem API should look like. Here are some doctests -on how a `draft py.fs`_ could look like. There also -is Matthew Scotts `dictproxy patch`_ which adds -``py.path.dict`` and ``py.path.proxy``. - - -.. _`dictproxy patch`: http://codespeak.net/pipermail/py-dev/attachments/20050128/d9595512/virtual1-0001.bin -.. _`draft py.fs`: draft_pyfs -.. _`py.path`: http://codespeak.net/py/dist/path.html -.. _`fs package`: http://www.willmcgugan.com/2008/09/21/announcing-fs-010-a-python-file-system/#comment-60276 -.. _`memoryfs`: http://codespeak.net/svn/user/arigo/hack/pyfuse/memoryfs.py -.. _`dictfs`: http://codespeak.net/pipermail/py-dev/2005-January/000191.html -.. _`pylufs`: http://codespeak.net/svn/user/arigo/hack/pylufs/ -.. _`pyfuse`: http://codespeak.net/svn/user/arigo/hack/pyfuse/ - - -Integrate interactive completion -================================== - -It'd be nice to integrate the bash-like -rlcompleter2_ python command line completer -into the py lib, and making it work remotely -and with pdb. - -.. _rlcompleter2: http://codespeak.net/rlcompleter2/ - -Consider more features -================================== - -There are many more features and useful classes -that might be nice to integrate. For example, we might put -Armin's `lazy list`_ implementation into the py lib. - -.. _`lazy list`: http://codespeak.net/svn/user/arigo/hack/misc/collect.py diff --git a/py/doc/_build/html/_sources/impl-test.txt b/py/doc/_build/html/_sources/impl-test.txt deleted file mode 100644 index 8e1adde1c..000000000 --- a/py/doc/_build/html/_sources/impl-test.txt +++ /dev/null @@ -1,250 +0,0 @@ -=============================================== -Implementation and Customization of ``py.test`` -=============================================== - - -.. _`basicpicture`: - - -Collecting and running tests / implementation remarks -====================================================== - -In order to customize ``py.test`` it's good to understand -its basic architure (WARNING: these are not guaranteed -yet to stay the way they are now!):: - - ___________________ - | | - | Collector | - |___________________| - / \ - | Item.run() - | ^ - receive test Items / - | /execute test Item - | / - ___________________/ - | | - | Session | - |___________________| - - ............................. - . conftest.py configuration . - . cmdline options . - ............................. - - -The *Session* basically receives test *Items* from a *Collector*, -and executes them via the ``Item.run()`` method. It monitors -the outcome of the test and reports about failures and successes. - -.. _`collection process`: - -Collectors and the test collection process ------------------------------------------- - -The collecting process is iterative, i.e. the session -traverses and generates a *collector tree*. Here is an example of such -a tree, generated with the command ``py.test --collectonly py/xmlobj``:: - - - - - - - - - - - - - - - - - -By default all directories not starting with a dot are traversed, -looking for ``test_*.py`` and ``*_test.py`` files. Those files -are imported under their `package name`_. - -The Module collector looks for test functions -and test classes and methods. Test functions and methods -are prefixed ``test`` by default. Test classes must -start with a capitalized ``Test`` prefix. - - -.. _`collector API`: - -test items are collectors as well ---------------------------------- - -To make the reporting life simple for the session object -items offer a ``run()`` method as well. In fact the session -distinguishes "collectors" from "items" solely by interpreting -their return value. If it is a list, then we recurse into -it, otherwise we consider the "test" as passed. - -.. _`package name`: - -constructing the package name for test modules -------------------------------------------------- - -Test modules are imported under their fully qualified -name. Given a filesystem ``fspath`` it is constructed as follows: - -* walk the directories up to the last one that contains - an ``__init__.py`` file. - -* perform ``sys.path.insert(0, basedir)``. - -* import the root package as ``root`` - -* determine the fully qualified name for ``fspath`` by either: - - * calling ``root.__pkg__.getimportname(fspath)`` if the - ``__pkg__`` exists.` or - - * otherwise use the relative path of the module path to - the base dir and turn slashes into dots and strike - the trailing ``.py``. - - - -Customizing the testing process -=============================== - -writing conftest.py files ------------------------------------ - -You may put conftest.py files containing project-specific -configuration in your project's root directory, it's usually -best to put it just into the same directory level as your -topmost ``__init__.py``. In fact, ``py.test`` performs -an "upwards" search starting from the directory that you specify -to be tested and will lookup configuration values right-to-left. -You may have options that reside e.g. in your home directory -but note that project specific settings will be considered -first. There is a flag that helps you debugging your -conftest.py configurations:: - - py.test --traceconfig - - -customizing the collecting and running process ------------------------------------------------ - -To introduce different test items you can create -one or more ``conftest.py`` files in your project. -When the collection process traverses directories -and modules the default collectors will produce -custom Collectors and Items if they are found -in a local ``conftest.py`` file. - -example: perform additional ReST checks -....................................... - -With your custom collectors or items you can completely -derive from the standard way of collecting and running -tests in a localized manner. Let's look at an example. -If you invoke ``py.test --collectonly py/documentation`` -then you get:: - - - - - - - - - - - - - - - - - ... - -In ``py/documentation/conftest.py`` you find the following -customization:: - - class DocDirectory(py.test.collect.Directory): - - def run(self): - results = super(DocDirectory, self).run() - for x in self.fspath.listdir('*.txt', sort=True): - results.append(x.basename) - return results - - def join(self, name): - if not name.endswith('.txt'): - return super(DocDirectory, self).join(name) - p = self.fspath.join(name) - if p.check(file=1): - return ReSTChecker(p, parent=self) - - Directory = DocDirectory - -The existence of the 'Directory' name in the -``pypy/documentation/conftest.py`` module makes the collection -process defer to our custom "DocDirectory" collector. We extend -the set of collected test items by ``ReSTChecker`` instances -which themselves create ``ReSTSyntaxTest`` and ``LinkCheckerMaker`` -items. All of this instances (need to) follow the `collector API`_. - -Customizing the reporting of Test Failures --------------------------------------------- - -XXX implement Item.repr_run and Item.repr_path for your test items - -Writing new assertion methods -------------------------------------- - -XXX __tracebackhide__, and use "print" - - -Customizing the collection process in a module ----------------------------------------------- - - REPEATED WARNING: details of the collection and running process are - still subject to refactorings and thus details will change. - If you are customizing py.test at "Item" level then you - definitely want to be subscribed to the `py-dev mailing list`_ - to follow ongoing development. - -If you have a module where you want to take responsibility for -collecting your own test Items and possibly even for executing -a test then you can provide `generative tests`_ that yield -callables and possibly arguments as a tuple. This is especially -useful for calling application test machinery with different -parameter sets but counting each of the calls as a separate -tests. - -.. _`generative tests`: test-features.html#generative-tests - -The other extension possibility is about -specifying a custom test ``Item`` class which -is responsible for setting up and executing an underlying -test. Or you can extend the collection process for a whole -directory tree by putting Items in a ``conftest.py`` configuration file. -The collection process dynamically consults the *chain of conftest.py* -modules to determine collectors and items at ``Directory``, ``Module``, -``Class``, ``Function`` or ``Generator`` level respectively. - -Customizing execution of Functions ----------------------------------- - -- ``py.test.collect.Function`` test items control execution - of a test function. ``function.run()`` will get called by the - session in order to actually run a test. The method is responsible - for performing proper setup/teardown ("Test Fixtures") for a - Function test. - -- ``Function.execute(target, *args)`` methods are invoked by - the default ``Function.run()`` to actually execute a python - function with the given (usually empty set of) arguments. - -.. _`py-dev mailing list`: http://codespeak.net/mailman/listinfo/py-dev - - diff --git a/py/doc/_build/html/_sources/index.txt b/py/doc/_build/html/_sources/index.txt deleted file mode 100644 index 1a5c86f77..000000000 --- a/py/doc/_build/html/_sources/index.txt +++ /dev/null @@ -1,70 +0,0 @@ -py lib: Main tools and APIs -=================================== - -`py.test`_ write and deploy unit- and functional tests to multiple machines. - -`py.execnet`_ rapidly deploy local or remote processes from your program. - -`py.path`_: use path objects to transparently access local and svn filesystems. - -`py.code`_: generate python code and use advanced introspection/traceback support. - -Minor support functionality -=================================== - -`py lib scripts`_ to make python development easier. - -`py.xml`_ for generating in-memory xml/html object trees - -`py.io`_: Helper Classes for Capturing of Input/Output - -`py.log`_: an alpha document about the ad-hoc logging facilities - -`miscellaneous features`_ describes some small but nice py lib features. - - -.. _`download and installation`: download.html -.. _`py-dev at codespeak net`: http://codespeak.net/mailman/listinfo/py-dev -.. _`py.execnet`: execnet.html -.. _`py.log`: log.html -.. _`py.io`: io.html -.. _`py.path`: path.html -.. _`py.code`: code.html -.. _`py.test`: test.html -.. _`py lib scripts`: bin.html -.. _`py.xml`: xml.html -.. _`Why What how py?`: why_py.html -.. _`future`: future.html -.. _`miscellaneous features`: misc.html -.. _`0.9.2 release announcement`: release-0.9.2.html - - -Full Contents -=================================== - -.. toctree:: - :maxdepth: 2 - :numbered: - - test - execnet - path - code - bin - xml - io - log - misc - why_py - future - coding-style - links - contact - download - releases - - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` - diff --git a/py/doc/_build/html/_sources/io.txt b/py/doc/_build/html/_sources/io.txt deleted file mode 100644 index 3d0bf0a98..000000000 --- a/py/doc/_build/html/_sources/io.txt +++ /dev/null @@ -1,43 +0,0 @@ -======= -py.io -======= - - -The 'py' lib provides helper classes for capturing IO during -execution of a program. - -IO Capturing examples -=============================================== - -:api:`py.io.StdCapture` ---------------------------- - -Basic Example: - - >>> import py - >>> capture = py.io.StdCapture() - >>> print "hello" - >>> out,err = capture.reset() - >>> out.strip() == "hello" - True - -For calling functions you may use a shortcut: - - >>> import py - >>> def f(): print "hello" - >>> res, out, err = py.io.StdCapture.call(f) - >>> out.strip() == "hello" - True - -:api:`py.io.StdCaptureFD` ---------------------------- - -If you also want to capture writes to the stdout/stderr -filedescriptors you may invoke: - - >>> import py, sys - >>> capture = py.io.StdCaptureFD() - >>> sys.stderr.write("world") - >>> out,err = capture.reset() - >>> err - 'world' diff --git a/py/doc/_build/html/_sources/links.txt b/py/doc/_build/html/_sources/links.txt deleted file mode 100644 index 45a41227d..000000000 --- a/py/doc/_build/html/_sources/links.txt +++ /dev/null @@ -1,33 +0,0 @@ - -===== -Links -===== - -Some links to ongoing discussions and comments about pylib and technics/concepts pylib uses. - -* `Discussion `_ - about site-packages. That's why pylib autopath and py.__.misc.dynpkg are a good idea ;-) - - -* `Pyinotify `_ uses code from pypy autopath functions. - -* `Testing (WSGI) Applications with Paste `_ and py.test. "This has been written with py.test in mind." Paste uses py.test. - - -* `Agile Testing `_ by Grig Gheorghiu - - * `Slides from 'py library overview' presentation at SoCal Piggies meeting - `_ - - * `Python unit testing part 3: the py.test tool and library - `_ - - * `greenlets and py.xml - `_ - - * `Keyword-based logging with the py library - `_ - - - - diff --git a/py/doc/_build/html/_sources/log.txt b/py/doc/_build/html/_sources/log.txt deleted file mode 100644 index 2c669cde9..000000000 --- a/py/doc/_build/html/_sources/log.txt +++ /dev/null @@ -1,208 +0,0 @@ -.. role:: code(literal) -.. role:: file(literal) - -.. XXX figure out how the code literals should be dealt with in sphinx. There is probably something builtin. - -======================================== -py.log documentation and musings -======================================== - - -Foreword -======== - -This document is an attempt to briefly state the actual specification of the -:code:`py.log` module. It was written by Francois Pinard and also contains -some ideas for enhancing the py.log facilities. - -NOTE that :code:`py.log` is subject to refactorings, it may change with -the next release. - -This document is meant to trigger or facilitate discussions. It shamelessly -steals from the `Agile Testing`__ comments, and from other sources as well, -without really trying to sort them out. - -__ http://agiletesting.blogspot.com/2005/06/keyword-based-logging-with-py-library.html - - -Logging organisation -==================== - -The :code:`py.log` module aims a niche comparable to the one of the -`logging module`__ found within the standard Python distributions, yet -with much simpler paradigms for configuration and usage. - -__ http://www.python.org/doc/2.4.2/lib/module-logging.html - -Holger Krekel, the main :code:`py` library developer, introduced -the idea of keyword-based logging and the idea of logging *producers* and -*consumers*. A log producer is an object used by the application code -to send messages to various log consumers. When you create a log -producer, you define a set of keywords that are then used to both route -the logging messages to consumers, and to prefix those messages. - -In fact, each log producer has a few keywords associated with it for -identification purposes. These keywords form a tuple of strings, and -may be used to later retrieve a particular log producer. - -A log producer may (or may not) be associated with a log consumer, meant -to handle log messages in particular ways. The log consumers can be -``STDOUT``, ``STDERR``, log files, syslog, the Windows Event Log, user -defined functions, etc. (Yet, logging to syslog or to the Windows Event -Log is only future plans for now). A log producer has never more than -one consumer at a given time, but it is possible to dynamically switch -a producer to use another consumer. On the other hand, a single log -consumer may be associated with many producers. - -Note that creating and associating a producer and a consumer is done -automatically when not otherwise overriden, so using :code:`py` logging -is quite comfortable even in the smallest programs. More typically, -the application programmer will likely design a hierarchy of producers, -and will select keywords appropriately for marking the hierarchy tree. -If a node of the hierarchical tree of producers has to be divided in -sub-trees, all producers in the sub-trees share, as a common prefix, the -keywords of the node being divided. In other words, we go further down -in the hierarchy of producers merely by adding keywords. - -Using the py.log library -================================ - -To use the :code:`py.log` library, the user must import it into a Python -application, create at least one log producer and one log consumer, have -producers and consumers associated, and finally call the log producers -as needed, giving them log messages. - -Importing ---------- - -Once the :code:`py` library is installed on your system, a mere:: - - import py - -holds enough magic for lazily importing the various facilities of the -:code:`py` library when they are first needed. This is really how -:code:`py.log` is made available to the application. For example, after -the above ``import py``, one may directly write ``py.log.Producer(...)`` -and everything should work fine, the user does not have to worry about -specifically importing more modules. - -Creating a producer -------------------- - -There are three ways for creating a log producer instance: - - + As soon as ``py.log`` is first evaluated within an application - program, a default log producer is created, and made available under - the name ``py.log.default``. The keyword ``default`` is associated - with that producer. - - + The ``py.log.Producer()`` constructor may be explicitly called - for creating a new instance of a log producer. That constructor - accepts, as an argument, the keywords that should be associated with - that producer. Keywords may be given either as a tuple of keyword - strings, or as a single space-separated string of keywords. - - + Whenever an attribute is *taken* out of a log producer instance, - for the first time that attribute is taken, a new log producer is - created. The keywords associated with that new producer are those - of the initial producer instance, to which is appended the name of - the attribute being taken. - -The last point is especially useful, as it allows using log producers -without further declarations, merely creating them *on-the-fly*. - -Creating a consumer -------------------- - -There are many ways for creating or denoting a log consumer: - - + A default consumer exists within the ``py.log`` facilities, which - has the effect of writing log messages on the Python standard output - stream. That consumer is associated at the very top of the producer - hierarchy, and as such, is called whenever no other consumer is - found. - - + The notation ``py.log.STDOUT`` accesses a log consumer which writes - log messages on the Python standard output stream. - - + The notation ``py.log.STDERR`` accesses a log consumer which writes - log messages on the Python standard error stream. - - + The ``py.log.File()`` constructor accepts, as argument, either a file - already opened in write mode or any similar file-like object, and - creates a log consumer able to write log messages onto that file. - - + The ``py.log.Path()`` constructor accepts a file name for its first - argument, and creates a log consumer able to write log messages into - that file. The constructor call accepts a few keyword parameters: - - + ``append``, which is ``False`` by default, may be used for - opening the file in append mode instead of write mode. - - + ``delayed_create``, which is ``False`` by default, maybe be used - for opening the file at the latest possible time. Consequently, - the file will not be created if it did not exist, and no actual - log message gets written to it. - - + ``buffering``, which is 1 by default, is used when opening the - file. Buffering can be turned off by specifying a 0 value. The - buffer size may also be selected through this argument. - - + Any user defined function may be used for a log consumer. Such a - function should accept a single argument, which is the message to - write, and do whatever is deemed appropriate by the programmer. - When the need arises, this may be an especially useful and flexible - feature. - - + The special value ``None`` means no consumer at all. This acts just - like if there was a consumer which would silently discard all log - messages sent to it. - -Associating producers and consumers ------------------------------------ - -Each log producer may have at most one log consumer associated with -it. A log producer gets associated with a log consumer through a -``py.log.set_consumer()`` call. That function accepts two arguments, -the first identifying a producer (a tuple of keyword strings or a single -space-separated string of keywords), the second specifying the precise -consumer to use for that producer. Until this function is called for a -producer, that producer does not have any explicit consumer associated -with it. - -Now, the hierarchy of log producers establishes which consumer gets used -whenever a producer has no explicit consumer. When a log producer -has no consumer explicitly associated with it, it dynamically and -recursively inherits the consumer of its parent node, that is, that node -being a bit closer to the root of the hierarchy. In other words, the -rightmost keywords of that producer are dropped until another producer -is found which has an explicit consumer. A nice side-effect is that, -by explicitly associating a consumer with a producer, all consumer-less -producers which appear under that producer, in the hierarchy tree, -automatically *inherits* that consumer. - -Writing log messages --------------------- - -All log producer instances are also functions, and this is by calling -them that log messages are generated. Each call to a producer object -produces the text for one log entry, which in turn, is sent to the log -consumer for that producer. - -The log entry displays, after a prefix identifying the log producer -being used, all arguments given in the call, converted to strings and -space-separated. (This is meant by design to be fairly similar to what -the ``print`` statement does in Python). The prefix itself is made up -of a colon-separated list of keywords associated with the producer, the -whole being set within square brackets. - -Note that the consumer is responsible for adding the newline at the end -of the log entry. That final newline is not part of the text for the -log entry. - -.. Other details -.. ------------- -.. XXX: fill in details -.. + Should speak about pickle-ability of :code:`py.log`. -.. -.. + What is :code:`log.get` (in :file:`logger.py`)? diff --git a/py/doc/_build/html/_sources/misc.txt b/py/doc/_build/html/_sources/misc.txt deleted file mode 100644 index c0537d2a7..000000000 --- a/py/doc/_build/html/_sources/misc.txt +++ /dev/null @@ -1,216 +0,0 @@ -==================================== -Miscellaneous features of the py lib -==================================== - - -Mapping the standard python library into py -=========================================== - - Warning: This feature is very young and thus experimental. - Be prepared to adapt your code later if you use it. - -After you have worked with the py lib a bit, you might enjoy -the lazy importing, i.e. you only have to do ``import py`` and -work your way to your desired object. Using the full path -also ensures that there remains a focus on getting short paths -to objects. - -The :api:`py.std` hook ----------------------- - -Of course, no matter what, everybody will continue to use the -python standard library because it is a very usable code base. -However, to properly support lazyness the py lib offers a way -to get to many standard modules without requiring "import" -statements. For example, to get to the print-exception -functionality of the standard library you can write:: - - py.std.traceback.print_exc() - -without having to do anything else than the usual ``import py`` -at the beginning. Note that not having imports for the -`python standard library` obviously gets rid of the *unused -import* problem. Modules only get imported when you actually -need them. - -Moreover, this approach resolves some of the issues stated in -`the relative/absolute import PEP-328`_, as with the above -approach you never have ambiguity problems. The above -traceback-usage is an absolute path that will not be -accidentally get confused with local names. (Well, never put -a file ``py.py`` in an importable path, btw, mind you :-) - -Automagically accessing sub packages doesn't work (yet?) --------------------------------------------------------- - -If you use the :api:`py.std` hook you currently cannot magically -import nested packages which otherwise need explicit imports of -their sub-packages. For example, the suversion bindings -require you to do something like:: - - import svn.client - -If you just do the naive thing with the py lib, i.e. write -``py.std.svn.client`` it will not work unless you previously -imported it already. The py lib currently doesn't try to -magically make this work. The :api:`py.std` hook really is -intended for Python standard modules which very seldomly (if -at all) provide such nested packages. - -**Note that you may never rely** on module identity, i.e. -that ``X is py.std.X`` for any ``X``. This is to allow -us later to lazyly import nested packages. Yes, lazyness -is hard to resist :-) - -Note: you get an AttributeError, not an ImportError ---------------------------------------------------- - -If you say ``py.std.XYZ`` and importing ``XYZ`` produces an -``ImportError`` , it will actually show up as an -``AttributeError``. It is deemed more important to adhere to -the standard ``__getattr__`` protocol than to let the -``ImportError`` pass through. For example, you might want to -do:: - - getattr(py.std.cStringIO, 'StringIO', py.std.StringIO.StringIO) - -and you would expect that it works. It does work although it will -take away some lazyness because ``py.std.StringIO.StringIO`` will -be imported in any case. - -.. _`the relative/absolute import PEP-328`: http://www.python.org/peps/pep-0328.html - -Support for interaction with system utilities/binaries -====================================================== - -sources: - - * :source:`py/process/` - * :source:`py/path/local/` - -Currently, the py lib offers two ways to interact with -system executables. :api:`py.process.cmdexec()` invokes -the shell in order to execute a string. The other -one, :api:`py.path.local`'s 'sysexec()' method lets you -directly execute a binary. - -Both approaches will raise an exception in case of a return- -code other than 0 and otherwise return the stdout-output -of the child process. - -The shell based approach ------------------------- - -You can execute a command via your system shell -by doing something like:: - - out = py.process.cmdexec('ls -v') - -However, the ``cmdexec`` approach has a few shortcomings: - -- it relies on the underlying system shell -- it neccessitates shell-escaping for expressing arguments -- it does not easily allow to "fix" the binary you want to run. -- it only allows to execute executables from the local - filesystem - -.. _sysexec: - -local paths have ``sysexec`` ----------------------------- - -The py lib currently offers a stripped down functionality of what -the new `PEP-324 subprocess module`_ offers. The main functionality -of synchronously executing a system executable has a straightforward API:: - - binsvn.sysexec('ls', 'http://codespeak.net/svn') - -where ``binsvn`` is a path that points to the ``svn`` commandline -binary. Note that this function would not offer any shell-escaping -so you really have to pass in separated arguments. This idea -fits nicely into `a more general view on path objects`_. - -For a first go, we are just reusing the existing `subprocess -implementation`_ but don't expose any of its API apart -from the above ``sysexec()`` method. - -Note, however, that currently the support for the ``sysexec`` interface on -win32 is not thoroughly tested. If you run into problems with it, we are -interested to hear about them. If you are running a Python older than 2.4 you -will have to install the `pywin32 package`_. - - -.. _`future book`: future.html -.. _`PEP-324 subprocess module`: http://www.python.org/peps/pep-0324.html -.. _`subprocess implementation`: http://www.lysator.liu.se/~astrand/popen5/ -.. _`a more general view on path objects`: future.html#general-path -.. _`pywin32 package`: http://pywin32.sourceforge.net/ - -finding an executable local path --------------------------------- - -Finding an executable is quite different on multiple platforms. -Currently, the ``PATH`` environment variable based search on -unix platforms is supported:: - - py.path.local.sysfind('svn') - -which returns the first path whose ``basename`` matches ``svn``. -In principle, `sysfind` deploys platform specific algorithms -to perform the search. On Windows, for example, it may look -at the registry (XXX). - -To make the story complete, we allow to pass in a second ``checker`` -argument that is called for each found executable. For example, if -you have multiple binaries available you may want to select the -right version:: - - def mysvn(p): - """ check that the given svn binary has version 1.1. """ - line = p.execute('--version'').readlines()[0] - if line.find('version 1.1'): - return p - binsvn = py.path.local.sysfind('svn', checker=mysvn) - - - -Cross-Python Version compatibility helpers -============================================= - -sources: - - * :source:`py/compat/` - * :source:`py/builtin/` - -The compat and builtin namespaces help to write code using newer python features on older python interpreters. - -:api:`py.compat` ----------------- - -:api:`py.compat` provides fixed versions (currently taken from Python 2.4.4) of -a few selected modules to be able to use them across python versions. Currently these are: - - * doctest - * optparse - * subprocess - * textwrap - -Note that for example ``import doctest`` and ``from py.compat import doctest`` result -into two different module objects no matter what Python version you are using. -So you should only use exactly one of these to avoid confusion in your program. - -:api:`py.builtin` ------------------ - -:api:`py.builtin` provides builtin functions/types that were added in later Python -versions. If the used Python version used does not provide these builtins the -py lib provides some reimplementations. These currently are: - - * enumerate - * reversed - * sorted - * BaseException - * set and frozenset (using either the builtin, if available, or the sets - module) - -:api:`py.builtin.BaseException` is just ``Exception`` before Python 2.5. diff --git a/py/doc/_build/html/_sources/path.txt b/py/doc/_build/html/_sources/path.txt deleted file mode 100644 index 24ed960de..000000000 --- a/py/doc/_build/html/_sources/path.txt +++ /dev/null @@ -1,260 +0,0 @@ -======= -py.path -======= - - -The 'py' lib provides a uniform high-level api to deal with filesystems -and filesystem-like interfaces: :api:`py.path`. It aims to offer a central -object to fs-like object trees (reading from and writing to files, adding -files/directories, examining the types and structure, etc.), and out-of-the-box -provides a number of implementations of this API. - -Path implementations provided by :api:`py.path` -=============================================== - -:api:`py.path.local` --------------------- - -The first and most obvious of the implementations is a wrapper around a local -filesystem. It's just a bit nicer in usage than the regular Python APIs, and -of course all the functionality is bundled together rather than spread over a -number of modules. - -Example usage, here we use the :api:`py.test.ensuretemp()` function to create -a :api:`py.path.local` object for us (which wraps a directory):: - - >>> import py - >>> temppath = py.test.ensuretemp('py.path_documentation') - >>> foopath = temppath.join('foo') # get child 'foo' (lazily) - >>> foopath.check() # check if child 'foo' exists - False - >>> foopath.write('bar') # write some data to it - >>> foopath.check() - True - >>> foopath.read() - 'bar' - >>> foofile = foopath.open() # return a 'real' file object - >>> foofile.read(1) - 'b' - -:api:`py.path.svnurl` and :api:`py.path.svnwc` ----------------------------------------------- - -Two other :api:`py.path` implementations that the py lib provides wrap the -popular `Subversion`_ revision control system: the first (called 'svnurl') -by interfacing with a remote server, the second by wrapping a local checkout. -Both allow you to access relatively advanced features such as metadata and -versioning, and both in a way more user-friendly manner than existing other -solutions. - -Some example usage of :api:`py.path.svnurl`:: - - .. >>> import py - .. >>> if not py.test.config.option.urlcheck: raise ValueError('skipchunk') - >>> url = py.path.svnurl('http://codespeak.net/svn/py') - >>> info = url.info() - >>> info.kind - 'dir' - >>> firstentry = url.log()[-1] - >>> import time - >>> time.strftime('%Y-%m-%d', time.gmtime(firstentry.date)) - '2004-10-02' - -Example usage of :api:`py.path.svnwc`:: - - .. >>> if not py.test.config.option.urlcheck: raise ValueError('skipchunk') - >>> temp = py.test.ensuretemp('py.path_documentation') - >>> wc = py.path.svnwc(temp.join('svnwc')) - >>> wc.checkout('http://codespeak.net/svn/py/dist/py/path/local') - >>> wc.join('local.py').check() - True - -.. _`Subversion`: http://subversion.tigris.org/ - -Common vs. specific API -======================= - -All Path objects support a common set of operations, suitable -for many use cases and allowing to transparently switch the -path object within an application (e.g. from "local" to "svnwc"). -The common set includes functions such as `path.read()` to read all data -from a file, `path.write()` to write data, `path.listdir()` to get a list -of directory entries, `path.check()` to check if a node exists -and is of a particular type, `path.join()` to get -to a (grand)child, `path.visit()` to recursively walk through a node's -children, etc. Only things that are not common on 'normal' filesystems (yet), -such as handling metadata (e.g. the Subversion "properties") require -using specific APIs. - -Examples ---------------------------------- - -A quick 'cookbook' of small examples that will be useful 'in real life', -which also presents parts of the 'common' API, and shows some non-common -methods: - -Searching `.txt` files -.......................... - -Search for a particular string inside all files with a .txt extension in a -specific directory. - -:: - - >>> dirpath = temppath.ensure('testdir', dir=True) - >>> dirpath.join('textfile1.txt').write('foo bar baz') - >>> dirpath.join('textfile2.txt').write('frob bar spam eggs') - >>> subdir = dirpath.ensure('subdir', dir=True) - >>> subdir.join('textfile1.txt').write('foo baz') - >>> subdir.join('textfile2.txt').write('spam eggs spam foo bar spam') - >>> results = [] - >>> for fpath in dirpath.visit('*.txt'): - ... if 'bar' in fpath.read(): - ... results.append(fpath.basename) - >>> results.sort() - >>> results - ['textfile1.txt', 'textfile2.txt', 'textfile2.txt'] - -Working with Paths -....................... - -This example shows the :api:`py.path` features to deal with -filesystem paths Note that the filesystem is never touched, -all operations are performed on a string level (so the paths -don't have to exist, either):: - - >>> p1 = py.path.local('/foo/bar') - >>> p2 = p1.join('baz/qux') - >>> p2 == py.path.local('/foo/bar/baz/qux') - True - >>> sep = py.path.local.sep - >>> p2.relto(p1).replace(sep, '/') # os-specific path sep in the string - 'baz/qux' - >>> p2.bestrelpath(p1).replace(sep, '/') - '../..' - >>> p2.join(p2.bestrelpath(p1)) == p1 - True - >>> p3 = p1 / 'baz/qux' # the / operator allows joining, too - >>> p2 == p3 - True - >>> p4 = p1 + ".py" - >>> p4.basename == "bar.py" - True - >>> p4.ext == ".py" - True - >>> p4.purebasename == "bar" - True - -This should be possible on every implementation of :api:`py.path`, so -regardless of whether the implementation wraps a UNIX filesystem, a Windows -one, or a database or object tree, these functions should be available (each -with their own notion of path seperators and dealing with conversions, etc.). - -Checking path types -....................... - -Now we will show a bit about the powerful 'check()' method on paths, which -allows you to check whether a file exists, what type it is, etc.:: - - >>> file1 = temppath.join('file1') - >>> file1.check() # does it exist? - False - >>> file1 = file1.ensure(file=True) # 'touch' the file - >>> file1.check() - True - >>> file1.check(dir=True) # is it a dir? - False - >>> file1.check(file=True) # or a file? - True - >>> file1.check(ext='.txt') # check the extension - False - >>> textfile = temppath.ensure('text.txt', file=True) - >>> textfile.check(ext='.txt') - True - >>> file1.check(basename='file1') # we can use all the path's properties here - True - -Setting svn-properties -....................... - -As an example of 'uncommon' methods, we'll show how to read and write -properties in an :api:`py.path.svnwc` instance:: - - .. >>> if not py.test.config.option.urlcheck: raise ValueError('skipchunk') - >>> wc.propget('foo') - '' - >>> wc.propset('foo', 'bar') - >>> wc.propget('foo') - 'bar' - >>> len(wc.status().prop_modified) # our own props - 1 - >>> msg = wc.revert() # roll back our changes - >>> len(wc.status().prop_modified) - 0 - -SVN authentication -....................... - -Some uncommon functionality can also be provided as extensions, such as SVN -authentication:: - - .. >>> if not py.test.config.option.urlcheck: raise ValueError('skipchunk') - >>> auth = py.path.SvnAuth('anonymous', 'user', cache_auth=False, - ... interactive=False) - >>> wc.auth = auth - >>> wc.update() # this should work - >>> path = wc.ensure('thisshouldnotexist.txt') - >>> try: - ... path.commit('testing') - ... except py.process.cmdexec.Error, e: - ... pass - >>> 'authorization failed' in str(e) - True - -Known problems / limitations -=================================== - -* The SVN path objects require the "svn" command line, - there is currently no support for python bindings. - Parsing the svn output can lead to problems, particularly - regarding if you have a non-english "locales" setting. - -* While the path objects basically work on windows, - there is no attention yet on making unicode paths - work or deal with the famous "8.3" filename issues. - -Future plans -============ - -The Subversion path implementations are based -on the `svn` command line, not on the bindings. -It makes sense now to directly use the bindings. - -Moreover, it would be good, also considering -`py.execnet`_ distribution of programs, to -be able to manipulate Windows Paths on Linux -and vice versa. So we'd like to consider -refactoring the path implementations -to provide this choice (and getting rid -of platform-dependencies as much as possible). - -There is some experimental small approach -(:source:`py/path/gateway/`) aiming at having -a convenient Remote Path implementation -and some considerations about future -works in the according :source:`py/path/gateway/TODO.txt` - -There are various hacks out there to have -Memory-Filesystems and even path objects -being directly mountable under Linux (via `fuse`). -However, the Path object implementations -do not internally have a clean abstraction -of going to the filesystem - so with some -refactoring it should become easier to -have very custom Path objects, still offering -the quite full interface without requiring -to know about all details of the full path -implementation. - -.. _`py.execnet`: execnet.html - diff --git a/py/doc/_build/html/_sources/release-0.9.0.txt b/py/doc/_build/html/_sources/release-0.9.0.txt deleted file mode 100644 index 8adf46347..000000000 --- a/py/doc/_build/html/_sources/release-0.9.0.txt +++ /dev/null @@ -1,7 +0,0 @@ -py lib 1.0.0: XXX -====================================================================== - -Welcome to the 1.0.0 py lib release - a library aiming to -support agile and test-driven python development on various levels. - -XXX diff --git a/py/doc/_build/html/_sources/release-0.9.2.txt b/py/doc/_build/html/_sources/release-0.9.2.txt deleted file mode 100644 index 88bd1bbb3..000000000 --- a/py/doc/_build/html/_sources/release-0.9.2.txt +++ /dev/null @@ -1,27 +0,0 @@ -py lib 0.9.2: bugfix release -============================= - -Welcome to the 0.9.2 py lib and py.test release - -mainly fixing Windows issues, providing better -packaging and integration with setuptools. - -Here is a quick summary of what the py lib provides: - -* py.test: cross-project testing tool with many advanced features -* py.execnet: ad-hoc code distribution to SSH, Socket and local sub processes -* py.magic.greenlet: micro-threads on standard CPython ("stackless-light") -* py.path: path abstractions over local and subversion files -* rich documentation of py's exported API -* tested against Linux, Win32, OSX, works on python 2.3-2.6 - -See here for more information: - -Pypi pages: http://pypi.python.org/pypi/py/ - -Download/Install: http://codespeak.net/py/0.9.2/download.html - -Documentation/API: http://codespeak.net/py/0.9.2/index.html - -best and have fun, - -holger krekel diff --git a/py/doc/_build/html/_sources/release-1.0.0.txt b/py/doc/_build/html/_sources/release-1.0.0.txt deleted file mode 100644 index 8498cc4db..000000000 --- a/py/doc/_build/html/_sources/release-1.0.0.txt +++ /dev/null @@ -1,31 +0,0 @@ -py lib 0.9.0: py.test, distributed execution, greenlets and more -====================================================================== - -Welcome to the 0.9.0 py lib release - a library aiming to -support agile and test-driven python development on various levels. - -Main API/Tool Features: - -* py.test: cross-project testing tool with many advanced features -* py.execnet: ad-hoc code distribution to SSH, Socket and local sub processes -* py.magic.greenlet: micro-threads on standard CPython ("stackless-light") -* py.path: path abstractions over local and subversion files -* rich documentation of py's exported API -* tested against Linux, OSX and partly against Win32, python 2.3-2.5 - -All these features and their API have extensive documentation, -generated with the new "apigen", which we intend to make accessible -for other python projects as well. - -Download/Install: http://codespeak.net/py/0.9.0/download.html -Documentation/API: http://codespeak.net/py/0.9.0/index.html - -Work on the py lib has been partially funded by the -European Union IST programme and by http://merlinux.de -within the PyPy project. - -best, have fun and let us know what you think! - -holger krekel, Maciej Fijalkowski, -Guido Wesdorp, Carl Friedrich Bolz - diff --git a/py/doc/_build/html/_sources/releases.txt b/py/doc/_build/html/_sources/releases.txt deleted file mode 100644 index 6726d990b..000000000 --- a/py/doc/_build/html/_sources/releases.txt +++ /dev/null @@ -1,12 +0,0 @@ -============= -Release notes -============= - -Contents: - -.. toctree:: - :maxdepth: 1 - - release-1.0.0 - release-0.9.2 - release-0.9.0 diff --git a/py/doc/_build/html/_sources/test-config.txt b/py/doc/_build/html/_sources/test-config.txt deleted file mode 100644 index 0632cfc6c..000000000 --- a/py/doc/_build/html/_sources/test-config.txt +++ /dev/null @@ -1,23 +0,0 @@ -Test configuration -======================== - -test options and values ------------------------------ - -You can see all available command line options by running:: - - py.test -h - -py.test will lookup values of options in this order: - -* option value supplied at command line -* content of environment variable ``PYTEST_OPTION_NAME=...`` -* ``name = ...`` setting in the nearest ``conftest.py`` file. - -The name of an option usually is the one you find -in the longform of the option, i.e. the name -behind the ``--`` double-dash. - -IOW, you can set default values for options per project, per -home-directoray, per shell session or per test-run. - diff --git a/py/doc/_build/html/_sources/test-dist.txt b/py/doc/_build/html/_sources/test-dist.txt deleted file mode 100644 index 2c4201be5..000000000 --- a/py/doc/_build/html/_sources/test-dist.txt +++ /dev/null @@ -1,125 +0,0 @@ -.. _`distribute tests across machines`: - -=================== -Distributed testing -=================== - -``py.test`` can ad-hoc distribute test runs to multiple CPUs or remote -machines. This allows to speed up development or to use special resources -of remote machines. Before running tests remotely, ``py.test`` efficiently -synchronizes your program source code to the remote place. All test results -are reported back and displayed to your local test session. You may -specify different Python versions and interpreters. - -Synchronisation and running of tests only requires -a bare Python installation on the remote side. No -special software is installed - this is realized -by use of the **zero installation** `py.execnet`_ mechanisms. - -Speed up test runs by sending tests to multiple CPUs ----------------------------------------------------------- - -To send tests to multiple CPUs, type:: - - py.test -n NUM - -Especially for longer running tests or tests requiring -a lot of IO this can lead to considerable speed ups. - - -Running tests in a Python subprocess ----------------------------------------- - -To instantiate a python2.4 sub process and send tests to it, you may type:: - - py.test -d --tx popen//python=python2.4 - -This will start a subprocess which is run with the "python2.4" -Python interpreter, found in your system binary lookup path. - -If you prefix the --tx option value like this:: - - --tx 3*popen//python=python2.4 - -then three subprocesses would be created and tests -will be load-balanced across these three processes. - - -Sending tests to remote SSH accounts ------------------------------------------------ - -Suppose you have a package ``mypkg`` which contains some -tests that you can successfully run locally. And you -have a ssh-reachable machine ``myhost``. Then -you can ad-hoc distribute your tests by typing:: - - py.test -d --tx ssh=myhostpopen --rsyncdir mypkg mypkg - -This will synchronize your ``mypkg`` package directory -to an remote ssh account and then locally collect tests -and send them to remote places for execution. - -You can specify multiple ``--rsyncdir`` directories -to be sent to the remote side. - - -Sending tests to remote Socket Servers ----------------------------------------- - -Download the single-module `socketserver.py`_ Python program -and run it like this:: - - python socketserver.py - -It will tell you that it starts listening on the default -port. You can now on your home machine specify this -new socket host with something like this:: - - py.test -d --tx socket=192.168.1.102:8888 --rsyncdir mypkg mypkg - - -.. _`atonce`: - -Running tests on many platforms at once -------------------------------------------------------------- - -The basic command to run tests on multiple platforms is:: - - py.test --dist=each --tx=spec1 --tx=spec2 - -If you specify a windows host, an OSX host and a Linux -environment this command will send each tests to all -platforms - and report back failures from all platforms -at once. The provided specifications strings -use the `xspec syntax`_. - -.. _`xspec syntax`: execnet.html#xspec - -.. _`socketserver.py`: http://codespeak.net/svn/py/dist/py/execnet/script/socketserver.py -.. _`py.execnet`: execnet.html - -Specifying test exec environments in a conftest.py -------------------------------------------------------------- - -Instead of specifying command line options, you can -put options values in a ``conftest.py`` file like this:: - - pytest_option_tx = ['ssh=myhost//python=python2.5', 'popen//python=python2.5'] - pytest_option_dist = True - -Any commandline ``--tx`` specifictions will add to the list of available execution -environments. - -Specifying "rsync" dirs in a conftest.py -------------------------------------------------------------- - -In your ``mypkg/conftest.py`` you may specify directories to synchronise -or to exclude:: - - rsyncdirs = ['.', '../plugins'] - rsyncignore = ['_cache'] - -These directory specifications are relative to the directory -where the ``conftest.py`` is found. - - diff --git a/py/doc/_build/html/_sources/test-examples.txt b/py/doc/_build/html/_sources/test-examples.txt deleted file mode 100644 index a685399ce..000000000 --- a/py/doc/_build/html/_sources/test-examples.txt +++ /dev/null @@ -1,54 +0,0 @@ - -Working Examples -================ - -managing state at module, class and method level ------------------------------------------------------------- - -Here is a working example for what goes on when you setup modules, -classes and methods:: - - # [[from py/documentation/example/pytest/test_setup_flow_example.py]] - - def setup_module(module): - module.TestStateFullThing.classcount = 0 - - class TestStateFullThing: - def setup_class(cls): - cls.classcount += 1 - - def teardown_class(cls): - cls.classcount -= 1 - - def setup_method(self, method): - self.id = eval(method.func_name[5:]) - - def test_42(self): - assert self.classcount == 1 - assert self.id == 42 - - def test_23(self): - assert self.classcount == 1 - assert self.id == 23 - - def teardown_module(module): - assert module.TestStateFullThing.classcount == 0 - -For this example the control flow happens as follows:: - - import test_setup_flow_example - setup_module(test_setup_flow_example) - setup_class(TestStateFullThing) - instance = TestStateFullThing() - setup_method(instance, instance.test_42) - instance.test_42() - setup_method(instance, instance.test_23) - instance.test_23() - teardown_class(TestStateFullThing) - teardown_module(test_setup_flow_example) - -Note that ``setup_class(TestStateFullThing)`` is called and not -``TestStateFullThing.setup_class()`` which would require you -to insert ``setup_class = classmethod(setup_class)`` to make -your setup function callable. Did we mention that lazyness -is a virtue? diff --git a/py/doc/_build/html/_sources/test-ext.txt b/py/doc/_build/html/_sources/test-ext.txt deleted file mode 100644 index c245f197f..000000000 --- a/py/doc/_build/html/_sources/test-ext.txt +++ /dev/null @@ -1,64 +0,0 @@ - -=============== -Writing plugins -=============== - -Learning by examples -===================== - -XXX - -adding custom options ----------------------- - -py.test supports adding of standard optparse_ Options. -A plugin may implement the ``addoption`` hook for registering -custom options:: - - class ConftestPlugin: - def pytest_addoption(self, parser): - parser.addoption("-M", "--myopt", action="store", - help="specify string to set myopt") - - def pytest_configure(self, config): - if config.option.myopt: - # do action based on option value - -.. _optparse: http://docs.python.org/library/optparse.html - -Setting default values for test options -======================================= - -You can see all available command line options by running:: - - py.test -h - -py.test will lookup values of options in this order: - -* option value supplied at command line -* content of environment variable ``PYTEST_OPTION_NAME=...`` -* ``name = ...`` setting in the nearest ``conftest.py`` file. - -The name of an option usually is the one you find -in the longform of the option, i.e. the name -behind the ``--`` double-dash. - -IOW, you can set default values for options per project, per -home-directoray, per shell session or per test-run. - - - -Plugin methods -======================================= - -A Plugin class may implement the following attributes and methods: - -XXX - -_`pytest event`: - -Pytest Events -======================================= - -XXX - diff --git a/py/doc/_build/html/_sources/test-features.txt b/py/doc/_build/html/_sources/test-features.txt deleted file mode 100644 index 8bacd3ecc..000000000 --- a/py/doc/_build/html/_sources/test-features.txt +++ /dev/null @@ -1,279 +0,0 @@ -================================================== -Features -================================================== - -py.test is a standalone-tool that collects and runs tests for -your Python application and modules. py.test works across -linux, windows and osx and on Python 2.3 - Python 2.6. - -It aims to support *unit-tests* and *functional tests* written -in Python and is used in projects that run more than 10000 -tests regularly. - -py.test presents a clean and powerful command line interface -and strives to generally make testing a fun effort. - -automatically collects and executes tests -=============================================== - -py.test discovers tests automatically by inspect specified -directories or files. By default, it collects all python -modules a leading ``test_`` or trailing ``_test`` filename. -From each test module every function with a leading ``test_`` -or class with a leading ``Test`` name is collected. - -.. _`generative tests`: -.. _`collection process`: impl-test.html#collection-process - -load-balance tests to multiple CPUs -=================================== - -For large test suites you can distribute your -tests to multiple CPUs by issuing for example:: - - py.test -n 3 - -Read more on `distributed testing`_. - -.. _`distributed testing`: test-dist.html - -Distribute tests across machines -=================================== - -py.test supports the sending of tests to -remote ssh-accounts or socket servers. -It can `ad-hoc run your test on multiple -platforms one a single test run`. Ad-hoc -means that there are **no installation -requirements whatsoever** on the remote side. - -.. _`ad-hoc run your test on multiple platforms one a single test run`: test-dist.html#atonce - -extensive debugging support -=================================== - -testing starts immediately --------------------------- - -Testing starts as soon as the first ``test item`` -is collected. The collection process is iterative -and does not need to complete before your first -test items are executed. - -support for modules containing tests --------------------------------------- - -As ``py.test`` operates as a separate cmdline -tool you can easily have a command line utility and -some tests in the same file. - -debug with the ``print`` statement ----------------------------------- - -By default, ``py.test`` catches text written to stdout/stderr during -the execution of each individual test. This output will only be -displayed however if the test fails; you will not see it -otherwise. This allows you to put debugging print statements in your -code without being overwhelmed by all the output that might be -generated by tests that do not fail. - -Each failing test that produced output during the running of the test -will have its output displayed in the ``recorded stdout`` section. - -The catching of stdout/stderr output can be disabled using the -``--nocapture`` option to the ``py.test`` tool. Any output will -in this case be displayed as soon as it is generated. - -test execution order --------------------------------- - -Tests usually run in the order in which they appear in the files. -However, tests should not rely on running one after another, as -this prevents more advanced usages: running tests -distributedly or selectively, or in "looponfailing" mode, -will cause them to run in random order. - -assert with the ``assert`` statement ----------------------------------------- - -``py.test`` allows to use the standard python -``assert statement`` for verifying expectations -and values in Python tests. For example, you can -write the following in your tests:: - - assert hasattr(x, 'attribute') - -to state that your object has a certain ``attribute``. In case this -assertion fails you will see the value of ``x``. Intermediate -values are computed by executing the assert expression a second time. -If you execute code with side effects, e.g. read from a file like this:: - - assert f.read() != '...' - -then you may get a warning from pytest if that assertions -first failed and then succeeded. - -asserting expected exceptions ----------------------------------------- - -In order to write assertions about exceptions, you use -one of two forms:: - - py.test.raises(Exception, func, *args, **kwargs) - py.test.raises(Exception, "func(*args, **kwargs)") - -both of which execute the given function with args and kwargs and -asserts that the given ``Exception`` is raised. The reporter will -provide you with helpful output in case of failures such as *no -exception* or *wrong exception*. - -useful tracebacks, recursion detection --------------------------------------- - -A lot of care is taken to present nice tracebacks in case of test -failure. Try:: - - py.test py/doc/example/pytest/failure_demo.py - -to see a variety of tracebacks, each representing a different -failure situation. - -``py.test`` uses the same order for presenting tracebacks as Python -itself: the oldest function call is shown first, and the most recent call is -shown last. A ``py.test`` reported traceback starts with your -failing test function. If the maximum recursion depth has been -exceeded during the running of a test, for instance because of -infinite recursion, ``py.test`` will indicate where in the -code the recursion was taking place. You can inhibit -traceback "cutting" magic by supplying ``--fulltrace``. - -There is also the possibility of using ``--tb=short`` to get regular CPython -tracebacks. Or you can use ``--tb=no`` to not show any tracebacks at all. - -no inheritance requirement --------------------------- - -Test classes are recognized by their leading ``Test`` name. Unlike -``unitest.py``, you don't need to inherit from some base class to make -them be found by the test runner. Besides being easier, it also allows -you to write test classes that subclass from application level -classes. - -testing for deprecated APIs ------------------------------- - -In your tests you can use ``py.test.deprecated_call(func, *args, **kwargs)`` -to test that a particular function call triggers a DeprecationWarning. -This is useful for testing phasing out of old APIs in your projects. - - -advanced test selection / skipping -========================================================= - -dynamically skipping tests -------------------------------- - -If you want to skip tests you can use ``py.test.skip`` within -test or setup functions. Example:: - - py.test.skip("message") - -You can also use a helper to skip on a failing import:: - - docutils = py.test.importorskip("docutils") - -or to skip if a library does not have the right version:: - - docutils = py.test.importorskip("docutils", minversion="0.3") - -The version will be read from the module's ``__version__`` attribute. - -.. _`selection by keyword`: - -selecting/unselecting tests by keyword ---------------------------------------------- - -Pytest's keyword mechanism provides a powerful way to -group and selectively run tests in your test code base. -You can selectively run tests by specifiying a keyword -on the command line. Examples:: - - py.test -k test_simple - py.test -k "-test_simple" - -will run all tests matching (or not matching) the -"test_simple" keyword. Note that you need to quote -the keyword if "-" is recognized as an indicator -for a commandline option. Lastly, you may use:: - - py.test. -k "test_simple:" - -which will run all tests after the expression has *matched once*, i.e. -all tests that are seen after a test that matches the "test_simple" -keyword. - -By default, all filename parts and -class/function names of a test function are put into the set -of keywords for a given test. You may specify additional -kewords like this:: - - @py.test.mark(webtest=True) - def test_send_http(): - ... - -disabling a test class ----------------------- - -If you want to disable a complete test class you -can set the class-level attribute ``disabled``. -For example, in order to avoid running some tests on Win32:: - - class TestPosixOnly: - disabled = sys.platform == 'win32' - - def test_xxx(self): - ... - -generative tests: yielding parametrized tests -==================================================== - -*Generative tests* are test methods that are *generator functions* which -``yield`` callables and their arguments. This is most useful for running a -test function multiple times against different parameters. Example:: - - def test_generative(): - for x in (42,17,49): - yield check, x - - def check(arg): - assert arg % 7 == 0 # second generated tests fails! - -Note that ``test_generative()`` will cause three tests -to get run, notably ``check(42)``, ``check(17)`` and ``check(49)`` -of which the middle one will obviously fail. - -To make it easier to distinguish the generated tests it is possible to specify an explicit name for them, like for example:: - - def test_generative(): - for x in (42,17,49): - yield "case %d" % x, check, x - -extensible plugin system -========================================= - -py.test itself consists of many plugins -and you can easily write new `py.test plugins`_ -for these purposes: - -* reporting extensions -* customizing collection and run of tests -* running non-python tests -* managing test state setup - -.. _`py.test plugins`: test-plugins.html - -.. _`reStructured Text`: http://docutils.sourceforge.net -.. _`Python debugger`: http://docs.python.org/lib/module-pdb.html - - -.. _nose: http://somethingaboutorange.com/mrl/projects/nose/ diff --git a/py/doc/_build/html/_sources/test-plugins.txt b/py/doc/_build/html/_sources/test-plugins.txt deleted file mode 100644 index ac6c9aa3f..000000000 --- a/py/doc/_build/html/_sources/test-plugins.txt +++ /dev/null @@ -1,71 +0,0 @@ -================ -Included plugins -================ - -Many of py.test's features are implemented as a plugin. - -Included plugins -================ - -You can find the source code of all default plugins in -http://codespeak.net/svn/py/trunk/py/test/plugin/ - -plugins that add reporting asepcts ------------------------------------ - -pytest_terminal: default reporter for writing info to terminals - -pytest_resultlog: log test results in machine-readable form to a file - -pytest_eventlog: log all internal pytest events to a file - -plugins for adding new test types ------------------------------------ - -pytest_unittest: run traditional unittest TestCase instances - -pytest_doctest: run doctests in python modules or .txt files - -pytest_restdoc: provide RestructuredText syntax and link checking - -plugins for python test functions ------------------------------------ - -pytest_xfail: provides "expected to fail" test marker - -pytest_tmpdir: provide temporary directories to test functions - -pytest_plugintester: generic plugin apichecks, support for functional plugin tests - -pytest_apigen: tracing values of function/method calls when running tests - -Loading plugins and specifying dependencies -============================================ - -py.test loads and configures plugins at tool startup: - -* by reading the ``PYTEST_PLUGINS`` environment variable - and importing the comma-separated list of plugin names. - -* by loading all plugins specified via one or more ``-p name`` - command line options. - -* by loading all plugins specified via a ``pytest_plugins`` - variable in ``conftest.py`` files or test modules. - -example: ensure a plugin is loaded ------------------------------------ - -If you create a ``conftest.py`` file with the following content:: - - pytest_plugins = "pytest_myextension", - -then all tests in that directory and below it will run with -an instantiated "pytest_myextension". Here is how instantiation -takes place: - -* the module ``pytest_extension`` will be imported and - and its contained `ExtensionPlugin`` class will - be instantiated. A plugin module may specify its - dependencies via another ``pytest_plugins`` definition. - diff --git a/py/doc/_build/html/_sources/test-quickstart.txt b/py/doc/_build/html/_sources/test-quickstart.txt deleted file mode 100644 index 0430fde91..000000000 --- a/py/doc/_build/html/_sources/test-quickstart.txt +++ /dev/null @@ -1,59 +0,0 @@ -.. _`setuptools installation`: http://pypi.python.org/pypi/setuptools - - -================== -Quickstart -================== - -This document assumes basic python knowledge. If you have a -`setuptools installation`_, install ``py.test`` by typing:: - - easy_install -U py - -For alternative installation methods please see the download_ page. - -You should now have a ``py.test`` command line tool and can -look at its documented cmdline options via this command:: - - py.test -h - -Writing and running a test -========================== - -``py.test`` is the command line tool to run tests. -Let's write a first test module by putting the following -test function into a ``test_sample.py`` file:: - - # content of test_sample.py - def test_answer(): - assert 42 == 43 - -Now you can run the test by passing it as an argument:: - - py.test test_sample.py - -What does happen here? ``py.test`` looks for functions and -methods in the module that start with ``test_``. It then -executes those tests. Assertions about test outcomes are -done via the standard ``assert`` statement. - -You can also use ``py.test`` to run all tests in a directory structure by -invoking it without any arguments:: - - py.test - -This will automatically collect and run any Python module whose filenames -start with ``test_`` or ends with ``_test`` from the directory and any -subdirectories, starting with the current directory, and run them. Each -Python test module is inspected for test methods starting with ``test_``. - -.. Organising your tests -.. --------------------------- - -Please refer to `features`_ for a walk through the basic features. - - -.. _download: download.html -.. _features: test-features.html - - diff --git a/py/doc/_build/html/_sources/test.txt b/py/doc/_build/html/_sources/test.txt deleted file mode 100644 index 3ff64a7e3..000000000 --- a/py/doc/_build/html/_sources/test.txt +++ /dev/null @@ -1,42 +0,0 @@ -======= -py.test -======= - -*py.test* is a tool for: - -* rapidly writing unit- and functional tests in Python -* writing tests for non-python code and data -* receiving useful reports on test failures -* distributing tests to multiple CPUs and remote environments - -quickstart_: for getting started immediately. - -features_: a walk through basic features and usage. - -plugins_: using available plugins. - -extend_: writing plugins and advanced configuration. - -`distributed testing`_ how to distribute test runs to other machines and platforms. - -.. _quickstart: test-quickstart.html -.. _features: test-features.html -.. _plugins: test-plugins.html -.. _extend: test-ext.html -.. _`distributed testing`: test-dist.html - - - -Contents: - -.. toctree:: - :maxdepth: 2 - - test-quickstart - test-features - test-plugins - test-ext - test-dist - test-config - test-examples - impl-test diff --git a/py/doc/_build/html/_sources/why_py.txt b/py/doc/_build/html/_sources/why_py.txt deleted file mode 100644 index e813fd99f..000000000 --- a/py/doc/_build/html/_sources/why_py.txt +++ /dev/null @@ -1,182 +0,0 @@ -============================================== -Why, who, what and how do you do *the py lib*? -============================================== - - -Why did we start the py lib? -============================ - -Among the main motivation for the py lib and its flagship -py.test tool were: - -- to test applications with a testing tool that provides - advanced features out of the box, yet allows full customization - per-project. - -- distribute applications in an ad-hoc way both for testing - and for application integration purposes. - -- help with neutralizing platform and python version differences - -- offer a uniform way to access local and remote file resources - -- offer some unique features like micro-threads (greenlets) - - -What is the py libs current focus? -================================== - -testing testing testing ------------------------ - -Currently, the main focus of the py lib is to get a decent -`test environment`_, indeed to produce the best one out there. -Writing, distributing and deploying tests should become -a snap ... and fun! - -On a side note: automated tests fit very well to the dynamism -of Python. Automated tests ease development and allow fast -refactoring cycles. Automated tests are a means of -communication as well. - - -ad-hoc distribution of programs ------------------------------------- - -The py lib through its `py.execnet`_ namespaces offers -support for ad-hoc distributing programs across -a network and subprocesses. We'd like to generalize -this approach further to instantiate and let whole -ad-hoc networks communicate with each other while -keeping to a simple programming model. - -.. _`py.execnet`: execnet.html - - -allowing maximum refactoring in the future ... ----------------------------------------------- - -explicit name export control -............................ - -In order to allow a fast development pace across versions of -the py lib there is **explicit name export control**. You -should only see names which make sense to use from the outside -and which the py lib developers want to guarantee across versions. -However, you don't need to treat the ``py`` lib as -anything special. You can simply use the usual ``import`` -statement and will not notice much of a difference - except that -the namespaces you'll see from the ``py`` lib are relatively -clean and have no clutter. - -Release policy & API maintenance -........................................ - -We'll talk about major, minor and micro numbers as the three -numbers in "1.2.3" respectively. These are the -the rough release policies: - -- Micro-releases are bug fix releases and should not introduce - new names to the public API. They may add tests and thus - further define the behaviour of the py lib. They may - completly change the implementation but the public API - tests should continue to run (unless they needed to - get fixed themselves). - -- No **tested feature** of the exported py API shall vanish - across minor releases until it is marked deprecated. - - For example, pure API tests of a future version 1.0 are to - continue to fully run on 1.1 and so on. If an API gets - deprecated with a minor release it goes with the next minor - release. Thus if you don't use deprecated APIs you should - be able to use the next two minor releases. However, if - you relied on some untested implementation behaviour, - you may still get screwed. Solution: add API tests to the - py lib :-) It's really the tests that make the difference. - -- Pure API tests are not allowed to access any implementation - level details. For example, accessing names starting with - a single leading '_' is generally seen as an implementation - level detail. - -- major releases *should*, but are not required to, pass - all API tests of the previous latest major released - version. - - -the need to find the right *paths* ... --------------------------------------- - -Another focus are well tested so called *path* implementations -that allow you to seemlessly work with different backends, -currently a local filesystem, subversion working copies and -subversion remote URLs. - -How does py development work? -============================= - -Communication and coding style ------------------------------- - -We are discussing things on our `py-dev mailing list`_ -and collaborate via the codespeak subversion repository. - -We follow a `coding style`_ which strongly builds on `PEP 8`_, -the basic python coding style document. - -It's easy to get commit rights especially if you are an -experienced python developer and share some of the -frustrations described above. - -Licensing ------------------ - -The Py lib is released under the MIT license and all -contributors need to release their contributions -under this license as well. - -connections with PyPy_ ---------------------------------- - -A major motivation for writing the py lib stems from needs -during PyPy_ development, most importantly testing and -file system access issues. PyPy puts a lot of pressure -on a testing environment and thus is a good **reality test**. - -Who is "we"? -============================= - -Some initial code was written from *Jens-Uwe Mager* and *Holger -Krekel*, after which Holger continued on a previous -incarnations of the py.test tool (known first as 'utest', then -as 'std.utest', now for some 2 years 'py.test'). - -Helpful discussions took place with *Martijn Faassen*, *Stephan -Schwarzer*, *Brian Dorsey*, *Grigh Gheorghiu* and then -*Armin Rigo* who contributed important parts. -He and Holger came up with a couple of iterations of the -testing-code that reduced the API to basically nothing: just the -plain assert statement and a ``py.test.raises`` method to -check for occuring exceptions within tests. - -Currently (as of 2007), there are more people involved -and also have worked funded through merlinux_ and the -PyPy EU project, Carl Friedrich Bolz, Guido Wesdorp -and Maciej Fijalkowski who contributed particularly -in 2006 and 2007 major parts of the py lib. - -.. _`talk at EP2004`: http://codespeak.net/svn/user/hpk/talks/std-talk.txt -.. _`coding style`: coding-style.html -.. _`PEP 8`: http://www.python.org/peps/pep-0008.html -.. _`py-dev mailing list`: http://codespeak.net/mailman/listinfo/py-dev -.. _`test environment`: test.html -.. _`PyPy`: http://codespeak.net/pypy -.. _future: future.html -.. _`py.test tool and library`: test.html -.. _merlinux: http://merlinux.de - --- - -.. [#] FOSS is an evolving acronym for Free and Open Source Software - diff --git a/py/doc/_build/html/_sources/xml.txt b/py/doc/_build/html/_sources/xml.txt deleted file mode 100644 index 96db72aaf..000000000 --- a/py/doc/_build/html/_sources/xml.txt +++ /dev/null @@ -1,169 +0,0 @@ -==================================================== -py.xml: Lightweight and flexible xml/html generation -==================================================== - - -Motivation -========== - -There are a plethora of frameworks and libraries to generate -xml and html trees. However, many of them are large, have a -steep learning curve and are often hard to debug. Not to -speak of the fact that they are frameworks to begin with. - -The py lib strives to offer enough functionality to represent -itself and especially its API in html or xml. - -.. _xist: http://www.livinglogic.de/Python/xist/index.html -.. _`exchange data`: execnet.html#exchange-data - -a pythonic object model , please -================================ - -The py lib offers a pythonic way to generate xml/html, based on -ideas from xist_ which `uses python class objects`_ to build -xml trees. However, xist_'s implementation is somewhat heavy -because it has additional goals like transformations and -supporting many namespaces. But its basic idea is very easy. - -.. _`uses python class objects`: http://www.livinglogic.de/Python/xist/Howto.html - -generating arbitrary xml structures ------------------------------------ - -With ``py.xml.Namespace`` you have the basis -to generate custom xml-fragments on the fly:: - - class ns(py.xml.Namespace): - "my custom xml namespace" - doc = ns.books( - ns.book( - ns.author("May Day"), - ns.title("python for java programmers"),), - ns.book( - ns.author("why"), - ns.title("Java for Python programmers"),), - publisher="N.N", - ) - print doc.unicode(indent=2).encode('utf8') - -will give you this representation:: - - - - May Day - python for java programmers - - why - Java for Python programmers - -In a sentence: positional arguments are child-tags and -keyword-arguments are attributes. - -On a side note, you'll see that the unicode-serializer -supports a nice indentation style which keeps your generated -html readable, basically through emulating python's white -space significance by putting closing-tags rightmost and -almost invisible at first glance :-) - -basic example for generating html ---------------------------------- - -Consider this example:: - - from py.xml import html # html namespace - - paras = "First Para", "Second para" - - doc = html.html( - html.head( - html.meta(name="Content-Type", value="text/html; charset=latin1")), - html.body( - [html.p(p) for p in paras])) - - print unicode(doc).encode('latin1') - -Again, tags are objects which contain tags and have attributes. -More exactly, Tags inherit from the list type and thus can be -manipulated as list objects. They additionally support a default -way to represent themselves as a serialized unicode object. - -If you happen to look at the py.xml implementation you'll -note that the tag/namespace implementation consumes some 50 lines -with another 50 lines for the unicode serialization code. - -CSS-styling your html Tags --------------------------- - -One aspect where many of the huge python xml/html generation -frameworks utterly fail is a clean and convenient integration -of CSS styling. Often, developers are left alone with keeping -CSS style definitions in sync with some style files -represented as strings (often in a separate .css file). Not -only is this hard to debug but the missing abstractions make -it hard to modify the styling of your tags or to choose custom -style representations (inline, html.head or external). Add the -Browers usual tolerance of messyness and errors in Style -references and welcome to hell, known as the domain of -developing web applications :-) - -By contrast, consider this CSS styling example:: - - class my(html): - "my initial custom style" - class body(html.body): - style = html.Style(font_size = "120%") - - class h2(html.h2): - style = html.Style(background = "grey") - - class p(html.p): - style = html.Style(font_weight="bold") - - doc = my.html( - my.head(), - my.body( - my.h2("hello world"), - my.p("bold as bold can") - ) - ) - - print doc.unicode(indent=2) - -This will give you a small'n mean self contained -represenation by default:: - - - - -

hello world

-

bold as bold can

- -Most importantly, note that the inline-styling is just an -implementation detail of the unicode serialization code. -You can easily modify the serialization to put your styling into the -``html.head`` or in a separate file and autogenerate CSS-class -names or ids. - -Hey, you could even write tests that you are using correct -styles suitable for specific browser requirements. Did i mention -that the ability to easily write tests for your generated -html and its serialization could help to develop _stable_ user -interfaces? - -More to come ... ----------------- - -For now, i don't think we should strive to offer much more -than the above. However, it is probably not hard to offer -*partial serialization* to allow generating maybe hundreds of -complex html documents per second. Basically we would allow -putting callables both as Tag content and as values of -attributes. A slightly more advanced Serialization would then -produce a list of unicode objects intermingled with callables. -At HTTP-Request time the callables would get called to -complete the probably request-specific serialization of -your Tags. Hum, it's probably harder to explain this than to -actually code it :-) - -.. _`py.test`: test.html diff --git a/py/doc/_build/html/_static/basic.css b/py/doc/_build/html/_static/basic.css deleted file mode 100644 index ed737d3ba..000000000 --- a/py/doc/_build/html/_static/basic.css +++ /dev/null @@ -1,414 +0,0 @@ -/** - * Sphinx stylesheet -- basic theme - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - */ - -/* -- main layout ----------------------------------------------------------- */ - -div.documentwrapper { - float: left; - width: 100%; -} - -div.bodywrapper { - margin: 0 0 0 230px; -} - -div.clearer { - clear: both; -} - -/* -- relbar ---------------------------------------------------------------- */ - -div.related { - width: 100%; - font-size: 90%; -} - -div.related h3 { - display: none; -} - -div.related ul { - margin: 0; - padding: 0 0 0 10px; - list-style: none; -} - -div.related li { - display: inline; -} - -div.related li.right { - float: right; - margin-right: 5px; -} - -/* -- sidebar --------------------------------------------------------------- */ - -div.sphinxsidebarwrapper { - padding: 10px 5px 0 10px; -} - -div.sphinxsidebar { - float: left; - width: 230px; - margin-left: -100%; - font-size: 90%; -} - -div.sphinxsidebar ul { - list-style: none; -} - -div.sphinxsidebar ul ul, -div.sphinxsidebar ul.want-points { - margin-left: 20px; - list-style: square; -} - -div.sphinxsidebar ul ul { - margin-top: 0; - margin-bottom: 0; -} - -div.sphinxsidebar form { - margin-top: 10px; -} - -div.sphinxsidebar input { - border: 1px solid #98dbcc; - font-family: sans-serif; - font-size: 1em; -} - -img { - border: 0; -} - -/* -- search page ----------------------------------------------------------- */ - -ul.search { - margin: 10px 0 0 20px; - padding: 0; -} - -ul.search li { - padding: 5px 0 5px 20px; - background-image: url(file.png); - background-repeat: no-repeat; - background-position: 0 7px; -} - -ul.search li a { - font-weight: bold; -} - -ul.search li div.context { - color: #888; - margin: 2px 0 0 30px; - text-align: left; -} - -ul.keywordmatches li.goodmatch a { - font-weight: bold; -} - -/* -- index page ------------------------------------------------------------ */ - -table.contentstable { - width: 90%; -} - -table.contentstable p.biglink { - line-height: 150%; -} - -a.biglink { - font-size: 1.3em; -} - -span.linkdescr { - font-style: italic; - padding-top: 5px; - font-size: 90%; -} - -/* -- general index --------------------------------------------------------- */ - -table.indextable td { - text-align: left; - vertical-align: top; -} - -table.indextable dl, table.indextable dd { - margin-top: 0; - margin-bottom: 0; -} - -table.indextable tr.pcap { - height: 10px; -} - -table.indextable tr.cap { - margin-top: 10px; - background-color: #f2f2f2; -} - -img.toggler { - margin-right: 3px; - margin-top: 3px; - cursor: pointer; -} - -/* -- general body styles --------------------------------------------------- */ - -a.headerlink { - visibility: hidden; -} - -h1:hover > a.headerlink, -h2:hover > a.headerlink, -h3:hover > a.headerlink, -h4:hover > a.headerlink, -h5:hover > a.headerlink, -h6:hover > a.headerlink, -dt:hover > a.headerlink { - visibility: visible; -} - -div.body p.caption { - text-align: inherit; -} - -div.body td { - text-align: left; -} - -.field-list ul { - padding-left: 1em; -} - -.first { - margin-top: 0 !important; -} - -p.rubric { - margin-top: 30px; - font-weight: bold; -} - -/* -- sidebars -------------------------------------------------------------- */ - -div.sidebar { - margin: 0 0 0.5em 1em; - border: 1px solid #ddb; - padding: 7px 7px 0 7px; - background-color: #ffe; - width: 40%; - float: right; -} - -p.sidebar-title { - font-weight: bold; -} - -/* -- topics ---------------------------------------------------------------- */ - -div.topic { - border: 1px solid #ccc; - padding: 7px 7px 0 7px; - margin: 10px 0 10px 0; -} - -p.topic-title { - font-size: 1.1em; - font-weight: bold; - margin-top: 10px; -} - -/* -- admonitions ----------------------------------------------------------- */ - -div.admonition { - margin-top: 10px; - margin-bottom: 10px; - padding: 7px; -} - -div.admonition dt { - font-weight: bold; -} - -div.admonition dl { - margin-bottom: 0; -} - -p.admonition-title { - margin: 0px 10px 5px 0px; - font-weight: bold; -} - -div.body p.centered { - text-align: center; - margin-top: 25px; -} - -/* -- tables ---------------------------------------------------------------- */ - -table.docutils { - border: 0; - border-collapse: collapse; -} - -table.docutils td, table.docutils th { - padding: 1px 8px 1px 0; - border-top: 0; - border-left: 0; - border-right: 0; - border-bottom: 1px solid #aaa; -} - -table.field-list td, table.field-list th { - border: 0 !important; -} - -table.footnote td, table.footnote th { - border: 0 !important; -} - -th { - text-align: left; - padding-right: 5px; -} - -/* -- other body styles ----------------------------------------------------- */ - -dl { - margin-bottom: 15px; -} - -dd p { - margin-top: 0px; -} - -dd ul, dd table { - margin-bottom: 10px; -} - -dd { - margin-top: 3px; - margin-bottom: 10px; - margin-left: 30px; -} - -dt:target, .highlight { - background-color: #fbe54e; -} - -dl.glossary dt { - font-weight: bold; - font-size: 1.1em; -} - -.field-list ul { - margin: 0; - padding-left: 1em; -} - -.field-list p { - margin: 0; -} - -.refcount { - color: #060; -} - -.optional { - font-size: 1.3em; -} - -.versionmodified { - font-style: italic; -} - -.system-message { - background-color: #fda; - padding: 5px; - border: 3px solid red; -} - -.footnote:target { - background-color: #ffa -} - -/* -- code displays --------------------------------------------------------- */ - -pre { - overflow: auto; -} - -td.linenos pre { - padding: 5px 0px; - border: 0; - background-color: transparent; - color: #aaa; -} - -table.highlighttable { - margin-left: 0.5em; -} - -table.highlighttable td { - padding: 0 0.5em 0 0.5em; -} - -tt.descname { - background-color: transparent; - font-weight: bold; - font-size: 1.2em; -} - -tt.descclassname { - background-color: transparent; -} - -tt.xref, a tt { - background-color: transparent; - font-weight: bold; -} - -h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { - background-color: transparent; -} - -/* -- math display ---------------------------------------------------------- */ - -img.math { - vertical-align: middle; -} - -div.math p { - text-align: center; -} - -span.eqno { - float: right; -} - -/* -- printout stylesheet --------------------------------------------------- */ - -@media print { - div.document, - div.documentwrapper, - div.bodywrapper { - margin: 0; - width: 100%; - } - - div.sphinxsidebar, - div.related, - div.footer, - #top-link { - display: none; - } -} diff --git a/py/doc/_build/html/_static/default.css b/py/doc/_build/html/_static/default.css deleted file mode 100644 index c13ed6836..000000000 --- a/py/doc/_build/html/_static/default.css +++ /dev/null @@ -1,201 +0,0 @@ -/** - * Sphinx stylesheet -- default theme - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - */ - -@import url("basic.css"); - -/* -- page layout ----------------------------------------------------------- */ - -body { - font-family: sans-serif; - font-size: 100%; - background-color: #11303d; - color: #000; - margin: 0; - padding: 0; -} - -div.document { - background-color: #1c4e63; -} - -div.body { - background-color: #ffffff; - color: #000000; - padding: 0 20px 30px 20px; -} - -div.footer { - color: #ffffff; - width: 100%; - padding: 9px 0 9px 0; - text-align: center; - font-size: 75%; -} - -div.footer a { - color: #ffffff; - text-decoration: underline; -} - -div.related { - background-color: #133f52; - line-height: 30px; - color: #ffffff; -} - -div.related a { - color: #ffffff; -} - -div.sphinxsidebar { -} - -div.sphinxsidebar h3 { - font-family: 'Trebuchet MS', sans-serif; - color: #ffffff; - font-size: 1.4em; - font-weight: normal; - margin: 0; - padding: 0; -} - -div.sphinxsidebar h3 a { - color: #ffffff; -} - -div.sphinxsidebar h4 { - font-family: 'Trebuchet MS', sans-serif; - color: #ffffff; - font-size: 1.3em; - font-weight: normal; - margin: 5px 0 0 0; - padding: 0; -} - -div.sphinxsidebar p { - color: #ffffff; -} - -div.sphinxsidebar p.topless { - margin: 5px 10px 10px 10px; -} - -div.sphinxsidebar ul { - margin: 10px; - padding: 0; - color: #ffffff; -} - -div.sphinxsidebar a { - color: #98dbcc; -} - -div.sphinxsidebar input { - border: 1px solid #98dbcc; - font-family: sans-serif; - font-size: 1em; -} - -/* -- body styles ----------------------------------------------------------- */ - -a { - color: #355f7c; - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -div.body p, div.body dd, div.body li { - text-align: justify; - line-height: 130%; -} - -div.body h1, -div.body h2, -div.body h3, -div.body h4, -div.body h5, -div.body h6 { - font-family: 'Trebuchet MS', sans-serif; - background-color: #f2f2f2; - font-weight: normal; - color: #20435c; - border-bottom: 1px solid #ccc; - margin: 20px -20px 10px -20px; - padding: 3px 0 3px 10px; -} - -div.body h1 { margin-top: 0; font-size: 200%; } -div.body h2 { font-size: 160%; } -div.body h3 { font-size: 140%; } -div.body h4 { font-size: 120%; } -div.body h5 { font-size: 110%; } -div.body h6 { font-size: 100%; } - -a.headerlink { - color: #c60f0f; - font-size: 0.8em; - padding: 0 4px 0 4px; - text-decoration: none; -} - -a.headerlink:hover { - background-color: #c60f0f; - color: white; -} - -div.body p, div.body dd, div.body li { - text-align: justify; - line-height: 130%; -} - -div.admonition p.admonition-title + p { - display: inline; -} - -div.note { - background-color: #eee; - border: 1px solid #ccc; -} - -div.seealso { - background-color: #ffc; - border: 1px solid #ff6; -} - -div.topic { - background-color: #eee; -} - -div.warning { - background-color: #ffe4e4; - border: 1px solid #f66; -} - -p.admonition-title { - display: inline; -} - -p.admonition-title:after { - content: ":"; -} - -pre { - padding: 5px; - background-color: #eeffcc; - color: #333333; - line-height: 120%; - border: 1px solid #ac9; - border-left: none; - border-right: none; -} - -tt { - background-color: #ecf0f3; - padding: 0 1px 0 1px; - font-size: 0.95em; -} \ No newline at end of file diff --git a/py/doc/_build/html/_static/doctools.js b/py/doc/_build/html/_static/doctools.js deleted file mode 100644 index 9447678cd..000000000 --- a/py/doc/_build/html/_static/doctools.js +++ /dev/null @@ -1,232 +0,0 @@ -/// XXX: make it cross browser - -/** - * make the code below compatible with browsers without - * an installed firebug like debugger - */ -if (!window.console || !console.firebug) { - var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", - "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; - window.console = {}; - for (var i = 0; i < names.length; ++i) - window.console[names[i]] = function() {} -} - -/** - * small helper function to urldecode strings - */ -jQuery.urldecode = function(x) { - return decodeURIComponent(x).replace(/\+/g, ' '); -} - -/** - * small helper function to urlencode strings - */ -jQuery.urlencode = encodeURIComponent; - -/** - * This function returns the parsed url parameters of the - * current request. Multiple values per key are supported, - * it will always return arrays of strings for the value parts. - */ -jQuery.getQueryParameters = function(s) { - if (typeof s == 'undefined') - s = document.location.search; - var parts = s.substr(s.indexOf('?') + 1).split('&'); - var result = {}; - for (var i = 0; i < parts.length; i++) { - var tmp = parts[i].split('=', 2); - var key = jQuery.urldecode(tmp[0]); - var value = jQuery.urldecode(tmp[1]); - if (key in result) - result[key].push(value); - else - result[key] = [value]; - } - return result; -} - -/** - * small function to check if an array contains - * a given item. - */ -jQuery.contains = function(arr, item) { - for (var i = 0; i < arr.length; i++) { - if (arr[i] == item) - return true; - } - return false; -} - -/** - * highlight a given string on a jquery object by wrapping it in - * span elements with the given class name. - */ -jQuery.fn.highlightText = function(text, className) { - function highlight(node) { - if (node.nodeType == 3) { - var val = node.nodeValue; - var pos = val.toLowerCase().indexOf(text); - if (pos >= 0 && !jQuery.className.has(node.parentNode, className)) { - var span = document.createElement("span"); - span.className = className; - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - node.parentNode.insertBefore(span, node.parentNode.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling)); - node.nodeValue = val.substr(0, pos); - } - } - else if (!jQuery(node).is("button, select, textarea")) { - jQuery.each(node.childNodes, function() { - highlight(this) - }); - } - } - return this.each(function() { - highlight(this); - }); -} - -/** - * Small JavaScript module for the documentation. - */ -var Documentation = { - - init : function() { - this.fixFirefoxAnchorBug(); - this.highlightSearchWords(); - this.initModIndex(); - }, - - /** - * i18n support - */ - TRANSLATIONS : {}, - PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, - LOCALE : 'unknown', - - // gettext and ngettext don't access this so that the functions - // can savely bound to a different name (_ = Documentation.gettext) - gettext : function(string) { - var translated = Documentation.TRANSLATIONS[string]; - if (typeof translated == 'undefined') - return string; - return (typeof translated == 'string') ? translated : translated[0]; - }, - - ngettext : function(singular, plural, n) { - var translated = Documentation.TRANSLATIONS[singular]; - if (typeof translated == 'undefined') - return (n == 1) ? singular : plural; - return translated[Documentation.PLURALEXPR(n)]; - }, - - addTranslations : function(catalog) { - for (var key in catalog.messages) - this.TRANSLATIONS[key] = catalog.messages[key]; - this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); - this.LOCALE = catalog.locale; - }, - - /** - * add context elements like header anchor links - */ - addContextElements : function() { - $('div[id] > :header:first').each(function() { - $('
\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this headline')). - appendTo(this); - }); - $('dt[id]').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this definition')). - appendTo(this); - }); - }, - - /** - * workaround a firefox stupidity - */ - fixFirefoxAnchorBug : function() { - if (document.location.hash && $.browser.mozilla) - window.setTimeout(function() { - document.location.href += ''; - }, 10); - }, - - /** - * highlight the search words provided in the url in the text - */ - highlightSearchWords : function() { - var params = $.getQueryParameters(); - var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; - if (terms.length) { - var body = $('div.body'); - window.setTimeout(function() { - $.each(terms, function() { - body.highlightText(this.toLowerCase(), 'highlight'); - }); - }, 10); - $('') - .appendTo($('.sidebar .this-page-menu')); - } - }, - - /** - * init the modindex toggle buttons - */ - initModIndex : function() { - var togglers = $('img.toggler').click(function() { - var src = $(this).attr('src'); - var idnum = $(this).attr('id').substr(7); - console.log($('tr.cg-' + idnum).toggle()); - if (src.substr(-9) == 'minus.png') - $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); - else - $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); - }).css('display', ''); - if (DOCUMENTATION_OPTIONS.COLLAPSE_MODINDEX) { - togglers.click(); - } - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords : function() { - $('.sidebar .this-page-menu li.highlight-link').fadeOut(300); - $('span.highlight').removeClass('highlight'); - }, - - /** - * make the url absolute - */ - makeURL : function(relativeURL) { - return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; - }, - - /** - * get the current relative url - */ - getCurrentURL : function() { - var path = document.location.pathname; - var parts = path.split(/\//); - $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { - if (this == '..') - parts.pop(); - }); - var url = parts.join('/'); - return path.substring(url.lastIndexOf('/') + 1, path.length - 1); - } -}; - -// quick alias for translations -_ = Documentation.gettext; - -$(document).ready(function() { - Documentation.init(); -}); diff --git a/py/doc/_build/html/_static/file.png b/py/doc/_build/html/_static/file.png deleted file mode 100644 index d18082e397e7e54f20721af768c4c2983258f1b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 392 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP$HyOL$D9)yc9|lc|nKf<9@eUiWd>3GuTC!a5vdfWYEazjncPj5ZQX%+1 zt8B*4=d)!cdDz4wr^#OMYfqGz$1LDFF>|#>*O?AGil(WEs?wLLy{Gj2J_@opDm%`dlax3yA*@*N$G&*ukFv>P8+2CBWO(qz zD0k1@kN>hhb1_6`&wrCswzINE(evt-5C1B^STi2@PmdKI;Vst0PQB6!2kdN diff --git a/py/doc/_build/html/_static/jquery.js b/py/doc/_build/html/_static/jquery.js deleted file mode 100644 index 82b98e1d7..000000000 --- a/py/doc/_build/html/_static/jquery.js +++ /dev/null @@ -1,32 +0,0 @@ -/* - * jQuery 1.2.6 - New Wave Javascript - * - * Copyright (c) 2008 John Resig (jquery.com) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. - * - * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $ - * $Rev: 5685 $ - */ -(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else -return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else -return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else -selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else -this.value=value;});},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else -return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else -jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else -jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("",""]||!tags.indexOf("",""]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!tags.indexOf("",""]||(!tags.indexOf("",""]||!tags.indexOf("",""]||jQuery.browser.msie&&[1,"div
","
"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf(""&&tags.indexOf("=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else -ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name in elem&¬xml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&¬xml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var attr=msie&¬xml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else -while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return im[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else -for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("
").append(res.responseText.replace(//g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else -xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else -jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else -for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else -s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else -e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;ithis.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})(); \ No newline at end of file diff --git a/py/doc/_build/html/_static/minus.png b/py/doc/_build/html/_static/minus.png deleted file mode 100644 index da1c5620d10c047525a467a425abe9ff5269cfc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1SHkYJtzcHoCO|{#XvD(5N2eUHAey{$X?>< z>&kweokM_|(Po{+Q=kw>iEBiObAE1aYF-J$w=>iB1I2R$WLpMkF=>bh=@O1TaS?83{1OVknK< z>&kweokM`jkU7Va11Q8%;u=xnoS&PUnpeW`?aZ|OK(QcC7sn8Z%gHvy&v=;Q4jejg zV8NnAO`-4Z@2~&zopr02WF_WB>pF diff --git a/py/doc/_build/html/_static/pygments.css b/py/doc/_build/html/_static/pygments.css deleted file mode 100644 index 1f2d2b618..000000000 --- a/py/doc/_build/html/_static/pygments.css +++ /dev/null @@ -1,61 +0,0 @@ -.hll { background-color: #ffffcc } -.c { color: #408090; font-style: italic } /* Comment */ -.err { border: 1px solid #FF0000 } /* Error */ -.k { color: #007020; font-weight: bold } /* Keyword */ -.o { color: #666666 } /* Operator */ -.cm { color: #408090; font-style: italic } /* Comment.Multiline */ -.cp { color: #007020 } /* Comment.Preproc */ -.c1 { color: #408090; font-style: italic } /* Comment.Single */ -.cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ -.gd { color: #A00000 } /* Generic.Deleted */ -.ge { font-style: italic } /* Generic.Emph */ -.gr { color: #FF0000 } /* Generic.Error */ -.gh { color: #000080; font-weight: bold } /* Generic.Heading */ -.gi { color: #00A000 } /* Generic.Inserted */ -.go { color: #303030 } /* Generic.Output */ -.gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ -.gs { font-weight: bold } /* Generic.Strong */ -.gu { color: #800080; font-weight: bold } /* Generic.Subheading */ -.gt { color: #0040D0 } /* Generic.Traceback */ -.kc { color: #007020; font-weight: bold } /* Keyword.Constant */ -.kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ -.kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ -.kp { color: #007020 } /* Keyword.Pseudo */ -.kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ -.kt { color: #902000 } /* Keyword.Type */ -.m { color: #208050 } /* Literal.Number */ -.s { color: #4070a0 } /* Literal.String */ -.na { color: #4070a0 } /* Name.Attribute */ -.nb { color: #007020 } /* Name.Builtin */ -.nc { color: #0e84b5; font-weight: bold } /* Name.Class */ -.no { color: #60add5 } /* Name.Constant */ -.nd { color: #555555; font-weight: bold } /* Name.Decorator */ -.ni { color: #d55537; font-weight: bold } /* Name.Entity */ -.ne { color: #007020 } /* Name.Exception */ -.nf { color: #06287e } /* Name.Function */ -.nl { color: #002070; font-weight: bold } /* Name.Label */ -.nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ -.nt { color: #062873; font-weight: bold } /* Name.Tag */ -.nv { color: #bb60d5 } /* Name.Variable */ -.ow { color: #007020; font-weight: bold } /* Operator.Word */ -.w { color: #bbbbbb } /* Text.Whitespace */ -.mf { color: #208050 } /* Literal.Number.Float */ -.mh { color: #208050 } /* Literal.Number.Hex */ -.mi { color: #208050 } /* Literal.Number.Integer */ -.mo { color: #208050 } /* Literal.Number.Oct */ -.sb { color: #4070a0 } /* Literal.String.Backtick */ -.sc { color: #4070a0 } /* Literal.String.Char */ -.sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ -.s2 { color: #4070a0 } /* Literal.String.Double */ -.se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ -.sh { color: #4070a0 } /* Literal.String.Heredoc */ -.si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ -.sx { color: #c65d09 } /* Literal.String.Other */ -.sr { color: #235388 } /* Literal.String.Regex */ -.s1 { color: #4070a0 } /* Literal.String.Single */ -.ss { color: #517918 } /* Literal.String.Symbol */ -.bp { color: #007020 } /* Name.Builtin.Pseudo */ -.vc { color: #bb60d5 } /* Name.Variable.Class */ -.vg { color: #bb60d5 } /* Name.Variable.Global */ -.vi { color: #bb60d5 } /* Name.Variable.Instance */ -.il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/py/doc/_build/html/_static/searchtools.js b/py/doc/_build/html/_static/searchtools.js deleted file mode 100644 index a243b1542..000000000 --- a/py/doc/_build/html/_static/searchtools.js +++ /dev/null @@ -1,467 +0,0 @@ -/** - * helper function to return a node containing the - * search summary for a given text. keywords is a list - * of stemmed words, hlwords is the list of normal, unstemmed - * words. the first one is used to find the occurance, the - * latter for highlighting it. - */ - -jQuery.makeSearchSummary = function(text, keywords, hlwords) { - var textLower = text.toLowerCase(); - var start = 0; - $.each(keywords, function() { - var i = textLower.indexOf(this.toLowerCase()); - if (i > -1) - start = i; - }); - start = Math.max(start - 120, 0); - var excerpt = ((start > 0) ? '...' : '') + - $.trim(text.substr(start, 240)) + - ((start + 240 - text.length) ? '...' : ''); - var rv = $('
').text(excerpt); - $.each(hlwords, function() { - rv = rv.highlightText(this, 'highlight'); - }); - return rv; -} - -/** - * Porter Stemmer - */ -var PorterStemmer = function() { - - var step2list = { - ational: 'ate', - tional: 'tion', - enci: 'ence', - anci: 'ance', - izer: 'ize', - bli: 'ble', - alli: 'al', - entli: 'ent', - eli: 'e', - ousli: 'ous', - ization: 'ize', - ation: 'ate', - ator: 'ate', - alism: 'al', - iveness: 'ive', - fulness: 'ful', - ousness: 'ous', - aliti: 'al', - iviti: 'ive', - biliti: 'ble', - logi: 'log' - }; - - var step3list = { - icate: 'ic', - ative: '', - alize: 'al', - iciti: 'ic', - ical: 'ic', - ful: '', - ness: '' - }; - - var c = "[^aeiou]"; // consonant - var v = "[aeiouy]"; // vowel - var C = c + "[^aeiouy]*"; // consonant sequence - var V = v + "[aeiou]*"; // vowel sequence - - var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 - var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 - var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 - var s_v = "^(" + C + ")?" + v; // vowel in stem - - this.stemWord = function (w) { - var stem; - var suffix; - var firstch; - var origword = w; - - if (w.length < 3) - return w; - - var re; - var re2; - var re3; - var re4; - - firstch = w.substr(0,1); - if (firstch == "y") - w = firstch.toUpperCase() + w.substr(1); - - // Step 1a - re = /^(.+?)(ss|i)es$/; - re2 = /^(.+?)([^s])s$/; - - if (re.test(w)) - w = w.replace(re,"$1$2"); - else if (re2.test(w)) - w = w.replace(re2,"$1$2"); - - // Step 1b - re = /^(.+?)eed$/; - re2 = /^(.+?)(ed|ing)$/; - if (re.test(w)) { - var fp = re.exec(w); - re = new RegExp(mgr0); - if (re.test(fp[1])) { - re = /.$/; - w = w.replace(re,""); - } - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1]; - re2 = new RegExp(s_v); - if (re2.test(stem)) { - w = stem; - re2 = /(at|bl|iz)$/; - re3 = new RegExp("([^aeiouylsz])\\1$"); - re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re2.test(w)) - w = w + "e"; - else if (re3.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - else if (re4.test(w)) - w = w + "e"; - } - } - - // Step 1c - re = /^(.+?)y$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(s_v); - if (re.test(stem)) - w = stem + "i"; - } - - // Step 2 - re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step2list[suffix]; - } - - // Step 3 - re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step3list[suffix]; - } - - // Step 4 - re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; - re2 = /^(.+?)(s|t)(ion)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - if (re.test(stem)) - w = stem; - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1] + fp[2]; - re2 = new RegExp(mgr1); - if (re2.test(stem)) - w = stem; - } - - // Step 5 - re = /^(.+?)e$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - re2 = new RegExp(meq1); - re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) - w = stem; - } - re = /ll$/; - re2 = new RegExp(mgr1); - if (re.test(w) && re2.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - - // and turn initial Y back to y - if (firstch == "y") - w = firstch.toLowerCase() + w.substr(1); - return w; - } -} - - -/** - * Search Module - */ -var Search = { - - _index : null, - _queued_query : null, - _pulse_status : -1, - - init : function() { - var params = $.getQueryParameters(); - if (params.q) { - var query = params.q[0]; - $('input[name="q"]')[0].value = query; - this.performSearch(query); - } - }, - - /** - * Sets the index - */ - setIndex : function(index) { - var q; - this._index = index; - if ((q = this._queued_query) !== null) { - this._queued_query = null; - Search.query(q); - } - }, - - hasIndex : function() { - return this._index !== null; - }, - - deferQuery : function(query) { - this._queued_query = query; - }, - - stopPulse : function() { - this._pulse_status = 0; - }, - - startPulse : function() { - if (this._pulse_status >= 0) - return; - function pulse() { - Search._pulse_status = (Search._pulse_status + 1) % 4; - var dotString = ''; - for (var i = 0; i < Search._pulse_status; i++) - dotString += '.'; - Search.dots.text(dotString); - if (Search._pulse_status > -1) - window.setTimeout(pulse, 500); - }; - pulse(); - }, - - /** - * perform a search for something - */ - performSearch : function(query) { - // create the required interface elements - this.out = $('#search-results'); - this.title = $('

' + _('Searching') + '

').appendTo(this.out); - this.dots = $('').appendTo(this.title); - this.status = $('

').appendTo(this.out); - this.output = $('