From 24bafcf43c1d87de8b2a5ba44b649fc005e43b79 Mon Sep 17 00:00:00 2001 From: Alexander Hampel Date: Wed, 30 Nov 2022 17:31:59 -0500 Subject: [PATCH 01/11] add triqs logos to skeleton and include ico in install directive of doc --- doc/CMakeLists.txt | 2 +- .../Icon/JPG/Triqs_Icon_RGB_Black.jpg | Bin 0 -> 64556 bytes .../triqs_logo/Icon/JPG/Triqs_Icon_RGB_Full.jpg | Bin 0 -> 88473 bytes .../Icon/SVG/Triqs_Icon_RGB_Black.svg | 1 + .../triqs_logo/Icon/SVG/Triqs_Icon_RGB_Full.svg | 1 + .../Icon/SVG/Triqs_Icon_RGB_White.svg | 1 + .../Logo/JPG/Triqs_Logo_RGB_Black.jpg | Bin 0 -> 68510 bytes .../triqs_logo/Logo/JPG/Triqs_Logo_RGB_Full.jpg | Bin 0 -> 82059 bytes .../Logo/SVG/Triqs_Logo_RGB_Black.svg | 1 + .../triqs_logo/Logo/SVG/Triqs_Logo_RGB_Full.svg | 1 + .../Logo/SVG/Triqs_Logo_RGB_White.svg | 1 + doc/_static/triqs_logo/triqs_favicon.ico | Bin 0 -> 4286 bytes doc/conf.py.in | 2 +- 13 files changed, 8 insertions(+), 2 deletions(-) create mode 100755 doc/_static/triqs_logo/Icon/JPG/Triqs_Icon_RGB_Black.jpg create mode 100755 doc/_static/triqs_logo/Icon/JPG/Triqs_Icon_RGB_Full.jpg create mode 100755 doc/_static/triqs_logo/Icon/SVG/Triqs_Icon_RGB_Black.svg create mode 100755 doc/_static/triqs_logo/Icon/SVG/Triqs_Icon_RGB_Full.svg create mode 100755 doc/_static/triqs_logo/Icon/SVG/Triqs_Icon_RGB_White.svg create mode 100755 doc/_static/triqs_logo/Logo/JPG/Triqs_Logo_RGB_Black.jpg create mode 100755 doc/_static/triqs_logo/Logo/JPG/Triqs_Logo_RGB_Full.jpg create mode 100755 doc/_static/triqs_logo/Logo/SVG/Triqs_Logo_RGB_Black.svg create mode 100755 doc/_static/triqs_logo/Logo/SVG/Triqs_Logo_RGB_Full.svg create mode 100755 doc/_static/triqs_logo/Logo/SVG/Triqs_Logo_RGB_White.svg create mode 100644 doc/_static/triqs_logo/triqs_favicon.ico diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 6578595a..b3b0458e 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -76,6 +76,6 @@ endif() # --------------------------------- install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/ COMPONENT documentation DESTINATION share/doc/${PROJECT_NAME} FILES_MATCHING - REGEX "\\.(html|pdf|png|gif|jpg|svg|js|xsl|css|py|txt|inv|bib|ttf|woff2|eot)$" + REGEX "\\.(html|pdf|png|gif|jpg|svg|ico|js|xsl|css|py|txt|inv|bib|ttf|woff2|eot)$" PATTERN "_*" ) diff --git a/doc/_static/triqs_logo/Icon/JPG/Triqs_Icon_RGB_Black.jpg b/doc/_static/triqs_logo/Icon/JPG/Triqs_Icon_RGB_Black.jpg new file mode 100755 index 0000000000000000000000000000000000000000..a25819aa0a93addd457903b8d262c725215ee06b GIT binary patch literal 64556 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 L2_0nqS^vKP%QPLl literal 0 HcmV?d00001 diff --git a/doc/_static/triqs_logo/Icon/JPG/Triqs_Icon_RGB_Full.jpg b/doc/_static/triqs_logo/Icon/JPG/Triqs_Icon_RGB_Full.jpg new file mode 100755 index 0000000000000000000000000000000000000000..8fac42ac6edb0ffd20017dddc7f6a456fdfadad3 GIT binary patch literal 88473 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 \ No newline at end of file diff --git a/doc/_static/triqs_logo/Icon/SVG/Triqs_Icon_RGB_Full.svg b/doc/_static/triqs_logo/Icon/SVG/Triqs_Icon_RGB_Full.svg new file mode 100755 index 00000000..76d6707d --- /dev/null +++ b/doc/_static/triqs_logo/Icon/SVG/Triqs_Icon_RGB_Full.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/doc/_static/triqs_logo/Icon/SVG/Triqs_Icon_RGB_White.svg b/doc/_static/triqs_logo/Icon/SVG/Triqs_Icon_RGB_White.svg new file mode 100755 index 00000000..4fbd963d --- /dev/null +++ b/doc/_static/triqs_logo/Icon/SVG/Triqs_Icon_RGB_White.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/doc/_static/triqs_logo/Logo/JPG/Triqs_Logo_RGB_Black.jpg b/doc/_static/triqs_logo/Logo/JPG/Triqs_Logo_RGB_Black.jpg new file mode 100755 index 0000000000000000000000000000000000000000..a9206e03a843903c55a0c10753c11ec685da3064 GIT binary patch literal 68510 zcmeFa2V7H0_dgtZ5$R2(_acyl(3^qKdoO|zNazFzy()@IQJNq~u^=4;l`1MKBB&?| zNRgrO2f&|xf_gUQk@AKmGd9KUd$;_NHGv_g&_pbJ@z5vndY3XW# zh=_?mDZoF_>MUrtiMwy0Z-Be6ACI&o7$mQ*Ye+H+!d>*Z93Ud#-?#s-jwGSo0|WgO zrKB(cl1P-VGg{Kc*GDQ8=_dt|1WSRG)k6J{E?($B9%rv1CczTKHiuB#ZVPKJaa`LjEk1y zyE?_X2M@~T!DK94taaP#P0|i4NQeXw(KM62c zQCdz>TAt_I#ivRQgp{!;S4A^~*0=J2Un+dx8Ws`~A{inr>5Fxff+#2eJfKogs05Hh zA|MPChzym$1n{phS?7a52e@E8`~p3EF+4cFNN3-mKovedTtS3utzjq^LOFgxSZ{nO zC>JTTH`)h{2@C*)2$A|39UvY8;ZG(17ev~+K5lI5%X?+7M!u-%uX6OLlAgl`-$j<+>76b%p1_P4(yDs-fMw-EZ7=Oyj!`nM3AP|cT z^u_+1;ddGEefekg0bsB&`40jOl=AzzJOcs|9zH)WdtHCl8UtiQV*-HQ1a!2Y^dX=U z+JDdH=jHo-*UA5Y36KD^So)_>0%?FU{tN(I${HD7qt-gQGRj5K)fel73{>^-LAs%( zJpIsa%2FG#8|}em4fF`~Mt?^RFu`jk+&l1(vFi!m9ypCv^hRO;6hb9XXjf#AcOajt zHQHHO3a5MC9)BcUi~S=%e0_c_S{V?lq6QX?>mU}szTT>9c1Cxj+weeTCBZx*hDa9= z49;GPDog!H^Ihu*NoWKz5UmPWB&Y;fP68}r0f8w>ODoC%rU|A927kw7E$0tB41G}^ zu3>-TA-~4MZjJoAOh1wX))R#cM6NRc12vFX~NCn>bh_^LQ2jQ9$=~M9*ojf2uErwgyn(A;% zO?5X*Ep<09ZFN&yJ&h1IZFM&{0|eYxUn9g4mU)=LvVkl2sq3{6E1IzP&c&D zQa82G3=MJC4h?Y836*yx{Do-hsE4>1A>d$JpaffOcS|!ZGhci&Zh zbP+%1TVrSn*8o}z$i+oh!_?OR$f^MpfPlN1Y5;M7L;yw@LjWv8GoUJ3x@NkerdFET znovy-7h6qBLqBbI^-$|jQx6k$JVVPs9e2Y}I}dpcvoN<{O>fh1GYc<&{V-c;6AdFv zQ;e6aak!B?%F<590s#)v)z$Mg)YEWxvvb!2MCWe~whA<|(pSfZ!K6$y@eCox7GOIY zYb|f2H6#>ezA2X*&D`UD0zTgwF7N}EAY7!(X`<0t2;0}*$XHr8~vMe2Cy`sjPW z!i+q9#WlQS%&olr(6&Byc!vJY7(FN&Bct!>r*G}!C+p$o?;jL^Mal;In!(|^K=XAG z>ZU+acU?ETP&YfxFg!zFXPpo&Lme}ixsisJ zm7a%7ux7X(!VKZ&jx@Inv-Yr+Gtf|%HZeCs>uI`$qAa~a-0)4-^R&~__CR@|v@E6N z{f)yz!rc7u48h_i;qH3oUV(-dmNF)0-Y8pZD?eu&EeP5MV&-ka0N@4znqqh?e{l4!yn@Q)lWRbKbG;Y_}SnY{-MtQj-M@_;rBB5m;C(k41W~t zzhR1J_-`2eNQ-CqKT!S^M*jol-|Ni(H09qLGQ14`Jro+t9FjjDX3H^zDZj$foV!q+7T=hM_hs0Iaj zpcG|gG-ag~z_RkP8d?wtumqFUgd*hSVy%k_2t;CB(CgKfgP^3H zp)zO*n2a<^0s@68NFb3g83`m93`Hp@NXvtrrPuj>NBbwf2sG9s7>&}x`uhAsmxwan zi>m1HLxrGnt}^m4q^krHCND3cAdRb#EDR~(3{^lXAYGwgGzw_wpJ+EK1UOEsxQu@dyC?fnnbz;KYY>ZJDF}{}{WT0Jtb|>Hpa0 zh4*nQB3*Dgry76+Itfm|fZuyPZllT@KCiV5-}Ma~fF6JzXd>hQ^^yY=3JT~N1fl=| zDMVOo-3?>1V$9pc{WFX8 zC!l|9BCavt;Q;uVe{k{2uDf`@%k|ex{s_TOeBdxi=pTLHYi$2W_t*T_k@`jG)&TvZ z?yW2GpLJFFyFDF6^FSmvFv!mY>+9+PY&zg~4E`p4qX~cDg7adlt`8u}Qr|PcC;bK4 zw~Yn!Am^X&E&P$w54peN38*=+0i|eU0_?2>s6y~f|1RRsIdzZ$RvrN!&faJXED{p{ zSS2*ZB}`Qd=^X$V@^9?^BGcb-GY&>${jk7B$X~MB$nj@BhR9G{3(P&j(f`m`0(~6V z7E=sSRgeWs0^7a7g;V~uxQznVv;i0Et}64VobG?L*xz^tVLSp=O*}%;-T~_@@lhLG z34;2r-ruppjTJZ$%tMfYF7Db`-ypxA?UMYl*RI)e{7|yl5d$brThR?yj1kfY=#6We zU_5KZ^We+J*ZBKP8;w~j7$>L=KKQP?whQ!)=!eey1CfTWw=dA00)J@cMy|gaA^(_T zlMUY>#@9RmFK)aDtld2V*SfQ|;&;(MY4i^~e0))8RWoh%Z}P(b{LfT@I3r+UW(@ew z&A(CNqy94`78tdlGQfa`ZvpPtf2MK6qH)78fokpdf2MQx4g&Ta31s-6e@XS1Bjtv` zeqlpzgZM|p)V+aYBHzTYQ|64119mi~9aY+YeCV-)}E5Yq@l{tvKkqx_o1-_o-V z+(@PlOpE@Tb!=TPH)Rty6m#oMJq&@BB5?5bcfo8!l$)`P|6Qo5Koq2Tv{j@Pc+^#3 z>#LnDKg|a!{jHO2207`qeFfaQ8MjXR&vRnDh7qK)#q>=DDlG>f2bBkqlm2%6@;6vg zORw!8X)A69IjH$P67OTAqQJ?Vr~vOg<->>%sbZ&MQ$D6nsjcfM|Jrn26p zw;Fa37#L?W6>xedyI#pHuXjMLe?jknR{jch1hH&2>}2p$6?q5%o!ok_-15-L{EF5= z-J<* z`bH4SR>Msih8yJYmJ$N_ZJc1z>mY1qg7S-|aziXz4LiK8l*PF(A%wBxzfKajbr5Ns*2%BWnzuZ3zckcA z)>l27(>j7wwiJbe`P%fUDwpjAxDtPRznT~#(6JcGC1f6+lgCV>3~}Qf)|C*zRh7rAlq`-0ed~) z_QxTx^|4^`IrJbh0D6D|s;kJaub8$zb_8GfX0Riu>!zS1NM)-bCy!G*yc1LQ zx7j(6UpMZX!R^;vm;|A0HQaD#8UTAKgWF{V-n{T_FxdJ!M>wRg8SH>&{?ceikjs`s zPZsCK1YYujGnni1?yV1=>^cma0`J$(6cNO-<*>t_DZ(Eq`h9lne(gvRL0LC7))Az# z<&eXl_aEi#Nt-W07G2 zgsI#5dt`p{fND!0B~-}<^osOqNBBT#J)Jp$QQLk|i(6$LC1@Xtm8 z_upl=WuvN_L2rX?{UX^fctNQ9-*q6LXSYTIrIo*TMj)K{xltM z2hfB4HgnF6s%{EBLIXF49)av%p|^!SiNIUbfzL1lFN6N|*G{i{2!2bSqAdP+6#hX$ zDB-aAmY+TlUM{d19f17WlY$#!`Bysdf8bq&K-bO#zzm2~GsP!)_yP)6=HQU5n z>Ih=lYS;lUS;VcGf44Vg5uR1wl;RPdy4cjg-8M);K9@UDeW8ST1^q?02i!>AO5pu zxP-M>GlZ5ZHBfCu;B{s`=s@J(zAu+>T;ksbHrn)WIsFa&{|fmV;ru!2f8zSHO#UY3 zf8zQZ;ru!2f8zSHO#UY3f8zQZ;ru!2f8zSHO#UY3@5Du|tQP7Ad3lNSA4nhNA5(6N7B-jHT0)(FcVFB+T9}ghB2!xq^(8vG~h?E8wABc8w2f|<= zOoO#B(*VNCAP^;u+jn8-@4|uTP@tY5kcO{c81S85_dp&I7f~MISzUP^9dw8{IxtYe z1ONqzMFH+zA3r1}33rR1y$B;riP|Lax6L;ILiG@!k}V z84>G)jkpckjX2+Y5J-LjkWI=)obxFVsQxer#6GYQCvX-7qKgHA>K=X99#&j`aSsgi zQ$(K)Xod1WLI6V+KObzYcs?o+Pe3g6w$Kzu<@yste#v55n>QU+Q#0^GN*I ziGP{!yJ~$`kKJZyS2XU6plBW|pqF`I+yJ=0egB)s1M^o1|03CUb-)GJ`ZW+>Dp&zA zJ4%A+A2EYSW*>k^nYMvQ>`wzJL6Sx~0h#Eu(Vg~I1ae??jA|MG66eI^y0__25g7iSfAPbN!XdlQ0 z6FNKg#u2q+Ph0?GhogU)~oK&7Bc&}C3P=o;u2s1?)>dJO6T4T4^P#zE7d zx1f)pFGNH{6hzyJn22@|aT5s=i4#GIHs|%!q7>oQT|rFhoH_kwk}x5{c4? zvWdNq9*lNaRU0NQ_DBNL)#XT<;Zo&ZOJ{! zBgl`D=aE;D-z4uOA0=O)prF`6Ax@z}VN8Lf2&6bdaf+gX;s!+*#W=+x&sxYc#ssgG;sz+4gR9~nWsD-Ijs4b{H zsbi?Ks4J=OP!CbR-?nWV-!_G9rrSKW9oUw&?c%n(+eWr6(J<18(P+@v(*)5Z(G=6% zq5~01jl)f2OJBW zT%6jRew?Q`Z*$IYv2yL<^5jbAYT}yYX5v=m_TWzEzQH}k!@>jS@#e|mY2kUx%fYL| z8^n8#w}bZ!pD>>#-$A}AzF~f9etCXZ{&fCk{eU?g6@Kuf^CAI zgoK5xg^mi<3%wR*7uFRH7cLhb64@@ICgLxWFY-i`TvT4vOEgdPu^6$KjF`Jvj@Tn{ zVsTk<5Ai(l&fR3Y6?S8G=kM;5ppk$}1WS}lj7YLd8b}_Lte2dV5|FZ!N|kDpS^>*| zy}=D_m1pQj}E;RJ^SCMoB`+OQ}rhwX(1> zTDd@ZRE19ksd7%`g({D#lj>R37izp}NVR;mmwWj4p!O8)nShJJJ>eDbId!l)R=rmJ zlZK*3l*Ua22|^o@fauU<)U?#h)_kVLr{$(quJu-1Mms|LrVg2ozD}x6pDw4ai*Bjz zTRl0wD7_Ya8hvy9Z2gx8Vg^`)MnhslJ;M`*Lq>u|7^8Y)kg=}u3FBcCVH1CotES|p zCZ;*2ugoB3k!Ee?Oy-W}W#%6()Gd-N1}#M_gDjh^=&bCmO07OwBdpV`U)V_5MA@|4 z?zHu=ZLp)Tv$89)TiC0)H)HR(y^Q@4`(6iOhfs%m`*!a0-gn)R&JpQY?L_8e?NsLU z6={sjM=m()I_EmSbGfhc%Je6Eq;c1;dE(!nF8u`G)#-`ic7;@q6K~=%3;L7ORgf z3Lpw_2xtgo1}0Mvf<%H22aN=)2ImAXhFFDEhcbj>LLY>Qg~f+WglmNtMvz9hL^Mb8 zM#e;rM8TuZMH59kM>p^1-ygew{DAg>k{Ie3ub77i!3Wb0emG=(s4qf5LFJPb_7#sWATBgiN>rY!Vy#NN2)Y<_ zaq5!OrQXZ>mz%5Qt1D{+YjSIuY7^>+>cZ;Y*1OlgXs~VQyrOrdxlyUH_NwI7;%mIu za;~#nPi~@aifvlG5q@Lgrr*t(TW+^Tn;n}6Z`<5{(qh`uaYz5o-BzvE+imc+8+TRi zUc0Aw@5+7o`}OUz?R5`i9@IXRd05*a+fnyO?oq>Ig~yGZ%AHMJYF)Rw5#6m%bf2{M z81;1aTK4w$+4sHZNAizWHK=8nq!2?5NLkYw5!zZ6{Jj;JB`n>9e?2GFoh>-^` z&0h|Vx{OYb1&np39{f_s=A7CGv7fcqOef0VGVEC`K7kc)}JT7gnXs=nzbyt z+_<8@GPLTmy1F_CqQ!sI9)!9H%ms*62SKsG^5P#~#2Xh0;rd2ROhg2v0)K>re;Qc5 z31XlG6%#)tAz}a#GZ2w55UsX=jsw#h5@6|r`}=lLQE#K9ASELw0m@pBTmL^j2t-ay z3?d~Wr=lVwqXHU7Oaf#DQBYDbFfvgy^YXE#{=|HB07OGV1k{a$0i*`H(Mm!TbKIK$ih2Kyeamf_sF7+} z^isWK%_rVsl!W9AQ#W<9qlcGqx!QJ%04{5f+KBVPwAV8=UcaugpR$=#Ec)*hMT0lI@dtN}MPMJ9#K(x=79m4jMikct9^(EgI%BT1uNRC-im z)ksTTsF+Xyg{2diorau*=)leY%YZ0)?(J0I;Iy{pN6kVnN2a>a5l4yrDgLPvX5!_U z+>CycqkFp#@`0)+kIU?SJK?vVH_3DKlUT)Be&!f3ugie>z~VcX6G;s$SG=cSk0Yxu z%E(>{5t&&9A*MU@IIp_j73d;kAxcJyP6X~SskjLC) zh{Sg(Z0C!UPd<4xveyXmC4e%W&2>4gyf!c{D<9;{apxV~?U;`?|EDmKOil3eRy?j| zxyo!2IU9Y8jh9M^YIi3UWoev;RU-IA!U?C>33U=z&p1<&!>)o|0)11aK`mU$C7aLh~!W3*2&hg87_grFpV61b0 z-+2aK$&Y-JJ6Oje&(}~-X73p?VCfuxb7gORw1Y~D_h?#IZqWIwrv6@4ix-DGa#43! zZg(q^H)-8f8-kXW93V2vY3F+#&A^9v&rT|zXdN{E^o?wR)KyLkPFWSYuaOC=k5y9X|%MEWStc>gp2rne!H9zbRI*|-uhnq;K%VZ zM3i6c=Au;^vmNLdGdsgc%jGU#@=N0%XUuDN6Nx5L)LK%y3_OW*NMUCJyT=e*4bmEVszM#0!#3jh|ODTbw0jm@Kqk3#!yJ-a7_I1c*)SPjjq2$*udpTlq zNmUmaALpH%DyWm0!NV<_Wx&T0x*{MsyWck|W~r%*dnB4CU=U0O7#8yyhT45dYmO?C>^qz z9kBPCW;^wzU3c)bNnKq{cbb)+Osh(+#i4<(1JJj#UD3noqf|PX)C_FGQW?QhCnomG zwcRF>`WLO_I&Sw#>r?VxR^2n%l>J$k5w9~2XC_Cwq)_lUa}=1)lt;o3ctzcVQ1Ve+$2&4!bcN#HM28gq@J8OXD=dq$4tj?DoxQdHPXe_`F#Ev zK)r>X%$f7e(v@#Io$26=cn~VyFy>s&QQbYL6nDb+!J!~Y$Q!kK2fe2OA|iQV3gLI6 zuU>LCwLlb$npZUGGG^V(Um+!=G~&J^}eiTOV6vc)JJ52`R8_GZbz<@`iK)^m z8Ln7p*1ahbNYikt^FSLT^I;L&z28Psx}@1btL^qpk>gi|cIQ;gj<$ITJuTO|a01%F zamDXaT*CIph=T#SFUdsrAP^w1*p2=hSCtOftEOJ`N|LLNdbr$1??z)UabbqW2`0c% zCdML2e`1*Wa<0}B6m@Z#aoM|SZ)?UKOikX!aVcVC_vwP(_~yn&@jXkd6}e_ptOT7D zw0WGp!XgSrITP!Ul&`c2ex6THLlHrSw5})e_JXrYg-m!U>Dy}*mOC!=S7+3Hf-dP_ zzV+0~(6!HDsiwm84!o^|y2h7H*u#J4!}x^K1WLYC22leZG7vWn?Y``bkDfXReZHdr zQC$!kb3bvfRPJ(RnrC)Gh1R`>$i``gE3Ebt#GsfxZQ#YwxEJ9n`YAc{2PY|>IE>U! z`euLSzO7v9eKpU&d;j?-d=FG8=-(UkYQL~DDAvBuJIQ`l@GU(JmGEQE>K*J6Gm1(KpWJUfvU_n!q?`#pc2O`hC7?3JIG8i>4YKVlrMwaGTuQz0b-P zblLTMo$Y;&>#5woTOD>y{z1syY}gS~#EJb*-E6w?nvVHqoHASriI;@Vff9CH^E~Lx zV{&yr%ay~e`!Jpjvz>Pw9_kP8oc(;D$HVjd`(=J2(a8*#n?vP{Iu~oYcE|Hz%iJe} z4Nhk;r5fvZE6_Mi8m!NvI7aVR+WWW1W@B$PEos+ID;~ABHpoFwRES-%9lKT?+iRPF zDRxN2thD*p>J&URmphi|K0AM};N1PpqU<9gCKIQheek)C%E&5O=*cht+?$`BP~+1W zMt(~v`c8(9idk%4h^@K-YqFsU3-J!ALM~glMP!uL>)dA+&6mI2XvFj_G4Rc4xV`^! zLNE1QY{!e&N_^Ia-PYVDEFxU-#pH+e=ZnsQQiu)^DU-C1#5AW3-VQQuGBXPCo!wC? zm~e_U1Hex);FYpu@Z0O+Q_cKo@NDZ1z)RMEPRY9ukjN1w$Cg<4T4c@if7rEeu1y2ff zj>#^ko?bc5I35EqehuGy#3`MHEws@z!|K2IV( zH=IemTE4GhzeJ%dLn!1b6Sxa~A53<%o>?Ll~y^}P7Ha*dH38qH_sz@w19B8(p z&d6a#sCs(tzSQZR&|b7d>67Dd@7Nrhm$m7B{X;!pu}{oT3c_SBt3xHt=3~4;oyRij zo%X@W3dST(9x=TDZ}G;Kz%TJp=4TsOBj#zOQ8Av_KUmS#rKwKb!b%NoU^*z%L+kRywBhfZ8FKS zDRnP>-D?iU`oD)T8g_?piZd_N9P|2EcJ!3+?laP+u9Z1uj_Jh)t)hqC(o*z0fmKi5 z*;_fpGd9iIPq|kU<5AlGps&Kz+x5lxDG?qq=@aoM;O!K%7K}$v$(Sop+#aW)9(w;} zpt{!$Vq;|UVHP|jGW15T`UvYX1N&1>r;(-WrkYBUM;r#JEJ@{U37P4 z%!IRhtRYd*D9rq_Sj#x{a`Td)W#j`GEGacPGucIgaVfXJ{=94#r!HCo8{Fy%wU-%qop)^0{uSOl+=+4D4b zjr2)5g)3D{ialO3%s+jKy`0M8;C0h8*Wf)l7T*0wDl+Q460Of>gP*LR&Q+&!RuXg9ZFBH9==sgu~c=-v~=sQ0Mh48(%P zh+5|`S#}SjMdz%Zp!97OEaC}590CX{>Z^=Vw~Ow;!qk(m^EAq5IBH<9WBCTx)k^|b zB(x+l`F#}_!AEoTUy?D<-IV8s10=z8RAHm{Rj++QSS`G)dvvm|_tg>aXVLr*!l<>H z55WCx?M~k*sVL=}4eC=3SQNTQJZm9W+37l`m))}6O%XNctNHOwe&1!Q$8MDhyDE3I z);-_J`5@(5$ll<$M#Fi%>F;ha1fY9^twqj^*1U zOgyaYKWKmM*@-iIrd8C;!(4Ms>2-B=k2(cr-L#l~Xk|(Id_aB{tPJTCis!To3rEk#KljG=| z#z~JM)OjD8pqjvuQjWc&u?(j>md%djqgu95cTwF1BA}=Fh<=%Mpt9QXs5#^|EBhSRvi`a+Ny`DOk{8G>R-V-)nP-o^9>0O|2oiz4x#$fD8inxF1Fk`HW-BNvr$||VfL)Es4kjk=Kh>Eg_Tux3(M#T?Zi(DE# zQ80X7_IMXGq3m1&;;tzq7DVbNz6yG@3i8v|Q`9;Y-ug2P zm^HLJWpBH6u`6@vBc1$9R&RB!uqS29Q=Pc8h)=b|WVnGPBJHkW*^q;wZsm1WS))TA zE~i=KdDLPcAvrPzNger*_y&!%AQ)%sy%qa+M_6OfjP^qL2wLWHK*q(Gx{GYV@>!dQqm$qKrR3f9x3mTLPFSQG zAR4&Bcn9};zNgDob-auT%V5V z$Hg5jouXZc*xw~BVq_6PGd3R6EJgj+)@M0UxM?I4%)+;$@omo4FMATDWhhfX1ysxj z_*|H&1E^x9q8`g#(X2vc%6`=vzk@x0AM;u*Z z?JegDl`P;B7d){aX5)I)P2e81no3uD+aeVraw=zh#ef#I3QAEkyz$}VWA2&w=bt{3 ztn68qT?KUy?%97?c>nW$x+RhigR3B8AEK4Jd8?rPPG(BOw{EHO`t5i2J18EXO?x!o z<)fff*jbWC?Wzzn?26v z`&F|uGN!L~xxA!GZSYO+081fD-@((Lt6MpH{9+cza^yX)tRz-jKULAce=d?01LvlH zN3dqaq3&F%CE@6)QTR+FX0$t3qQb7lUWN3nSc#EZ6{D<-PQ6>?DJ8>fBk!JP~3 zEUTak*WatisBk4-5sC~O+Z)Gg)l8~mf0`?^@vO`ArB1AR;Dgu*-Pg%SZ0;Ao3y?@S z)hBQA1wCyTQ}mJSwxy3<)FH>2sQpf9Wy7MuC4CI6JBN?(-Ws^8d0)GcmlZS8*up)= zn43?*lT{=dt40^&b;kXSzvV829#qFN#E=a=L_E6^|an#JZns%FON`Hmc_kaTDy_;A_X zR+a|dz}y0DZ>EyszMz(|7pzLT?p~#|>PDJqR(|Y)M1cPT! znW&ui(?$gRYVd3NQoe(f1!hGFB1I;mdM3o_XF)_GF=Jn>lN*`BTjdWA4``dr$-5no zCL1#9>8*Kqn0+!cF6YG%xL&=z)}bm35hYEpJNh+?rD}#`z_8Cz*vV}s(l$9|#Aw>I zaqgvk7h8Jur05l=1q;L4VoPJ)hR?(*eev`py>QCVPo2Y(r)KhC(q54WwuJ*D{Oasnvg*G@K&Skl>{tDoGR)fHSJ)%eUT1H z0$7P6W@uoTGi*ND23xGDcdGEJqdwbYC1Sf zOwYT`XZINvjK!5`NbO8Nu`7H^;NlMcE10M1M@tS+l1Ddiy=mo=oo#aRT{drxVsZG~ zUHggiQl8#<=KSWK1h2BRHwCYX&JgQI?burZzZ@hiGNXg7Npip3Y)VY&P^EjnV2+w)8}oUXW!^;9YkT=_WablE=M^4i7FFWpo#o4W_KOvZ-g_rg z%#~S0CY%9LpkaxAReZTRqU-U=+P7+HmQhdHkKR%8Dh(+o4LaRI-lCw_B}s>DjuNi& z>E6ctQrJwhQ1jfL^Y2>_)V!FLga$If-cNRo!h42Z4BWzmJwew~@a&TFyYsSib~vd# zq|2o0xu!~LTxyhh88ohfvt6^-bL=A8l0UbYgi?PFSoWM+1zoMGy|;bo?#X5U$?07O zC!?heWHX*&T)5~fg4uX2P(p%1ojL3;=jjYubhg2DCU~|VADpjz+GBjNXO1m zkjUOMC7U+U%g8J!JO1oihVgwTx@}WAgApD39>kMW3-Ld^^Gy8S4mQNI2=!~rVO}-1 zHxccV7hK&;s+EYC;xgNXMxGc(j!Y4oZIg^2q|~lGO_FgP{89dz--QM7v}-a$acW1> z#Uvl@tG(n(8nzvJkV0C{eCH#->8H*jA|)buA82l+T9jr@@M<`BkO#^u&igSDrl--Z6r76)kXHL8fv=s{e+YL&@{3ZrPQoXOV}}>mCSX=qES6RJGixK94p<^V?d~s8$_E zJEUj1#xD!xMX}G>qV5t`A2xpJPo*?cUo%}BZCpr)8epMzq?7rOSu{2uG3R00pQx34 z?v<62Nq5TWnv3atN9Mn>9M>B-O$Ld*$z?2WN0PYmAo_YxIHb!ydvLHly$(hlcUKb} z*{R}V#+0auVblRU}KdarN zbK_(7*Rt#~_&Lr8*u$=U80{IltCm(+vP?GWa7`gsNB!!aHp|;}Z_-5^iU)2F@Y7=b z@{E*c*i1{X8b=>GiOIU~JguhK#c!^|Q_ksAZOIpXYHY@^E8dFrW&?3T-l*&wd(kP~ zlmkrX+B<0d>9Rk!KCKEfFQ{#5t2DG8b2(YvU;eh#L9`?dQ!6fuo-WfBWW5{ z$@^)Vy=UOAO__&chj#D_3Cd@Z_~M)p-&_tPB+6=$j-N{Ve8*Nnsn2^=;4uhgs+Ero z%b&mQSOuA@U76syDD!!3T>rW2VraC=@d?wR8!jub=);pXoG}1vw=-{SMpR@kc#qPl zdOSY<(mO|G>=Ac}S8r*-K`W2!8e&-oHPv^p1Pz6Yf|f~n$FP%d#RTnEZ60DXSrJN; z=OpJBgQ^PyizVf+HaI1n6OwV{{m^v#_=m&^$Z&U^4EAOMUrI%PdC`l`6^$Y^r6na& zG!}&Llk?c*RE4s6PCNJT^wmmLeXO%2yj&uY&QOM5uV8e<(zIiue~zj6G3Pn1w|Dd$ zcIM`0J-Y6-Xn8C?U=?)H4`Py%l9HJcC9!*HEVm%14a#U{Mr#$p%geLiawT->eVef5 z?fRr4F*J*%2Ky98vkPTh+>1!%ZBHV!6@4$vddMhgjs+PilwBb1e|4ipv0%`-icb2X zXVtO8RbdM5XFnUC=sV%llu#9R3lXn)VnW?a;kauhdBU2ThIRPbLR9G&+m|di)E#nK zo4sEPI1VnpukG=9b)t8dWjRxtOmmW{!CY>a51QA-+w>WQ;ZXSL%V_ae754Qs&cV^O z*F5r4qo3@RZTx)xQf<`z_Nq5Q9$*9Rz6(86M^j|k-JBB=&IX+?v=K|mlg^V~ifn-- z@bGaTx!ELqdGL(!xi>lQE0tOX686|T4`IbMWJ51K$n|LirPeOrvPfn+SS;5Y-kD!y zf-%)4AEn@{kI4u`(m(FTcRFa+rvne}>V+`C?oF+fd%oEP3xught7nd!?-Q)NS;i#@ zVo~m@u1tR?7q<%19a#jC5MStL+xgMjORq5JlB&9QSk34@o7(-%u4aYRp_C;bRhB2v zCdgMl3{-hndUU%f$!YnS?GsMieTGJ~6q8-k+38C-{_tY1<4Pu5-zO3UNW1nO&zIJg zUYTW`{9IJgT)yrDr=f*YuiZ!)#e&#x+^})EKclBflLNLj7D+!86Tkam7iKUbqd&86 zo1=HISHN^(XHV)({E&mtt0K$XOMnYIIkeek+UAUcO-ClYSrXCC-ePj}Ettanet+2W z!8T#hTFR1~HauBYO>>cJZpDXan*c1n;~OjXmg5r&()+6 zRwubrAMynbVJ@wL<~pY;hN<`u-$>OIniM!lC3KKd2w|!T9H~szg~l-H3fv{*^C(h3 zz)m(C7F#f({dJzA{NbZVTN_jM1-4);X{OBe z4RtOEAQ|aZtD4d*EfG6pb=0pl^>s{44hPOf#kZ-NK5HrgJS^eWC$2_$pD==dRXsh_ zBQ{me?+%O9*QG+|e?+^o$P3?td5_=kGCbE3E9OxtL?t;>|I86K8^KyRwF?B0UQwZ>|R(6WqtZ1lmPhn4w33R=JCXyw8$< zxct!PJ=AqP=dxZ?>LqXqLJ52ElEA{{pl&g)!u(qMHp6@jN6T%QCB{7kO9eOUs~ox7 zPsZv|I0c(tw{p07ielRTc~a8-M2njVJmc(Nnx=D;73cIC_XW?>@bJ+yx3xTUeK^lS zJfUpx!kSiI%3MM&{#sD4qM3r0sJ5PdPxVwW~|5vHwceauvei07)lE()2Kd_6}!sgWV% z|M39!)peoL11mbGj%x8nnH4!7v2_r5pWu6etK);!K+Ux%>%KP^+Fzg6Zn^tagLH6e zI7VQg+9v?%HqM_aTXQkL^}f|hGWqK~ zq;cT5XGy7G)rZ(-jMoI-~=Cz_9eQK_OBPOQ!`Q_rd%g@jFE*F1kd}mGkyaAUp2L2}EhG1S@<=f<=m!PUN zuUus*1bkEX1RiL$YwFyNF54GRa>w7`mUBZ&I7d40fh7{vV{}7a5@8;LgTjuU z;nLiNl2=vVnfIkHKA+tGZkJ(i*kRA6w$IF&dsjY52qo+XAC>D^qUN7>!bIKSQs`Vv zY|Y!zs^S-8R^&eHV%7(tRUyr3$WjRwysE3eJIy`D9M)6jR4H&qg!^L^XPN(!fjlSK z+O&Y?YShainA^E8botouDteo#qtJyogN}+6=Ho+{D0%m6^xM}wXFmAcpHCGw3oX4y zEy=BjEm_QJ1s~S(6W}kSHMlzR2Bi!ggPM6E5S{fsoEcAFQlH{q1-Z(_gZjRhUW}t8 zN_cNSfM%S}d6j%-dgU**uFO7~(K^*fhpv%`uR|viov%043P|2{ z@cxT2a_0NXFP-a^?62QVHDT_KFPou0rgs^mCumzCmYi<$(&^?P!ZmG1*&+O7X||OHPS21+i!3 z2-*|7Su)01d@0{obVYZN{LM;x4GiiB(`!zB6TT5e0R}{yEnulS9hx3IMeQ3$GLZ`ldt@5*M^`Ag_7%%`m&ti z^g&Kpy3F_39Not)w{ugrl(b$HZMnlc#Obz;G~-2N2xj1-=lJ^xiKh_Mu$wQJlCA7R zI~ng&C;i6T4Jjtt5XBg+JYVjMv>QFN?Gb0F;l6_R;(m=Ta;Ejq zgd@9#Y>N_GJ6urba~oVykD7WF^{9<@Amn`=Em>l>i9CrTEzVAyE21zNYUu(9e;%Mw!-qGgLE6kj^$WYoQ-FETRFnUbayGzgud&%rvDqQ zcZm)fQ%1^Dp0uZWA8W3HZkG(e;7s7NRbU9-;?@l!2)H8p~M18Fq%oV%AhVq~G^G3_wac#BBXihP{phPRC*i*xA zQnk;k*7oBu8}B8BgEdT0U49tzVKqo3sYa??@X8QJ)xf=(XM1Lr#1Hpc$>tdDoABGG zJ8iSGP-`c&*xq$}e%8GkJ|ue&CL0)>5K3&Y(93Vi?y!_E**O>yU8)j1xk6@EGXYwn zC=X)~<*Tg+ocHFABuW>G{rB4PF zz+0|w>jd)9=*1gv%qySYTLtmos0cqq92d&8JnR2uVNrUeXn#Nl+{tUMo)Av^m}tO`#N3>k;}9(d6pcQuHFk?UMOf|#l|Wieub-8^M< zpdnf2!Rh|RM1&V}&2ep8Z}(`#EF0Is#5S$zdN)m%ieNCo|SYp z70$|cqThZB3}6db=6|~7Nh0zlq_xv(c?eyU??!H^!rOLXS49`X!r+eAhX?k({o-o+?z4dy`~g@oufQ;KR82GHqT-5VnPe%F1To>$qu zeVmCFL1RoQZ4h6X#mf|#EqcNvl$6YVvfyt^F5)v>AAIC{M|)qT4sCy$VLJ@DU)C+i zmGkgr*Qx3fwg!(e-Eonlr-mzOuP-7H zwO(hd#~uA||EV!*KeELyAUz>w;OCwu1DnNdl9NdN%urc3`#?zvlK?Y)*;$bP3=z zhv#GACaL47fw#B)93PiO-T0^$qdT7!-Wl}o@g;OM3>W8L*a@j=sfnHiQ(L35!j1*w zRb>+e<=I255fO2)oy5xuvLt2CYP)!eMp?2snYjyV?jA7K(LgFnW&-=uY{UoR1n)RZ z#c(X-`SNm;>=SO9@RY9-BN%sq{e(~F9uaTWR(BpW3{5utAvV)7c5+~f8E>+%!8`*E ziUFdE?n9gHv)?X_d!SyM@i1#ckViX$DM-P+i~ zQA_e*83tFXQAh{xkM5=cx)f1k{6x77dyU^Z=l#NJKfiyMmnWrTo@JJ-%PSLG?|8l6 zbnN;AShyRG^ktoK&Czdln^9eTmi|JoPI%66xB-&vl+>~-ZlLbeWs2gllo0U1EF)@X zRR5f&px104g@kIaJe~GKap2d6v^%2Wng+Fo%$uiIc&1IN&Wd}y?pXWc^kL!`Tl%|& zE+VH68@i?s6VlDfXj+EDh#WbbdM!|} zp;pP=`_4u)d3aIr)Ay>fd=59yg|Tt!??XA6Dy4X;8T}z@*Ss*it*yWGa$Or5m8$Jo zY9me6XjgI%4xo}pWn1NYkIN4!5n8$eJY^b)>Y3mBQqedk;=2jD9VBCl5rAD4qRp#KTJK58R)eqUj zSzT!e1zQA%o%L~_h!i; z(fW4NrXUdqtai&0=A9yt#MKcdbz13WO-ZF$hF~ypaCy})0QHZ zadHc&*nULV4inH6J-k8V!a|Ne9bX&lc(L4N9@}pU*{9AgTx~o&t+UEsAW)>9?QLi; z#iwrWXsXG)21?Bz(#4GN+%`yZkKoRbPGz*-K!%H+!O8H+$dsw5u&zSI>E@y&zIy+B z4F}b`5$SI6TWDT-zxr&WdiSAN&XWE@W84I!1R-bEWXnhS2HuVdlN$MO|F7cXe@=JJ z-bN8$W)b+Ljl*ghj54X@$algE{Bs3^;i7Ff-Y89x1PrqXJm`DYEg?*BNB!UiOf_u3ef`c>b z6(lsyoY21^Vg;!RAwxnU3$8cJug}*vq)QG+NY=>qpU}zDOkqg2yQ=Y5&^srDV!#8! zYKd2?G7tC%_c$*Xwoqki4r!?I`(-mSkb`QoB~Nm5y}+DXk#Uit$jI%c(I_7W-_`yk*w zRk-j72SED{6{+x=j{jr(Uywk5%MEA+`X%k#km6|CYi*Vshpj>CK3ZkM?>4HSq{OG9 zz6)#mqi1yyO+A+y9U}SNIt&#l$`O}9`M2Gd=jnMIeP;tr=tp}-8~lghR6jGg(-;x; z*FoWkM;_syU8b^s0OK-phWkCKe+k-Od#04uIWDqWYzP$Avfi9+$`H--YIxIH9EiEp za5FBVRmPdilQ=Z(Bz4WzKIJUjAkY^4BGslYY+KDWX^@pk#4HGk^F%_)AR!||BOTJA zx*Zvn8ICQYFfCjMjfn|~CJi`G-r~f@C5Of1^U9P{mYdVf@rewgqC)i4#zP9uY~)?l zAJgaT8F3t9XGZ|@M!mz?7{*m#b|o7DZu>RJ zs;qXN*6R%W6u4AfIn`1>qFtP5G_B-d1wYcV_Nnd=l5$+vP8}(hdb7SbMFAU>lS%Bh zdx)No?;M^j)(6IxuuOsjH{XriaaQB0x#`8}Ocg)7%34n1Y1y`icOzCc9)$Wif%3L- zY4c}|c4v|NzqziUK&ND;yO(;!)y5gUZ;W5zH!h~pTdpgICURZ`{TQ+%GFf$xk96K? zEOgNOQdDw}*&t^Roj24LvwCQO9SEPE#8yCDoznv<4=jxr0XG3T7;GiL#}C&p6MAiQ zw|p0IvqE7j;gWNEdzgHp4Nzs!qJ9D%w|SgU0%o}F&X`aS;OtV^<)E5U%|91&QLY!U zpAK=kuG|D>5rhjycvwyReiL2Jt~@}Vb2@I4C|Cgz34vzDqJrQthoTEknUvHyZVCOh zmffYahFPD-)5l=L^|@Y*co%votzXtsWi`A+$A=E$(&IQ&jD%-1g}$IrG(=W0uwRUE zuesW6LBV8x0RXAcWUeO)Q|P045mk*?IX*vlxQW=obQKB^%`SwZ&3{VGekKU0jkL^9 zpLs%{rQaclE+9=*i3{IAV~T0}fr?5%fKv|oQ9-%EhGKaC^pe8KgVdrBu!kdb!J`zs z*Jd^0&?7L5KnF>z4tR2k9Y6mH^w zY43WIe8$|qi{#^vW%Xl@dAs9zWNHt3%?v0DMxG8^ zf9%TQVYjXMJwb}|{D__bNQ1-h&{JCGLSx?59KPsiI zMS{C>Ap%$Agx}cOyN7JsG=`Xz%+{a%$|r)5BM|=x+jHZ`ZyPGzR8a8gM|xuV$xj)A ztaOz)6g&o7wvK>EsD&io3qwfEPn$3(fYTTR5}!S6nYQt&6d3hhHx}PyZBB^;7WQj`*C|szX0_U&qsMjd2_gdppn*3*nSV{h(*-ZWzski8J7|wC%CRjLl zXoYUUPqJ{o)-$*#wTIbBL2cozSd{$}UjR>zbX033^iXxgGhSRHL|^de1V6TN?+Y?0 zNY)$g&)(~}QKL7O+^JTQiIg~p432fH8eL6{sVG+)5(Xa%M?}~H`(s(ihTh4pb>q>0 zVI+S0+2Js=YM>~JCD*1@#N}RFF|*krYfQc#O?@zd7N-Vj3I)+2Qv3=aBKvm%2M$Wp zC|fvhr*3Oc!uuX~@ybRjD3Af2Rl@$=umSVamtG@`AN~I-j{nZA5^w<|E)HLW6FvkC z*YM)@|3lqDN)$@e!c170d&__#`Gfm zDQZSx5+wFTVxTLUOVJs#w@6rCXpNZrF60!$`=ZsdOYW8l+sNGK!*7E@TAva5~)C^tKNn5WO=$}8v$~tsTbN76Nvib**v{m9$1xIRR z^>AMH0%|@2H&0o;Uv>a{n!(yM_{B|{;b^K7#rL4r?FAY2P}|GiBou-dL^07I(`{d2f(Y|=g}HTe$ZuT^UaG@5Ma z9%E2Xl-%#oDzyuJ9d5dbCh=8@w z`2)Oh!eDHaV|8Rm@s*7D@B}F&-iK{g?&xD@s^2V%8=mzE@@34;1Z6j)Ddp6qhw?y9 z4?9CW=Cf@@cb%M-BW<$+Wk#k5Qa}+1o$>$P>NL7109U}(T6u0}TaGKuJlGzDYA}hQ z$whNJhK-7AHjaxKN*|m1D#tt86%ANu!h(YgqLQy{u9IfLA+42DU2^wWjW#dssm)q% zp$%uxo6QwL>tojaYeshr$xjII;hUjG-LNSETk;O7*M*}67Wk^m{>;eJFaLQ zha}&XW?a@HzK2RAxy ztB`M{rLIyWhphOtJBFBM-DIwbg8ote`QQvCveV$iJTo}vx9Q4=u>GKZVw0_@8C4_q z`mMwSiGu!lX@fP5eN=fVW5Fu*Dm`yGE&&f&T>ktA#2zEh?__*r1-$v?=eo^F1UhLY zclz3_cs{ASU*JoBMFF`|EKo4NJ|}S#P*(S6#~AO;xRJjZ{m#lO4}w9RGVG{!wf=Ov zm?a$AAvTYCt@ov)WD)(k*+bGSWN~P@@{9TMM4g*>p%BM0(-&-6&k%j~L~j(389M0! zYM6Uk3S^cizTk`ZGvsNzt&^_g?d%KfURHDTZ+>S7t9D|xBJRAoc37;LW!<~|u6)aP zd1h_|*BiuoZ6A(S_*VC?o1!3N_!f~v#KwMc@g-vuBb#fL8fE1PogwkQel{CC3@rRX zbRIJj0>V*ByjtVQHZujvBr**7P_SeJfPy*)M>?e4w_gH&*}te;c=BglGpp|6;#Ub& z_EdfOVt(@IpCW^nfovFXR4Tokva$QhyUL`PgLJ-!7$NAYK3X|@TM90I=9VxAWR;(C zw+MvoZ|dH~7^io*IwoM-mlF8RLHkpoz3T=PT;7W3ap(%z{RnL;2UvsWkt!ct?$hru zXh!WNInKr17v_6a@P%BOx^y;iz$mYmEfy9YO zwYoCoB6BW(#kPNN?f*2WGpiJIX6dDGW=bpCFXx&ax6pPDmfu~@#|9_nZ>^7rOP|xH zNH%7x9ew-;d)5)>z^o4B4`3Z8jr12qLQ#K*w^sx6nE|hx=Z5cH&`|eJb1Y=ue#@(U z6-|r_8^w}qcbc~;vCYy^8PVmPH6k+63}$G1RyB`@8rFN7PQMh@;0xOMI298ojF}~Z zh_9FgE^IFPU&C(ZJM`Dx4GSM@$J;3x5u2SEyo}x4ADutuSqi|9l^x2lBQHaS`ulzP zok&h&d^Z*<#=1#XzWJ|MjD*D2{^8BPwg0|*zxgEhEN}!D-|vOq|BUJB{tsX^puHN) zk?G~{CB&oksdKw+vv6CxAKKx9k6T^L_FiU0a-lUYpXE^kx~a@dAg@3svigC((FP*b z`W~=8_4Jv}A*>l`d93y~;GG$qwX{tsxL;7XhrpgMToSdSK^ENDDCzyED5W}(Rf~?a z(KidmeErld_|q!}=GMrj`CnTHqxQDjF4##@dg$8guD)q+uVQt|ZyT{4qCZams&HoY z$Ri+yjtU)Fxs3DzBQ(-VBz?q!*`}b(QY+di8ZKAe)l%uHoXiyb7>L z!fuzz-LNDp14q|_E(5W06%zZ#Ffo-8Tp}Psg!GUX{(Wi!5sAM3hFSD5rc+qvHi(N~ z@X0mYBMf`}Srotcg6CyncKs=*wjK8Yb24E^QbtKd7g{g6M!rBoQ+&e2$l_%+t%)bw z&rM3}{<4+M%V7v!tR*3N1%DM{k14b|KMAAMqFq`wb$z14_A~VW+q%4XOIoCDl$7=< z2rxhzYRig?qj4YL9&foo811*1`?IDkVXh;PDQPQzl=|w2xPkp6yahHQj5qC+Z^2l5 zBYnbDihy%D9lF0@O|uAgl4n`J93x84`J`G!Gmu|R|5CwDbWP{ov50a5$6T#qY0R}( z6%BKoPOD*9u1^Mw4Glf0ln@}j-!lofVN>c|w1+)1*WtV)l#+isr7AiiXUK=TrdCu> zA8MU!6K1~~uiPm4Mte$*e?ncJ&pgE!ZT`aosqQl`OTl#*G{f(O#g_Z(Df|HJ@8?7O z1$j9-!}ab|-zR!)Orn_B2Kdph_;<-=_N}QKc=iNfERJs7@Bq z{4Al*%;CetygzsEHp`Zr%;G~r;%Un-UK*trQtPy-fY*M;OTBQcXKx3Q z@d~K&J5#bEv=~WhCXwkPjmHcgh1H-NrL^Cn#-TmlsrUYx3=)+N#Pg=BtLFd>7t~j& zJS}xD4ZHx@sYHjirca0=^9^0Ld8Jtqa(h9NfpfIEz-Ks>COGkzQg4&|^DcsUKCi)# zYQTaGUO`!nZo4J#sj`on!CAW%nsMfovN#ZsqcJWNmM1(_hd&jdXJl%sOOOIoB-T(N zp#{qXYf+H+%s+9jV+#lEd9a=*T%$UeuG4B&T8tE8fe?!=>`5s4B9HY6+!Vi%vA)l@a-n zYekTX1Xst=sEizrp0;HjARr&TLW>|PXXD0gplD#H0Utzg$IT)*)m-;dHq zDtr5>l_h(t)@5|c)Mh@%mB4D`$F?ZO{3)Y5#(&}7zmWO=oa*|2 zban;eZ1mi9%U_TLX9>r;kP+b2qDnNs!Fl*ce!L@b1+H{*0dJ~cxPW$0W}<89e2HX= z0R>cqc}<(-S3 zskNg@=>aAH!r*Ok5@xu4M=t;SKKHXf0M;sUn&G!`3q|p7+48|56)V}YpYCY5yE5&w zJau4~`EuwjX6F(IWfHzwKr)nCQDzA_=Fu@`njs4QD+B)5#UB0upJo!mfnWX@&c#_g z2(_K3KAS-`LJDM$ybr5&>jVg;!HwdFsr!5SovgH9UwN(kh)sruQHE{J&jN+xBzeqZ@=hva~N^@d>ZCe;90?cKJs6cE-$2h%D zj-~M4GNdk#UvY+^+!kZ;YphqIu_ynMjIm=@8YKUbj8*<>*O&WSGKNGA0no{T-FF}Y zZ~hHIz&n8lda3ueSt3-cSM!0{y<_H%E%T5ZnPs5!sn{Z$!}=RT9x z<_%BDH(xGw+)a-_NGgYLhfD>dCG@LgR@sU%>c0BVYvw?*yHHlt(X7yQnFC=L-#Z5o z8E6(ewz>V{oBofEX0uK>bWqvd5qf~UtzE4%Ea}fE>fj9WqRAu+%d8V=+r1ff;x=QE zXQB^{UQqKmCU-V_$C}Ez&0%Y&8tpY@Mt2%^wx9~8>vi0)uM$P zX^eI2Rtdw~IgS1RY|b?Su6k|eR+Nd*)|g2`5@A*lc*nIerA38-?pNiX)TyMQcDszn z6p}|)sO?NCitt;E-+~WM1Wccj8{#(Rcw+U?BnTUwgTlxovrEWEzJPtBdWPfIAr>0q zH9lR}YSPX)Bk?YEV5Y8Rn`e;a;5BeU&K7Zf*Px-z^O|NWrP-pM2xT7^z|~|^Oj8EB z^5UcTIQwWQ)hiSn2f!x-jfCz*p-g%$ceO^5SGYAwqIgiMa&dfsnMUTG+lLzr9hZLs7Ga9EY z>jhj==cJws>M2N=dHkKO1u8*`9w(O8abm+@T zhqU?UxMrh4s`(|vjh;h7y#bA%L~EhdRQjAOW%wn+I8?4aer<%!Tf~RbQswMQE7H8{ z0xjO%1HBcft42U%Mr2x;e$*GU*Zfn2yjn;4KjKnV+~!rxFqL~x{!PyOeewQ( z$OT~D`e74q0e9{am8jTCXGN{TU_;a`Pf|7&|N zf)%<7$f^U=iL&;JHaT#u)9v<$ja&ctr1UtEOxu*{F^9)<1Fczudb8L3}WU*?IUwEo(AX zhvvjCW0(i6BX7wrnH2Gd-07j}=sEAuro_DK!9ZMoP7Rbs*<*AW=4x_}^cX4bAAk`n z7yA7-_jtH5AtLVWp^;i17E(_S*bsfb?BF6<3jaN)++ZD3kSaABrhCZ`#|!$o{aK}v zSzdBv7d&Yi^w3st@d-}mgI)w9f@*_Icnw~79gG)N&lSq*rd67FOVpp|DX?M4?Z|i6 z=<7&imqF~&`9#g~8aO80q4Bltjtr)cl9cXE7;(ay1d zirI31QStnou(1-Q6zL#eI3PWgs!S&6WJ@0@GK>ly@4mw-=L5A~7QT-BgWD8# zuAZll`27AS_1H|=g5Gz1OnCK{QE~bLt_NZT8};VLDQC<(ZgJ3L@Q^0BA^>PSulB`B3W-rB^ns=u5MPVc3yi+STd*LOXGT}s(6D`%MT1~UGAjYlBLfbN)}&rR-X zwlrb$$DV3V_ulWmwO@XhY%~bSR2o8Q#<5ZNObY%42($*Hu4XM!rhf$-qC5#%jM@qvKUtm<{Au@-j^@@ynXc^Uq@#(A1JL4O3Pt$KCc0iyFsU7q6E}H61VK z$V)f4exJ*!PM|8IshwyQG%24H)NPa1Vy4EkPgK7PnDW(;>Gi3BJTlolJsl;Ud2FZE{_S&(ys|^IQVd zl4MfG+giA*>cv5&SH#5Yo~ots^ZL-6{e{73qMKpGq=~*xN5Cyoj4(*ADrD46Rt&LMk zGV7@f$m;k{`1^lMqVw>cE!{zH|62Y7h$YGQ)_^ktPvD0KSa$ve02(}>S{X+E1_0B_ z_CKxD{{aA?MJM84BmV#ZB393|zW_ke$p>}$62Kru?Iz-RSIbjut7k^N%+6YlpOHY6 zLdylF^|0~j(-voLclVHI+RjAwo1gkS6QyDqt{mk_VjO*wS`V)aq;{2%!sm8LYEGi}lQt{2F-+#QLqJ>h%B#~i+o*nw59kL^n9bH$gm|n9bat9-q*BMlN9spGZur|r zSUAcd@T5HtxokHku2;9-XSveXH^bQTTDBu4}AE|(R^c*VN7lr zvaF73&7PBP=*rL~J@daxe>sPL^uYoxG+yr2&wDnH?-deZuvJveMT#jm2?k2^VvJZ3 z6ulJGeUs8&_AE5;Kd!%s`%#c#iXm@6i!A{TiF_34pDuTmAl>?7i^rJ`r04E>?eDZ? zo>tgfTJ`l=Wv~n=3}-0hZZq$uDezj^C3$iT6qS@j4P`! zP^xh4-fpq5itEi;XUC^oJFl#vEgMmiWOBt$!;1UoPgFJ}6$s#ZN<+nbf++jz4;2xV zgPxUNCH^f8Z+cfe8cwakh5OvT;nnqg5LWS+3u4o4_KbT&lUH$bvLrFVrNhH@)q~}f zWZz;VMS+NCw51VpxqlOHY9(uzi;JI3j(*TR`c32tXi*&Ns3l}kXsGk#M*Hd_?tm7~ zr+2<&Z@Jl3zTn7x60INoTA!o3x4nK8z?Vep*9KMo2UFb|RsUeyB79crE) zg92!kgr+||=n(CuEu^de0QR!l9h>9a^ke*#ZeCA_e5!U$i?V8x(4ft8M|m9sk!N6; zvtcA1DbGs$=|)|I>$?an2Po8&sya8YY%YgMDXB%7G|P!`OwU#M4EJTzW>c-(BkoVX z59D3%QbA@9(IF8S8mUxl$}V0mt=|cfEn{bwP8i@Hd+P_Q-ykq|6JP3BH-kQMAD(<( z?v`egHJel`o19QA=HEvk9i+L)raQ3BN>xQzbYr>XI^+Rjs#>P==fDMA=kuM|P<&MJ z<9Ob`He;1aBc~`E)--VKu&%zE=!FeFSmV4zX6Sdpa!`v`{lZ#U6#)yuan-UfG9&^Xd+5g} zKBJ%5lXvx%gt|orT)82&+Spl3{Ab3K(ko2rS{a-K?H+0_MzL&38PUPtfc>6J2$4Ct zyb(~zrQ2BQJ5F7JfLT?I)(1(R0xi|#1p80p&#Q>w?_tv$4dDFKV*v2D;nmx>++ zH8L0uc%PE2JA-B5gJ&y=VVv;sDS?&1=t+Bo1G(Csb$aadZy0ycKpkVDUftSWxh92u z(|OGO&*4ta*X)doAFEdxy-2v=6zx>H2=(t@99jR+1!rPHWR%ScZO<9K_{PS&a$hjo-|#FfbtQO zL+deKIS`s?@u9d|z+*+hW^zT=+JNFGO`2C}gShmt_V0oCL=A;|p-uPEJ`j@t-kRjR zLOJ}`p&m}X3+vWi^CFBD*h@)Bcnt*XeT zxPfR_z(@C@b+u_qdAZT&#*%V84^s58MB2Ree=C^(0BCUgLI1-bc+w}w{axva=*?sv z7gN0F`!AdLt?J(IcN{Od&WKQkpns=CG>EO?^|fWCeMrOWb7WZ7Wu%W&{C97nyaM;a zd(y`Sse#L2qzeP|TOd*)$o?eALf?qxviHQ)AHg?HmpN3g;+2y+{09JIc27jcnT4}U zSwa^@X+y|va+(c+M-4VRxe+17)7thu9_6EzrF}}bf}6oWL&=mKlp7Lo?2}`c4G!60 zONjSfkjP>89i5d_p;BX0R}c$~A|-_itchN#2~=kEr#8(>S_$GX#9Z!ynn68f04(RE`UjS?LLzHDe2q+qC+pR{Wi-W$6{(qLYUi_@kv zB9!1h-!m+cP_+&3bArdkTZz=QlSV;z_iZa^3I^W|?D361C&XN;<2BP#W*wF&xJEr? z3{)5BXX^?maEbSb2i4%B>kq~43rOrD+3Fz&9v=QK2O6z4Tfj)yYOUEZ`9M#WVwQ4* zEM=Js-O5IoizPtK+V)ZoK=p`-L&_Pwt@_Ok)HyG_pUyA3ElF}FC1vm3*Vx}>j3mx+ zgpDrd+sq7Uo1|m1GH$5%9H7w28KOscQm;HPKj=2^W{b+*8Vr7paGk&SCaz|aBVJ)9 zqD~(I9QO%j55@8_J>KU9;CjVP3X3Ji}hV?E^|OBw$Gy8 zGU`~P1ZN|$H!_p@5jlCmo6_0|;)00 zKJ&1%*Ui>3t67lX;So=A<#Z?bUl>zH(V?Ew=l2vtuzoeN3cdi{{~mL!1y5$&I_E8P z(;txoKhl($!GMCYy(*@M5l}9$i=r}1xi>VlhON0CP3L)+Ot674(tGPIk`a2}|IylT z3m&u|n(w*pdp3oaBK6?=$tE(QoN)*Ekl@Hh$kk8>QPI;&ARy?X$aWz~Xpy1Aj&oOE zIQQh_GpxYh?J+L?KydO3BYQYkr$-y}MxGG*X#H_#Bk5awlvPUDO$`bkylU1!F)cv0 zm}Mh;BNW&|#xWx3Rx7Wrn5ehG`}7091%kaN9~(otT-|kE8?%27f=wQl^f4PL;CtXR z-In`<%guEKTm0&?an*?-3grZLP(E*x-3_jAzTCv>AgTiz3CRh5+0EAgn)nEbY9@it z=N#F`E%67^OwF*1mHdubgU1Y0&860J9iooT8%Os_qGrIwBF_cmuSI3Xff5}6cq#y( zXImcSe4{2+?ae*2lzp-}DR~@OaoLxZmd6mAOixo|n-K6__ z$TbGf<8}%&xKhh*S&|)VhHiZY5V2f1=^&S1 zkBfOxvpqHFm29KAM#1?GG%rRT6eENVC+`t2agLM+7@-0ljj1CjNo_fG#v4r3F)>`Q zJ#!f)78n$kj?eg_<1N2qdmpnPm~(F9=8?P>W~^iR8-e`#%UkYs`G$Im3-WbNP&2b6 zk&Xu^MG?YN{liE>9~TXi{!p{}_N=x@$NRq(<$vcpyq%ZbKY&if_5hmKxcAyqBm}Z; zrH97hUrXE5&lzvid@zC4i~s%+{MTQ5mv-kgHxMk3_uy5vg@rvL@_x_DCVC;cF8s|R z*K-a|F;K7BA5Q++0py$yi%g71jnOEq?VgmW zoOZ_cJCn&tkC9S`qT;*kjOgkoC~@PO6y|5|zPCishbDUyEEwAbX(r{&Ft$)(JnRnz zE~#y2fx#AbcD2Xt;RdtZT{R678;w&V<-PjHi;pxU7$|1tD}}n_y$aHdRAdv2VtlLC zn8>QxT@G|nV5f1oi@%D)|GK>p6jaJnY@Z_Q?UBOgV}Iaj)cahXOxg8JKDngUid7Tz zEI$)d3WKfFnigGCm~5#r)*99<`{Y!iS+98oV^H9C6chicOYIXpzKSEmro)b^1@ihd zyGFk*xlXBlBJBu>1q!h?e-L%+%5kG4*)6|$2W8YLVPqkC-eW15>g0Hy$9E#8Xyu3d z>{Wc#YvP#Vmt%c1l+n)59rp(hj*XG? z7?ymiDJ2>wX>;O+xr^?oq2FuA*!jCM12npF9)lv0sbq%OB@m)*?X>F~E^-bi>}|3R zL9N4{eq<`k3y3h}Q^NxiP#FmR1sEw3-*Q6{}lw>K`>;L+37al--|@l1YsRWuHtb z%B-6FvT!@bCF6_beQFOVkMK;b{p1@854YyWa(^&%;-K@ZCr)*^HQY5Q(0tMR-NsH- zs_iaGp(4nDv$h&*sDvX`Mk1AA8;agIr33>W7VcYNn~(HD8I`WMEjSJ26__SUK@c2~ zozl@Jjv-cY(ZXFBA8P z7ZpG6WYT7yt6P>?MBVNzxA7?^q-;v4qoP8l`-<1{zFo{*eokaDnG4*Z9$9q!_34L) z$v(oBH&qIU3BZ#tA#jD=k*Ap$j!ll1J;L+&ldmKTouYAQ+M~jGK}2i-itRa0idik` z`e>_PiD%#7zN^ik+V3=lhN|Q4fqcdW>tP7VHFGR;X8G?C`J{;2ZR^zz6G8XjTnY`P(rteg(B)HV9I zFWdB&9N?x_bCxeOYBl8IVRXpx$v%!k)hf)amC$36(GsfBW(|)KLp%!KWDUlz6vqDn zWK_C==Xs3$gDQtBVWe_Rtcs2=gq7+CUo~gG@i#RTFC7(jab-mubwjaWAk2#X7#wZ~ z!uW9^o|2c1IH0GCh%f(h%fWoRpI}fYgl$-2m5$NQdE<%u?yL@MFYcH*zDik)8eT(; zUKFxcr@aX(v`jvd3Mxu66u6WdbHElhj}v}3Z(Mri1CuCp9a?Xhyng^snM;OOhj4Au z($WLcwULp=f7?!49xpE+j{IXgNx)$|m}N})x9udo6=jB;#E3GT2mrt;Wd7IHdsW!d zv5CzbO|c)zQ*}pjbtx2z|Kd^JtFyxD?HaQ_jmMR1^afiM6F4EN97;D3M7FohOKkJ5 z=2`o~>GTJ1%T?9AGXeLcuseJ{11fBLz4Hr8d|GMl;d~sCyDNuhvwPT)H+Bu zT&5Mu8R=s{eXDU(wS+RQGY^qRV}g$Lhm1e92fbbfr*_S$U_KoI*Jyt9RE5EbT^pvn zOoz5_296^0Z5B1YFD$W-j*5-f@}-ziPP~5@*I=A6=hM-$=9YqVPg0ozj0o7~M;Sp} zvBLIj2;LtQwma@Q3&=%CHTaE6bGiliA1^tV3T7{T8~zBPPE{cPMfUu#u_?-i;R7>m z3GfYTwH(@WW=uAu>0j9le6oo97BYwJ`tTbY8wXL$mrzc<^0=|Yx?MteK&pujoWMAK z*@)+2T8Iv{ryhvCK>Rh50{idWg`pcd{5N~*-c$18ApZLV{FoqPBCbyZpVc~w$rIyD zgQqCzB(|xcJOg8Q3DG zTJluj8biqw7`<%-(Q_$CH@~Ev?e0FLrsViJdV%h-9`(9u!SzjO+&!KT$pj+9fT^~A z@vsB~B{C#ljv75}a_@lUs|+8!#0dC=%ZOnXk-;m|!GmpGiouN+;13Xd0zmBpz?G5K z|2l2|q(Td#%c%2*=1PmU3qpa~rTJZHv|mU^;`%EM=f6WLE>+Kp))_EJ?Wg za^VS(tEGH{AB;v9q(?WDZP3qZ?2E@GlI|lGsUBoDadJtDq}?vH+;}Q)vTbAP{Guw= ztkxzzw)#b0>JQ){lwfLctYXhFdKN@hsT1xrW8!?dq?1WP;=Ksg4IU904N)9vky23QauICgq zx1PO-nK=)hnUMEwN!B+ii1lx}T_jxO@PhP6=hge7gU}>2B~H0rqr+@k>`P6v)`dU6 z#-0keKw~Y?5a7f;w91Ok5(b6EY10Y_z@Fxqo~CJll^Zqp5Ot>r52tck_shsb{h%o{ z`ho~?d)S3H8fV(qveUGnm&o-%Ga8~}>rTiuQu?SW;tkiCO{SxtKN#_&Q zM}Sw_HOmBgL`czpTz;efc$5FmL)_F){*{@|qHCSCp|_C*-d2@6TkmMgdgJ7A>im_7 zl@>Ad9kAES`gGwu{h<{TzL}bwBA1y824!`@4(iZR2BGj~HtN2?FxcA4x*T|~*pjZ2 zbV_!OxKvq#n0>10;F_WNF%#c8%{~@VAl~hS@<)l2tZRaE(g-DCZy=eVrMt?AedQAq z)JP=^W%Pi$B>nyDB8EK<6^Db(U~aPqjZz&NdU+v^qzb@*T?G=c<;MVh5ez!kS``7x z6-jP~`*}bd7qPrk-NNq!xqu<&aowax_htn%FVls>$TzPVvINJYV;>2Up`tI4Ia1X+ zjL}0;RWp5vr9}CE$?*RM!~chePfCe;F0&nVb39!_H#mm9=NHm-WYdT?WlEIQc?T@Y zad!ZPU!D zP8YPqPdj{`HuUiw0wt5}^-4gt2=* z59Tgx!~UXNO~aIC$VTz`zoKf1dh5ugFd)siwscprJ=1zhaG-8|MdXcI{r^Xi0c`If zLgM?|8=}iY(l#wvhJj5B7z-{V{C#M!zi_^rM31_4Viv;7BR1`x)4iv{~6rAk4k`UV_R`#LB4g2S^x5n^~dq|nQ^8|Ev>jjtihLa$zaux%;3BBkK z)GW$uDI%w|qvK6gkgorS9sA!l6Kd!QVOU(w@~xO)4C9Qm<(A@erb&zXdJ@-TtX>Y* zni@}*;Hu8-L8?D9QtbS-N`Go1IqXd~vKnRyph8$7n*xk#;9oSiz8SQ5X&1CQ^~A|q zX}e>OeaqNvdvV@)Ol`=!U|V7WBG%6ruQ8$QyMgvG1VZeL{dUwG-R5CY<~bT>-RQAj W|KAVU|Mr*vKjPDWdSjA5EB_a?AFI6p literal 0 HcmV?d00001 diff --git a/doc/_static/triqs_logo/Logo/JPG/Triqs_Logo_RGB_Full.jpg b/doc/_static/triqs_logo/Logo/JPG/Triqs_Logo_RGB_Full.jpg new file mode 100755 index 0000000000000000000000000000000000000000..58e6a815e7965e2d586627c70e214ba2d3fcf198 GIT binary patch literal 82059 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

