From 1992fa9c25b21bc7aa7e2bbcef3139a5b6bea1fb Mon Sep 17 00:00:00 2001 From: Max Lensing <max.lensing@alumni.fh-aachen.de> Date: Mon, 15 Jul 2024 10:01:08 +0200 Subject: [PATCH] reference_series creation allows daterange argument, updated toarstats to 0.6.1 --- CHANGELOG.md | 9 +++++++++ CITATION.cff | 5 +++++ dist/toarstats-0.6.1-py3-none-any.whl | Bin 0 -> 32254 bytes docs/conf.py | 4 ++-- setup.cfg | 6 +++--- toarstats/metrics/constants.py | 10 +++++----- toarstats/metrics/interface.py | 5 +++-- toarstats/metrics/stats_utils.py | 22 ++++++++++++++++------ 8 files changed, 43 insertions(+), 18 deletions(-) create mode 100644 dist/toarstats-0.6.1-py3-none-any.whl diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ca291e..c48a301 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,15 @@ # Changelog All notable changes to this project will be documented in this file. +## v0.6.1 - 2024-07-15 - bugfixes + +### general: +* updated sampling daterange to exact dates + +### technical: +* bugfix for reference_series creation by adding optional daterange argument +* updated deprecated constants + ## v0.6.0 - 2023-07-13 - adding custom sampling ### general: diff --git a/CITATION.cff b/CITATION.cff index 82f4de9..e6a6745 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -17,6 +17,11 @@ authors: family-names: Schultz given-names: Martin affiliation: Forschungszentrum Jülich +- email: m.lensing@fz-juelich.de + orcid: https://orcid.org/0009-0004-2443-8792 + family-names: Lensing + given-names: Max + affiliation: Forschungszentrum Jülich contact: - email: m.schultz@fz-juelich.de orcid: https://orcid.org/0000-0003-3455-774X diff --git a/dist/toarstats-0.6.1-py3-none-any.whl b/dist/toarstats-0.6.1-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..3670db4f274447cb2cee9ebe1e7b96c3e4fdfb07 GIT binary patch literal 32254 zcmZ^~W2`8^(j~fW+qQYmwr$(CZQHhO+qP}n_MUU!n`GuD-y~g0_m57xsynOFYgNff z0)wCc002M$Xfxfa!5b5kCH`A|{4>;l=47ky;OM09<VdfpYi?uiq^nD3=dL{?4K=_A z1G@L!w?$~A&F!~G+kuREkk%6Ts7OZH-Gf$IV58fEjz{!@9Ees?Pz1#M4j%2*G?L*1 zl?&iCE<p%=HVIEU(h$NGPy=ez&PqydiDU_@vj>n<pi4wKn3D{Hg%oH9OS58j?Dbnr z`;i*fCXHnwu4^fnA-VkRy*h#I6l357H)GfDG6Hu8duK6?Ecaht1hwU<uKzpz5Fh{m z?tgh<ZS3S=Zuno`ILAuM3^Bk2zs5U&Q(xwT^Btfy3Q{;Inp(uODIYwzdWf;Y2q#@9 z?!Iz!p3X4ylU3tjH92cBa2*DNSyr*ncFhu?$Qzl*$?xbNV3a3Num~TQWcx8~n{gBh z@YS1qT^K-F3KT<5Krd@+vLmxpNL|lK*h-df*n`v;De0)wA*e!52;Wq<=YQLb;nG~D zu>nLXL}Pfg+r;(mY8+-=-l$1}(W-Hl!|tYLeS%Qn3y<jzF21;Y)-r#&)m|5-Z<|NI zrX{@I0mR;%O=S0dJG|;Owv$`(0REqtNHgE61wmx78iD`-Ji!A1;Qfy=F|@V$chxpd zj{mMWSyer@kPX2nHtARIUP>j-sV3!wP{PAxVS*9MV^$uzy<d7RLr~A*%HsDk#eeMt zBHNtO;^I*?cd~{Gn?+hvBnc_>T|TV9^+-s6!ftFq_oLhA_IR(9B5W%PiD#e=za$J7 z!UMeY>?kzH$?fVDEpz(kwKUn9wq^Iv<u>|f>+s1cIW#On3Cgg1#)oa5(+~?Wr5Q=P zN<?6q17((*I-kJGtvY>VYV&i0j>ZevPawdv;>h8lz+0GiL_5;dlwO~!LXaRjXb|b$ z)-CPdOIiw=>)w}6@;jGrFMqant<?Bg)p>_9e7}sqpKt*ntd+%qjoYhbkMUD@I~+%R z2trb};Atp(fJi;WE7>u)a;@)&&!0@^-GywD2u0)VUHyICstc#JN2G&&F8(VdWFBLI zp%TWcXU~k1d#CM<U)eL!-q1Z+NBw4WY5Hm|hhaLEkaB>SA!-Kk@c=)P0j^amoRIW` zTO-Oyps?%YP}SKA7--R}{x~AhS=hU%p*Nc30ve+M2m6OsZD*>y!cqX3O}H5K6a>&N zxn0h>kVn)S2(2{yII0s<NUOMOEu4xnwD}cl&g0{;i@SEfCZxuUbpldAn5^kQsnaGT z%e*NiVk8`@kju&v`dq;t@@Q^|SUlztk>#AFEA#1`<tz8)KhYW7RU30c12NI{UVljG z@u=RE+*M8@PN{elb50-9N#L9cWyLL8`~}xx<Pj(VQB1gHad4w8O#+9sQgMRanL-mI z^x^T1K4j|h8j35xx5=Mu`7zUC#U=$(yFLl+Yhy&<I8X-lpKc_x5@p#S5r_e+kePu@ zv2ZF^@AVzGq=(8GJ&v|9=QVfWr|pM5VG8Yq>=m3dAk_9{0KFoS0?d=S659rHfG766 zp0l&yOMNIfR#=w$kr5S2)Sneh7(*`*a?5r<>3LU@A_a{2G`W3O@aEwi%ZL?42Ujg0 zS|VvjML9g?=GFRUXQAO_omiIVrTPe__SwTQ?wE)BZZ7+%VstQ0Bsi$Nomo<Es4C_B zbTJcRL@KuM6V$<6B^C4|`ZkPZ!2{Ow#-g)tPxM}!t+P>yuB^$URTF6|$_q3@wyz1E zH_y9PY|mB~S1$fDUnOdote_dc&Lkg`D}F^>cH_;P5W8Jya<J$o(qMrmGQIz3GxhWx zIUK~?fEp?>GD@=XDvnEsuRJRCj!5Ss>k=~b;!-U|*Fr0*yqVOwKAJRYZQ!iv*$J`! z+LX?0)U0gO5qB=xz}?nb$Jyq>G%j@77@%2{=N-&++!ao8*1T=mggm1O%k-YF*wx_C z_HSL9h5cae;&adf$Q{?*VR_gX9G)if6V}qwhB{1GEkT)fm=6b<;~G>Tetb}xm<%6! zuO{*1?lL@9&FwlbFsv^GQb#ORTe5V|Z}k})k45eIt5KX?YioFXn&|~e!PC0et-t(s z0%T{&+S>*2qv&6YUJaF_IsY(O36-*|3orovXYU>87ySRg(|-~VW2oG~{6ARI{C`5W zk+F%sv(^8HPS&yg7K02hA-7<?fphNEok{(9;E6?Zbxp<MvW6i0Y?1xVl2ui;y=nbu z9oZlYuadb4jL<Wf(|_C`xSdK$#~Hm6GNrV{35A*0AX4X~XZ+xD#y=pqFwRbm+SGsJ zH{!<~z2b@JTQ0sfnw;}5275wAbF*heWd0W9vw{1}UpcY;fL}0bp{q4-wzgX+WtJN{ z@}Ncz4SSr0L9%GOV@<dAqJ*XCw7G8dVV@kM;R8@B7b~PtCA&x5z8Zx0z=p6P7A~8F zf5mU~Enc|O4x|5fENVspp=S{Q01UMN00{p_s5ZB;b9T}-G&44|{0~}R<5=2mj@@?x z{(`4`3xGDnqgc-~UjXqZPzRjYvvsQGg%H{nB~RlCSCANwLO$$rHqy`Vh_Clp@+!4O z79ZbCU0rp#xTLt}`1V$&dao~Oul!wq2%-0#`M}P(=GZYY?%sahzTfZP?|+wGH_kL^ zu5@d$y2wdp1LCO3tgyJ5_~6jA6eAA>H*Qt?V?CMrUC_Jxa3$tXw`wq#(rh*8$!9-E zg0ajwxDyIq@K|7&X&oFF3!z^!--odFX0o|EIuCGPHDgptDmMjMtiEWXy$jSd7}%p8 z2QJF??}@&^;p`zc0#u>;%^++y_FR29tgjovPY2yOZ(5;gs?=h<oaBC{(2`Cx=-kip zJyLZVFUPoIx`1v`uQ0#C0f5|h(YEu`j>=UP2=l7=ojI--aYC#;)tlA5Ypq14EU$*6 zf~ur8n|0FJx@U*qpt)vv$oJ>^v>x!p`jvm=|1B%8MJ{|&bX{wp`g>>H{<g5RpWh)G z!u@2I2K&fnfCZ_F@@Ix)i3qyK;*o=X)5Ov>nO0{M_73}=HpOc5RwL8PjUrWy_bH_H zYqzuExH8yXpuT~}P&xTr2J?JKquDFa%AXR#pC96Y5Yxvk?vz~vmar+X!_Ua71(re? z7FYG#M$`VP7~3`T+8ZoG&Q>~e0rt(dlL_E6q`A#$n=#Llzc_|pJwN{jHsIinAaHil z^_J)7aQbq%5})_SuI26gxU;vHJu`EqG4<Bh?e%3)cREn@cBjYJ{pV%*AQzvvE8W!8 zRwu{%tIqBFW%*refRi(H)O7C9>K^U~4{s{2Y%ma2*ED9F8iw;^tndU*1#q)-|FjR| z{pbleZ1+m200^!p!-gq1dPLt=FeO%_ssM<Y1$;ipcL-{#p<(t$LQO=)S^6bhlFz`I zp8~~0=N?uRY`0DmPt=zP0sc(Z>yr{dvzzuM3!ohrL+Orrz|k++5OX1_MdgWaaVwb` zj)=NHh<Cf@YP}SSTgg%pQRs$lgbkPS=!jYFGM)u7VBfnDPNwKM@B3NYW#^`io-V+{ ziNpvKl^FVL>f$q95S*%4M_b34>l2S85W7A}mqfvdYMl~7of5?k6WucygdrhbOvSB= zzC?qO>&UN!fX@wemBF>-DbR9YJ_WWbbG{s@C~#rZUn0NPul?zX4X3LuLy#Z~fgCHs z<LRQYA+VV%^u61B6HG~_31j*>v_N_-30LB8m~#@T^I{=f*<0Ab2jpM~cN`%JCi2jG zZHkp&o*}a6m@ZXBpV9MQAo36Too6SjNe@*We?I;Y!(zzZQ;78hrmT&=H6q^FnYlN) zq_b(bsv&Z@4lbT;Eoov^CX+L>zQh~_Mz)cdO@lf7%1Q(4p<?$$Ocgo~Y-w&V$!QM8 zV5@9XUE;9b<CYt_4BAvmfd~Hk(e7O}l3xH-mhq^Vebkf%eU&Yn2xn|R;3Og|aCs8Z zEs%&TP#H-WNSUf_>9lRn8`qbE#vt4|W5eTk(196E%?gB5I+!y_tzx##qT2?T662=n zm@14O5m;Bf&y#c;s9~m^{_b6+M_i0A0N|Lf?7pj_;8m7TUeQ3Gww_EgNV%F9RCBS{ z2-h~nIXaLk7f0<>-39yIc)iW#<q8mU{bd99-m16d<vuZ3n<O|V2?Ie46wQIoe)RZd zfp*hn2UY1;VI@Bx!Z?)6a2qP3KRty9e4Mt4HBjE^a3SFK5g1^{=ZOG>D;s+VXmR6S zcTOX`AgE4hoX-~cSRAhPBO{}5az&}#ZAtJe0zBz33N(_K!ZaPZ5xgydDn*ude`b&~ zDbvKLFLB{xoL(|!<gjlTH*MUzk&ci!<^VVjxk9QRYuPR`SD-|etoncmpJ}P7x4Mdm zfcmGjtO$BIo_vWfGc-HWKfRC^)a@gG=eQ<+61v4|ek>u`kp1|7`4}!Q@IccHxyBhJ zP$aHL$kB58mE%CP34duaWPge14yJ(}U3xy3`pQosOh2_8m5`^T4o$2lZ?roDx09~m zA!3zN<|uIO%Q|McHfv&LL3}Deky7Cilf;Z1n-uP#RJEUGj^QSqK#e!8FW^G+Xer42 zdgbEi6x}*X1(${y5YM(@Hy<L=Qwj2C$r;M3GLDDGxjgX#tSGBN^LOwfooVUltlwFw zImv;y!bF{@hI;!6M7iui6<HM0l@^#7z2Xzht)L-TZYQJ1r4%vlwTl6Xy85+@`c(F) zCrJG+6$s^2ZYw6NNUe<_IQ9J{!#*vAFEuCX`mYc|p?OAg(ym?Q%0VoRotBy|$fXSR zr47w$)7eDAu{#{ob4uC%Ug=ChL}#BY(vn9>sNdksBbyvEt9lrD68?f5i}E;tinS;} zI=H?N6B)r^t#)dMWG)t>N_F4#Ng4`}F;zP+*XcO4l#<zNos?m+7KFyl<qu(+&x|Al zs0NY9y5tll1ZMMfF%OltX$(3w?q-?LTWz&j095+%*AcFHYaq&v9)to=yaCLs8_|c$ zEdcoWeqsHIYAho9B1tb%gxJt~gEm1U!z9ZPCe9!^19_ecaEm(cosW~NE|HhiY?_}& zJ4gdPw5e8Mf>J$UX`pYK4bYlbCE$+5n-Nm%nn75{!!)IMa<=OIHgWKEMM<k&pH9aK zf^kVeEI^-$%FEj0M=B)8fTxTU&v<1aFvLC<=aE*6bE=Y_o+Kd)vPx%EH`mJH#?HkF z4=N_7TD9CcxCah;S^bt~Xr~SmuqoRfMgyRY#A~dTxNln8YsacbaEY^g>WSmY^^OIS z0NzP&421&IM97|>4hY~dW<I&v!bN2sH}Yg=Xn>wXC4RJ%V>bpf`3YuZc#N;seImZg zRsjC17~~#bzIHlqs<OqOb5SO7<;%HNQ{al@5nhs{S$CSy`yzau;>PTFwNCh3{FT6( zX1s3OXgyi;_X<P^&gnu$(>!wKN74-S4kX%1z3;?Nna_t1E~uJsR}-~9EXk3iy(W^? z%mjrRO3$o4p!TZqi-Yp=2HlzKW@#0{p&$}-Vp_(X*&E9Ue(tCO@XFDwZ^@{KH@m)Z z#{b}IwiE>8i=hZKajIyi*be((-9!Nbd5Q&@K&N4ys$iXbUJ4A3PBn9@>;+qqi?uCg z|6}NrGe=?q&-+!Y?8J5URjeFI#y=Uokw5u-vHr?EY^ERU(<cn9JOQQ9mj{y}o_&f4 zw~b6(u8WA~9$2&1q2f+s0jSJVm{iUcB4ST2zPT1AL!wq!5JKDNP~q)BHsSQnRhE6J z4UZ};WMx$1fDdBEBt~&v5QCd3iUnz9=y;xLoI0RdyuAtP#h}65A9}o0@ujsiN~173 z>%ir2Pb$H4$>+Ekf_gfFygQf)YLm7$KL}k6tC}Zoehtw$jp~^=AMR0ak|QSsJi1wh zb%yZA8es@&)}PuYzY1+QJb<L<Am*rAG{BQ5fxOgxzvX=*w)9Evx5KQ9;B-eUn^-)4 zX~Wz4i2Cj5nP0Hnz(+ZM^$C@b^F%BTGlL+ZJgI3RDH5R)>kTJkyZqj=2%^Kc>)ktF zD_+zrTN=P)bdt`KxH-XSy|RS#s0K*ce@F%}B$c?|4*`-2k1XY`aP~x=f&Gcy`x?cl zLh?0r``prhn!_}~xMg!a@b7);f636%jfeK5hG`+A8JSiPd4jl7xVbj^B`R8w7-R+{ zgjjq|t;EKY9X@H*2L9C+Fj&tZm%xpo<I@2AiXOzHD1>G}EJbIR?a$B&U@<AK^BfTn z!r$^6E7MUo#Drcn_QUs@BtEdM+{JCY$dv*CEh!!hNXlB<_R2XPide`^5uXaB2weLR zZ<n1^B^2C($lJ9-UxRCk?_ntqFI8s@Yp~nY#@A}WUa9Y~y}o%5a1Nt+WvbC<ic$VO z090S`10+pXvA`B(t`<@uI#&_s$$Nz!vS>SaygDER4EPLZpO{SVhQD&tHB&H2YZ(A5 z8r*#|M^~#d++u2GC1R#JLLVggG6-N}vh}hHNKr-6?1ztcN82dpz)j`e<%5Y>iVzL_ z@@Xu|2X}h~41+Sjgit1p2#bm&Id_uP#HBX{T+2&c)XRjC0$>Ax1Z-{Q3K#)D#Q@jy zv3SH)X`*0BcxZ7b9E`3Z@~tfbrAa|-Jy>Uc+@6FQvvdglz^?9hwq10`_GR9ILj0C= zQ*`~f89T2zrJS@OpG$Bl?iJFmDI!-&zkFXXtFP+jnFyAkbsd}YzIn5wmmd$6&(wd8 zry9Kuh7n?rHTC0a`B~AVSFpmSD3e~{k3!q*0Bt^xBsUyx$-#nabfUIirnzR)WaW`F ztPC2dY=AXT>XuzjwTl_#BT*w)UeEA9N-5Pe<n&_!Z7DbhByBO!DjHMa@)Qfc=4*G| zH6hq;ZaFBiC;W+4*EnTrurz&EvoP-doJ6*+Vz$Zk-bU73Lm}<$@fNno8R(c$S8q{n zVGk;zsnod@T~mfVh*w$GE^Ly<rKaDUEg>2=RN=5t)ON-;Ia5<&7o5zQsPAD-COX(y zKp>lcRQiI{kcS=D%P`=7&YQ#abnObMoTm75Wh-Q_v=(%LY`{0qB_qxqD&|UCp1&>m z#!+iRu@z!A@#kX$jNbWDut}jU{FPUVrPm(e5N&e&1+>BPP~>koZ%;r=<lH!EvN{xo zcrKr7oFNgga#Y5E8Wi{<{f`ItfC*UMwYx>up3U1EoB8fYOiJL>!T7^l`vZtT^|OR( zL$93@8(&)Gls|fLTIIf@1E-md0-+<WA*hqrM5M9-`tPXC_ab3P)%|9PQCdzvPbt4c zMeMGMp`YOz(o_-Il8&}JuJ~$&A*WF$jWDVD21jQnW$IrzFjIFH?-(EK23hk4LxAMp zGL9n>OHpJo6$e|qnGMYH49U?#yV(d+UpE&*iAAvjh&1)H%>dm;R7+o-x{}{-$0?La z-PYBIPj6+N-KVE=8-KiA8kf1wxIl_^`dx;oIo()({}xnDjbxcpHP64Bu3CzV_D9a( z4k_C<jr+7S`;8wT*YQQ~6hlyTQ1M$2mhX=6EDnI%>xMa6mr)Op1CJQYiP<>{UdT+n zZz}+nP5E958)_bQC<R(jAvz8qS-ahD+xXIxLT(?(@%ibgtG;Cv(s-7Xt2=T*P#g^g z9*7T8BnNnwQ`a<4KhGias*z%?+%5R`gSed<3>>8;IV|LHi{ME$+}}l61&wP>R}yJw zAg@U;{vCERUQD4~hBFMQ3N8BCo8&Wv!ZZOC-#*0GuUnRdFO|DVvyMAigJ+e{Q}H?4 zFoFq{WP}9%poXJk!ZfuNBJ+m1S;DfzaPVDWv`=uIqFrg>F&nqp1V%?buA_KrN6gQC zK~d>RUxi8BUhtNVhpAoIr!{N8(78X<!LmT>0BXHwcQw`wX{)yTm4~ag-?-@R$}>S( zLvPqN2T#$;sIc@U=6@?;Kfew}yeX%H&=;PjS<%;J;!nCeHvHUs%Wn`9n1mKxMa`av zn$ud;A7mK%JY&fPm^cYeagD=WcM&6{c3YVq4*qd_se=S{%8OIM#8a@qz_xIhy)3oh z$UF4v)$}u&tw98Vi{@a$N%<<Biu%`QL8aRCDlu}{4p4jN7LwVrO-o9&dCm#w+*PlO zOZ|x@VWq8P9HgZe)}y0}Y!4|}w3MGg?oP@lNwo7s5D7qU{d0z<U;*c(nEIaLWT*`D zf!kY##otPggGC4lQ)40L!sM1^e<iu$=}x!yz+S%oFJ|aJ#5FqDUO)o`0DvU^|BJXb zw{bFdFwr+O{zrv0t6SS{vLXH85&Zfi)UkovMZef>1L+(I&Y^30ZeAHA?xYgbVT8AY zixtEa9kfM$-~MGLc{Z7s;jNM@LL-GU&2c{oR!Sgg)ihTte<(qqQA|E=V4AW4t;`G+ zFp*MGIb)p#(WI7!uR7RJvw^L2e;NC0VDIDNgO=Q=BAoBiuu<o%Xsl9U;qH@iPh<&Y zGYmy4ZfI<>M!f>JC`J3T3SlTb(~&wen?Tb4Y@|+Y%^ys48q(j(F}mNZVqCgkfTA*3 zB}}){MagH(dp$TRtGesct=;{5*t%<ba(%rzyIKja+NxUls@l8j^Lc2flv8yvQqxd9 zhNqeC)aoE>QN!Lv-4q^?*Qso1JTH-!oy*w9M2mn)yCM)t1soNWGBC9+qV_f&U9o2} z>0D0ru3c3{Gn}=(rL(<L<@4?3=;`C)FPD|;zib6%-W#)TtnFt=SE~#P)N$%VaGLU& zo5ymy?LoSwEvK=pZ$Mdz+S5JZW{pkD;SS^sTg!c4fCx-j6i}g(XRAwzBfo4$LTv=u z+pz44aRc3N%u@Tu2BA-_!=7N~Gx3Xv?r?MHv`>vpc1S3r1x{vBM=P&rHbwo1!mmh} zpZ@QjtO%EXJry`N00};=2F4zxqNPXYavgYVBx)9V8j6w*(xpZ#T{`L*wGKnix>-Hp z)(H$B|GRmHqx#k2(x8i7G3DK)%{gkDJ<n-yrzaBjUpuQF^9cpBzx(aJgOwHb2>`t; z(^!Ve=_S2cNkcA3dgaD1VrJi85lSpm+^=0AR>T2zGb%|7OPUb0Erq>oXX3#=bV^_# z<A)thDRo+qr>uTk_Wq5og2_Y*Sq1m39(PEPMPxr1$Lk{VV6$yIEX8G3LI@2(2!ZOT zlZ=G?Rvd}$+JOkPj97m%n4aW~VLkW23_#@`IG%tJoFLhORHMZNn$x#eiEP~W0v0!m z1q!V8>g?PD%gOoc(c?k##GL4kuumRN8N@c^Gy)c3Fm%Ig5X{dDBI6aIF@n>=X;7i1 z#6Hq|BH1g<L8$v#UJw*9kW$qG9Ub!MnQ|h8Vf#-Fga{`p5gyoh>cIVV7k1^m>knEo z6cwEG+N!Yak^YJpi-l)3lhRB9jNY~|ZF)3z2yqaW0vk;%I!sd;uZ!?Nj)}rg*id4> zU-&hFArL~CX&b4aupt5Z@y8s!1H|=>7>`P-^M|F-&AkU&Sn)pn0>;DhS|vuR2?Sy_ z<)e%B^7)3u=r@YigHy5hz9YG?u(~)`H@h}86rT&zsC_UbK<HeTMre$lgyl(uZAl%l z{A$t=g^GZ1hY`y>r<<)4x5&Pu+AYgL!8u=mfbTm%W){dGQEJ$OY2qLj%(0rII3kK8 zO`bP5N*m}}5h%`-D%qRUrhqUh3#bD0Kzj$@YHp&yV13Z#qs^sr2_L<&FoOH|5l0%} zD<Hf++f-v61j%WjS`ZWFl#&JqFFp;X%GS8~c7I&>c)dF;dwiU<UK*YS<$%mH4j4e4 zqdH62b%POREHf9guHk0g)L%hq@|4LhGKmD)nEx^zhZbX6<D(pzW9CZ~0^~jsp|b69 z(~_@Q3IS3?Rb59|b^(k=x(s<FaVkW&rI*ZcB6`hy_x;(obO8an(*CHx-`jXj1zdpu zZ<*lpfM8uw<+P$o{$9Q8E7{KU{o$gDKPu2^zP-CxeX~iU$zISO^G7x(6Jl6*OGU66 z&ms*|bKq65@3I%LUd>p<16c^O^wL6v(=v+#R1waEavjI{%zwrc9@~0`WOWjziX|Nd z1oaT<(&_S)M4>?4TgJqvhS{eAElnA+X*a&z`3aJ<C4@%(oYT#+h}}{ayeX6mNLW>Y zg78HMFqAl5L(3T`Jo-R9`P@eP3zw=W$JdNH1AzZjQC>9}Y?fnq1BsdD^Pt5An+D7Y zNp-v@g+NQZzpImj%cpEUAFfo=%@p-hI(-633HOr!;QgGZlC?DG>d$UdOaX1KY6wsO z1T@s}w-&dFoCG%AujhK}11TVc0C4mMQe5ZiZAZ_KFNO9<(m=?(Js!gZ*f@_jSOk%e z_Cby3O#1-SF~e*zJ67ftWueJp0$lGbembaAAnzvnR`Fo-KGEgbWefLwWD|VVi(U}p zV{Jp+VrElCtA_iPF?i@=yY8UhWwR+$vNtCYUA?Lo*=^jT6zy{P^H{0#whM&%eSEC< zZ6slSJd8dQT=VWep#qBr(*?ozG$RmcSJ%7F(43X6AFm@sV#Miw!;B6V<lcAar*K7r z9uu~$_#m>oU>o|XV1Ve_rD!uOz?ZNkmJ((=e`7EIEI#NF3VJlJl)qp4S*=`~wP_!1 z!>=B($h34ZrIR=>TSaYKfK&du5bEtQ%gbynuFdEB*C6c+A_8zU%?HJGwDi+%(OBo< z^zWw6gxTlnVOG5baUDvKo6V!j=Do94e&H->rvvRcR`U(Mo}BKca{4~|q!{!rVoPZE z&FC9fj<yKgg=uzMp2@G&7H+63`TnC#rC9Xwez_|>eJiH*j!LqQ0#=rTC|p~16|^th zm5L5O_-gh=pnmr)Ft_DM2pz{G9KQ6kBe<<I1`gC+9!|Qnoj$>Ej$BgX<%&g@5McHE zS><&97lJzde1Uf=8g5_ZFqS&gH>!yX0c5<|7!~^L<IScZbwnQ+<D2$X!gPXMYoa*F z2JQSYspN*X2omR^kX!*%7nGq!%@!Sy6Z_NU*|K7>{zO21l)0;nuF>q}@Fsdy<`EJS zIK9d`54BK$@F7IHZj;>=@t*LQicPB@=F!bgw4N!M_D}&BPzI-6FKXzVOGnVGJa;(s zy_InCY>0&m{?m=!%lFk>ggD(yeBUGCGnvN_u{?LW?#<D6P?EU|>~80o4gH81T(7|l zTweHQ{1@lDJrSF%ZY**IwP4i@I(}b@ESvocIgMB9Ub}%quaOflCP6!Ssb#C=y~Gcw z!4Ld@Yd>$p%|u{G|3n`@005%@QTws=u(dJP{ojQQ{}F$*t!)p-;(u)Ve)IG9kQ`J> zNYz_NiJ_QUnNzU|8j<x(5`bX@3x-pKXoQ)(>Wgq5b`_PkrT^?&MT<UQb>h&V5v^-~ ztIR4cZ!cfVls=y8`p>H4JhXS(ozlo$4Miirv9@-*U-T>PHByKnub$RBdpLMJ7$1*V z?R)%Fmz^=%8DrD0-L2w39Hnp@jf}~sV%Q$pUE2l|2ogv3iA@2~JUkjs#E)hS(P+}* z+bqk#Vzuxxr|OY2Cq5{}-e5l)4j5-EO)iaxD+!))TxQd8LvpAk7K7re7Lhky%ZxrA z^gJn78|k*eZ<skv8r5;!T!h9=n9+ppMxg72?#XWbocD^BKz$54mrQ2R{7*r#S9MRG zJN;EQHh(OrCb_7egA6-&V)&6<vuiMwC;~(!JUtGot`Xs{$seL-7|<gXc1IIdw_X~n zHcd~ZdkdG$qXsj)WV?G+g+6eBu0o9sU)SNe8d5)(i8VM`o=^!rIF`J<T<u%Hq&0>s zf)*3m)WE-WNFPsS@p=0#0deCm4jTTTcC9ErdrEsNP(RcUWgJbnX$<>DIqJK_!BkT2 z_<S%;Ewa7LIHpz_Y2>PT*BnLo*o@8h+h!|#Nc-9;S5x&YDN2D4Uig`ps{tGe(t`^I zP(%Bh0D+Irk5uI3yunWvxvEz$%liIKqI=aw6gsKGp4Uj6*I+Mbr!GWeEksM4TZBX} zL`R-~bbmO#^~BlC#o5S7g}MmHhR(j_P%6fONW!HTE+)#91{z(~3=&AB<<<=1GBx3w z+zJply8-_O!;xtV^<#moA!<adB@oeiWCQ>{8jv|+m6F5!#J}vF(g_a94pO8&vcVP5 z1!_pOkK&L0NL%}!-_w1vt4piqMR0}S=!3u@-cxR**2JOTlVVW7trO#IUd|mZMnk(3 zKpu%`oeS&rzdtt72a`~bbwP27%0^a%pUcWhS)HGc=PIj<go>2_-{SV@b<{H&$R`V@ zRwrshDEraXm-p!5Tw_cjcR6@l3^>_@ieuS7iYNhh{El+dqGAe9J)!~j^|1*^_i5W< zM2p>8+0|32t3c=MdV78Pe*c0}Lu1Y*iXq=Xu$SM8#reBCYdP=-$;LClQ{_NdVy_z+ z)<YT{r&|H($&bxbLmJ*f2PK#S6{0)x)~|8))G5-JL-}iH>;9x77`36bs`&~b_3Mfw z4}I#HX<Q*&T!Lj0R4114wb=8w-`2y%SYVW0Y(yK9{2I(|`%$f1I;q>_B`i3`_kfm& ztQTMgKQXlYedEQm_pRZ|5rD#Si)+^k7=SQ^+eKLvt8N?jp&YdaghME+KJgqb{zyRE z9>bq%T|It~ya=9F1P0ex=86MT?%-mw9U`pu1%^82FJD`Yp>9}mjv9hoQhoDK@J1z* zR|2(y`V$s}B*tV`6)+8w=uE<t`NNN0FP;dML?xH(6AV=8#YHA#sfBFP^}DIbtk~@; zTY`RJHG9f`B$o?*b!iGFK$EUT)rv8Zc9$&QB}c@N@_I%($RGqc0YLJqqI`;V?ANNR z37cdHd>#mZf(!W=c@&>2EJWCh-DCuZ5F4~&Xmfy|-_+f7)u0P)r+GCPKxlaykVO`e zCTbI~vJ0*fVZL!lY#P^Nz!7ccgg1_?8_qOs)89_Q^JIuFhLAx5NsL_!-;*XFe6t`7 z(a#3aLz;6X5d)0rPhU3XoYpy3-pGsOKoTylD&pd%4?|fyY}S$Z7ZvY|uSHb4-47^V zTh|}NwDEuh;M}|4g<m3RV5_LOE484jK=P3$!9D3M!R?qXVSJs{O?C}B5w6UjH2$fD zbY-)L?fTtouqXF}56URO2R2Y`-I+hMjA<`kBt{v!6p8euHZq9<F}d!NiQdF%hzq3d zQm|EE7|IBW4vk3J;=MM6Cm3WrKh#M4OAX6SbJX}m(805ZiopWrTq4RNKan!Z(){Uo zjHka$nF;lsNo2bv=>xk!Nnr5^%?Fn5#wld`kGz!z!P?Vt_eAaPc-3vMPp;s4Eko&( z6PknHdmwgE8&Owd&-5gU!$sQzwz&dC#o>f)fjDK!&hi&s#+L_I3J&*;15YX`Dt`$k z_r$yf`-AFud<10gpUw;gWC^%Zug}Sumfewd{@m$~D?9>z6oS;v$+KIg3?`AU+;VKl z9OM8dxo}LK^?jvC?dqLhji(-$j$)Q>>SxmjQi;sf?3U-gwI7ACGN~~qCo6cs*hn<I zUT!y*&KXQCyu>G#gar<q;@&jxcMb5ore-=?ubh45YjgP~0?1&X>t%h$I@h`3Lzkm^ zF}RIroM{sa9C-*SdSn|;i;;&%%ssK2AE?FW)L);{m+EOW$X+y(t5&c@WvC@1a-}C( z6XK=FK?B2FH6pKE+g8(z4|Uq?ur^4o5<6lH;;a!#@gjc2QC2Js7=%ht#!+i`DRNGv zz{>-_{Rn>=&cCSZbZ$Kk2P&%EL0O_HJPpk;xazqA%#EP-%~<tzt#VUst|H^yH}r@d za-?$V`g2WZfd?X7U^o$|SwRI~LUXeA$D{V>L5m<^foRphQGj91&#wbzd?qo$XO$w2 zm=pjgHQ-cOOO()O^v%@-Js$i4oIz9pjBwnke*l4s>8AYfp4ov0VqD0YSYX(@TF@a= zB~=ZIp$ut29E}b$gQ<sT16di;q!DX;M^kSLDg1QuRf|R&F<B#|)k2fzH=XUi&+m@F zopZs<bNR#>o<!OyuVBkMDMvkUUkKF+ktoQ!vb;H1KC-*tM34U3db&2i!~qxw#RS(& zFOI#WYSDv~8wa4aU-S8Ab51_v_B8WV0ai?Tm);P+!QR;e?wl1p%Cu-&CQ>NOqT5fH z>scEO?AB-DGY5nL%@W_Lz}4}i%-*<Kv7sad=t%%A&+L{jpM%JSQpd<6h|tN?5hXye zR#%w-tJ9VRlSTs3e9F|NM|l>|3&-hk$q$-oh{1-K%S%T!?$6OgVjoRYyC$bs+eut! zmi2dykMd2Df}ZRW&GkTb4wE?WwX4RJB&jEgO4RoEoq64XrYp3>gny$6{MG<=`4H?C z1&wy8G0Xc~$jR9J=~Ozdxmc5MnlU8P`W~dX5@$u3t#TUD{sA*5BSIEz?xIXVCTt+G z#0%mar172b<V@hT<plE0?o`;|Z%pIQ#t=}iOOrT7N9h*_@Zj`nJ#;bZcY^I01+XcL z4^<KaLdQ)%{oQ}Yzk9~N`Prs422kv4h16SWi~i_C4diUx^Ai@UBy|-9!JyU^<-%Q= zrv#xq<$;j`@l$z6Qx;=`V08o;(uhJfep!jWv9?d~bGa~{Y{=Vj&&UFe1eFLF7`W4! zi38_Op_^SrKencb(oN<GcM3M*VgO@{pj!OtzVkQ8Ay_O!=)>X_EBxtp8Fw{sobvHA z*?h%A|J3-EvgWl<%tk1Z*tLr)2#MIeEfeF_-W6;NrUuv|mr;qEs^S&Ou)?OL4ozsr z8;lgDM-vEz=RG}tt-3%F$pW5Z^tN|*lQK1h)B#$QQ;RvjJT>?@Xc%^iJYS7DkDLUP zG6naKIQgKMT&-TVLEItwa#Q&XSN<4~?<pYV#oE#g+!^Q&{<MerK(^bBYNTZQ;-YDK z6zqoO&uPRY0mRYHsb2e}1+tpXhv)W!FaQ|`*Xm4o*!Asu&ULc(JL!F&X9XP#dKt8R zTjTA$Zp6p<d<(G^JiMYU;<$bF;C`%`{DbjL4&psjG^kSxP0X&}wi5z<oaFa?c5uMC zqLTxn1nt+jUJCs$<!+lWrla(QU-FdSk_{>F(Htb+tM)*s@BkasaYteX>hzkr<g-(2 z?!?}au5~>2L8o-mVZ%iI^mXYU-oI7tUcO34e#_>e4H%^vp&#Nahqm*W<wQ6npAy^` z?G^6{pB1%b+Rj%#dwsJU$yJ}~P5?)!qZGG^10G5NJ~Y9Q74RRD%)A90u!b5OlEP^5 zhTkL14`}!Kg*nf;8CMoY@lfb-$R4fBh?g!^LQx5-H=JqB*BaOs*>N-=q*ko7Wm3A< z4gz18C0?kz-!&pALUCPvQkE6_dl-1y|Et9lDT9z((@8DAPngUr5s`67th!P0pYZ#z zzz27o0g;4o#<9>GPww)nbZN7jBMiU5Z=NL;G_;gSzW|rYZJcb0y|=g?zrTj0lej#c ztW?TDY$NiXN~_jJN3TH@)_AAxPu_rTH!o7jnvL#x9vuDaV<!F(+&a{gVvfeNFYw1& z&WIB~br?4`-<)vzloQuvdE~n<YO;|$Xs#uku0&)8`z0uDp(K)S(0|@$M++N9ayqBN zI@qgGgbO>{6_=LwX;Uf6lrVMeY9g_`yW4<h{UoAEGyW@9$y{qS)c#?)9Kaw#)HOtG z^g$bplI2%tqh=gh2Ljd~zv;b%RqeS788qKk^@ZhOpotm<M%_+Td^X9mZS_WG+11@4 zGl0%(>>&AWzfLB>=TK~1`T{<PJ$ITSzCosacy{Z3=d5Iv^D@?!Zj{=17OEA=_#O@n z9GOh&Pgj;FB|@ILx$u!HqnISDP*TmgN-4NIG;-r@zR{l|=fqLjqATuW%AHO*o+qx9 zoKQBH1^hAQxn*LS=$inSC{WUGL9h}&pB~|dVhbUdD{vSoCCBE#+(~qzrL!<=O?fYv zKX~t0CI(pFslnpt^Rhs9&a=ZYW$Eh1UCu+_=-{)5g?6M)^n&lW>A3{l$kXe6Jn9bk zFfm!k8*tev5`yfN(}#b}ww7R8_qfes21U<tj$F3wgY@eD<Z!3Hm{*e(D<D(E2(wdx zesjl-7(M6zTuxwMswc!fwBd!Z9CXydUI@B)V>UtD5p&{JWWU<9%9)0{5K{DFNj*vO z5Q6WcpzUQ9)`RlGFG*$jCBp^V4Hsiz+60;|+=*Ut;cmMVVI;~Y>XW{|bHi8x+XgFq znGcANeRg|&5VMIHGNThn<LWMrBjCd(*APJJo(*8x;v=SnN$t{(brEAbQ5Wrc8`c2_ zvzxhM&UcgY(am<Zg4h$@5@f(!x`0KZyBH(J1h<C51=h9$(+DaSN;@x5C}P=5quU48 zm8?I@@KFiO<mv%k+wsALLSCB2pa@w5_J>7%85u<$79OT~0-3U++hbO=ryQ-8hg#@* zW50Q_C16fSE7w6-eM$uy$Z>aQRM5~+7p9fg=>$Og?-Za?#l=XN9>+W)qmEdVWeM@5 zy+1Doca+nYLOq|<vB*2#@AiuWopl?Br;x_<Az?~L!1!amdPN|#>vD?jfrhT{fPV4Z zoe2B*o0@CzWbU_G?XzYESvua8oVRAZ5BC97l0e$d%>K=c9v0lx0E0gjKgit#2++P7 zIb9>NOs-O%V^}ur{f^~s;SCww310gFs0ZKvUAql|VxOEeaW$ZdX=JxvpmznOQe|35 zW(U4rf%k^`d4l4*KGLOQxM~NwTRYMf^Y8-QJ0JJ81m94{x96(g0wnjo&``_H>)q#& zaNe(%>3Z{GdGLOCIYQ!8TtQ;~dz@6WCNlRfV7=dbvu4?5#k$xedZWqR(=(abp4>4x zI%wf}pK>d88WH|bhNtmH0v)+8zf~{a{De?`kgR4Qnz?dCf1L3x3n)yJKiqFmXui?U zQvX|s`(^d~tM+mGIF0fF>d}2d@<n`ljiuaM;L_U7*`A(~nzmWp!QD<CSI#i6oP0}_ zJ_~4eeS9397%&QY!W=T$ff?Av(+hA?Y3TQUA>8M+9MBH>$lvGn+|lo~3~_QvlvW!H zcyfsj_~;CMf;I&X`1pJY_UKHUCMwJj8v}SUAL-}5^#AYS^4QkHV-0ZE0(s1zMML?0 zSR(A(vITl%18?j)9eoymCHiO-03^_u2{UP|*<eeuLDeB4!>_S#g-72wehlNePz5Vy z{J!qz8n}|8^R9eEs?fN@?`$>vTVsr&9Gqg}Bc5UYR;e+YpMhSKd4E}wX^*`9<O$m0 zKRUQ5{R4g#Bk@;FYVt4b?ibn{nEq$Rd&#aPNfv*+9oQ&AR{tczOde@gik%N}5VPBH z5VIK(&gP@jz`xCiGKaZK)_~6npS!K?A$#k*Ru~nSO!b80t(AYOIxM`aDo<9lkDpzV zSr=j!=MiNQ*@KC4OaBPq@ZIzNH;Y6(;MoHV1_1E;k4Yl_A6X<vTPuABT{~Mxb0>3K zn}0OYw3=k><{yL}>^onAme2|M^n~Nks2f692eEjqjp=d<v?!rXDGG_?va5~W9_Atv z$%bqz4V1BgwPbd9xZZab=B>`oPF{s^hlJwbIU;2e112ic#V&%6K5=;}hXaW-V0|jG zE0Tl-u3J*q(7^pY>jd!}yJB{+LW*g_{1>6pBh_)Gq?w)6_Pqo<=`^R(p_><xdoN!S z%L^J&#RJ6)OkH?z`8bkj$#L-{s_CEx`6~s=MRKPuYULn%w9S2j5Q=YE#&my&gyalt zZCWJ5@8DBVJP3jJ>ZAZlq((zVoIA0Isy*(?fg$Dbkie|xqxLoYJqY0;RFB~4_9gFP zjB8Y8Hmsl!;B=IZQc}gfwUBm6$3~^Vn2_@s8r%h@+H57rvkvnH10|*uX3BL(*>W8` zxQi+0<7_WDaE#HzRo6><KZw5MTgMr|jm}O^sY0;^mQ|2NLz!_Xq{|e(WO0`v<>Y-T zgLYzNCfqO0D1uH9pT7M|^wJeMi0T%%iy=3fmY{54M5>e7Xq6e~^h#QH(D4aJ7ZO=F zfke1QP$sPD2r{%!JCfIxR?j0ESLY8ixTB~lHuE7!xi>q)SZsC>Z_49%u{5utC-i7C zAItItNc#%fARs%suC6yz1#3AwHpi_8W?lK!uLd~v_bYyun8c|r0Fa#97%i1E!x7y4 zr?UBn=oIuSF4rp@^8OG7*MOD6c`iG~yI~910;7{o<~ybuqq{ZOe`Uydp*#a4qg#Qa z8^}Fx(783Ks{-}o&4|+w&Z%Z|BQ7`KH|gHXk+)^oQ<q7hl!$b$*MDh=-13)o&X`V4 zp2c`2?p-OL>SsmsG$N~u5U38+KF^{&?g(>wi<7+E+`Rkez{B=5JN38AoIQf1k$X(z z(08AKc$?h##)~5v)I$2z)T>?d5Zf~C#8si8%=}|oU&?#ox|Q3?n_u#p9lre*P_50~ z_o-kkal>)kOoJnZ_o~l4s+iE>uC7E~(iep5`n#{0?f^*s&|SDk<_!m1B!4)`S7ri7 zS4cg=v=rL#31WR<%Z1)``8{9`DcXXGYUkT0p(Wdgk~%=?%ovTO8>-mY<*!0zu=Mhv zmuTmZoksDeN3<OUqshG%E;Wfgt~^5!wT}E6mvCxuHCp^-@(t!d@2(t-$ui6av{S<~ zFYziJfSl1iq|Fyst#nx8Q~e4r=>-_@jfZT2US{SWlRbh?BqbMz?7k%qjrBRuLbSlR zG%W!3i2-dn2U=6^jrb9c{l35NWkP#m((|jM<m;kd<HW?s<{wBOkXK|Tl46{|mh-;N zyT^x8nS}bb#-3&9t)K0hfrx}NqVMT*T~uS0Y_I`SFqY;IV*Jr+O0)yrctrF}yRp9+ zP-uo)^~b0A>T4a=Yt~w{JG4bB;m`}qCSfyUdr4W-Lr`ZT3t4uw71aD5h!KP%fHZew zIg^&ou`Md#uF{_S_f-%a90a|u@NPjr)RzPoT-(VIuH9S3CF-mSA^_n3+8+KV>8qhv zJot$eb}Xm>{@sP;`3sf=S)OK-WU+zmN_(<;SmoH^?^r!I`qtFV#H`zY$VKm3=l1yH zO0sBh&EGi)lxpWjt@i<J${s1KzK8S0UcXVx<JW*5G-=ljSswYpkb6`vf$Z-@OBe<h zwdVsTa)=eEcsaJ*^zBfgtuya~Q1g6)wJX@76PlsSwhWSqbc7!^b7emE_TcX(vQc%J z`1X74Ssj_0eN{R{f+I1<?OfV2!)=h=={qL*Q%&XgnecKTxzI~6y;|uiTF(P}^TjAl z+9SiLT0X-0v*;g~+SUGmYRAiL%HZ-B*`gqn$JH{xXCAd>a6&;e7A)_B$Ru^R#yh}~ z3;lwxT&=Ur_!Mgq;TABFoh2<oHuvI_K*t9gK3UFx>ML*%K4phVtpi1Ugfvi7>`Qxk zJxXcs+H1ai48o9*<}b1BWy}WFFctm@YIR5~+0xJPk_^d8frtAX%rA66rg}eQO3mxs z1d}INv`Tv|U7DF|A(4xy$0^HrPQ9lgW_l*NQ^d)2@cthDf9DXpjkIeMNB{saaR30U z|2c>Jr!n+D3WU}_1)>e{KMI7u-24C?&hpBN>0}wa_LjCMo8BwW72r1l$RFbQKlUD) z3K9pKH@>$plo!Ja2UdAjf64;1H;F<89Zu3ii^Mk?s(c&6Ah8hA7m_BEJckPXQ$g=g zM1_XbCy2?e_x0G`uKP&W@BI+z;gI`D6NA72*Nx*t7ZQrVGmxk-!Z9AxWf$7!M#gkj zS#VI4#gT5uD2@q<6Ch`f(%x8#D;i$yCsdAFffK8&u&Y(b;O)`gjxrE4NB~!tm6Is7 z2LYoA4*Q&DU}2e5Xgf~-(hw;nT&s)#qDokGlGghr5sY9tOPKpJyf7OFQWR@BXT)pc zfZWr@z8HV14Ek4C9}cT0B}7J$)(IsAuS(?sKKvoQBQb~I2BhVZNN?je)F=OgC%phO z^`S)i1V+<qnyGc6Bt2$Uw1xDp^oE_gZFl{n$WJT)6~9kl#8WCQpAEDA6cehxHnn<A z&{yaJn9YO3_pb%3E1vh4`DMjW9x7}}q0wB>;*WI%yR@-PWQ(w()jZM3A8Kb!D(B3N zt$(dJC2I}BQ`Qmf(v08gGaDbAgpZV6dTvXdq?X3n8tS>XE>e6d+B>D9Q3<f!>#M`g z9YAURXJ+pEQt*a$UkCONH^Wz)NwIG~aV;u}M@!Hgi;<*gAk}~pP0FQA6~l5`UpolR z49gsdN9kc^b@wqkb5YY=sbyRHeGN252zX@m0GIkW;z!v-qet0cf_d~*aTi6n4N3sq z8yDulC^%vXsW`CUAU}0A(#hCleYNKypjRTp#~~u007&!FcT{RXO;u1*VS1i=iezLO zs45NOLRXBGhV|*vGKyLIdQs6ha6je|F*LÐ=<SB2p=AV-nPS7anov5+i)9D>fn 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 literal 0 HcmV?d00001 diff --git a/docs/conf.py b/docs/conf.py index 3a4261b..5357f0c 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -8,8 +8,8 @@ project = 'toarstats' copyright = '2021, Forschungszentrum Jülich GmbH' -author = 'Niklas Selke' -release = '0.6.0' +author = 'Niklas Selke, Martin Schultz, Max Lensing' +release = '0.6.1' # -- General configuration --------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration diff --git a/setup.cfg b/setup.cfg index b3c54bb..845f88b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,8 +1,8 @@ [metadata] name = toarstats -version = 0.6.0 -author = Niklas Selke -author_email = n.selke@fz-juelich.de +version = 0.6.1 +author = Niklas Selke, Martin Schultz, Max Lensing +author_email = n.selke@fz-juelich.de, m.schultz@fz-juelich.de, m.lensing@fz-juelich.de description = Collection of statistics for the TOAR community long_description = file: README.md long_description_content_type = text/markdown diff --git a/toarstats/metrics/constants.py b/toarstats/metrics/constants.py index ba01958..b513884 100644 --- a/toarstats/metrics/constants.py +++ b/toarstats/metrics/constants.py @@ -154,9 +154,9 @@ ALLOWED_CROPS_VALUES = [ RSTAGS = { "daily": "D", "monthly": "MS", - "seasonal": "AS", - "summer": "AS", - "xsummer": "AS", - "annual": "AS", - "custom": "100AS" + "seasonal": "YS", + "summer": "YS", + "xsummer": "YS", + "annual": "YS", + "custom": "100YS" } diff --git a/toarstats/metrics/interface.py b/toarstats/metrics/interface.py index 8bbccf6..9cf39d7 100644 --- a/toarstats/metrics/interface.py +++ b/toarstats/metrics/interface.py @@ -16,7 +16,8 @@ from toarstats.metrics.stats_utils import ( def calculate_statistics( sampling=None, statistics=None, data=None, metadata=None, seasons=None, crops=None, min_data_capture=None, datetimes=None, values=None, - station_lat=None, station_lon=None, station_climatic_zone=None + station_lat=None, station_lon=None, station_climatic_zone=None, + daterange=None ): """Calculate the requested statistics. @@ -126,7 +127,7 @@ def calculate_statistics( else DEFAULT_CROPS, input_parameters.required.seasons, input_parameters.required.crops ) - ref = create_reference_series(input_parameters.data.index) + ref = create_reference_series(input_parameters.data.index, daterange) resample_rule = ("seasonal" if input_parameters.sampling == "vegseason" else input_parameters.sampling) min_data_capture_value = (input_parameters.min_data_capture diff --git a/toarstats/metrics/stats_utils.py b/toarstats/metrics/stats_utils.py index c6528cf..d745c03 100644 --- a/toarstats/metrics/stats_utils.py +++ b/toarstats/metrics/stats_utils.py @@ -118,20 +118,28 @@ def calc_data_capture(ser, ref, sampling, how, mincount=0, minfrac=None, return fcov.reindex(ser_tmp.index) -def create_reference_series(index): +def create_reference_series(index, daterange=None): """Create a reference series. :param index: the given index + :param daterange: start- and end-date separated by comma + if set, the reference series creates a series from start to end-date + + :return: A series with a date range spanning from the beginning of the earliest given year to the ending of the latest given year and filled with zeros """ - min_date = index.min() - max_date = index.max() - start_date = f"{min_date.year}-01-01 00:{min_date.minute}" - end_date = f"{max_date.year}-12-31 23:{max_date.minute}" - reference_index = pd.date_range(start=start_date, end=end_date, freq="H") + if daterange: + start_date = daterange.split(",")[0] + end_date = daterange.split(",")[1] + else: + min_date = index.min() + max_date = index.max() + start_date = f"{min_date.year}-01-01 00:{min_date.minute}" + end_date = f"{max_date.year}-12-31 23:{max_date.minute}" + reference_index = pd.date_range(start=start_date, end=end_date, freq="h") return pd.Series(0, reference_index) @@ -494,6 +502,8 @@ def stat_processor_1(label, ser, ref, mtype, seasons, func=resample, :return: A list of dictionaries containing the processed data """ res = prepare_data(ser, ref, mtype, seasons, label) + if minfrac == 0: + minfrac = None for r in res: r["ser"] = func(r["ser"], r["ref"], RSTAGS[mtype], how, mincount=mincount, minfrac=minfrac, -- GitLab