From ede9c55c7cdfeaf96c6cba2337ce1b6d2a7ac469 Mon Sep 17 00:00:00 2001 From: Simon <31246246+SimonMolinsky@users.noreply.github.com> Date: Fri, 26 Dec 2025 17:09:26 +0200 Subject: [PATCH] added verbose parameter --- CHANGELOG.rst | 3 +- LICENSE.md | 2 +- README.md | 3 +- docs/build/doctrees/environment.pickle | Bin 642641 -> 642234 bytes docs/build/doctrees/index.doctree | Bin 16769 -> 15462 bytes .../2-1-directional-semivariogram.doctree | Bin 64499 -> 64499 bytes docs/build/html/.buildinfo | 2 +- docs/build/html/.buildinfo.bak | 4 + docs/build/html/_modules/index.html | 6 +- .../core/data_models/blocks.html | 26 +- docs/build/html/_sources/index.rst.txt | 5 +- .../html/_static/documentation_options.js | 2 +- docs/build/html/api/api.html | 6 +- docs/build/html/api/changes.html | 6 +- docs/build/html/api/core/core.html | 6 +- docs/build/html/api/core/pipelines.html | 6 +- docs/build/html/api/distance/distance.html | 6 +- docs/build/html/api/evaluate/evaluate.html | 6 +- docs/build/html/api/idw/idw.html | 6 +- .../build/html/api/kriging/block_kriging.html | 6 +- .../build/html/api/kriging/point_kriging.html | 6 +- .../html/api/semivariogram/deconvolution.html | 6 +- .../html/api/semivariogram/experimental.html | 6 +- .../html/api/semivariogram/indicator.html | 6 +- .../html/api/semivariogram/theoretical.html | 6 +- docs/build/html/api/viz/raster.html | 6 +- docs/build/html/community/community.html | 6 +- .../community/community/contributors.html | 6 +- .../build/html/community/community/forum.html | 6 +- .../html/community/community/use_cases.html | 6 +- docs/build/html/contributor/development.html | 6 +- .../html/contributor/development/bugs.html | 6 +- .../contributor/development/development.html | 6 +- .../html/contributor/development/package.html | 6 +- .../contributor/development/requirements.html | 6 +- .../development/tests_and_contribution.html | 6 +- docs/build/html/genindex.html | 6 +- docs/build/html/index.html | 17 +- docs/build/html/objects.inv | Bin 5956 -> 5957 bytes docs/build/html/science/bibliography.html | 6 +- docs/build/html/science/citation.html | 6 +- docs/build/html/search.html | 6 +- docs/build/html/searchindex.js | 2 +- docs/build/html/setup/setup.html | 6 +- docs/build/html/usage/learning_materials.html | 6 +- docs/build/html/usage/quickstart.html | 6 +- docs/build/html/usage/tutorials.html | 6 +- .../1-1-semivariogram-exploration.html | 6 +- .../functional/1-2-semivariogram-models.html | 6 +- .../1-3-spatial-dependency-index.html | 6 +- .../2-1-directional-semivariogram.html | 6 +- .../2-2-variogram-points-cloud.html | 6 +- .../3-1-ordinary-and-simple-kriging.html | 6 +- .../functional/3-2-benchmark-kriging.html | 6 +- .../functional/3-3-outliers-and-kriging.html | 6 +- .../3-4-directional-ordinary-kriging.html | 6 +- ...3-5-blocks-to-points-ordinary-kriging.html | 6 +- .../4-1-semivariogram-regularization.html | 6 +- .../4-2-poisson-kriging-centroid-based.html | 6 +- .../4-3-poisson-kriging-area-to-area.html | 6 +- ...isson-kriging-area-to-point-smoothing.html | 6 +- docs/source/index.rst | 5 +- .../1-1-semivariogram-exploration.ipynb | 758 +++++++++--------- .../functional/1-2-semivariogram-models.ipynb | 101 +-- .../1-3-spatial-dependency-index.ipynb | 16 +- .../2-1-directional-semivariogram.ipynb | 89 +- .../2-2-variogram-points-cloud.ipynb | 72 +- .../3-1-ordinary-and-simple-kriging.ipynb | 422 +++++----- .../functional/3-2-benchmark-kriging.ipynb | 88 +- .../functional/3-3-outliers-and-kriging.ipynb | 208 ++--- .../3-4-directional-ordinary-kriging.ipynb | 84 +- ...-5-blocks-to-points-ordinary-kriging.ipynb | 70 +- .../4-1-semivariogram-regularization.ipynb | 70 +- .../4-2-poisson-kriging-centroid-based.ipynb | 280 +++---- .../4-3-poisson-kriging-area-to-area.ipynb | 268 +++---- ...sson-kriging-area-to-point-smoothing.ipynb | 44 +- pyproject.toml | 2 +- .../core/data_models/poisson_kriging.py | 13 +- 78 files changed, 1456 insertions(+), 1482 deletions(-) create mode 100644 docs/build/html/.buildinfo.bak diff --git a/CHANGELOG.rst b/CHANGELOG.rst index f9cecb0a..41c5307f 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,7 +1,7 @@ Changes - from version >= 1.x ============================= -2025-12-21 +2025-12-26 ---------- **version 1.2.1** @@ -9,6 +9,7 @@ Changes - from version >= 1.x * [enhancement] `Blocks` can handle missing geometries (geometry as `None` or `NaN`) * [debug] `Blocks` default value column is `block_values`, and `PointSupport` default value column is `values` (to avoiding naming collisions during the join operation) * [debug] `Blocks` object default index is created when it is not provided by the user +* [enhancement] `verbose` parameter for `PoissonKrigingInput` class that controls progress bar when calculating point support distances between neighbors 2025-11-23 ---------- diff --git a/LICENSE.md b/LICENSE.md index e799e0a7..9c480493 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,4 +1,4 @@ -Copyright (c) 2018-2025 Pyinterpolate Maintainers +Copyright (c) 2018-2026 Pyinterpolate Maintainers ------------------------------------------------- All rights reserved to Pyinterpolate Maintainers: Szymon Moliński (@SimonMolinsky), diff --git a/README.md b/README.md index e91e8a2a..b46785bb 100644 --- a/README.md +++ b/README.md @@ -7,14 +7,13 @@ # Pyinterpolate -**version 1.2.0** +**version 1.2.1** ![Logo](https://raw.githubusercontent.com/DataverseLabs/pyinterpolate/refs/heads/main/pyinterpolate-banner.png) ## Important notice The package was updated to version 1.0 in June 2025. There are breaking API changes, so please, refer to the [CHANGELOG](https://github.com/DataverseLabs/pyinterpolate/blob/main/CHANGELOG.rst) to know more about the changes. -Right now, the package in version 1.0.0 is in the **beta** stage, which means that it is stable but be careful with the production use. There might be some minor bugs, and large swaths of code are not optimized yet. If you find any bugs, please report them in the [issue tracker](https://github.com/DataverseLabs/pyinterpolate/issues). ## Citation diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle index b08c50b0e45299bc69085212096637c3ffadda7f..dbf2fa3cecf82459f35217f06675c99076f74948 100644 GIT binary patch delta 102277 zcmd5_2Ygh;)@Nsv-AzIX3Iqrtn*>M*Bq4N=9;AmVAk7ex1#(HUAq7Fe1ym$)QSe4a zpIzx7Mc|==G%JFXr#?H1@7Wucr_To8IWxQWZn?Y3+$DKme!tAzIWzan%zw_DIaBWJ z`G=C9dmuS%MfiOU_J$oJhOYZwB4aZRUFBxo`$J%2_ou=PU7zl=8Dq9ww=cYjv!OL5 zxztu@%Pq4dcdV9Y4!+aSi>@3;dKs&oR@pGDnS5nxBjSvw-=&avL-oCz60UJJsVK{x zXUizBD7TjuIFq!LFa6d?{$prDTom#z$iEr?tDTK8w5Z^gjMCh)a$Bi<`TDkoI98MK zH%3A(*O{H+1;zQc#qwWSt>htD-Jrw+3^B+uM*e76bNT7t66Ez$TFNCuS{Pc=m3>J| z$g&mPlSEpShh@sqQ)A_o!-h7CF3T&h73V=U3(9lL3+%Bog9g$+!EqWHDu_>dX<2#o>gtKr(k^$b^d2UO%A22CJkM69COGAt zAPn)Wc3RM5iS9%$yS)-g7m-z?l7bRjVL{7c7dMvh6*ZyUVq{{}%O2q@2ygcYmyB!~ z^_)jo9@!!Kq#DMjpXHMy+eDpFiSnh9oujv?VSM^S?mQ~C_f{Vw1f7kbJqq%2L7dd8 z?C?n^J4VGPBYYenBeZa}Gm^Kl`qm-#mi*GFcF})V7&Hunw;Ia7jf$PP*@p-*&WO48 z(uyLL$6<{$jVj7)IeE}Yc#AL$pXYha9i0;Og7Qi$`GL_1lg_JQ%sUR9*5I)BPWwkX zqe^n~7C@&`OYxFVD!I{^*yhjp5V82JsiQlIjbf}{XYq30nD!~hl%$<8RYSK-vK*Mm zo#To3jA>yyz#mVK=@|8@@?Ot-vs-1ns0NWuBc;=;e73ohq)0vG5!u6Ik9ZK^C20^k zgYosYa&BQudUO~uB~+KAz#a^kG?7jiOA_U%u~99s)q%G+t0bB`l_bgI0>xWtW-hVH z>&BW|Jgu3DymM@q*u9!jSkzd$axRH&!;5)bGnt$|u49YWw4;i~WyU_G8HLO{(UldX zlZ*LT&1CnE&y3xp8G{T`==j4Vk?vkaOfD`vHPg!LfXxZbC}fjK7v4oO9lVnJAz6hp zIw#+rSDag9%PF_#l;oDruU=lAA~EIlF7jcD>O*{D8tG$vVru8#_{8+e=lH}l%GdbB zbjkPl#I(py_{8+bulNK?!_h$c9Uqy#xQtIsNf@An5>o?V`1CABnDL2q@+f>_eY^=i zv5tKWKC$lG9G_SRZHZ5;f40FV)-$d6#JXW3J~>!lYmbktgQegT>q?#QiS?umd}2MO zD?YIf(*vJaf9ZoytgH0HC)Ohd;uGr%L-C18`fz;OgcTWuPy6sGJ1h@eCZpq#$V74y zJ~64Af=^7yrr{HlshRl1#3l!yn3&ALCnf|od}3`rAD^&Ur3L%GotR~Gu-2ZSDCjJ@esCtmHFvgc?cz-%G}^y9(uvSf+x1{ zAc{hj`Pzd#gyK+TK6{dfP$H_#=fC42l!_{IT!Z^r_9z)u=C>R35cZ5J^X&0FgtAg) z&M4p^l$R=V{$d_FV02*c#4a90!KpG|{3j2g@Kl*Q{LVutKvm|)TRp%sL?Nm&@4Rq| zg;0>H%s+qlJqw{QRhfGoBw5&?C{R^q`Gz(ugfdlS-t|L276Q3)K(N!)DJ+P>Rb|de zl2`}@tjgSCdld_zkO4Ad9%UgEv?}xDTb^Sf6t*h!soC$d5DHwCd4Go=SqO!$%KX%O z;X|=7D0o%oZ*Ojap$ccie4E_xrXdk1X7^O5IJ?U0b6U#wo0`fm-!zOkvs}T>QR|o% z!6ZExEhDFid~;3{;_T@P#)qu~^&(g04}WKcy=Q* z$|X?b_}mflKWC3J43`sfJIMQICqinJQcT?yXjVCWj!AwkcadC@+ZEzaWHD}#d_J$k zhK{6BbVj~yQ312>(o2?9I|sWX_{88a%f zS>;i-Bw&5SD6hB8p!aMf5%Rb5r^;jI-Xwox%aP~L%c0jH@jtey)VYaR*u%&8Fs5Lt zoIL+|8ucQHlz*{JZq&U?PM7qO;(3t4L8H98V2b=^;dFXw8@xSVnkZ)!O_Ot^>GbaH zKsdW#qWqlnv}`S$Vdx^~N;lGhNXB#~XQci-{9%9vj&!CzCBo4?^pd{E)uq0D}K2H8>$uxRpAMl(n z^`<2UNGtl#epY=JYE8e{4{>)bo+1CVWSU$c_2Ox=G0ngw(;-jnX_)8vrHAR!mmx8h z>F5C{lj|YD*e54bKJVy{)CAeNEGh!~BNib~e*D&%#$Gwy_FY-l*C3l6Ir8OY^W+C^ zEdoKL?#I4zEl!jFP3wY01)va4=Zra64oqJa=5lY?U$a zIKQuy4c@G3X}tVxWtaTP5Rme~DVvikO#vT`nj3kF>D-&iy_>i!ND>rftNzb2*=(a83A`^#CSHVgGpWW9o1NGiRGNLJjAS-*%qXZEADE}!K?}~ zBh=hM>L~wqS6iMD4KX8TbOxzW@ylsEqm3bEgdVjM&U8NJazKwcr^wG=-)M*~BhLM*V(h z#g%TW5Hn))#=sc?UQY8^TlvlQ(gj}9-oZ30v>LK$YT%6JUF%&?b_=nFY!)0Oqj&&V&lsLjc8D3_q%BxRN{yz6m=Rkc2m;-OE3VOMUWgg71&AOS#Z~v= z(3OXn5zb?4M{wwl_BQD){cTyY4Ck6opg7I8L@?$AQ>IKuNAM+gCS3QI#b}BP$`8^!fg^Sm2?1doe_!wifa==ghTE`<2jNiLaZNKGYecl zc^8f0K%NaTBV17lQX>R1;s#|y%hRNu^FfGNvo*lLb%d;G@c`0hfoG;)hL|T?Z48{J zoc2HhZ@^zd%!n;!2F_^1O@{V7BcnOAQIf5d2F^&n?r$Bqq(q095nG83oDoV&iz&IK z1@?KRxkc9T_JZQ_GHX_$y&_-!_-__o*|-qPfa?}Pq*WgCV9GpZ;ira}5nEyoT3LE# zE{XAy&0ZnqiAyNKDmUvPmuwCVF(X`D36c>#eAv*Dx7UOabHXK=U^y*3Y3Rlq?4}TN zVr%`u8_d3x#5+8d$$}8`#C4${wZk5f4E><2%wB9AU0N`&pm-jA{!@dMW4k!S+}Tb> z;2P5lKe=1+ju3NVJ0(GKYD!4zK-TT<)t!@k?6DZfE(CNG;KtXka9xV;q2a<2-$TQ7 z9KMH!3oU#P4Oc?=9vUuH@I5qKOJM8Q5>EE{78=gK`4$>ZkoguG&S3c#+K=I|4Z-)& za1zM(&~TQ<_t0<}#rM!U;1ipi;KYOPq2bJc@1ddT&iByJww9QIjK(kDLPP76Z=s>} z$hQyCyknbb4han~zMF;y65mZjqlNFLp;5ti({R-1yJFIR=9_7#B>83ZW@X&-%UgD;=5_s z{1wiya(iAGTXAIVIb7cUMC%Oi#mC_Qurs2tpsYNnpxjneEm!-jQOZ9((ZiwjPN{9K ztrQQF_`d@@aa|Kx8wZac>23Kz$;1plr-im8hUNw%ozTp1t%I$1?!%fgLEnQl)w5)} zOJT8{v5+=`=TmuJk*6TSX$CCIOKr9r)ats{Z(ZQ9a-Bh@wO_sERoG?RcVc6?q0jsH z@`vbrgw92D{)Nt`=zNaOm*{+r&bR1%kIoNf*}nM*H!V&9K^GcNA}0nYN5dvi3$_Lg zTjX069-BfbhI_$0V0&x>?tTr`8$>Qe+N~9Z!ni+B1Y3RY%4!~K5fDxJ;>lQYN?Rsd z0wZ0mpvq)(#v-6hrbwP3I6zL-{RABtU{8%0R#BXXXTrSK>-*LMlnBYaC*eXx?zp|J zZ%6GFIw;*mSRg2~s$Kgds%U0%U_Ifx8t9p`3UkZg@Rh3Tx&UuPA!TSQnCcw%2CxVd4Ivv+mi%Irx!Se@9F?u*r9A{F(l zr;63XA}s2++jdoyo;9~P-wHjAu4@a2`l9!kIgBssfpPAh;l41wAcBE5jK@S+1cgy} zaBm=~_5mN6YGT3jm%KKqRms0bq$-|hU@^cxVEf!b?Sqki27+$;05;9JEL;|rh27fr z!5@07ulA|`G8Xk|ADD&|+Vd883~(^M#YNQ0VuD!^m|(NfIB;Ooc@J>rq&b|k-}u%V z*oSCG#rUvr)cQz;Dy_{J4=;-gWKy5OWoFV0XFggVXw9W+Q0*{OAtbwv@@)qaeKkyf zpPJUXqN-5!6=4xT!*H-_QV$#jFYTae7%tm2u?VhV{-d{xxikzr;1X2BIIfz80Wboc zmRTHFIIe*%<#Qs4S>LZ{>zoRawq?!Z>W->-lrk2z)H#EIhrTYtWn;Yj#4|2ah6V;9 zAO>>Gvwo&bb?6YR7hw^=?7N%8cr|Ara@uprT$?iugrqy*eP=k^_)_QNV6HTctd+UaAY3t52%O^1IMUj;cQgh@AsQx8A}j** z4h!RPbqo{UhuE5JIJ5LTkxQ4l*AhAfIS0zTx1nd^hMs#(MqS6q6v4u?d#Uo3?#sf} zp=&-mtJ--S&YCm@2P%NF;bM*~U<*U&1g~0*FZK2|m$G5!RyW!LEqDeRcl0fu!Xa3$ zYzjpMglyMVHU+*d$pNpqAyr|R%UIM>*@SMW>^%|3F}OD z^|Fe?7)W6BEVe^iI?dU(^3np>m{OMZaH({c9_-e>*v1#T9U>Li)+Jj-SOmo`BwfO# zxF!}ZJ?Ev5R9%uMQWZ}$T)KoEO%H0gjL@0}=@AVXj=A%0^qH_IJg2Qn{-w9}sw(+d zghc>Z_)vt0MkBCe`#~GQ)doYn_G$Ggbod5kn#|$6nu?tra^ZqANe@`- zPi6XoHD08qp4~?6z1box0`%TG01FE1j2m2P%S|h{rZ}BG&$SK3JDj=t$y0O+X)tIluv zVbx8fqS_MIMTA9AiK}VEVfhCdw79ygiAC^1Ym-Rl@kGNlXt57ugAQ6_wI*=7<__4S z_}8}Hy{K47G8TT@Ccsh81tQJriG`|*<}((x9Kk|g8OnXfHHxnlhd_Sq9lt%^s?ZU* zQ-no;zHvK8@oJ7-C_52D-Pe}5l`tR6_UHhw&wG9c5T6pMxwiOh7hw@V3D*I5^1%09 zM^xU>0oCsJJNk}S=S1qM4b|%+EP~2eO$wCdA4muD4qp?C;5yhQQWZ}$TsoND77$bi zU&V<7Ts^>hO;jUM+hwcv#K8iLLNs2&8H;*TyFXt@;uxgrz(Ah+Q77O2kQ_P$?L=4v z=nn}T#;dJ&n-480wXvh$xrJ8t;h=oa#|=4x*?JKC>f=;j1V@Qf-?I;?WA|_o76FuR z9Uv(Gd9e-0szeV~^FC?ki&c?GMYXY#L|6oswwhFDQ0>e6eN8NaYhNN#6;Cu=+Lv9S z5>)$My)6v5j)jZDR$)=tp{;y3>8-umZ=Mig5kM9m72%=L2<&>9ppD>~g$(xE!qByk z1XtDYMtDQC5ok;k(%iQSa5gIystw>F)| zOKa&`Jdxo(D&A)%*HT2(jn}_x_nC=$TS4tJ;~0y;eders$|yU0GCQLl^5?J&^>=|W ze9$>oz2g7guZK$rqb6?+uG*|EybtKDzAC&M7>j_y>-`OF=!<=`zjJlqL!uZs zu&umRd_+=iMLB!}npWnoyDWzbq9BsZ zM!DOi1Yh&*eXp7dR8*CtcSKkOn0Q`2uvDy+PG@K$*y%I`E-a}aKhs~YD1*^I`E8;m z0G|-8vbG{D0!$&e3<{4*o*#d5m0A-Ep1@N?s69<=7#;(B(Ix#yR5_7fnhSlz1Q$$z7v zcLr?*twwlWyAf{JTYFW@trTGqpb>5r;i1t8?E2K&G{V)GZ`4=ld%YB@=0FvmF%lCUty@fYnFHX_SS6o1m!I#hx9f&@1pZQIv;}LnyL_;QP0x01D)15gr-}gxywLn?|?_%e0FANQoA0gwxuM z&>k4+>IrHiB#N*I&Vpn2)NqBs~@LD@sn1Hy2+(gfGEyYKb_ zcFsnNV5tJ`=(A>~cTLaqTCDi53n#RXoJ~_xy;7#8R`VYU`UO%6UF~?eFRYV~o!??C z-5>RLPpMYhl-9m(iXH%&22;LMm%_DgJo)Zbr)uFF=a|T*f z*3*yJN}nam{gcP^rbzd9ePc!2ko`uo?@GP85W zSWhc{-N+EM|;U98P8ljU7AeY3IQQ-^zT<~S5YdI6o6(0K)& zljxj6=XG?>qH`XdH^2#DgEv!xIhicOZp)Vb=UoYaVka~?kD=>5P zoc81(85rs6k!mZn6JZgc6%s^vXtV`Mc>k2z!CIn;GhTiLuRoY!Nyya?%Kg4La3QVv;D*`(_xiIC zKK#L8c~>l3N!^4WsmEm~_G+R&p@ji-)SgZtVe(S}4l@kgw| z@0OW=`D2caFVbuu^STBaNxb!D$VcZWeDdr1V#{=`=ztC&Ks;w%= zgWe5f0@QlI@EkAjhfVp^XPvN2zN&3zuN4s}PXyIbzKXG^rJ0Rw60%v@aD2s_!h$^L zvc5l9w7Vu;8scE+mIyW{1YnM|^Iy5#89FfAL|6pqteZKwfy7Af5E2Qu{KEKQFM~Bh zeiLUmzQyy8ngGUgkwk7+| z^L`Ymv}c{w4*9(Zi=c8BP_?p*m44(|3{^XGy-*Vimy-6<@M`njDN+^RV!*-_`vGTd z?d(#{SMl}*_%&#*ozt2L*s(M-iUe97Oa(?E+Of%uMZIe0k;P@@xrK#HJ$udl$JB(2 zmv(job6qEY?L0DcV1|jX2+&KiIJj3^J4cTz%`Yg#!IPBiGwATcpr-pW8 zsC5%wp$Gt;eM{9e1tKhhVpx-!;0nh}OQ@QL%Xm#Jf@_*~B31E3!(|7uUvLkqX*54f z&}9cg_JMv5eoJ8K2=tpV+q5mijd}r5#p7|tLXYmz4U1)n4SwLc*jDPLcwP>S3Je4M zTLGWnu>@3lb@AT{eIayIjs-`hPL8QF>3r9G(3)xJZn)9C7y1>HMEVAu@6fq~&X3^e z-SVV6yBcofo17m48(kxp+N(KEHT7yg#o)Ec`8+Ge)t!Z5?`t>`Hrz{#Z21MbM|-TlWn6EM;Rq1pkBj77i>=q+kj=?iX`sJXu2?n@KqkiPVm9)>@Z zE%-Djm6U-_COX~F=>d*jv4c;!o6m0{{et4l?pd$`Gk@e9wO9mIrH?}=EPbA*nS6xL z;d=&6zmglAzX*OM)|T%jd847$!8WDgJ_O&nFGyaS-u_B%geHEqfKQdY>luq$O5UWa z^DT~-PqzDfq(}*9u6!R!R12jN`GT40>W{%w__ar4X(r2NA-Y^ zyUO5qbLrvGL3mb#MS#!n|IUF7BtCl9(&)l346cu8KGB0#&On3T9mpSvRMk_Js3P-$ z2#WyovN}KuEhqEP-16KqTe&)Pb%DMf-aY!Xhf7Tv6YZyD} zm7(qf48?ljT6(>qhc8?UMC$5URaO1XXDsS%#Iz4HxPExyZapBpJIvsBX~pT$nk@#o6yP(=HJ-w54i?FALX# zV$H_2+6g(JI*e=8KIg)XEcE}%WDUBYmX;7qDAldp@$~FSLw~;i@v(4I!lnN+Mj5X6 z)de5=Le5&I7SkD37rZCJB0x8|I&gWRh25aFdkE^mh9G-sIelcbp()4E7^A}?x;)z8 z_hZftfKiAR(O>_6F;s@}o_(z&i%Jl~PTB4s4eFo=Lm0wa)1BG=re#v-Kw3pu)Z;8B z_c4R(R-KW0AUocW`2FC*Fp;WiE8Hv*7D2miND7zFziVRQ8VtO4s8qdAMdlQqXt)+c z4%WCJauxTn(;jgBpu|csVHh27735Ztmh`N?s>hcy7WHP+sjDE5=>b7&73AU2LHL^p zivaqAav-m!P3N%+@`4_;v{pfmiBwfvWS$pc5#an#9iRn;rB{ZNBsy-gdr$u}J*dIt zsWm-1*%0e%HT_GZ-rCT8EW)CGp*uH%^puPK?V6=Wv=lOvTq`0 zet_-y@iaGRYGM)GtXwRjrajScnU$OB(X8BXlc7D=Lfb`zft`@pqFg1GDm^9uTz5%9le2;RO*E0rbZ)4rCpfmEY(=OUtbMQlzTdBJ-IDivaqg4$y+a zI@?d3pIdG%D6^KsXHD#zCOR&gG^aUp+?HmORs!~tyYC&CW9aKUY&8T%A=*n3A}s0` z$keXs)~WNCSo7`Hn{C#LGMkltn`dxMi@WNO$V`mW-^^4&R-O^!a zEw`wo(AL*F2|uu-f3q1z^D$tu9t^wBH5B+_I8g)uZ4AeWu&7@QP2JP2gU63lH_LIS zWU(lA4jkvbzo0iKbx%)2&VD;36(VS816u0CLeH-VT}=(?x^H4URSnVyMKL5`gJ>C~ z_xsef)<>OG8{|F_7D45&CTo&4S0ICwn?g0Q;Q4#=P}eyh7a1Epg~w%(?yE&PH&-dfa- z0+G=&NUs4#A=*(*L|6pSA9a8h$hWgaX1dk$2WCr3>8*A{BW?rq)`Q`DcK_=hdWZm^ z-R-)Hun2I%rUnf4ov`_?#4wPO=)rAgx&QgV z2SqBaEk^f?un3^J>IOGwTo#;CwZh@Rv2dnfe%d5^1%0o=(2RG*<9aaczsUb~l_Mem zXk&Otghl;g*q&k7&4uC3wz6_sbhE+rgW3PqgW)?j`>#Y?6ahdR!wVuT{uda+Mg)^X z8~ms&jb7r$&>XA73R$|uAHy(U6rvSk5MdF(W~+m~Odr0*J%Fa_L95eJ{{b{vq^jBy z*G_~*P>HK)!p8FVp0BBg3Hdl)6APZdHxG5rSA*G8%fp18CIY+bt`#gF@y$0I{eGFj zb+y7YJ#9F7xgp(m)Sn{K0NQOhNrXiJiLV3jJXSfD=|M|tm1BuWRkhJtB*G$q#B;Q2 z64#&-&*#@Qu?Q~luZc`gJ<)Kjay(t1s~j)=&2_upeqmvFT6>jauSiRJR$pD^*u_}X za{e#~c!V^6pz3L^H}rs@waRfWbP!$_VG%%oyvBjNnzIIv(_FvkK}&0u<0p}-YKzPz z5f%aTM;)LAg>^R0wwKzhrM5DAMQNT5zia5VvU+(n|01nb8&Mk#y50CY{J#ll0gOVl z(XJI?QI8TgW3~H)Qa?Rt{d2Yd38g+FRn?Zbo+2#tNt~`VArv_)Y)}p^&MjPWi_JPE zx3s`cpPNaV(iN-S8@)MtfV8ji{~l|m2nyOjPGc-;sqL@IYSFA&B$=+Qbc5m01IE89 z4SjsA#$};{u|$ML0I6EU0lk`9ABC#nB)C%%KQApQwDS*id$_gO6M7IVyvzSqlSf6W zuPsgwiLj_&1T91Ci&gXxyiBNr^pYO*-gWxl%yB}b>e}cX6=4xz45$P7qZih?Kim02 z4_epXZLs?G)=x#Ms*TnsA}oT+T1`_9mcRELTb-wK4O$Zmp1(H_b)H^F#!no~(}&v1 zZF%KZ+UKnMOW2q=9ahhnb^a@)&45veR!>tA76IC@j=)QY^Bw%_^CI~Drrbj7BASyB z5kb>uljdHl_I>r>d1<{N%ePPT5&=WIPjnYy5kP~~0iHBgHuUD}^Rx7z^@I$+(ByNS z#B`CWYNIt(ghf4~rJjXZp$9FkRifo0Rnk~Dx2(E8;h)h^L z(QvI2?XAyMqA?Gq@UHWWurTb^UL`sp(vqIlS67LiW-MwsZ@8MPL~rW>L2H%h&Co$O zFTx^#{y4*dyqfa`k5!`I^`ND-O7yEpRkcOtXAu?w^hX__1%-9O&-Pj;*~+bDwxWVX zIAxzlXFurP*NAH?YA->zd-*~C>3VBm6r#NpBf_G7G3*S>9$BR}xOCI%x+9tX_K^GM zV+QHLaKXcd!M>w@e-Qw*<*=^^i~7Z|FBt6OOX2ELu-F&n7FO8G==MhpnOyzn>A^7d zQNuW23}=e~ppD@y5f=5R`BckkwH~yzET`K31tE(mH!flKHuX9;}QHX|9oCu2mD!6WNb0&e|G~QM^*Irs=9XWKW zHMf{PxYd2p>o7eShHdlzmOV=Z0BzYDB*LP8Wv{J7Qt7U(?oFivJ*aKjZs_N0D$NzC zvNmdYA}s1rzp18@Qx95Nrc$LyRkhJtEy5ybKds5mVflNTIjX6|N9LMX1UHoqh^T5$ zG+d_AYc-lmSMg%0Sr56spnXwT7+%x1kB*D9q-XV2`{)Q`@jtMS{-p;5E&J%>&_Vc6 zghc@T@g4`Vj_f0oRn$HLk|k4kA_6 z?qEqGECP(^bs$?%So(Mo>F;Gtj?shLg#G@@A0tI7t&Q6-5f*k&9_mcGZg6w9?nZN0 z8?L1##l-A|pIr}rmk;>gT3RSldC$75ioHODMSxMhj_^x{ZQqHuBKsnn)m~9vSYRuq zR=dv{!o7N+y#JuTd3lcr4%$#UMOf6M!aMwop&wtjJfH`y;m;a|`YODqMXIWe)@~6N z^@x^gjK8A?EiGgGEs?5fqxBCF7D2mdO_nsvKaerb&A^&i1UJSHiC9sdXt<2=r|Qud zr-u(4I`X~~ogivjJ*91pHv&c>npTmF#s9z>&(H&cmNnivbPzg#R!Ny&^2?SMri! zlb8KQWr-brh}mYnxq!BL(fw0ZhxA}r`J%sR`HTnv+87=XVNs8|?x~mDXkE~QR_mAj zf7t7Nk*aE=^^OROdPGY#Ee-H{d$s=MJa)k#7!z8i;HAi5s@luqjpGyMLo*c^XCl7T#5f% z4_e*M`!DKV6sf8bDV3_fy|CjX1A^>R1VLK5P_1J4wLp)m#T3Uwq zD3PjaqcvQFMNo;W$%aglbj^#)ZI^;Z`1>VmP!72=pZ~I!Xkhw zd5{BHM<)3zdeG7`$zK$ys8g6EG(SzZjkNhupO%nk?TlP{#Sky0u&A?QjQczZrTZj;rl-l#?AO{Ka630n; zpnUaXLr32e1>;3<(1tQwghl;A83PtO++YBgq~BjOH0I*CNDqc%J~4Fm#js2S z0BsCQL|D}0z@b{~59mQl%VOUkQdMoVWDyoYC9WoOo8=$KV&?{8O)Pl+-aOQu$z>vA zpeGtGi+!iDCX4;*9g(KnJ~edbedoN0G_Z}7o!U$1XGEIPv;L}`eu}a9AK2-a^njpc zr+*td2w#b?2%tbd=Rnqxoqlb50Sn44GFoea*|xW)adh^6F- zhRfnUQJ)s~g`eE#pyN6SXlr`>i-0TRt$|U9=2Hw~@jtM*`{@Be%i``6ItV>QSOicY z-8hhSWO3){K}*Zxo+(mQ&n~0dkkdq1)FWD|#l1=oT3QyjL!_$OXe|?AQIBY;7WXDS zXlYs8Pl!}i8?8r0SOl=R>!2q>VSOy_SM`9VWpTeGQe$nMiUSPfbhcN8!R(Q2@Wu&770REs-P4_aClce+SbwPmZ5 z2#cWovnF$y4+vTo_Z^{wuu6o5UzfP=r8b5J_{XP`4vy&6G`*qeoK0`Yol^)O z&d;T{eqm_J1!;#K47Kd=ts($u3(_VL76FuS9Y9A_JN%3uw6yH-QzBK>M(b4(7WIgh zYKQ-z2Q4i-{5z4VYNPeF2n)adS*P7H8qTFmDze+l=Ue9#+Vd8aRnuD|h?)1#W+@^@ zl1tIQ8A00nF5)%?Mj;wWjYU}0qr_c|ByBlbz4V|pHi~rcMXS3=RkbB9Q-no5qNSRY z)AgXGWl~NRsj4 zl%oyODfCRzZuE@OE8KgTd)vA99C`-nBzj@e8T7)XEj+Z9dppoGNY8Tb5PC%VI}dF} zFI+mzL(g;X1qb)fbMG|wUgF*}+UPtFF zI_J@O0~{Me3Sa%I8IZm~=R0&Rq4Og;Y0bgOKqnKOZs_zt$BxcIbR1>qR)Axxa7NE9 zD72O3l-qMkZF4FL3iH|Z&4|oBkPXV(ItGy%Lafvff~JNLJvD?dsv*Rag;0XlF=W+9 zgjfwB)@lerS3`)t8bb6jgd)3+HG>+$_E1CE9vFJT=)k1dGCYVOY$7#;ZKZ~=(bN#O z8HTV8*RjS^L)eOH2%A$4VY|9Q4tNn;SdGM{Rzuk4Y6u%&4WSgMA(R3PVgFgj#6bJ2j){spxQ@w;8baYwLnuXR2*pVapR#};YLQU&LI_nac&K{8L)8l& zs$TH8hGD7~La2JdL)8l&s$TG3#BK;a$_{v_d%;893m)oT@KE=Hhq@O${M{VzQ1ya` zsuw&|z2Kqh1rJp(c&K{8L)8l&s$MuZQQ;&Kf}J8=fW}x}o!~SV+4Czv`*^lMSW#~I zd{-*^O-s^}Y3oXcc_o9qk|AEn0Iy_tuVHXkGPElh*p&?HH4N%C5&~VxaIR!9S2C0< z8OW6k<4Oi`B}2H90bI%Ot(0Cum?{~(l?>fV25u$8wvs_x$&jsNz*e#$t&*Wy$v|Dh zFkQnSUBeJv!vI~w@La>-T*J^@!@yj_uw28STmwjsXwYB{LvjrRa!rLItfXX#2b@w` zM?_VLHI|l@dqx-2QLTxUTu7mXtw|fh5L(%qNR6+Dm!R`V!@-wEP(v(9Xg(31;b)m5j2qgJd<$A6K+L0sZAcOj>H0RLH~OdAkeTRr zj3XP+KORSJGhu3HR~p@xbfe4Lk~w6zkzQ;|Mp&?00h{GCGoB#PPLL!^iNrdjl686T@y&}DD0Gw>H(+`-JL+BA6@>E2EtL&EZBP?{T6CZB;Ap^DUpmv|JOt^nmlKuLzBqNCfKGV{xvI(jxcny1DAUcL-rGd~KGSc~Jq#yaa zk#0^Sy_=vmgxCal8IbNu&u5V4@|CF#>ADOO9-U`L-8`qF++JFSDw8IqlhI93b;3Kz z{GD{~cN*qal+U-9rt$Q<(*Zhok7PhAgMUK?4{ymJ6UkvC{Ud|)wV)0Le*J0xE~E!} z-bl;4kRcXS$w1AbN4k(q@`926(1i@LpoRwONZKb8(w+whGD(&N6*f@E(L107A4pEco*sf$CdC5rc=}K;}piT$s4El9fGTnr#-I+|=bR#LWtQ)z>f&_@p zrSEnllgR5vn%(;PF>yq;vB1r2=2 z;!e7~CrKvfSn62%T~E@|f+G(^t)-27k$7^zNHcno6blYSK$U4uFOq4(kTZtPiZQgL zyLyqHnC!D&q%-=>dXp^lr}ZXf=%49L=JOZg=#{pHwsd+Q=tB^3qz_p~UWMQH?n}ls z!4VGlAK(&@y5Ty~mY(iQ8e@VF`a&-Ozw>ouD*AU^M{Xi78tJFkkzP%3Isz}g!e30J z$FCzTq6>=4;0Gk(vM01aK)urm{m2-61$yBavdu`p?MJ#t;4liWzLiQ-`;+!ap3om! z6#RSpLmj|>yFa;^9DyPZAdUzeZXx;SskF-kl1Q5jfPU3>AZdaLK3+uH)14DY94Gf4 zPOfF|ttDyn?SW(z29gGGW)BS_n=qU;nCvkjQ>T@#z21;OTMyw0yS2d z_84O3<=EsZNAeix7!Y9P*fxgDGc!)@r_!&+0J#0K3FW*~sXgD&iH40OFJt=CW62-r zpBx8b1wJdusPQm-?K9G?pG4{*arYHL%AoiEHJjXmNmxCW<-#xpzqNKDm)sGB zrX|$lJT|Mn6gtGZIiwrLvO0V<2dWGKhORx2*vyz7e)o+Y`_Rygems(d)1ULmBPK@f zOqV}wNTV<1lfC%TVjFoKeU@qdT#!%reU}4sNl^qEvXJTbooJ_dBpb;rw@2qew}t@A zt@V5u${?^}J~@Pb{{phlgfD_Zes;Sdg~D%FEW`+4ZzpgwI)GDRLE9KOH=?&J0Q7;% z7(?fPE?r2vB871;DTI6>aI_Ev0sJ{dBp-{qMGQ;A`*>>Sb1{p^n5>~ zlr+OAR&l4}Q=cp+%g|?~ zYd-?GKQgR6FWt@x(vh46C0Icox8P&}N;jFVSOgjZs8F1h=(D`n-Atxq06^(Tn=dBw zG2mECwxi!^33(9xSC^30=#RgJEJfc9NIc!M6ofSmKF%k5jCAZ$00So_klj)SMmwG$ zc^Lo!3EV)q-s?3SKmal;$ftLL7G&&_mxJ8}WLBj77Wh!L!8*(*Rk;1K$e738rfoF74n9`6j|esLLy`#q~jGS^^`gq7)w zm7qi*z~y8W3|0_e`Tw|z*dvjHGr4Pe+8FxO8q#hA2N^3{KFX9Ir5BZbY&hkEs}Nqc9l*EN|NyQWS}AdFQ>M5NXv@$jT00z1fXbZ(f?>Ic{~ysco!&*zJE8##RLQH;R#>A zhun!_$i59tT2HQV3<0B7LT7&8)z#7%3}w4RI0cgUJP6{ZV(3P9+zbri1W1|*PY|8s zCNM_17{bYoG>1pq+yoXq&mD3|^LhLNH$^Js1iL~g;e;}UP|gWAD}=?IuoMY6agvsC zg2PQt+yus9hdU(g z&$~m?KX~+83gMsFLXgM13gtac_)sBS;Dn0`;S)~y6bU$ElRo2wFWm%|>DTU%^bL>x zULjoKgrAV$U>tttlwXm8Q#$FtobZR6z*zp}4oR1Jv;iz+o}R!HR3ls=m^dK<2{`wY zA~~Uvo4`0WNrhEdwj?7(^Z08q9@oNHd~*!p+)!%4qg%NNEIQU5lG^a-cqHI#QL=JE zlAFNNx5p4p45bb{x+BY7{XbjG=xPvr0d-j7C#(AIDeEzuy|>-o4}&8F@zIIX)KSP;3lx>Nf^S(q;vz1 zp6VvB=xG?jS*0|cN6%vQM+%G2!FZfjO0#)`x5^$C)wc&(#M!
GtVLT^HQV2J2!c>KDqk~gsD3qC;kb?xAHA}NOA7c5u!{F8L=Y)d_;TcXiq!12s!cm2Aj1yi^2rqKND+=LNPB^6y zP9p*O-&v&KoLxG{lf2<3u-d=n4oUyy(eEmR_c-B0g>ZorE-HjiIN?);@EIq3=_WX& zuQ=sfq~MfZ`i>KRa1&T5esYJTpLz7J3gN$;@P|V9lM}8ega$CD0li`bk7p6a3Fgjd zf3r+2oDzjeaOy8LkgpEjXc-LTJqiaSEX=CnP9@M0i5`x4lB? zz>{=T2&tTqrV!FOArlF>03dbcgdT1JD`zivNb1d_uTu#9IANfR0QDclDOpOAp`0*W zA&lUJ(F$Px(TdU)7&9xI**>!8Reh7a1*EGDoN&Wf=waJ z<%9x-AaO#GLMY~hg$kjR6DkzKB2HL>1Y9JL9Jg@FayNw))Zq?ED|qy63gLE6xKkml z;e@*sf|C>OQ3&feK~@OWoIt^I@M7H0DGw@19^!;Yk$|fV(qo+Pq?^FXxyc=pHuLCh z3Sm1ZJf#qJal&4O@H7&j{~u5&f9FY_RS3^<4U&lSQKobWXg zaG^r_h7%m$yD6-oKe$8Ek39ZA3gH({_)Q`F&Ix}hgv*>@NOR{w;0gM7xI!>-LWDwy zv@i2CB^fqA?_`&xPi3aMiLcy-itUY@*isW@l9l)JZ7#1 z`M%>#Zr)X8`%mvE>f8iu-}WMoihS2AJg|9h_5JtND6C0~?p@Tl_q^li`JL3pH#w0NWvtNv-JOEs*d-{|GNYKJtriEoT(5`u^KLs(DYfTp#;K%d;i+ z=I8!Vp0)kNFFFzN{nU@#szo;sATIdF(@Wc+j-P2n4BQS87d0a8hKNRAxgyZ)T}M~E zNcy$Nbc@J0{&C&habNq#^>D|1>l-%&EA<~26}D|kc9H=!btg#1_bPGVPLdq?gBpfJ zBO`xO!ypb;x^5?F+al9L-Y#h-=%F^wj~WT&#}=~w@v}x8{p%^f>lclf*sk4Fw*Pe{ zKvQ*{v%h??Y``^8$;)2k0rJAqfk^({kKC)ZM9e_m5T}0RrV%Qx$KsraZ@FylT@1wTGwQBr;BT!{{DS@Mk zm}EE8h@(edCM+`66^Xk=2g!uUR$k!|*D9Sn&O3sReTGCtwpEF_&yb0ct-Zn{)wkRD zL@4?p-Ya4lZTku@S9=#7c8CC|togj;;vULh5pujE(H%70#lkFj1;X{P-{#7une> zJXGFu8>>x*iwqk_>;-8$aRG?dZ%#=OJ{SNXHpUDn5=yXDvD} zqcaelJamqs(-Aq`iBF%SvlX59(dms5h4^$UI+xIChO{pDGyCj*0} z_;eDTS?K&5o#)Z%fw8|##m9c=JcrI%biPHW8#<4olZFmUHvymepkqhp0y^)YGaa0D zbDZYsi^tOoNsyYI6X;1FpGSH^i0$k5p$T(H z+=gP(1}JPFeK1W}NV39kDoW4wF(`ZH7QUA}m|k>{!H}5k_-4`dkOa4jI{=Ao#15vp zcd`U*7jz6y;NCqok?IP%{soeTM|+OFKyn-6LL{EST>uc%^;<|!3WiZcQ>h5TV=LHt zAd9BUUnIk>by2a}?w2-fgi{P?n8Yatg8OB(4&2G;xIJXB!WI{KINKF3kx_28h>w!~ z;?tyGGdCy1N{N9|#^KnPsIWueIJ--)xCaSP_mOVK2&VG-v1dpYD&5FvS8Z_mt-Os2 z)!NoQsJinlm>Rsfa%DDmiS}dobrD z*=exOEwvX}%jV~n*b0|e3yRq7zS$LpJj-6R-TSIn=0geS+ zJERc5eN6WN1kP}>B&mk%?zB(5F`hH%X~-TybK{L|8?x9@hU{6ufF4gYrZ;Dl97FbU zWSQn-Ne%Ck4pA;<4ny{X^a?ObVrd^XWIv5*BVB1r>?N**`wiKz(ZN<@N1p3xL-u>L z%xX;I!4C}Czte42W9$&d=1)U*8UZ$qU2JmlZH2aSn~PNj$-WL_qujCcY;Z=Iz1W{* z=TTFFF@v+Uk?ciuK!P!a2N#p<71W+!?8SqtNcKH&%-I;9%-&s3vLE)!G^fy3oRj0? z{3yxZLjRLsOy=)yBiSct`$S`MCVTfqlKnQmYvM(!mL7!<&_}mn#0n5}HDWg$j!HDP z#RJ-pB^u+-s9mBBfw2x#=3uARyI^URpWnU{9la)H0hUngq`|nS%;&yq`m}S92jNU)` z13Gr2u@$|v$(R(K9uit1K2i|=fjn{#9exq?TcyXJIN#s!j z9kR*T-oy%)LMLo8HlyR7G=|f*Pa2zYYEOmQj+b%#M$jmjBNi}zGi$bk0CuArfoslX zV{7nkxy)eOblI2&p*JowxTCKaGaxkRiZQb>1F;*)o`)bN(2p-0n>VQ_$%kJ@&4H7% z<=9Q>lUIyGApK`okk@@p!xEvm_w@*ikHI4+&PHYI`{tZEtdHX-HLS%CtPFdlBfK>- zHLM+Y#o(D(dMI<4DFy&{B|LaCHSBi_Bzdu0SQ2<&bPH>XXZuIl!rIVt3yk3hJ9ZDd z1tnr*K1=Xwei$k~?A{{Mw2zD;)Yi_|1y2Vw9g5yTed$R__i= zY{U9N!_n=bs*UE_OKo|%pcCg5RqpKiA3>~~JEXIfcMD7Vg`5d$- z3_05OupH?6Jz=d(c;v;E6b5w`O4;yWSc=&dpoZ;X2@yO{;cQEPSP>R;aNypsT`hpq zcdvw5!E5qrSSo&>(DsY476&K18ummy5P$w0z5zICJP5>n2~3}jZl2u$WU6d=wX+Fc z2a4bQF~4L1eyqe_kBkg|E(KnHscU!wewV;_UhW$HO&=hBT^Jq*UPMtiB9~bdo`~NX zup|qL!dD@x-)#s-6eDSPygQC&y&E2P@Fp5=7z8o1-wwyNSpRl7cFR}a4#(Vncssm1 zcpcth-i&v`GaJa0n_-VRSj3eyb0eHNnocw-Zm>SSY6 zC-DB$*o4GRO-!tFjBjFU55YxESei#5#GC59(O*DQwW2GVn3|j2E%|j56Y7|2qD`n= z#zmX3x7`(O>IUA?XcH^c$I+&Q4prIGNqkB!L`ug5$>Iz=by(Yx?k$YKfU%r=>{C7_5B%81+Pm@gp!Fxb9p*}n> zo7xR#UAfGdz1oQKJ=6wYSS+#^R`8?mO!Ql^IHnMNoOybno!3qKFaER|4~-U*N(DQ zymXYcZHHs5veS;Ss;@p~N`x1-9W$YbzH*Gc{_8RJddzWCmtL%Tc0=~fIHX4mwJj=e zo$6;*D`s?7HP1LG>aE93oq1(4kC~FO@NXYCC2`97W2P80R@7-7O83k##e-Uc1Orc) zS}3(FI$_$e0E*Nq-8>Y$o6^l=z}t~-#%6do-HiA*%`jtc7?EMdZni4JJOI4o8Ro>+ ztZ?z!<)~gGOO;dFM(qO5`&u%{T!5u+rQYldLkg zYs4zpH2V}XZ9@k)4r{~Of7vQ?3jfZiH80k&Rb~?>@Kk{GR##2PZRWNU8~t=Qza|F_ zlos^y0p=Er(XhA7og1+s^-^{`X3~mIc+1?1#XSgdP>xsMVwJq~mN^B#U}E~L%RkL8 zqHg`qFJ>HmTK{TBJ(cyVxxJEP#job)u|p1sv7lme#8^Kg<@;Du1NkHZGeT=0Y zFLq11C&tp8J{n^Q55v=TbXSZe4wS8qTm_({!IA-y! zGsI8cYe~cM-M*J4e`YU3;>*1j)N`>2^jv;kCx~6G`_F1#I9Px>6|l;F5Di`ym3xWL2*I3 z+jOSmpNvQ&_hwMXlM${l%JU?h!&UQ9E0M8siC z_Qr_b-27fdvfrdvo{VTs*Y1dj;Qj1vlKnIG`L>KL{d0Rn6uxwEBWK%aQ$%MBU$-fu zJNgSZMRY>{kxe}QwM`MdIHP=H_DNLe@r+UH9H@N`e0pmubWH_L8MA-D_%xo;y3G+0 zbmr!WrpV2{Iie5x+c&$pbq&j&9|oyYdFrq&5iyt`ZcBt~8ghGBwv+DN91*)=YlMZa z*b>nQDO)4Dp?}xbh&~*gufwu`W(?^U zTO*od+?A~n{m~z=E#f-#mu};w{QEYJ#W&#dOtQkWv%?{iX7v1CW3z)pwnwaO18*EW z|8hiEGrk&rCSt_FS^F&VfEL)|jmvE1Ir#-ewqpD|j#+h0ezag8&-l@j6pKev%bbl$ XmcUHGR$5|*&%$ig+#@6--c delta 102217 zcmd6Q2Ygh;_CI%avxNWwfdHwS&=N`tz4snMmnwviEJ-dQ2`LDOEOvs6f;TdvNVg+J zR4hml+f(%Ev-^~XujsSO^PxX0|8r(`@7;2Dler6dfB59io$t&&GxMD@XU@zm`^>hk zZ*A{tULSQQIcz>jr0gRvk}26zw$i50P>9Uv^Qc+Mer(|VnDW5jBT=MykWw=87NvYt zit_!)L9LqSSCnKHlvg_0q0a4~pLQc{sG}Qc)~3#Vg_>GXQsFEuDRU}+jOnJNjPED4 zruk{4wW-cMPFXQJk;dFi(jk&XQ%;a9sg9m(D#a^%#tu>DjPKL7O;tgOv#h|Gxuj%C zX-RoeWqw8RY9(dNP-!T;_@s+CuBdaz)KujcIWwzks>>@&@=L3fjBz94tXKv3t8=%& zvy~-lGAr||s-2Z}O8icTlD9KeDIYyt8NM@7$-9u++#QX%N(!&WKP7p55CSl4R@pTwPU=9XC6f-ybz@Vd1k7q(Qd3k_ z=kBYV9~n=xW|O$sI(JJi69pyJ`PC)mWp(aBtaRnf=p<$Ggb}V+Oih}|@4~@tVy(vZ zXH-^I*WFwHnG*$Fm>c;BHk>UQ$+_x2&?H zsHCh&tILa8Ugh_RJz74a#qsPHW#FXv0s8_#h`O6Y50n(-gRW@8js@gX+>??mNT&Ru za(Gg_;kT7#bp z$fd+hj&J)=0EktKL&c4cW};ta=}N`q&e4ylS-UH{Cbvudvo~Ix?6$Mv!OCK~_dLJs z!^!E<2fW$jzDo1l4$&|9#ItkTH+#YxPlF6s=8lg)=mTIghvQ)cRxF9G7(tQ}>Z(yO zPv~Y-&gb@u#a;wy{ug&tPAyNQjvQi9u9_09pT|KDA15geCjSjx`B;t4bj4|sO#hq* zqLQatV&Bxwsa%}WCH_&}B;J~=Ho-sr5EuJwG@gF>6#^FaiV?+OEJY$3YcRXVwy$MuBW@Fi8 zcERb>m|{VY4dAAD#>Q_8JY&PN6`rv%*#^(psB4F3Y|zEy85?fNc*e$73ZAj?(+SVm zpy`TdY9%8$k~rq$!{>^^MB zL_9l!XOr=a>Eu*AV>&kj&zOo`iDwUw#Ef(ClxfQXJY&kS2+x=<NZ*{`(I>mfKRZ|x_@9F2j&lU2ddz* zq>uZvR6Z3p1?0?=0}xSmk7}Q~(fYA%FiZEHnIY4I&vTehn|Rp_^H6r#v*Q!&8?9Gm zj%G2K;UV@%--#?%HYx>Tzuh#I#fI%n>I|_RGcgwAAZ)ZQ%$dtlxU

$}lbBh>xFx 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 QUb<|PeS*2BW=Y2X14H)N3jhEB diff --git a/docs/build/doctrees/index.doctree b/docs/build/doctrees/index.doctree index 0c35fbfd3898795f7a744ae47ab7db3416c508bf..b15c2e1e1e03087d8deb9b49ffc4324e1c1a3611 100644 GIT binary patch delta 1845 zcmZXVZETZO6vsKY?b!R)y_B`v`ntZY?beoc>%w@M(@bP;MHUieBLxCp%03{bi9t6R z*n}oCA)dk_>SFYRm`nwpkPuupNf68o_!2*uz=BhTV#KK7gIP53+}jS?`sF-*{`Y@= z=iKKx&+Ygzxcidki00&uu5+3NwJO*Wz$LX`Uh6a;s)N2@JASS?QYU^ir}*mO6xU7^ z2mQg2FCa8!xS$Q##3Y_5nk-sbmv^P9L~1-WnsRX+pT<9RL0l|5tP1)9xU*a*3)~1B z@nm@qm;I^mwa!J=kd3hi5HnD8as(X|c4+-KH^7m1S(N-2m&z5YkxW{rTD*@C=sg z%rGcb8xbSeZLrn%3w(N8Lfj&5X{Yhsu>t%*=YaiqLuY~mGOLLU&*x_eF(+%^nmuq- z`t7tdCj4u%st9q#PtV4PLvYavc&@AXx~6YLAXtA_P3FVmXIaWy|ph&gGm z)OWMnfOGYouqe|! z`=F;a)3^bu(9-0?etn^)MQUNA7Y1;zaRi+Bt+5Zhv>pIAZZ+vC9xx5ShKzFG6lQKF zr^io)?HD!Z%!LrGENd>N%rC=EG*~$7k%%Z>utZoijR=r?C?6rj9K@LQeK>|z+v9Lt zA`-H%1odUW>$YuhTByYdsv6%--*p5pTespzO~ovct`a2RczzWj=2Y?9x4|WR&E5}l zvdRo<93eK7Myw_G#e9Sia}bK7m)&OgkK<{$BN%Lv;i%IkF7&zKL5CU^@*!>c5Th#w zYD~JKtVo3xtqV`s3ZVcS+&vVd?odI9GMEZ?nXTC$q)>C3`QANA@9tppan|yP<3W#S z2t35;WX}IF+VdFay>VcJkFq0p#utT%?4pCbeUgy@GRd&7t1%oP)R#kA|KEJsqe$>~fm^u4=V5Hv6y#d0uxbk@jI|{gKqz z9TDz|@QVn)itw8Vzl-pP2!Dz2K!vwDMzr72?@SLp^c=oX;j`gT;a5V{#b)tTcsq0} z_rsSMJf@skx1{pcswugO0>8$u@Hsvc`&8gAilB&aR)jL)D#p(?*7S;mB)^vAb4h7U mN?TG|l5wu5|EV<3OT0lo!{3rHJ}*gpIaVxKvx;ZacK8pwNdmV3 delta 3192 zcmb_eYfM{Z7~Xfr}Dgr277bO^?E zICo)oG4886vqYmaCPqv&btY~hnLnIHqd$x@YBXLloMwL(HJJTbeBaXxE$r8_guL{; z-}^l8^?T3xZ{;BEED*VxwWX1hS zR+g}Kcsu;|D`PIIF^NXRz?0&zL_=YEK#Hm% zB}~DG+ed>UEZBWw0wl=D2VCkY`EEHgLR1(7~oQoO_!Jmq!gCi0hjA?XGq5&}~ z4aG+2SV&`OM^Pmh3&b__5K|>L-OHq?L`U^-0H7+P_!L&6KryVks2C2?5its}sbiwX zRH_WofD)7_Fhl$rRU%qwG&CUv>A0l1Y2OeXS7LN11UNA~o?(fMNTMpys1#A68r9-V z8qMZ4&N}zQUqEWP!j6e5jYWcB8l;-S-z$Em=QetfJd&JDK9h8^N;b`Z zSzhHZXSYi0)4!i%jmo-l^RQ7M_YH6~Gn7a|%;Cj7TGVaXV4VwbT0&{0dGNW-h4 zC3&(nJs75VqU&~tH=S)2&X=tp5=f7JyFS|OnTwGWSq&_g)$`|t7bn>xvN|xR2ZL;? z><0|`$AlG9hsz!gNWtWGlF6YgLEL$joaVlo4sNzg)WX`zbGB@LE#dNe%_17)V!|VK z*Gdnol#Q_1(mh~K*1EkqwZVFll*<)4^)A-B3o7;*zq&MFkXIwpS)Geet^>nNWpxmz zrOuL?JYqg$vGdC%E`#i!_u7%8*S*?P-OIX&(1!+hTjX9mt(3R$>E#}>h5xktF<~Db zdEsH`u4!Ql;h)s4F;lQXBEGYz?kyT$R-PdpesWMBww{H)Xo{C6OZN6-B zB8xLM0`559RMk*(6hSR|WT-rhk1(dOLHQWJP}b~tW1iH~D=8z&a7fMPJe%We0{H6- zIZ;`_Ik6%joX=sJ;rJuOl;y>N%EN@mTN}7iURpj`7@=N;7s}rhzRR*S!lu)UlL`D; z0AvT96=6l3kj(LweI>e4a!r9-$>>G=Y*jaTAj4^4CZ_|MC2{A9JC96+^I6o4LI8jbw78auD8DFe%kb^anB(Dg4$ z3AIlEBv;3`Yn~=Ab4M*BXLL8G`AqF@avCVs3du$Aj)m}}tIv`Pyv@FqT-4z+dXzKi zC@zhH_r%SWjv>Y4!;=13%($Lg&j`{Y8F2R2UYv9km5K%?&cy06YU^6LMI) z4VjvI_(Kg|-rr~?-8$brfLynT548n+zc#)CO~SaIZ;Fv2oimW-+{Wvg`j+NCAmjir zuNC$$V!d|(Ys%abBP4-j;k*zbaZLn4M*)0{9x;zs>g8}=5KFi6ZulJ zt@jEm&OuZ-Dy${FnB{HU?dpL>l4e(KbDm3`buAOfIdo@Um*GlXb3>J{0A9s~-IL+n zm^tRH-rll>uLCI zyD`OPkL&m;9XqAtree&7mgtMQz|mfCbf%8|&VEX}!Ix*+4Xz2@jXaksUH>TgAJ-h% A_y7O^ diff --git a/docs/build/doctrees/usage/tutorials/functional/2-1-directional-semivariogram.doctree b/docs/build/doctrees/usage/tutorials/functional/2-1-directional-semivariogram.doctree index 16cc4471bef356866ae46df7f4eef45ad8e4f1af..f2d6329249868ebe139d95fe459f28f0a7f909d8 100644 GIT binary patch delta 161 zcmezTo%!>3<_)`Y6->>N4Ga>^OidCkO-)jalai9mQ%nsEk}Q%;lFSU!Qa9hqea=W& V)x&&eB2>8)o@pj*mciG3<_)`Y6^xCHQj#n!OcG5K6HU?#lM*e{jDQ@|G-H!Q%M{Dx&9`!&GZI$y UFyEO7RW5~RnhBd_@bxeo09A7}F8}}l diff --git a/docs/build/html/.buildinfo b/docs/build/html/.buildinfo index e6f4f87b..b0029097 100644 --- a/docs/build/html/.buildinfo +++ b/docs/build/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file records the configuration used when building these files. When it is not found, a full rebuild will be done. -config: a6474bb95393ed18c268cf382762884a +config: 914669cf9f5b5b2a2f731c9385135a15 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/build/html/.buildinfo.bak b/docs/build/html/.buildinfo.bak new file mode 100644 index 00000000..e6f4f87b --- /dev/null +++ b/docs/build/html/.buildinfo.bak @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file records the configuration used when building these files. When it is not found, a full rebuild will be done. +config: a6474bb95393ed18c268cf382762884a +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/build/html/_modules/index.html b/docs/build/html/_modules/index.html index 16e71a14..ce611db9 100644 --- a/docs/build/html/_modules/index.html +++ b/docs/build/html/_modules/index.html @@ -7,7 +7,7 @@ - Overview: module code — pyinterpolate 1.1.0 documentation + Overview: module code — pyinterpolate 1.2.0 documentation @@ -38,7 +38,7 @@ - + @@ -111,7 +111,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/_modules/pyinterpolate/core/data_models/blocks.html b/docs/build/html/_modules/pyinterpolate/core/data_models/blocks.html index b81e99ed..a2bd404f 100644 --- a/docs/build/html/_modules/pyinterpolate/core/data_models/blocks.html +++ b/docs/build/html/_modules/pyinterpolate/core/data_models/blocks.html @@ -7,7 +7,7 @@ - pyinterpolate.core.data_models.blocks — pyinterpolate 1.1.0 documentation + pyinterpolate.core.data_models.blocks — pyinterpolate 1.2.0 documentation @@ -38,7 +38,7 @@ - + @@ -111,7 +111,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