>-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 literal 0 HcmV?d00001 diff --git a/doc/_static/triqs_logo/Logo/SVG/Triqs_Logo_RGB_Black.svg b/doc/_static/triqs_logo/Logo/SVG/Triqs_Logo_RGB_Black.svg new file mode 100755 index 00000000..27ff0f46 --- /dev/null +++ b/doc/_static/triqs_logo/Logo/SVG/Triqs_Logo_RGB_Black.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/doc/_static/triqs_logo/Logo/SVG/Triqs_Logo_RGB_Full.svg b/doc/_static/triqs_logo/Logo/SVG/Triqs_Logo_RGB_Full.svg new file mode 100755 index 00000000..149bdb6c --- /dev/null +++ b/doc/_static/triqs_logo/Logo/SVG/Triqs_Logo_RGB_Full.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/doc/_static/triqs_logo/Logo/SVG/Triqs_Logo_RGB_White.svg b/doc/_static/triqs_logo/Logo/SVG/Triqs_Logo_RGB_White.svg new file mode 100755 index 00000000..eb273f97 --- /dev/null +++ b/doc/_static/triqs_logo/Logo/SVG/Triqs_Logo_RGB_White.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/doc/_static/triqs_logo/triqs_favicon.ico b/doc/_static/triqs_logo/triqs_favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..9e20d73558c48d95ef22d9b46da4a72f571d02bf GIT binary patch literal 4286 zcmcJSYiv|S6vywnXaOJWQd=;9t$Z*wQ4ID2Mw_l0h@vQggivF|7j|tVR==1AjEgB! zO*A!usQ3sz0Et2fK@c^t3tRi45?{3%CB|J*(OBbJ#jIxO_4nV-O{UkqwX|%TUuWi= z|C}>3_w3xQg{RAz%O9Jwo=Cb#l0^=ryCCii6W9kOyO|FqMcZz~0TaHZqy zZ*qp!ugSm8%7659}G{U}a=Rx{w zU>VfI0#LrU;7{m>-(ijNvYt_Y?wC^rt3i8I{k#A>KzrN*7mu_T{O7_)Abl6i97%8c z&?@&&ptF1plsgYP$3?a_sE_VyP;Ty<$fuBj3xo8w9oz(D<)rVhToo5Sb2MWbK z_n>_r)b8?YvE2$yCG6GM2cWHl?+)yL!T;U?Xf6fqLFX{HM66ZD_qtuz*i*pG4!PFtDIo_)yJ;;r4xPyeSYSHVjqAizuwI0 zz^AxkD_jShes5{0%wK zoqP{01jW4xRI8tPbLiGd2kC!Mo6RC|()1=U}@6R9C8Bt#=cs*0kOq zV1uWpuRCC)Hx6piyb8ym2IhdyLTlOw(@V|6J{9hV10b!(4*FVC%Ger9&9`lOMraSi zccAwn_j|D(w2sBL*5Aip1>RiUz4|V(1vbE_YF07L8g??r+ee*0mpx9lObel10Y8J* zTVwmj(kI4jQ2pqx6S`lNqaNm(b}{Xfpl7Z6q#s=4r?L)W?FQaQ(TTLT!yfnzyfaa& zca_e2HI#f;oJvklODxr};?MJJYEPUjKAZEfv;XLfe+E7u_CJ8F9c$k_d%b&J8f%R4 z%pI ORJel;3Ad1Ni~I}H{aix; literal 0 HcmV?d00001 diff --git a/doc/conf.py.in b/doc/conf.py.in index 182c670f..a51683ab 100644 --- a/doc/conf.py.in +++ b/doc/conf.py.in @@ -66,7 +66,7 @@ html_theme = 'sphinx_rtd_theme' # this loads the custom css file to change the page width html_style = 'css/custom.css' -#html_favicon = '@CMAKE_CURRENT_SOURCE_DIR@/logos/favicon.ico' +html_favicon = '@CMAKE_CURRENT_SOURCE_DIR@/_static/triqs_logo/triqs_favicon.ico' #html_logo = '@CMAKE_CURRENT_SOURCE_DIR@/logos/logo.png' # options for the the rtd theme From c9ba1023b6eec9dacedbd805b54b342f06fa495c Mon Sep 17 00:00:00 2001 From: Nils Wentzell Date: Fri, 28 Apr 2023 14:23:48 -0400 Subject: [PATCH 02/11] [clang-tidy] Do not warn about magic numbers --- .clang-tidy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.clang-tidy b/.clang-tidy index 88cd7ebb..8aebf358 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,2 +1,2 @@ -Checks: '-*,modernize-*,cppcoreguidelines-*,-modernize-use-trailing-return-type' +Checks: '-*,modernize-*,cppcoreguidelines-*,-modernize-use-trailing-return-type,-cppcoreguidelines-avoid-magic-numbers' HeaderFilterRegex: 'app4triqs' From 7826cfd256e471228b4d974b74a0399425567e92 Mon Sep 17 00:00:00 2001 From: Alexander Hampel Date: Mon, 5 Jun 2023 10:27:33 -0400 Subject: [PATCH 03/11] [build] update github workflow to match triqs unstable req --- .github/workflows/build.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5da889c2..a50f5773 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,8 +13,8 @@ jobs: fail-fast: false matrix: include: - - {os: ubuntu-20.04, cc: gcc-10, cxx: g++-10} - - {os: ubuntu-20.04, cc: clang-13, cxx: clang++-13} + - {os: ubuntu-22.04, cc: gcc-12, cxx: g++-12} + - {os: ubuntu-22.04, cc: clang-15, cxx: clang++-15} - {os: macos-12, cc: gcc-11, cxx: g++-11} - {os: macos-12, cc: /usr/local/opt/llvm/bin/clang, cxx: /usr/local/opt/llvm/bin/clang++} @@ -24,22 +24,22 @@ jobs: - uses: actions/checkout@v2 - name: Install ubuntu dependencies - if: matrix.os == 'ubuntu-20.04' + if: matrix.os == 'ubuntu-22.04' run: > sudo apt-get update && sudo apt-get install lsb-release wget software-properties-common && wget -O /tmp/llvm.sh https://apt.llvm.org/llvm.sh && sudo chmod +x /tmp/llvm.sh && sudo /tmp/llvm.sh 13 && sudo apt-get install - clang-13 - g++-10 + clang-15 + g++-12 gfortran hdf5-tools libblas-dev libboost-dev - libclang-13-dev - libc++-13-dev - libc++abi-13-dev - libomp-13-dev + libclang-15-dev + libc++-15-dev + libc++abi-15-dev + libomp-15-dev libfftw3-dev libgfortran5 libgmp-dev @@ -49,7 +49,7 @@ jobs: openmpi-bin openmpi-common openmpi-doc - python3-clang-13 + python3-clang-15 python3-dev python3-mako python3-matplotlib From f830c378cdc21c0409a622fee3d52afd5cc957d7 Mon Sep 17 00:00:00 2001 From: Nils Wentzell Date: Mon, 5 Jun 2023 10:54:13 -0400 Subject: [PATCH 04/11] [ghactions] Update osx build to use gcc 12 --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a50f5773..5fe67af5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,7 @@ jobs: include: - {os: ubuntu-22.04, cc: gcc-12, cxx: g++-12} - {os: ubuntu-22.04, cc: clang-15, cxx: clang++-15} - - {os: macos-12, cc: gcc-11, cxx: g++-11} + - {os: macos-12, cc: gcc-12, cxx: g++-12} - {os: macos-12, cc: /usr/local/opt/llvm/bin/clang, cxx: /usr/local/opt/llvm/bin/clang++} runs-on: ${{ matrix.os }} @@ -63,7 +63,7 @@ jobs: - name: Install homebrew dependencies if: matrix.os == 'macos-12' run: | - brew install gcc@11 llvm boost fftw hdf5 open-mpi openblas + brew install gcc@12 llvm boost fftw hdf5 open-mpi openblas pip3 install mako numpy scipy mpi4py pip3 install -r requirements.txt From 58dac3696d8fa9f390a5824c31f96dee3e9fc871 Mon Sep 17 00:00:00 2001 From: Nils Wentzell Date: Tue, 6 Jun 2023 10:43:19 -0400 Subject: [PATCH 05/11] [jenkins] Move to gcc 12 for osx builds --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 771418cd..0fe6ab35 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -58,7 +58,7 @@ for (int i = 0; i < dockerPlatforms.size(); i++) { /****************** osx builds (on host) */ def osxPlatforms = [ - ["gcc", ['CC=gcc-11', 'CXX=g++-11', 'FC=gfortran-11']], + ["gcc", ['CC=gcc-12', 'CXX=g++-12', 'FC=gfortran-12']], ["clang", ['CC=$BREW/opt/llvm/bin/clang', 'CXX=$BREW/opt/llvm/bin/clang++', 'FC=gfortran-11', 'CXXFLAGS=-I$BREW/opt/llvm/include', 'LDFLAGS=-L$BREW/opt/llvm/lib']] ] for (int i = 0; i < osxPlatforms.size(); i++) { From bbc3bc232c2e68a7392a3254de949d267377f13d Mon Sep 17 00:00:00 2001 From: Nils Wentzell Date: Tue, 6 Jun 2023 10:43:32 -0400 Subject: [PATCH 06/11] Add Wfloat-conversion to warning list --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index b621e41b..1da5dd60 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -108,6 +108,7 @@ target_compile_options(${PROJECT_NAME}_warnings INTERFACE -Wall -Wextra + -Wfloat-conversion -Wpedantic -Wno-sign-compare $<$:-Wno-comma-subscript> From 28958123b0353ff60cdf5e11817eb2635f4a076e Mon Sep 17 00:00:00 2001 From: Nils Wentzell Date: Tue, 6 Jun 2023 10:46:39 -0400 Subject: [PATCH 07/11] Synchronize clang-tidy config file with triqs --- .clang-tidy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.clang-tidy b/.clang-tidy index 8aebf358..1c458b78 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,2 +1,2 @@ -Checks: '-*,modernize-*,cppcoreguidelines-*,-modernize-use-trailing-return-type,-cppcoreguidelines-avoid-magic-numbers' +Checks: '-*,modernize-*,cppcoreguidelines-*,bugprone-*,-modernize-use-trailing-return-type,-cppcoreguidelines-special-member-functions,-cppcoreguidelines-macro-usage,-cppcoreguidelines-no-malloc,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-bounds-constant-array-index,-cppcoreguidelines-avoid-magic-numbers, -cppcoreguidelines-non-private-member-variables-in-classes, -bugprone-easily-swappable-parameters' HeaderFilterRegex: 'app4triqs' From 0aece02617d92d4e77089f8f75b77e0ed447cdb2 Mon Sep 17 00:00:00 2001 From: Nils Wentzell Date: Tue, 6 Jun 2023 11:19:21 -0400 Subject: [PATCH 08/11] [jenkins] Move to gcc 13 for osx builds --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 0fe6ab35..16cd3e62 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -58,8 +58,8 @@ for (int i = 0; i < dockerPlatforms.size(); i++) { /****************** osx builds (on host) */ def osxPlatforms = [ - ["gcc", ['CC=gcc-12', 'CXX=g++-12', 'FC=gfortran-12']], - ["clang", ['CC=$BREW/opt/llvm/bin/clang', 'CXX=$BREW/opt/llvm/bin/clang++', 'FC=gfortran-11', 'CXXFLAGS=-I$BREW/opt/llvm/include', 'LDFLAGS=-L$BREW/opt/llvm/lib']] + ["gcc", ['CC=gcc-13', 'CXX=g++-13', 'FC=gfortran-13']], + ["clang", ['CC=$BREW/opt/llvm/bin/clang', 'CXX=$BREW/opt/llvm/bin/clang++', 'FC=gfortran-13', 'CXXFLAGS=-I$BREW/opt/llvm/include', 'LDFLAGS=-L$BREW/opt/llvm/lib']] ] for (int i = 0; i < osxPlatforms.size(); i++) { def platformEnv = osxPlatforms[i] From 6e7064b6695af6e79b6555c7287df25a99ceb832 Mon Sep 17 00:00:00 2001 From: Nils Wentzell Date: Wed, 7 Jun 2023 16:18:59 -0400 Subject: [PATCH 09/11] [doc] Update sphinxext.numpydoc.plot_directive to latest version --- doc/sphinxext/numpydoc/plot_directive.py | 918 +++++++++++++---------- 1 file changed, 539 insertions(+), 379 deletions(-) diff --git a/doc/sphinxext/numpydoc/plot_directive.py b/doc/sphinxext/numpydoc/plot_directive.py index be03c357..45ca91f8 100644 --- a/doc/sphinxext/numpydoc/plot_directive.py +++ b/doc/sphinxext/numpydoc/plot_directive.py @@ -1,78 +1,87 @@ """ -A directive for including a matplotlib plot in a Sphinx document. +A directive for including a Matplotlib plot in a Sphinx document +================================================================ -By default, in HTML output, `plot` will include a .png file with a -link to a high-res .png and .pdf. In LaTeX output, it will include a -.pdf. +This is a Sphinx extension providing a reStructuredText directive +``.. plot::`` for including a plot in a Sphinx document. -The source code for the plot may be included in one of three ways: +In HTML output, ``.. plot::`` will include a .png file with a link +to a high-res .png and .pdf. In LaTeX output, it will include a .pdf. - 1. **A path to a source file** as the argument to the directive:: +The plot content may be defined in one of three ways: - .. plot:: path/to/plot.py +1. **A path to a source file** as the argument to the directive:: - When a path to a source file is given, the content of the - directive may optionally contain a caption for the plot:: + .. plot:: path/to/plot.py - .. plot:: path/to/plot.py + When a path to a source file is given, the content of the + directive may optionally contain a caption for the plot:: - This is the caption for the plot + .. plot:: path/to/plot.py - Additionally, one my specify the name of a function to call (with - no arguments) immediately after importing the module:: + The plot caption. - .. plot:: path/to/plot.py plot_function1 + Additionally, one may specify the name of a function to call (with + no arguments) immediately after importing the module:: - 2. Included as **inline content** to the directive:: + .. plot:: path/to/plot.py plot_function1 - .. plot:: +2. Included as **inline content** to the directive:: - import matplotlib.pyplot as plt - import matplotlib.image as mpimg - import numpy as np - img = mpimg.imread('_static/stinkbug.png') - imgplot = plt.imshow(img) + .. plot:: - 3. Using **doctest** syntax:: + import matplotlib.pyplot as plt + plt.plot([1, 2, 3], [4, 5, 6]) + plt.title("A plotting exammple") - .. plot:: - A plotting example: - >>> import matplotlib.pyplot as plt - >>> plt.plot([1,2,3], [4,5,6]) +3. Using **doctest** syntax:: + + .. plot:: + + A plotting example: + >>> import matplotlib.pyplot as plt + >>> plt.plot([1, 2, 3], [4, 5, 6]) Options ------- -The ``plot`` directive supports the following options: +The ``.. plot::`` directive supports the following options: - format : {'python', 'doctest'} - Specify the format of the input + ``:format:`` : {'python', 'doctest'} + The format of the input. If unset, the format is auto-detected. - include-source : bool - Whether to display the source code. The default can be changed - using the `plot_include_source` variable in conf.py + ``:include-source:`` : bool + Whether to display the source code. The default can be changed using + the ``plot_include_source`` variable in :file:`conf.py` (which itself + defaults to False). - encoding : str - If this source file is in a non-UTF8 or non-ASCII encoding, - the encoding must be specified using the `:encoding:` option. - The encoding will not be inferred using the ``-*- coding -*-`` - metacomment. + ``:show-source-link:`` : bool + Whether to show a link to the source in HTML. The default can be + changed using the ``plot_html_show_source_link`` variable in + :file:`conf.py` (which itself defaults to True). - context : bool - If provided, the code will be run in the context of all - previous plot directives for which the `:context:` option was - specified. This only applies to inline code plot directives, - not those run from files. + ``:context:`` : bool or str + If provided, the code will be run in the context of all previous plot + directives for which the ``:context:`` option was specified. This only + applies to inline code plot directives, not those run from files. If + the ``:context: reset`` option is specified, the context is reset + for this and future plots, and previous figures are closed prior to + running the code. ``:context: close-figs`` keeps the context but closes + previous figures before running the code. - nofigs : bool - If specified, the code block will be run, but no figures will - be inserted. This is usually useful with the ``:context:`` - option. + ``:nofigs:`` : bool + If specified, the code block will be run, but no figures will be + inserted. This is usually useful with the ``:context:`` option. -Additionally, this directive supports all of the options of the -`image` directive, except for `target` (since plot will add its own -target). These include `alt`, `height`, `width`, `scale`, `align` and -`class`. + ``:caption:`` : str + If specified, the option's argument will be used as a caption for the + figure. This overwrites the caption given in the content, when the plot + is generated from a file. + +Additionally, this directive supports all the options of the `image directive +`_, +except for ``:target:`` (since plot will add its own target). These include +``:alt:``, ``:height:``, ``:width:``, ``:scale:``, ``:align:`` and ``:class:``. Configuration options --------------------- @@ -80,135 +89,115 @@ Configuration options The plot directive has the following configuration options: plot_include_source - Default value for the include-source option + Default value for the include-source option (default: False). + + plot_html_show_source_link + Whether to show a link to the source in HTML (default: True). plot_pre_code - Code that should be executed before each plot. + Code that should be executed before each plot. If None (the default), + it will default to a string containing:: + + import numpy as np + from matplotlib import pyplot as plt plot_basedir - Base directory, to which ``plot::`` file names are relative - to. (If None or empty, file names are relative to the - directoly where the file containing the directive is.) + Base directory, to which ``plot::`` file names are relative to. + If None or empty (the default), file names are relative to the + directory where the file containing the directive is. plot_formats - File formats to generate. List of tuples or strings:: + File formats to generate (default: ['png', 'hires.png', 'pdf']). + List of tuples or strings:: [(suffix, dpi), suffix, ...] that determine the file format and the DPI. For entries whose - DPI was omitted, sensible defaults are chosen. + DPI was omitted, sensible defaults are chosen. When passing from + the command line through sphinx_build the list should be passed as + suffix:dpi,suffix:dpi, ... plot_html_show_formats - Whether to show links to the files in HTML. + Whether to show links to the files in HTML (default: True). plot_rcparams A dictionary containing any non-standard rcParams that should - be applied before each plot. + be applied before each plot (default: {}). + plot_apply_rcparams + By default, rcParams are applied when ``:context:`` option is not used + in a plot directive. If set, this configuration option overrides this + behavior and applies rcParams before each plot. + + plot_working_directory + By default, the working directory will be changed to the directory of + the example, so the code can get at its data files, if any. Also its + path will be added to `sys.path` so it can import any helper modules + sitting beside it. This configuration option can be used to specify + a central directory (also added to `sys.path`) where data files and + helper modules for all code are located. + + plot_template + Provide a customized template for preparing restructured text. + + plot_srcset + Allow the srcset image option for responsive image resolutions. List of + strings with the multiplicative factors followed by an "x". + e.g. ["2.0x", "1.5x"]. "2.0x" will create a png with the default "png" + resolution from plot_formats, multiplied by 2. If plot_srcset is + specified, the plot directive uses the + :doc:`/api/sphinxext_figmpl_directive_api` (instead of the usual figure + directive) in the intermediary rst file that is generated. + The plot_srcset option is incompatible with *singlehtml* builds, and an + error will be raised. + +Notes on how it works +--------------------- + +The plot directive runs the code it is given, either in the source file or the +code under the directive. The figure created (if any) is saved in the sphinx +build directory under a subdirectory named ``plot_directive``. It then creates +an intermediate rst file that calls a ``.. figure:`` directive (or +``.. figmpl::`` directive if ``plot_srcset`` is being used) and has links to +the ``*.png`` files in the ``plot_directive`` directory. These translations can +be customized by changing the *plot_template*. See the source of +:doc:`/api/sphinxext_plot_directive_api` for the templates defined in *TEMPLATE* +and *TEMPLATE_SRCSET*. """ -import sys, os, glob, shutil, imp, warnings, io, re, textwrap, \ - traceback, exceptions +import contextlib +import doctest +from io import StringIO +import itertools +import os +from os.path import relpath +from pathlib import Path +import re +import shutil +import sys +import textwrap +import traceback -from docutils.parsers.rst import directives -from docutils import nodes +from docutils.parsers.rst import directives, Directive from docutils.parsers.rst.directives.images import Image -align = Image.align -import sphinx +import jinja2 # Sphinx dependency. -sphinx_version = sphinx.__version__.split(".") -# The split is necessary for sphinx beta versions where the string is -# '6b1' -sphinx_version = tuple([int(re.split('[a-z]', x)[0]) - for x in sphinx_version[:2]]) - -try: - # Sphinx depends on either Jinja or Jinja2 - import jinja2 - def format_template(template, **kw): - return jinja2.Template(template).render(**kw) -except ImportError: - import jinja - def format_template(template, **kw): - return jinja.from_string(template, **kw) +from sphinx.errors import ExtensionError import matplotlib -import matplotlib.cbook as cbook -matplotlib.use('Agg') +from matplotlib.backend_bases import FigureManagerBase import matplotlib.pyplot as plt -from matplotlib import _pylab_helpers +from matplotlib import _pylab_helpers, cbook + +matplotlib.use("agg") __version__ = 2 -#------------------------------------------------------------------------------ -# Relative pathnames -#------------------------------------------------------------------------------ -# os.path.relpath is new in Python 2.6 -try: - from os.path import relpath -except ImportError: - # Copied from Python 2.7 - if 'posix' in sys.builtin_module_names: - def relpath(path, start=os.path.curdir): - """Return a relative version of a path""" - from os.path import sep, curdir, join, abspath, commonprefix, \ - pardir - - if not path: - raise ValueError("no path specified") - - start_list = abspath(start).split(sep) - path_list = abspath(path).split(sep) - - # Work out how much of the filepath is shared by start and path. - i = len(commonprefix([start_list, path_list])) - - rel_list = [pardir] * (len(start_list)-i) + path_list[i:] - if not rel_list: - return curdir - return join(*rel_list) - elif 'nt' in sys.builtin_module_names: - def relpath(path, start=os.path.curdir): - """Return a relative version of a path""" - from os.path import sep, curdir, join, abspath, commonprefix, \ - pardir, splitunc - - if not path: - raise ValueError("no path specified") - start_list = abspath(start).split(sep) - path_list = abspath(path).split(sep) - if start_list[0].lower() != path_list[0].lower(): - unc_path, rest = splitunc(path) - unc_start, rest = splitunc(start) - if bool(unc_path) ^ bool(unc_start): - raise ValueError("Cannot mix UNC and non-UNC paths (%s and %s)" - % (path, start)) - else: - raise ValueError("path is on drive %s, start on drive %s" - % (path_list[0], start_list[0])) - # Work out how much of the filepath is shared by start and path. - for i in range(min(len(start_list), len(path_list))): - if start_list[i].lower() != path_list[i].lower(): - break - else: - i += 1 - - rel_list = [pardir] * (len(start_list)-i) + path_list[i:] - if not rel_list: - return curdir - return join(*rel_list) - else: - raise RuntimeError("Unsupported platform (no relpath available!)") - -#------------------------------------------------------------------------------ +# ----------------------------------------------------------------------------- # Registration hook -#------------------------------------------------------------------------------ +# ----------------------------------------------------------------------------- -def plot_directive(name, arguments, options, content, lineno, - content_offset, block_text, state, state_machine): - return run(arguments, content, options, state_machine, state, lineno) -plot_directive.__doc__ = __doc__ def _option_boolean(arg): if not arg or not arg.strip(): @@ -219,20 +208,23 @@ def _option_boolean(arg): elif arg.strip().lower() in ('yes', '1', 'true'): return True else: - raise ValueError('"%s" unknown boolean' % arg) + raise ValueError(f'{arg!r} unknown boolean') + + +def _option_context(arg): + if arg in [None, 'reset', 'close-figs']: + return arg + raise ValueError("Argument should be None or 'reset' or 'close-figs'") + def _option_format(arg): return directives.choice(arg, ('python', 'doctest')) -def _option_align(arg): - return directives.choice(arg, ("top", "middle", "bottom", "left", "center", - "right")) def mark_plot_labels(app, document): """ - To make plots referenceable, we need to move the reference from - the "htmlonly" (or "latexonly") node to the actual figure node - itself. + To make plots referenceable, we need to move the reference from the + "htmlonly" (or "latexonly") node to the actual figure node itself. """ for name, explicit in document.nametypes.items(): if not explicit: @@ -258,37 +250,75 @@ def mark_plot_labels(app, document): document.settings.env.docname, labelid, sectname break + +class PlotDirective(Directive): + """The ``.. plot::`` directive, as documented in the module's docstring.""" + + has_content = True + required_arguments = 0 + optional_arguments = 2 + final_argument_whitespace = False + option_spec = { + 'alt': directives.unchanged, + 'height': directives.length_or_unitless, + 'width': directives.length_or_percentage_or_unitless, + 'scale': directives.nonnegative_int, + 'align': Image.align, + 'class': directives.class_option, + 'include-source': _option_boolean, + 'show-source-link': _option_boolean, + 'format': _option_format, + 'context': _option_context, + 'nofigs': directives.flag, + 'caption': directives.unchanged, + } + + def run(self): + """Run the plot directive.""" + try: + return run(self.arguments, self.content, self.options, + self.state_machine, self.state, self.lineno) + except Exception as e: + raise self.error(str(e)) + + +def _copy_css_file(app, exc): + if exc is None and app.builder.format == 'html': + src = cbook._get_data_path('plot_directive/plot_directive.css') + dst = app.outdir / Path('_static') + dst.mkdir(exist_ok=True) + # Use copyfile because we do not want to copy src's permissions. + shutil.copyfile(src, dst / Path('plot_directive.css')) + + def setup(app): setup.app = app setup.config = app.config setup.confdir = app.confdir - - options = {'alt': directives.unchanged, - 'height': directives.length_or_unitless, - 'width': directives.length_or_percentage_or_unitless, - 'scale': directives.nonnegative_int, - 'align': _option_align, - 'class': directives.class_option, - 'include-source': _option_boolean, - 'format': _option_format, - 'context': directives.flag, - 'nofigs': directives.flag, - 'encoding': directives.encoding - } - - app.add_directive('plot', plot_directive, True, (0, 2, False), **options) + app.add_directive('plot', PlotDirective) app.add_config_value('plot_pre_code', None, True) app.add_config_value('plot_include_source', False, True) + app.add_config_value('plot_html_show_source_link', True, True) app.add_config_value('plot_formats', ['png', 'hires.png', 'pdf'], True) app.add_config_value('plot_basedir', None, True) app.add_config_value('plot_html_show_formats', True, True) app.add_config_value('plot_rcparams', {}, True) - + app.add_config_value('plot_apply_rcparams', False, True) + app.add_config_value('plot_working_directory', None, True) + app.add_config_value('plot_template', None, True) + app.add_config_value('plot_srcset', [], True) app.connect('doctree-read', mark_plot_labels) + app.add_css_file('plot_directive.css') + app.connect('build-finished', _copy_css_file) + metadata = {'parallel_read_safe': True, 'parallel_write_safe': True, + 'version': matplotlib.__version__} + return metadata -#------------------------------------------------------------------------------ + +# ----------------------------------------------------------------------------- # Doctest handling -#------------------------------------------------------------------------------ +# ----------------------------------------------------------------------------- + def contains_doctest(text): try: @@ -301,77 +331,101 @@ def contains_doctest(text): m = r.search(text) return bool(m) -def unescape_doctest(text): - """ - Extract code from a piece of text, which contains either Python code - or doctests. - """ - if not contains_doctest(text): - return text +def _split_code_at_show(text, function_name): + """Split code at plt.show().""" - code = "" - for line in text.split("\n"): - m = re.match(r'^\s*(>>>|\.\.\.) (.*)$', line) - if m: - code += m.group(2) + "\n" - elif line.strip(): - code += "# " + line.strip() + "\n" - else: - code += "\n" - return code - -def split_code_at_show(text): - """ - Split code at plt.show() - - """ - - parts = [] is_doctest = contains_doctest(text) - - part = [] - for line in text.split("\n"): - if (not is_doctest and line.strip() == 'plt.show()') or \ - (is_doctest and line.strip() == '>>> plt.show()'): - part.append(line) + if function_name is None: + parts = [] + part = [] + for line in text.split("\n"): + if ((not is_doctest and line.startswith('plt.show(')) or + (is_doctest and line.strip() == '>>> plt.show()')): + part.append(line) + parts.append("\n".join(part)) + part = [] + else: + part.append(line) + if "\n".join(part).strip(): parts.append("\n".join(part)) - part = [] - else: - part.append(line) - if "\n".join(part).strip(): - parts.append("\n".join(part)) - return parts + else: + parts = [text] + return is_doctest, parts -#------------------------------------------------------------------------------ + +# ----------------------------------------------------------------------------- # Template -#------------------------------------------------------------------------------ +# ----------------------------------------------------------------------------- - -TEMPLATE = """ +_SOURCECODE = """ {{ source_code }} -{{ only_html }} +.. only:: html - {% if source_link or (html_show_formats and not multi_image) %} + {% if src_name or (html_show_formats and not multi_image) %} ( - {%- if source_link -%} - `Source code <{{ source_link }}>`__ + {%- if src_name -%} + :download:`Source code <{{ build_dir }}/{{ src_name }}>` {%- endif -%} {%- if html_show_formats and not multi_image -%} {%- for img in images -%} {%- for fmt in img.formats -%} - {%- if source_link or not loop.first -%}, {% endif -%} - `{{ fmt }} <{{ dest_dir }}/{{ img.basename }}.{{ fmt }}>`__ + {%- if src_name or not loop.first -%}, {% endif -%} + :download:`{{ fmt }} <{{ build_dir }}/{{ img.basename }}.{{ fmt }}>` {%- endfor -%} {%- endfor -%} {%- endif -%} ) {% endif %} +""" + +TEMPLATE_SRCSET = _SOURCECODE + """ + {% for img in images %} + .. figure-mpl:: {{ build_dir }}/{{ img.basename }}.{{ default_fmt }} + {% for option in options -%} + {{ option }} + {% endfor %} + {%- if caption -%} + {{ caption }} {# appropriate leading whitespace added beforehand #} + {% endif -%} + {%- if srcset -%} + :srcset: {{ build_dir }}/{{ img.basename }}.{{ default_fmt }} + {%- for sr in srcset -%} + , {{ build_dir }}/{{ img.basename }}.{{ sr }}.{{ default_fmt }} {{sr}} + {%- endfor -%} + {% endif %} + + {% if html_show_formats and multi_image %} + ( + {%- for fmt in img.formats -%} + {%- if not loop.first -%}, {% endif -%} + :download:`{{ fmt }} <{{ build_dir }}/{{ img.basename }}.{{ fmt }}>` + {%- endfor -%} + ) + {% endif %} + + + {% endfor %} + +.. only:: not html {% for img in images %} - .. figure:: {{ build_dir }}/{{ img.basename }}.png - {%- for option in options %} + .. figure-mpl:: {{ build_dir }}/{{ img.basename }}.* + {% for option in options -%} + {{ option }} + {% endfor -%} + + {{ caption }} {# appropriate leading whitespace added beforehand #} + {% endfor %} + +""" + +TEMPLATE = _SOURCECODE + """ + + {% for img in images %} + .. figure:: {{ build_dir }}/{{ img.basename }}.{{ default_fmt }} + {% for option in options -%} {{ option }} {% endfor %} @@ -379,24 +433,29 @@ TEMPLATE = """ ( {%- for fmt in img.formats -%} {%- if not loop.first -%}, {% endif -%} - `{{ fmt }} <{{ dest_dir }}/{{ img.basename }}.{{ fmt }}>`__ + :download:`{{ fmt }} <{{ build_dir }}/{{ img.basename }}.{{ fmt }}>` {%- endfor -%} ) {%- endif -%} - {{ caption }} + {{ caption }} {# appropriate leading whitespace added beforehand #} {% endfor %} -{{ only_latex }} +.. only:: not html {% for img in images %} - .. image:: {{ build_dir }}/{{ img.basename }}.pdf + .. figure:: {{ build_dir }}/{{ img.basename }}.* + {% for option in options -%} + {{ option }} + {% endfor -%} + + {{ caption }} {# appropriate leading whitespace added beforehand #} {% endfor %} """ exception_template = """ -.. htmlonly:: +.. only:: html [`source code <%(linkdir)s/%(basename)s.py>`__] @@ -408,6 +467,7 @@ Exception occurred rendering plot. # :context: option plot_context = dict() + class ImageFile: def __init__(self, basename, dirname): self.basename = basename @@ -415,24 +475,39 @@ class ImageFile: self.formats = [] def filename(self, format): - return os.path.join(self.dirname, "%s.%s" % (self.basename, format)) + return os.path.join(self.dirname, f"{self.basename}.{format}") def filenames(self): return [self.filename(fmt) for fmt in self.formats] -def out_of_date(original, derived): + +def out_of_date(original, derived, includes=None): """ - Returns True if derivative is out-of-date wrt original, - both of which are full file paths. + Return whether *derived* is out-of-date relative to *original* or any of + the RST files included in it using the RST include directive (*includes*). + *derived* and *original* are full paths, and *includes* is optionally a + list of full paths which may have been included in the *original*. """ - return (not os.path.exists(derived) or - (os.path.exists(original) and - os.stat(derived).st_mtime < os.stat(original).st_mtime)) + if not os.path.exists(derived): + return True + + if includes is None: + includes = [] + files_to_check = [original, *includes] + + def out_of_date_one(original, derived_mtime): + return (os.path.exists(original) and + derived_mtime < os.stat(original).st_mtime) + + derived_mtime = os.stat(derived).st_mtime + return any(out_of_date_one(f, derived_mtime) for f in files_to_check) + class PlotError(RuntimeError): pass -def run_code(code, code_path, ns=None, function_name=None): + +def _run_code(code, code_path, ns=None, function_name=None): """ Import a Python module from a path, and run the function given by name, if function_name is not None. @@ -441,106 +516,138 @@ def run_code(code, code_path, ns=None, function_name=None): # Change the working directory to the directory of the example, so # it can get at its data files, if any. Add its path to sys.path # so it can import any helper modules sitting beside it. - pwd = os.getcwd() - old_sys_path = list(sys.path) - if code_path is not None: + if setup.config.plot_working_directory is not None: + try: + os.chdir(setup.config.plot_working_directory) + except OSError as err: + raise OSError(f'{err}\n`plot_working_directory` option in ' + f'Sphinx configuration file must be a valid ' + f'directory path') from err + except TypeError as err: + raise TypeError(f'{err}\n`plot_working_directory` option in ' + f'Sphinx configuration file must be a string or ' + f'None') from err + elif code_path is not None: dirname = os.path.abspath(os.path.dirname(code_path)) os.chdir(dirname) - sys.path.insert(0, dirname) - # Redirect stdout - stdout = sys.stdout - sys.stdout = io.StringIO() - - # Reset sys.argv - old_sys_argv = sys.argv - sys.argv = [code_path] - - try: + with cbook._setattr_cm( + sys, argv=[code_path], path=[os.getcwd(), *sys.path]), \ + contextlib.redirect_stdout(StringIO()): try: - code = unescape_doctest(code) if ns is None: ns = {} if not ns: if setup.config.plot_pre_code is None: - exec("import numpy as np\nfrom matplotlib import pyplot as plt\n", ns) + exec('import numpy as np\n' + 'from matplotlib import pyplot as plt\n', ns) else: - exec(setup.config.plot_pre_code, ns) + exec(str(setup.config.plot_pre_code), ns) if "__main__" in code: - exec("__name__ = '__main__'", ns) - exec(code, ns) - if function_name is not None: - exec(function_name + "()", ns) + ns['__name__'] = '__main__' + + # Patch out non-interactive show() to avoid triggering a warning. + with cbook._setattr_cm(FigureManagerBase, show=lambda self: None): + exec(code, ns) + if function_name is not None: + exec(function_name + "()", ns) + except (Exception, SystemExit) as err: - raise PlotError(traceback.format_exc()) - finally: - os.chdir(pwd) - sys.argv = old_sys_argv - sys.path[:] = old_sys_path - sys.stdout = stdout + raise PlotError(traceback.format_exc()) from err + finally: + os.chdir(pwd) return ns -def clear_state(plot_rcparams): - plt.close('all') + +def clear_state(plot_rcparams, close=True): + if close: + plt.close('all') matplotlib.rc_file_defaults() matplotlib.rcParams.update(plot_rcparams) -def render_figures(code, code_path, output_dir, output_base, context, - function_name, config): + +def get_plot_formats(config): + default_dpi = {'png': 80, 'hires.png': 200, 'pdf': 200} + formats = [] + plot_formats = config.plot_formats + for fmt in plot_formats: + if isinstance(fmt, str): + if ':' in fmt: + suffix, dpi = fmt.split(':') + formats.append((str(suffix), int(dpi))) + else: + formats.append((fmt, default_dpi.get(fmt, 80))) + elif isinstance(fmt, (tuple, list)) and len(fmt) == 2: + formats.append((str(fmt[0]), int(fmt[1]))) + else: + raise PlotError('invalid image format "%r" in plot_formats' % fmt) + return formats + + +def _parse_srcset(entries): """ - Run a pyplot script and save the low and high res PNGs and a PDF - in outdir. + Parse srcset for multiples... + """ + srcset = {} + for entry in entries: + entry = entry.strip() + if len(entry) >= 2: + mult = entry[:-1] + srcset[float(mult)] = entry + else: + raise ExtensionError(f'srcset argument {entry!r} is invalid.') + return srcset + + +def render_figures(code, code_path, output_dir, output_base, context, + function_name, config, context_reset=False, + close_figs=False, + code_includes=None): + """ + Run a pyplot script and save the images in *output_dir*. Save the images under *output_dir* with file names derived from *output_base* """ - # -- Parse format list - default_dpi = {'png': 80, 'hires.png': 200, 'pdf': 200} - formats = [] - plot_formats = config.plot_formats - if isinstance(plot_formats, str): - plot_formats = eval(plot_formats) - for fmt in plot_formats: - if isinstance(fmt, str): - formats.append((fmt, default_dpi.get(fmt, 80))) - elif type(fmt) in (tuple, list) and len(fmt)==2: - formats.append((str(fmt[0]), int(fmt[1]))) - else: - raise PlotError('invalid image format "%r" in plot_formats' % fmt) - # -- Try to determine if all images already exist + if function_name is not None: + output_base = f'{output_base}_{function_name}' + formats = get_plot_formats(config) - code_pieces = split_code_at_show(code) + # Try to determine if all images already exist + is_doctest, code_pieces = _split_code_at_show(code, function_name) # Look for single-figure output files first - # Look for single-figure output files first - all_exists = True img = ImageFile(output_base, output_dir) for format, dpi in formats: - if out_of_date(code_path, img.filename(format)): + if context or out_of_date(code_path, img.filename(format), + includes=code_includes): all_exists = False break img.formats.append(format) + else: + all_exists = True if all_exists: return [(code, [img])] # Then look for multi-figure output files results = [] - all_exists = True for i, code_piece in enumerate(code_pieces): images = [] - for j in range(1000): + for j in itertools.count(): if len(code_pieces) > 1: - img = ImageFile('%s_%02d_%02d' % (output_base, i, j), output_dir) + img = ImageFile('%s_%02d_%02d' % (output_base, i, j), + output_dir) else: img = ImageFile('%s_%02d' % (output_base, j), output_dir) - for format, dpi in formats: - if out_of_date(code_path, img.filename(format)): + for fmt, dpi in formats: + if context or out_of_date(code_path, img.filename(fmt), + includes=code_includes): all_exists = False break - img.formats.append(format) + img.formats.append(fmt) # assume that if we have one, we have them all if not all_exists: @@ -550,6 +657,8 @@ def render_figures(code, code_path, output_dir, output_base, context, if not all_exists: break results.append((code_piece, images)) + else: + all_exists = True if all_exists: return results @@ -557,15 +666,24 @@ def render_figures(code, code_path, output_dir, output_base, context, # We didn't find the files, so build them results = [] - if context: - ns = plot_context - else: - ns = {} + ns = plot_context if context else {} + + if context_reset: + clear_state(config.plot_rcparams) + plot_context.clear() + + close_figs = not context or close_figs for i, code_piece in enumerate(code_pieces): - if not context: - clear_state(config.plot_rcparams) - run_code(code_piece, code_path, ns, function_name) + + if not context or config.plot_apply_rcparams: + clear_state(config.plot_rcparams, close_figs) + elif close_figs: + plt.close('all') + + _run_code(doctest.script_from_examples(code_piece) if is_doctest + else code_piece, + code_path, ns, function_name) images = [] fig_managers = _pylab_helpers.Gcf.get_all_fig_managers() @@ -578,31 +696,54 @@ def render_figures(code, code_path, output_dir, output_base, context, img = ImageFile("%s_%02d_%02d" % (output_base, i, j), output_dir) images.append(img) - for format, dpi in formats: + + for fmt, dpi in formats: try: - figman.canvas.figure.savefig(img.filename(format), dpi=dpi) + figman.canvas.figure.savefig(img.filename(fmt), dpi=dpi) + if fmt == formats[0][0] and config.plot_srcset: + # save a 2x, 3x etc version of the default... + srcset = _parse_srcset(config.plot_srcset) + for mult, suffix in srcset.items(): + fm = f'{suffix}.{fmt}' + img.formats.append(fm) + figman.canvas.figure.savefig(img.filename(fm), + dpi=int(dpi * mult)) except Exception as err: - raise PlotError(traceback.format_exc()) - img.formats.append(format) + raise PlotError(traceback.format_exc()) from err + img.formats.append(fmt) results.append((code_piece, images)) - if not context: - clear_state(config.plot_rcparams) + if not context or config.plot_apply_rcparams: + clear_state(config.plot_rcparams, close=not context) return results -def run(arguments, content, options, state_machine, state, lineno): - # The user may provide a filename *or* Python code content, but not both - if arguments and content: - raise RuntimeError("plot:: directive can't have both args and content") +def run(arguments, content, options, state_machine, state, lineno): document = state_machine.document config = document.settings.env.config nofigs = 'nofigs' in options + if config.plot_srcset and setup.app.builder.name == 'singlehtml': + raise ExtensionError( + 'plot_srcset option not compatible with single HTML writer') + + formats = get_plot_formats(config) + default_fmt = formats[0][0] + options.setdefault('include-source', config.plot_include_source) - context = 'context' in options + options.setdefault('show-source-link', config.plot_html_show_source_link) + + if 'class' in options: + # classes are parsed into a list of string, and output by simply + # printing the list, abusing the fact that RST guarantees to strip + # non-conforming characters + options['class'] = ['plot-directive'] + options['class'] + else: + options.setdefault('class', ['plot-directive']) + keep_context = 'context' in options + context_opt = None if not keep_context else options['context'] rst_file = document.attributes['source'] rst_dir = os.path.dirname(rst_file) @@ -612,21 +753,28 @@ def run(arguments, content, options, state_machine, state, lineno): source_file_name = os.path.join(setup.app.builder.srcdir, directives.uri(arguments[0])) else: - source_file_name = os.path.join(setup.app.builder.srcdir, config.plot_basedir, + source_file_name = os.path.join(setup.confdir, config.plot_basedir, directives.uri(arguments[0])) - # If there is content, it will be passed as a caption. caption = '\n'.join(content) + # Enforce unambiguous use of captions. + if "caption" in options: + if caption: + raise ValueError( + 'Caption specified in both content and options.' + ' Please remove ambiguity.' + ) + # Use caption option + caption = options["caption"] + # If the optional function name is provided, use it if len(arguments) == 2: function_name = arguments[1] else: function_name = None - fd = open(source_file_name, 'r') - code = fd.read() - fd.close() + code = Path(source_file_name).read_text(encoding='utf-8') output_base = os.path.basename(source_file_name) else: source_file_name = rst_file @@ -636,7 +784,7 @@ def run(arguments, content, options, state_machine, state, lineno): base, ext = os.path.splitext(os.path.basename(source_file_name)) output_base = '%s-%d.py' % (base, counter) function_name = None - caption = '' + caption = options.get('caption', '') base, source_ext = os.path.splitext(output_base) if source_ext in ('.py', '.rst', '.txt'): @@ -656,10 +804,8 @@ def run(arguments, content, options, state_machine, state, lineno): is_doctest = True # determine output directory name fragment - source_rel_name = relpath(source_file_name, setup.app.srcdir) - source_rel_dir = os.path.dirname(source_rel_name) - while source_rel_dir.startswith(os.path.sep): - source_rel_dir = source_rel_dir[1:] + source_rel_name = relpath(source_file_name, setup.confdir) + source_rel_dir = os.path.dirname(source_rel_name).lstrip(os.path.sep) # build_dir: where to place output files (temporarily) build_dir = os.path.join(os.path.dirname(setup.app.doctreedir), @@ -669,51 +815,80 @@ def run(arguments, content, options, state_machine, state, lineno): # see note in Python docs for warning about symbolic links on Windows. # need to compare source and dest paths at end build_dir = os.path.normpath(build_dir) - - if not os.path.exists(build_dir): - os.makedirs(build_dir) - - # output_dir: final location in the builder's directory - dest_dir = os.path.abspath(os.path.join(setup.app.builder.outdir, - source_rel_dir)) - if not os.path.exists(dest_dir): - os.makedirs(dest_dir) # no problem here for me, but just use built-ins + os.makedirs(build_dir, exist_ok=True) # how to link to files from the RST file - dest_dir_link = os.path.join(relpath(setup.app.srcdir, rst_dir), - source_rel_dir).replace(os.path.sep, '/') - build_dir_link = relpath(build_dir, rst_dir).replace(os.path.sep, '/') - source_link = dest_dir_link + '/' + output_base + source_ext + try: + build_dir_link = relpath(build_dir, rst_dir).replace(os.path.sep, '/') + except ValueError: + # on Windows, relpath raises ValueError when path and start are on + # different mounts/drives + build_dir_link = build_dir + + # get list of included rst files so that the output is updated when any + # plots in the included files change. These attributes are modified by the + # include directive (see the docutils.parsers.rst.directives.misc module). + try: + source_file_includes = [os.path.join(os.getcwd(), t[0]) + for t in state.document.include_log] + except AttributeError: + # the document.include_log attribute only exists in docutils >=0.17, + # before that we need to inspect the state machine + possible_sources = {os.path.join(setup.confdir, t[0]) + for t in state_machine.input_lines.items} + source_file_includes = [f for f in possible_sources + if os.path.isfile(f)] + # remove the source file itself from the includes + try: + source_file_includes.remove(source_file_name) + except ValueError: + pass + + # save script (if necessary) + if options['show-source-link']: + Path(build_dir, output_base + source_ext).write_text( + doctest.script_from_examples(code) + if source_file_name == rst_file and is_doctest + else code, + encoding='utf-8') # make figures try: - results = render_figures(code, source_file_name, build_dir, output_base, - context, function_name, config) + results = render_figures(code=code, + code_path=source_file_name, + output_dir=build_dir, + output_base=output_base, + context=keep_context, + function_name=function_name, + config=config, + context_reset=context_opt == 'reset', + close_figs=context_opt == 'close-figs', + code_includes=source_file_includes) errors = [] except PlotError as err: reporter = state.memo.reporter sm = reporter.system_message( - 2, "Exception occurred in plotting %s\n from %s:\n%s" % (output_base, - source_file_name, err), + 2, "Exception occurred in plotting {}\n from {}:\n{}".format( + output_base, source_file_name, err), line=lineno) results = [(code, [])] errors = [sm] # Properly indent the caption - caption = '\n'.join(' ' + line.strip() - for line in caption.split('\n')) - + if caption and config.plot_srcset: + caption = f':caption: {caption}' + elif caption: + caption = '\n' + '\n'.join(' ' + line.strip() + for line in caption.split('\n')) # generate output restructuredtext total_lines = [] for j, (code_piece, images) in enumerate(results): if options['include-source']: if is_doctest: - lines = [''] - lines += [row.rstrip() for row in code_piece.split('\n')] + lines = ['', *code_piece.splitlines()] else: - lines = ['.. code-block:: python', ''] - lines += [' %s' % row.rstrip() - for row in code_piece.split('\n')] + lines = ['.. code-block:: python', '', + *textwrap.indent(code_piece, ' ').splitlines()] source_code = "\n".join(lines) else: source_code = "" @@ -721,53 +896,38 @@ def run(arguments, content, options, state_machine, state, lineno): if nofigs: images = [] - opts = [':%s: %s' % (key, val) for key, val in list(options.items()) - if key in ('alt', 'height', 'width', 'scale', 'align', 'class')] + opts = [ + f':{key}: {val}' for key, val in options.items() + if key in ('alt', 'height', 'width', 'scale', 'align', 'class')] - only_html = ".. only:: html" - only_latex = ".. only:: latex" - - if j == 0: - src_link = source_link + # Not-None src_name signals the need for a source download in the + # generated html + if j == 0 and options['show-source-link']: + src_name = output_base + source_ext else: - src_link = None + src_name = None + if config.plot_srcset: + srcset = [*_parse_srcset(config.plot_srcset).values()] + template = TEMPLATE_SRCSET + else: + srcset = None + template = TEMPLATE - result = format_template( - TEMPLATE, - dest_dir=dest_dir_link, + result = jinja2.Template(config.plot_template or template).render( + default_fmt=default_fmt, build_dir=build_dir_link, - source_link=src_link, + src_name=src_name, multi_image=len(images) > 1, - only_html=only_html, - only_latex=only_latex, options=opts, + srcset=srcset, images=images, source_code=source_code, - html_show_formats=config.plot_html_show_formats, + html_show_formats=config.plot_html_show_formats and len(images), caption=caption) - total_lines.extend(result.split("\n")) total_lines.extend("\n") if total_lines: state_machine.insert_input(total_lines, source=source_file_name) - # copy image files to builder's output directory, if necessary - if not os.path.exists(dest_dir): - cbook.mkdirs(dest_dir) - - for code_piece, images in results: - for img in images: - for fn in img.filenames(): - destimg = os.path.join(dest_dir, os.path.basename(fn)) - if fn != destimg: - shutil.copyfile(fn, destimg) - - # copy script (if necessary) - #if source_file_name == rst_file: - target_name = os.path.join(dest_dir, output_base + source_ext) - f = open(target_name, 'w') - f.write(unescape_doctest(code)) - f.close() - return errors From 8afb22b7bfbad739932e529f44b9253165d03d4f Mon Sep 17 00:00:00 2001 From: Nils Wentzell Date: Wed, 7 Jun 2023 16:19:26 -0400 Subject: [PATCH 10/11] [doc] Update conf.py to not show source-links and format links by default --- doc/conf.py.in | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/conf.py.in b/doc/conf.py.in index a51683ab..2580d8c9 100644 --- a/doc/conf.py.in +++ b/doc/conf.py.in @@ -56,7 +56,7 @@ rst_epilog = """ version = version, ) -copyright = '2017-2018 N. Wentzell, O. Parcollet 2018-2021 The Simons Foundation, authors: N. Wentzell, D. Simons, H. Strand, O. Parcollet' +copyright = '2018-2021 The Simons Foundation, authors: A. Hampel, O. Parcollet, D. Simons, H. Strand, N. Wentzell' mathjax_path = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=default" templates_path = ['@CMAKE_CURRENT_SOURCE_DIR@/_templates'] @@ -94,7 +94,11 @@ html_sidebars = {'index': ['sideb.html', 'searchbox.html']} htmlhelp_basename = '@PROJECT_NAME@doc' -intersphinx_mapping = {'python': ('https://docs.python.org/3.8', None), 'triqslibs': ('https://triqs.github.io/triqs/latest', None)} +# Plot options +plot_html_show_source_link = False +plot_html_show_formats = False + +intersphinx_mapping = {'python': ('https://docs.python.org/3.11', None), 'triqslibs': ('https://triqs.github.io/triqs/latest', None)} # open links in new tab instead of same window from sphinx.writers.html import HTMLTranslator From 17e0ef69e83ec97d920bc4e1408385711848a325 Mon Sep 17 00:00:00 2001 From: Nils Wentzell Date: Wed, 7 Jun 2023 16:34:48 -0400 Subject: [PATCH 11/11] [doc] Include plot source by default --- doc/conf.py.in | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/conf.py.in b/doc/conf.py.in index 2580d8c9..aadfeac8 100644 --- a/doc/conf.py.in +++ b/doc/conf.py.in @@ -95,6 +95,7 @@ html_sidebars = {'index': ['sideb.html', 'searchbox.html']} htmlhelp_basename = '@PROJECT_NAME@doc' # Plot options +plot_include_source = True plot_html_show_source_link = False plot_html_show_formats = False