@@ -441,8 +441,7 @@

Source code for pyinterpolate.core.data_models.blocks

import geopandas as gpd import numpy as np import pandas as pd - -from shapely.geometry import Polygon +from shapely import MultiPolygon from pyinterpolate.distance.angular import calc_angles from pyinterpolate.distance.point import point_distance @@ -645,10 +644,17 @@

Source code for pyinterpolate.core.data_models.blocks

self.ds = ds.copy(deep=True) else: if value_column_name is None: - value_column_name = 'values' - self.ds = join_any_geometry_and_values(geometry=geometries, - values=values, - values_column_name=value_column_name) + value_column_name = 'block_value' + self.ds = join_any_geometry_and_values( + geometry=geometries, + values=values, + values_column_name=value_column_name + ) + if index_column_name is None: + index_column_name = 'block_index' + + self.ds.index.name = index_column_name + self.ds.reset_index(inplace=True) self.value_column_name = value_column_name self.index_column_name = index_column_name @@ -1169,7 +1175,7 @@

Source code for pyinterpolate.core.data_models.blocks

present. """ ds = geometries.apply( - lambda x: x if isinstance(x, Polygon) else largest_geometry(x) + lambda x: largest_geometry(x) if isinstance(x, MultiPolygon) else x ) return ds
diff --git a/docs/build/html/_sources/index.rst.txt b/docs/build/html/_sources/index.rst.txt index 7eb99e48..715b96d5 100644 --- a/docs/build/html/_sources/index.rst.txt +++ b/docs/build/html/_sources/index.rst.txt @@ -10,17 +10,16 @@ Pyinterpolate :width: 400 :alt: Pyinterpolate Logo -**version 1.1.0** +**version 1.2.1** ----------------- .. note:: - The last documentation update: *2025-11-08* + The last documentation update: *2025-12-26* Important notice ................ The package was updated to version 1.0 in June 2025. There are breaking API changes, so please, refer to the changelog, to know more about the changes. -Right now, the package in version 1.0.0 is in the **beta** stage, which means that it is stable but be careful with the production use. There might be some minor bugs, and large swaths of code are not optimized yet. If you find any bugs, please report them in the `Github issue tracker `_. Citation -------- diff --git a/docs/build/html/_static/documentation_options.js b/docs/build/html/_static/documentation_options.js index c891ba62..3f423940 100644 --- a/docs/build/html/_static/documentation_options.js +++ b/docs/build/html/_static/documentation_options.js @@ -1,5 +1,5 @@ const DOCUMENTATION_OPTIONS = { - VERSION: '1.1.0', + VERSION: '1.2.0', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/build/html/api/api.html b/docs/build/html/api/api.html index 3aff83b9..046b13b6 100644 --- a/docs/build/html/api/api.html +++ b/docs/build/html/api/api.html @@ -8,7 +8,7 @@ - API — pyinterpolate 1.1.0 documentation + API — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -116,7 +116,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/api/changes.html b/docs/build/html/api/changes.html index bbd74622..dfd86b22 100644 --- a/docs/build/html/api/changes.html +++ b/docs/build/html/api/changes.html @@ -8,7 +8,7 @@ - Changes between version 0.x and 1.x — pyinterpolate 1.1.0 documentation + Changes between version 0.x and 1.x — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -114,7 +114,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/api/core/core.html b/docs/build/html/api/core/core.html index f42250b6..eada43aa 100644 --- a/docs/build/html/api/core/core.html +++ b/docs/build/html/api/core/core.html @@ -8,7 +8,7 @@ - Core data structures — pyinterpolate 1.1.0 documentation + Core data structures — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -114,7 +114,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/api/core/pipelines.html b/docs/build/html/api/core/pipelines.html index 3219e136..a36e34fb 100644 --- a/docs/build/html/api/core/pipelines.html +++ b/docs/build/html/api/core/pipelines.html @@ -8,7 +8,7 @@ - Pipelines — pyinterpolate 1.1.0 documentation + Pipelines — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -114,7 +114,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/api/distance/distance.html b/docs/build/html/api/distance/distance.html index 6a7963e8..3890e0aa 100644 --- a/docs/build/html/api/distance/distance.html +++ b/docs/build/html/api/distance/distance.html @@ -8,7 +8,7 @@ - Distance — pyinterpolate 1.1.0 documentation + Distance — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -114,7 +114,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/api/evaluate/evaluate.html b/docs/build/html/api/evaluate/evaluate.html index f67b1443..3d619b43 100644 --- a/docs/build/html/api/evaluate/evaluate.html +++ b/docs/build/html/api/evaluate/evaluate.html @@ -8,7 +8,7 @@ - Models evaluation — pyinterpolate 1.1.0 documentation + Models evaluation — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -116,7 +116,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/api/idw/idw.html b/docs/build/html/api/idw/idw.html index d345036d..80cd751f 100644 --- a/docs/build/html/api/idw/idw.html +++ b/docs/build/html/api/idw/idw.html @@ -8,7 +8,7 @@ - Inverse Distance Weighting (IDW) — pyinterpolate 1.1.0 documentation + Inverse Distance Weighting (IDW) — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -114,7 +114,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/api/kriging/block_kriging.html b/docs/build/html/api/kriging/block_kriging.html index a51a6500..58d64fb2 100644 --- a/docs/build/html/api/kriging/block_kriging.html +++ b/docs/build/html/api/kriging/block_kriging.html @@ -8,7 +8,7 @@ - Block and Poisson Kriging — pyinterpolate 1.1.0 documentation + Block and Poisson Kriging — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -114,7 +114,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/api/kriging/point_kriging.html b/docs/build/html/api/kriging/point_kriging.html index 550e6d6c..0db3910f 100644 --- a/docs/build/html/api/kriging/point_kriging.html +++ b/docs/build/html/api/kriging/point_kriging.html @@ -8,7 +8,7 @@ - Point Kriging — pyinterpolate 1.1.0 documentation + Point Kriging — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -114,7 +114,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/api/semivariogram/deconvolution.html b/docs/build/html/api/semivariogram/deconvolution.html index 7cda479d..97e0c35d 100644 --- a/docs/build/html/api/semivariogram/deconvolution.html +++ b/docs/build/html/api/semivariogram/deconvolution.html @@ -8,7 +8,7 @@ - Semivariogram Deconvolution — pyinterpolate 1.1.0 documentation + Semivariogram Deconvolution — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -116,7 +116,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/api/semivariogram/experimental.html b/docs/build/html/api/semivariogram/experimental.html index 438093bc..363c8383 100644 --- a/docs/build/html/api/semivariogram/experimental.html +++ b/docs/build/html/api/semivariogram/experimental.html @@ -8,7 +8,7 @@ - Experimental Semivariance and Covariance — pyinterpolate 1.1.0 documentation + Experimental Semivariance and Covariance — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -116,7 +116,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/api/semivariogram/indicator.html b/docs/build/html/api/semivariogram/indicator.html index 2c049194..90ce2e47 100644 --- a/docs/build/html/api/semivariogram/indicator.html +++ b/docs/build/html/api/semivariogram/indicator.html @@ -8,7 +8,7 @@ - Indicator Semivariogram — pyinterpolate 1.1.0 documentation + Indicator Semivariogram — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -114,7 +114,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/api/semivariogram/theoretical.html b/docs/build/html/api/semivariogram/theoretical.html index 458f930d..50d068e6 100644 --- a/docs/build/html/api/semivariogram/theoretical.html +++ b/docs/build/html/api/semivariogram/theoretical.html @@ -8,7 +8,7 @@ - Theoretical Semivariogram — pyinterpolate 1.1.0 documentation + Theoretical Semivariogram — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -114,7 +114,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/api/viz/raster.html b/docs/build/html/api/viz/raster.html index 10e7056f..19d4d723 100644 --- a/docs/build/html/api/viz/raster.html +++ b/docs/build/html/api/viz/raster.html @@ -8,7 +8,7 @@ - Visualization — pyinterpolate 1.1.0 documentation + Visualization — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -114,7 +114,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/community/community.html b/docs/build/html/community/community.html index 7160208c..ef457ebb 100644 --- a/docs/build/html/community/community.html +++ b/docs/build/html/community/community.html @@ -8,7 +8,7 @@ - Community — pyinterpolate 1.1.0 documentation + Community — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -114,7 +114,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/community/community/contributors.html b/docs/build/html/community/community/contributors.html index 3081e063..682f4ad4 100644 --- a/docs/build/html/community/community/contributors.html +++ b/docs/build/html/community/community/contributors.html @@ -8,7 +8,7 @@ - Contributors — pyinterpolate 1.1.0 documentation + Contributors — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -114,7 +114,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/community/community/forum.html b/docs/build/html/community/community/forum.html index 09efaf3c..d400ff71 100644 --- a/docs/build/html/community/community/forum.html +++ b/docs/build/html/community/community/forum.html @@ -8,7 +8,7 @@ - Network — pyinterpolate 1.1.0 documentation + Network — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -114,7 +114,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/community/community/use_cases.html b/docs/build/html/community/community/use_cases.html index c46bd66e..fb1f8c5d 100644 --- a/docs/build/html/community/community/use_cases.html +++ b/docs/build/html/community/community/use_cases.html @@ -8,7 +8,7 @@ - Use Cases — pyinterpolate 1.1.0 documentation + Use Cases — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -114,7 +114,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/contributor/development.html b/docs/build/html/contributor/development.html index 708f9bb8..a4afeb69 100644 --- a/docs/build/html/contributor/development.html +++ b/docs/build/html/contributor/development.html @@ -8,7 +8,7 @@ - Development — pyinterpolate 1.1.0 documentation + Development — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -114,7 +114,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/contributor/development/bugs.html b/docs/build/html/contributor/development/bugs.html index 3cc5791b..35bd2df1 100644 --- a/docs/build/html/contributor/development/bugs.html +++ b/docs/build/html/contributor/development/bugs.html @@ -8,7 +8,7 @@ - Known Bugs — pyinterpolate 1.1.0 documentation + Known Bugs — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -113,7 +113,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/contributor/development/development.html b/docs/build/html/contributor/development/development.html index edd43328..a5da99cf 100644 --- a/docs/build/html/contributor/development/development.html +++ b/docs/build/html/contributor/development/development.html @@ -8,7 +8,7 @@ - Development — pyinterpolate 1.1.0 documentation + Development — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -114,7 +114,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/contributor/development/package.html b/docs/build/html/contributor/development/package.html index fd0436c3..11aada72 100644 --- a/docs/build/html/contributor/development/package.html +++ b/docs/build/html/contributor/development/package.html @@ -8,7 +8,7 @@ - Package structure — pyinterpolate 1.1.0 documentation + Package structure — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -114,7 +114,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/contributor/development/requirements.html b/docs/build/html/contributor/development/requirements.html index 6d883748..57882cff 100644 --- a/docs/build/html/contributor/development/requirements.html +++ b/docs/build/html/contributor/development/requirements.html @@ -8,7 +8,7 @@ - Requirements and dependencies (version >= 1) — pyinterpolate 1.1.0 documentation + Requirements and dependencies (version >= 1) — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -114,7 +114,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/contributor/development/tests_and_contribution.html b/docs/build/html/contributor/development/tests_and_contribution.html index 793b0460..460eb1a2 100644 --- a/docs/build/html/contributor/development/tests_and_contribution.html +++ b/docs/build/html/contributor/development/tests_and_contribution.html @@ -8,7 +8,7 @@ - Tests and contribution — pyinterpolate 1.1.0 documentation + Tests and contribution — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -114,7 +114,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/genindex.html b/docs/build/html/genindex.html index f05ef916..05aa7759 100644 --- a/docs/build/html/genindex.html +++ b/docs/build/html/genindex.html @@ -7,7 +7,7 @@ - Index — pyinterpolate 1.1.0 documentation + Index — pyinterpolate 1.2.0 documentation @@ -38,7 +38,7 @@ - + @@ -111,7 +111,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

diff --git a/docs/build/html/index.html b/docs/build/html/index.html index 200d81c3..48e41bcd 100644 --- a/docs/build/html/index.html +++ b/docs/build/html/index.html @@ -8,7 +8,7 @@ - Pyinterpolate — pyinterpolate 1.1.0 documentation + Pyinterpolate — pyinterpolate 1.2.0 documentation @@ -39,7 +39,7 @@ - + @@ -115,7 +115,7 @@ -

pyinterpolate 1.1.0 documentation

+

pyinterpolate 1.2.0 documentation

@@ -406,16 +406,15 @@

Pyinterpolate#

Pyinterpolate Logo -
-

version 1.1.0#

+
+

version 1.2.1#

Note

-

The last documentation update: 2025-11-08

+

The last documentation update: 2025-12-26

Important notice#

-

The package was updated to version 1.0 in June 2025. There are breaking API changes, so please, refer to the changelog, to know more about the changes. -Right now, the package in version 1.0.0 is in the beta stage, which means that it is stable but be careful with the production use. There might be some minor bugs, and large swaths of code are not optimized yet. If you find any bugs, please report them in the Github issue tracker.

+

The package was updated to version 1.0 in June 2025. There are breaking API changes, so please, refer to the changelog, to know more about the changes.

@@ -511,7 +510,7 @@

Contents