From 5b2d3f9e0dd1728aeadf56a45a99768707f23e79 Mon Sep 17 00:00:00 2001 From: piconti Date: Thu, 30 May 2024 17:00:11 +0200 Subject: [PATCH] Fix the visual appearance of lists in doc --- docs/_build/doctrees/environment.pickle | Bin 1750681 -> 1752672 bytes docs/_build/doctrees/versioning.doctree | Bin 701659 -> 703259 bytes docs/_build/html/_sources/versioning.rst.txt | 2 +- docs/_build/html/index.html | 2 +- docs/_build/html/searchindex.js | 2 +- docs/_build/html/versioning.html | 24 +++++++++++-------- docs/versioning.rst | 2 +- impresso_commons/versioning/data_manifest.py | 17 ++++++------- 8 files changed, 27 insertions(+), 22 deletions(-) diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle index 9864579101f0e8b9050ff7d4b336f7d5bedd6a79..91765b4385dcf96bf7886cf0a3d2adb6d5e2b7a7 100644 GIT binary patch delta 95705 zcmaf6cVJY-^XF{{fz*3f0)&>(ArKOJhft(L0!S|jO^67giS!PFh=BuEL?PHwX|`BU zz}^MB*x+kdM6oLfCuVX3v^2>#FUWqZiDdF>{_jw^2i@k^j0zwXLRp-KbvG zW>FO?Y)%XTX3U*8e|tf?|5T$IzDBrL(1QLop?{h5uc_Z^?1>|+f>!h|{h>OI6Qgno zbW_agP4Tr4RIkL~n_`~YA*H5#@3qfuzSo#bm8++6i3n|q=@?&^OX*y?_p?T|5BQg- z_w#RRKF!MYUufRD%7RISb7xPUI&YqTc4msd=z$ph$u27~YWwDV+#c#5*xdFvZ#Eb` z+t<#E+n)ICMFrIEP1_r99s-bF{&N`#{%y@CShED7MQ#5VE$ZkquUOHbQlIe(Gotm= z_gQiNP3;@|e`)hI3(qT}9q#kTPC?HR3 z07XEj2K%oVysm(z-qd4UTmL| zjC-uXjr_gG+9fx>VKq$TtLHwpcK<+E8wy`hC55j<{auesOU_4aSaQB%$&&NYb1v)4 zb7T8%XnnpC{$lV~xuo^^DvRA#g+~s>&dbm#zr@)kty;t$Zz`7+$HZQ&W~DzmFSe1- zYOE(*A6v^x)!kl)>>eP#s(sbr`@oDsG* zUJvl&&wn;~$LEOy^~J3*RrHhnV_hY=R^o+r)?D4QL*gqsv18(GB@c8=9HT71Uep1A z3%Vt?))zY@y7h^kF)5{LOZs+A%vSoZ=t?df=DYT9*gyeoRt1w0M?(-2pR{(7KmnMzI7QwF()&~NWyu66X=ez0pW{iX~Dp)WTl z*0A~p5i(rc3y$H%7{9%7!Rz?loIYlPP1NR7IzHExr>`62nxor9LGwFnB3a8L;92Tr!`f#(6MLvr4%V!fbI(N2urlCHy!tGU? zU(w5lxvtdNgI)9W+{LjeXgg4`G)9E;D%E_bq8n-J!^DwHu5zr9v-E|@t}I>DKhY+V z_ANbvBqXqP&@zYOhyb_Eph$E_Bt@>38@R zs&;5FC26E;-AM1f8c!UO?x}qvT&vX3MtaVC_eeFkkv?%CsRsSpUnTX@c~hZ(S1 zRa4(cYYOq!#lP~SOlyXoIK`DgU|a2^6l<_Pp66;KKX@faxw_IV$ZI5Ch){?6HqzN| zds^u4N4s{ay{5_Crb+yw$pZDTY3&Fhc2!Fo>9f}-HMbs>76G+ylDDmTO`sH&H@P!} z(T@%4hvBH722syW^R`pJhETJfs@g&qpN?%{MeE$FT%(j~tdD$?)FsfWifOF#rns6@ zGZ)4uwzX;r7>eBQ-O_LVNz+yHU9A|B`h9bFzcDs4bn+zEUaKFG7_3)5sbW>{#w>2D zH`UeH`IySFCP)ioBN)jui~xiBZ(S>3R19?AS}%2LB2cdnp;G^Kud7`{bly>EJ|uxd zjIFOLbhXrnZ&L|D85{}WvkYDgHq9~+-gVwsE5-D~fB3gbdcX`p(Satr#IMaou5 z0BxC+t^NhWhN&Z8Bu=&_hnP}%P3R5krvI7a8fINbH-?kEa-%%W^^lw09zAH3tB#uA zM4xJb*JC~b)X;|;xLR6Ug21P$BxmTAyDCNN?t47(L5zIuuHnE))j8+AZvEC_muJUG zPY-H^5mRsT*g>2l>B-fBlfS^#)_Nk?z>(gbt_%`2zlo*Ku8t=d;)Ea2@mt(U;Be=g zP+oIPm(i_Ymp}Aolj`tOi=X|HR6luXBPi^LDnXC`)&y4%%au-RX!p^1zb4Hnskg}W zgJmV^vuj)}{U?uhRRxNSuv#bVG*UEq9T)IkYs*k9oHdZUDnn1-l1&M8}Y@N1V ziq&)&^+!WK^7^IzD-R;w7YIz!4T4)z`jp{*^pl1iDT1~YziU3x-3arB+mLD)IKP@by z$Yfs=vM4gkg*Qa^wmxO7ou^|a3bUsT?9U8qoz^SY!}3%}*I7N?dzw z{^M<{uios+*F}rsS_O%m>fq|5Ov9?JfJZ%Gx~zJolND|$y$(PPHAGQHw>zo4bbWT3 zZ$428^fvqUq}=4#rg)fdlX>p?IR3puS2e+QT2f72R3)jKT9K|#ElHdcdIZ)IedInE zsnj_!HOfO@wJfowiUyfy>@0n9SzTB2Hs+H7T>H6eK_<4U7xe_c@g6@zT(rO!Am}86~ZirQ) zKiUSB4S;~b_B@&%XfI0IGqkkd@48F9Z%9quj%V|klhphAx9zU21P~zQ4w0&4NR?dJ z;ri3kU)&0{y7CDt)&UYHAb*g&+UqwzkB&{gi&%*e_oH}JRlKV#pWb&DOoQvQO0n_o zW`GMmj9h!V{(G0}Ln~82*m^W;Cf1`F)sgjpfZS0HpjlBKW%bb6w~M)U_aS0gi4`hb zU(lRh+r8;}->}453KYmBz~~SL6=6-rS+j+}Od`-#jR6oWuzODVMA#4r8#;4xl^Vq%kiv2doI zDu*dhU_1FXV<{>I?d0b|=}b7KFUzOIGP)R~1e-bBiq~7`*)??WzKUI}D*DJF^ogxz zKw5D9%M>{{AuFo=_Xn&nYPf-{5Jki9I6T8pE8WUyrC0f_@G~(2WaBK?{8U!$cjZ_C z;nGvt8~#+-K-ZHxHqh>7Vi=N|iGkiAd=(u|>=M70cnFNt+-y%9-TVR9EI2^Sx@&8t z_PV%=inewT|2@>&=0Q?yRv&SYdax9!oc?j$tXBjiZNOxfx#|FpM0(Pm3GhK2%Lx_^ivwsikA4_Z36PIY0r z_307U#N^nF0B9UtF=$){gO=R#pi5aQB}1l2KiyKTqAt45s-&vo{=%v?wdY~iODL3l z@~~^HrP^iiY{1i&=s0yF!1uoEnyRamxRw*HRg_f2U%aHLextnKkiDk)Iw$?OLu?7>RfFEwGyF*u0@?c_f(2@-B#73XFlnw zrQ05d*@h`kE*oCYdDmT2H$CclMD5Pd*)3e-mCn#-XW0WVY2Np|E7|{g-$CjjxfOLN zLrkvs?dU)j=B_}pV%T~ z53Nf=zh(=ee<_^)J%dN6HiBHHU90eU*HRTl1%^~^QsD3kS+?&YZhgE~!6uXCbK zGpOqgD#{_$WdFor{ncKBzFW`_IMH`Ay3hZ}@Kp7rA%Qw4i9=V8Q12KLCz*u4=~Te` zIcb{z$>5?)xXO>GL3Y2KC(4F9H-ilK8A5i(zNtii+#E7yLyPbiJV9f8;Gx zuZVxF0B8h-joo2rjO=>i8?Gxz0(dX^}iJ)GQ`CgYy2#F_Jb@no`}pzTw5 zUwUWKP#CFeUZc8bS2sIHZ#n5oR0gKx&bJUrQNzI)CgPr9K~ly|2$1UVj_YqVsT7p) z004y-^iLuhd^bOR58muLZaj;9;Z>RX;7^{NI`vCetgiiY^;kXf16Q89IaA))?V0*S zyxm6Kohhy%%H(9KhvmMtUH3fgYM@ZPs-~TvyoxxDczyl2M_$)bpgv=dRS?#=k6iVw zxAdxyT=g2i4U|$3%pdHram1Eq>Qg=J$;r#hZUAbsp8xpVrpceveO8fQ&=u>wFEUy0 zksL03?79>tkJpRbm38M&U8B`M4x#*&sSB!mStxP(%}*eisIL*Odi66`AIqiB{suLadjA9La=B%qv@?T{zAD1Q4`BkJ-nFnye@6kHz zQ&&n1kMaIl`m_H*QUkKekW?Hh!-m=KMpD0*-B?gkV+oNZHIA-WQsc6mlDbMi`USj9 z=kVF`B}~Es>JrbStT`p4zj9Tvtm~!IYmHELQn8i4aC*8z70*iUWC&}mKK~7#{aPv+ zsm!6~BgV`cBbAxJHe)95g3G4|{$9OujJ)~J=%(Mf>Na{7*rkTg8Y1a@_h#v|zg$z2 zXO-PlP$qBFeU`~Pbj31xCtM~w&y^NQyk7oC^~(C(ISh{54@&ux0pg8S@LK<<8*(Z4;-v{puQ~rnV$~ z$12Cl*LFpFAEFB>ar)qIu8Hb8BbWItMcJ%3azUBpvfapKzTWi*lnts$*?`Wz%C<+% zLy`2$I6z~pINqRNUDYe`8}y)l|4+O?50xd5dDI=JKqj;#+u(`W5yjze|EfhpX(D2p z3JT=epg^7r3go#6fgJqXb$^&ZiZ8lWt4|!V_>g4bDY@&CE6P$o89AIYa`@NC0cC!N z;&pz!J;6GsTVHn7SEyw%d?>tqZ^ZD9hyiML$3Qz%HEp$Hxt-BCy;T`w;rqz0zt@tr zto2@yWU#xPKtP^%z^Pi#YGM@k7D0`T7C9w|A>ZXJ)2(g4L&Zo+b)kiDZ z)2!*zxheX1yiIXLz>5Z%(n@;2HUMz2lAVsAF91Y?Sh;#mqV1tTSd3ju4FtT=8L!9K z^)a9LImWKn_>Qt9Fq!(|eE5S~i3A1*NS;ly2PZ!i?EJ&Q&OaQ{`IoEMH#nYky6*OD zd=-6Htligoop=?U@N&ucI6KO+&PZoImfoJHlJxdt)7wh{fO83Un)NZ2OmANn);^Nn zJ{Rh(m1L*(O=)da*j%Mo{`~x5^RYaQh3FwYhvsH)-(dWs8n|CdUw#xRh8K(&UI?_s zVn_$BjDco!#bcmZ>+mt~o6Ek@A%>>!i#zFx1#)MEK+>z(H-!nrs&0?6o}z9@H1hG*`pjc+ zHu6&JLhGdT_BA7qPpK&KKo!g5979;I>2WpfdiV*63e0ARt=l)c@Jd0DS^Jsx^YDCa7L* zL{L-0ARew~H@A9Gm3fV_^uE?m8a?&dbSRBxKnf_0R(5sWy*Qzv%E81hbi{-98{2ZgddTqvg++PlMs%R`Oq0_y-VE*fNi$&HQe zT9$R3yXP;uHeDSx0(gU}CQy+_%Ev(n>!@y$g#V4izcZT{uzM0+F`dhDW zW;belv8-M{8QJT*O|KCuBasTpV6T(o+6IO~JYDfnh;JLNHu5vd84Fm2h)apqIW6pd z2-oL!wP&fcwlX4$GwtP8d#Y=xPu8`Xsn%^}AY37Jspl(l9SdW4INbd$?Fa#@-$_HhA`OpshXHx{bOrOYLeKoVdj5Zf&7?>$ZodblB1P2aJ%O zmO2QjxrP4GV#jMCFzW%G)X{E;pOA=lmC=R!jfl33h(h`$FFvKZ@zlT5Lps^@8+{M- zQsTOwXgbBUQ^d8i?6!j9x=8m~T$kvI#dRr6TvzEvT}qpxD-p~-(ch>RyPbv=D%M5& zQYz~i-RyBl@4(Gg^io;%b#_0ysy}sj9f*f(X*yHCortPe5U_szcIcN$FR0vT{_MgT zljk)GPcW#j(hNh-jbt0(kprz>I~i#4pl-C#RXyx9HL0E6)WfdRcrrB+8Pupp zgq)&FY$sMLvFsLtvYSWuS$6a3ie)#yUHJPrzL$M-*ih@-+rHDfQJ?K?4@AT?ASHEU zJBr>&L~mm|hhsM@$F}w6K6X#*K7wZ5mAtVG&i13v6s;@lYtMmFBg(qyVwGkj{Xt*_+g@i~;TupMJ)WDa4L#TygYEjNeS3Y= zV7tF(KMBP74A-}lz*K`F_9QGmG6M)zch<$1JnJM#1IboZUEAvuZr3{4JO-hFcigb{ zAja{o{kkyMe#M%@H+SY&?xL;%JQ66ZYpCjKEXgw(trDm;?J2%Bv&Qv=?pTazPi2X2 zu^d5yWA{t~DN;{c)rA~iN9*;&;g9gm8nUup&|X&7uWB#LDGRQ&^Q@;sJUwA}dV;EY zbE<^(wu7;g?Ir19cY9vwsqyar!yxD}gG|pb7`l$ubwS={N2Lx%^znWe(3!~DtL^X)_bqER>=jr@V&I}@qZ_D( z9fY8-Ly#b^EnMLs*s~NtURxL|AjR1#O+f&`wS~CI$1;-JXvd2TYPe~zr=vlvGFV+j zth7FmyuR$05bB{mwL~iozTG5hRuNl>JysE0^pP2M-zX2FpSG*wz~o^RRE@Bh*CHg2 zP@H!CW;OKfCR8SJYmmsTOoWyT*af^V-(En4uO{1j_3=seBgm(L_*(K}fc2pMayiTZ(aUxLJGy@4-lze>+$@?Q(2)owqzX zjz>*tzF8%AKhY$)T1T|NqN+|;EbrXa_13HG z_IhWbz1dpk5NUcO8y%LMY{50yQli6qnIz?viW+oqhy2p zx!7K+8g`P^t-76yL%Iwfh8umDMXNyR+_BDgyZH;vW5jRVJzmaLb(5kVex=r@t9!| zWv2MLp@=fEsM}m`&*ePY0F(O9>+RYsz5vQ!hRp+pO%>BQw6LZCb>ahGTdT8l9YyAJ z&U!mT)$1&rqB6iKFFKX^_%M*k7x;REJy`YVOvxsN`tr&6%m8DmYiF_ijxs7&)=P1=WUxs@+iv6Fq$-Z4p=WdPEBNo`VRF;&Dsh!#Gt7V-z zWioy-5o6_W6b(^2#+5hPTh+~-C2w*&z$tGMzoERz1D!c?{yVdSN1?m)1)(=N8VDl>SZ&UZn|@N}z| zI?sHi>IaJLY$`B6-xFdFb-GKiZFaPp=nDq|j#k62kxf5)yS?4&C?M=!wd=}Vu#k`Z zgq`J2oe|?N`YP7+WHJm`h}!T{)CM=M>edByuz;6-ySJ(}Q-I0el3~kbkN4XPtQYw%drl7%`3P(ILRaye zq7T^LTb~f@1oa_YMaqNxp5?(yc&Os=z+X~D5hqkZStskxz1*FxI6dd6Jx3S1+%1Bt zF{T?^Eeq=#PuQJw=3~gFeHTch+}C1*K<=Z)Af_XEh+69+RW!{*6}L7(s;D(op*3vk z@wf+A<}%wZgT^0~NXRyVzBJ#xQSgeV7~ZVZFs%*G#{uqCrGK++nm zFPyMzvDpc5^hl7SsPt}PAd%HWeUS`D1E{@41lWNk8NsW&KP2ovZVnL_ENlZS^;cEt&UVD0g?U`KUx+>gzlm<5sEN z^}d?!ZDnJ$4q+T=;DMKba>b;eS3u-*lTbe*1jnX&N_R1-xNoI-+o-u{9z=eJokBRQm5ByvW%*6ji(iKA zM1f7s`=CWC_yw>_D)?C-(R>prUGL+iE*k7>7~eEIlE;LX+%@#kSM7P2)iK=hSTnTa||7oSORCS81e892e5 zaR(x0fJe>DwsdiNR9$_hhUK@pZk znls1+C6qxvGn+HWXBe@Ja)^agG=>7J=p$vTMVbspRnE3{oU$4u@dDq?_rk<1Dvu(?&q)(g)sAtuqWb69~sZsLI$agH(~OL>24GK2$YVo>$niWLqMtdnjsyhsGbr6&EuvNrJl%?-%h*Yt4XAqJf z#e)pVMg{~)86$K`qS@Izp{qW4&Tj0aKuXwpCrE*d{|gq=>beIcmm>w9!u*rXGkUu! z4OUjlmwMu=Y7brQN4vAfOVv(Qd^uZGaq*9cA*)`Zitl*e-fwn@UDnwb?DeW@FVVu@ zUchH9Oe3GBFx!8&x2cxBLa}BzJ4+WoWp#G>ztletZLj#CNi^{x;Lm5hKVJH3H+W~@1CW$ zoA$SI`7>Ka_0U!N?7A?Kab|V{ zRP|6^^o^{U4Z*{jsr26RoE!IcJZHAH`m()Jb?&Xx#wL%npw?XOS~_oQR0GwxcaQ`b zF*Vwd7*UD@889^q;NuZD!6OLnK~jO|Ux2g&STBWN#C8U%wGqHUtL4OCvsKXBn62a6 z5K%Lz;-i^y+XmfTUF9GPV6L-B57v%pf&W(9Dfh%gx~LV|!(HSc*U=uH;O zy2>Gk5e_*}822*0v^6-*8`pEr+a85?hK<#@USh29YmC+RBrG;o-$TSsV}%LD{Z3=0 zXY9cYBeR}6QP+)i|6*0tXREo*q@uzVGO57b1l=*-y}zEE{)dvaTk|~}LIw=}6d|Rqz$+7&c7!3V3?i}Z+9L2p zJ)#FV;n{fI9t7pbaF{#G#tRhLcs*@cyeWPdB8?Q9ByQMHy%j{};+bHP?N&LRXS;Q= zx7aNojZ(H-fA_(a?+TerU__^R+;q=ry#B$y(U(0P^`3g}U8+Lg;5_26^^eYO;9jqM zeMOzQ`vQ~A7L9l|TMgZtRc2o?Th024*}`wgZ1wIdW(zJzhMRXR+kJ?P!)*Pn=VZE5 z6wp`&6B$y$@|&u!ZQ^c51y;dLh)iJ5QeTJJT4tD7WSGD&o2_l8{hJ68JE;1y$+EYX z%>%GP7VADiRj8zWM(RmJ>alQAPyH9EcIxdA6^?g(VW^ySQps?YON3=Yy&{>&uQ5v~ zuuQHEmxVI;&+$0fI`KT~yH@Tx$XY~__>h;}sT##* zs$)O4SgKt=nQ}Gk7bMBnYNR1Kyc9{cRx<%k)(X-OS}RPA>9HdT(r)ke>cXE@jG7KI zWUy98zy}Rh7*a~q^nQ+6mby8F#WO53u0WK{6@EkJ>U8&jxdKl?b7jagUA9)h30bS@ z{dj&g)yQBt=o+yeAxrfSy{2NRlK&w?RN6|g*&5SV%ocu)+4`2G#%AkV$k}PODs^$+ z<1||(zjkpCwUp{lFRAPwQvdeTU6;^yhC5Sg>#MuFXDeH7v%UJ4Xh(43>d*G7WJ$KW zwxt^Nmj#u2{n=WnHvJ{If->nY)w92ZKu``^D|KamSsVz9faL-brpl_PR}F9vRCRzr zn|QzOjlv?+$^z5M2Ga`4+{zBq3d(3@sJaLDodKFVgtiL6pAh({1^vaI=%#~VEqF#0 z0Qn?Dl9xli>F=(qzVDAW+&3Q?{b4*Fc6+9(iUULv6$XeT+yg`sC^L_#2++}-N>;^!72@wymYYh~3 z0pwu!T9q=81#2bi>;iXHUED6Fj%qwmgqu82xNSR7go`qBOOa32cc2WjFh8Z2!5AkP zl;TKKU3bLRQ3Zx-0OmSF6=il+p3RSRRd9!0l>i^bf)SNGP#%>!IFMd8v!&ZW>6TL< zketrgvVgA9Z2Kju;63aBq0U=%XoPk0=WME)T+U0Fo9~{hzU3|k!U(i=K!M*U-Y z^CfdHaZbdZ^QS|3@m_rAJllbpN+1&y(AZJI{!3suC)okmXUaOHtEoayf5aZ$C?@447dChgzMbnnDk z0P&-XcX=D=m%F*|)hlMXE2-0iBY)<^JH8`y;=p`pM<)>l6yypO>8d zc^-O++TmQZ?n8KBSO~#VRq%X((GFHdM6fcp99BS!x`p>H*bUGv-sB!{tqxVG6%pjt zmQRj)W>}NMV}wnKEU(3Ufy<**mm#w79TXtaBc_+wM@|CHaaB&o;W|~D zAf++Ls(Lkouao8Q1!6&0-1^Ev05^Es{~wOJUn7YA^`AuBsiYj4l{~_7Q>ms{OCQ;W z*#!r;0&hy)oU%s**kHMt&hox~xn{Xh;K<_gDD_}SZk%*i0Rxg2L4F)09^|<};+Rj( z5yyNIHEA>qFVd8p+v4tHsZ}{-iOiv0-;)|*b>@~liDfx*2oEx(uTa}S3j1i?At;YP z-9%l){``k4#ZnA>tGkB-#!y-;FvU9)W7V}e604d=bv>*}dd_YrAaKln|BHs>=OQ`Q zZMGv};bSmNem`Ux^!rsn;eC)JQ7Zhh)Bke>aM0;@VsMn|gB+*ZUpY6}2#2W*ed_}( z3%YA6kUydjrCPBq&ZBCFV1ow)l}|qN-%4)PIt-<202<_1?sC_N3g@MN2-wLBL-B+H z+yo~SAaU{*Ong7c;V9U4-_i zVQfjGq-F%cD(WZqxnET;=88N0Y_7P|@8+_{hXrK&0BqXlx$N+vc;X&+vhLK&-9`PD zTgJ5F0sv`R@vNS67iJR2aybB|st?t6Le&ZS!Xp8fve8g+DSbo5rED`)TuPKfE@hvg zWw?|*4aQi(z!n*%$}Z&$Lp1=i&`?F0UCK3wB3(+{VV5$%$6mpR@(ndE<$<9Nm(oD# zpO3g@4ILHiQeOXHz@@{;M&7u*HoSH|l6 z;}PL6%YlTf5!{!JS-@i_4o8s?iZcQhKw-}ki@XjL_7(?A73Da93P-}m36;!HBut33 z#WHOGKTxwgSVQRS5|$$gb_sW3P*RfXLo{I7CA@hUy&rmUiMy-kFx5Ie!rd6LbVfqO z$K3Z>d#I_w`tZDjSWTod`Qq?qRTp)UIdDb#Xafv!}2i^ zJ|yTBpix5lEBeAQcW+H=>(=LVe-!pcu6i1VhgWsJBuWkk@n#&pg;gD(t$GUQkukPO z^)}Zh4<=O7zdhw{DK{n68<{Ym*+V@y%n>E4F8)m#V<$6GKaH0RLzHrJM<^o zq=SZ94lk1z1-zhfR(%aJDmhLz+LT8`5F7iS#M-GjAv)}Ht~TWr5p>p;PltUp>Kyr; z@@s-+D3Fh)yu-zZfmk?Dc0zA`0a7|VOib~CVPcA394@B#Ich8LSOYP#E$V~e5)XS9 zERrRE4pb=?1a!8GzZvwOOQCc6L99OY9!)kV(;cD?*+%oMRi!H>|DX~9n*0My1xg`> zY@`E|ZDge@9X3*DM|98FvqL6i$#&DQH}SFEWg8H-WPc75ONL)#$u?YxE4E}Ct_-(iH=J_c;WS`+ z!CUTctzwdtSJAp>ldysJwI1JG99ym9;5et4KbhGk=zVB#aWx; z%rR6sr|E>k%Lz@wpt<>WR5gJhSc&4KF+wi27LNP8h%h=tLEE1ol7E7JYU#|6E4NTj zfe1zFW{tuA?Z@82p^1l@TPga{-`(x4g^b98n1`)5l)AP~Xm$SpTb9y3bGM}I6)ELH_6CN$WO?nP$RtTA`S2^6W_0r&)tk)45 zrfj{gABn3Ydj5Crj_!k0>$G0G^zrZ9@2M>#$+;M*fBfG4fVyF%%(b-z5qT^K?BHE-C2%D1033 zIYHra;G8#g$q|M#yif{`XgR2P*J9zC>^R4L0H7kzzTces_P5V|LN3ITLT{C^6(y z^@+dTHFq9KXey`uEtfWyM6kB99M(XFd%2U)hT7)LZXB(|Cp6ib9_+fka*FWxCvG&0rbn2V>dz9$^Z_$Jy!!|Kxv<$(jqa7r+w)1t@6TWbFQ!Pfz zG!74x?P18Y1x8rxwauWEwr*T zT^CgHYzwnoJ!3qV)%|ESF!NIPjMihmacxrdx(C70egJ3 zOvGwGQ87m6#d=;>Cr8Uf?6uJ{5&LwsC_0o`ft?#I3Jm3-8B_nlVmMXh-;5kcz#StL zsFGA=D#{L3iFLG`Bu`t_It0cI^%x@!0ga57${7=pO$$azNlppj@k9!Y@p{5bz#}`w zt2L{~NUxTUkzN%ElC@l?RYlu-q%9Qpc|BLE!((XLCr76SEz$#kp_!#Yc|}m7mX9&3 zG*xPNWKAgm@s;TS+6-DG_3IeC$2cz!m0?`cA`OC#`|5b$>P00sv&M?~tie^BXI^Ej z_!3QYZUfH*g<{Bn7T57a7|?cOWmPGF1?K=*QB}qYyEqMo+u}tq1EUk_dSq6KiXhAS z4%CVft)jCUdDw_5NSCuK${SQPwalsG$-&GB?f8RIyoLK^{F(=YowIJiG0UE|$kGG! zoUr{(3MlN?yc2|`D)wvsC!!#twEFOqU_ZS#A(T)U0IjI4mLA@^PS~8R;+85(wFy9_ z2B88RVar=fPx!QzpxIACrYF$^0YF1E1Cz@U2V3ad@dm*{S364YAzSEi<8VbqKAlfz zG)$?k*A2xf$lh^g{izwRJueJ90eL#@VEYpTzhESFiLE|{}M{SM^L)>UzD&B z;?DTG$a~G|n%OmMhd(&+qyv?>3~DKuOBBy{d6nO2iSu_ z^f*G_VY~>g165sZAwUvrX~=kSH3EGeKE6y5Dv)4%UJ$}XieFk6&v+zjF}X9JAn`kb z+Oo2#0dr1QPYwJ4(@gh6*U|dp_MRnj(^&MjSf`_1Y0|;xv6GmZaFN&VBnSRHc51Aop|G@Q&j;HN(oEG8ch2yr>-}Us2z}fQIy*$GeMnRZ=l3>Xjq~=eMIXez^ z?@5F7;lwNqK*GTxG>3b`=`imaLGq+K1X)Kf-xlY^I~r&r6rFY;@x*@q1T(Rx=rs2B zJ21LBTUfQroe~uUrfmp1aR@9C?JJ02h{1SDFC2xY^z$e1lzxtpSDr&&G^L+Nud{;U?5a$i zD6R_1Fv&yJLfm(FIBFj5Q-%lbv(e869Jwa`VaUwbZHQ|_e7_-%G7~Q`#8D2}`%z;& zbNSGXpkaO9v=Ko2T+pKQL=#88z&$pp2?40fA>u)U4>#n*bUdlUqvOXY00vlQdtaWc z$liO$;7!C4;Dn4*K^6viYn&(M8k>FSUU7Y^r$QYYVXTo--I>>`a2=a<*rfm*j+{AC z;HjgF{z|TD6>$B|rg1^ixV`mSk2%x69NyUY)_^o&eC;;$tl9W(%EMKgiTdCKPll%@ zRXYuCEj$%6xQ!=z)?(uU^TP*?B**&J$za-*=SfgE=E>>yFXnkNES$$30PNz~L-d)X zIh7Wmd?v|50>p=KA0{BS(lp>^yJzT!Cwq3$u`Un*>*H5|C4pd6nNvVM7YeMD&*aHQ zt1pR?!&Yz7`SU#~2=ZDpVHsW_j9?%*a2>7v(>y)orm+k!=9!RZo|wLUS9$hZHT03W z@PSq?jj~nMeBq}m)j3wDGX=)=4(3nI^VtYmf9kaPp62d?micAzMx@wI^mU-3j%Tu% zD^Qb6ZbSsRvE`CuBQKnZk(X=MQS)cQu`&19PI&XVtJZTggz!O;r}1f(6Bw0<(c(lX zu1ozlArAXjc-Pq;;fOwN62F@`2s}2P**2c-S&V2Q$wX(mtJwO@*`8+jrUCb&sIqeN zEoQ`(Q^^$oWkw#z7Ynl+4AC_5K%Q8bPaQ3ORI0@(b3FqQKSTq=MbH`i2@^{my!tU; zEXrCQlwt%B5en(8g6>I(xlfpIs@asIB?1*f}$MlBp z@FAJc7kR!@h2S_aC$?smbXnr5Z>behNxB}J^iD1Hc+_&NP16FTTIP8|?U*F$ed{Dq z?{`cR^^P)Y;3Jbny`#+P{aM_1s`q2KPwE}_Sy$c&I8yJIR(h7HuMP3f4e{R$agtuKqsP(8o&-Xt_#zlHvA201TcX{NFh5rL^`;*Q_@iE?G50M&}a5U*9|J-PLrvJ zX7)8qpjh+L4a&624`K#YtinB>e=P`yXYSWX9cy&JaddfWkOtPRUar`|**Z^~?g}SF zp-o3OSY1zpbSRp+iUt6y>tmB~wMvh?!PD8ZoNArgdIp3{+WNB_FvWRZ$U|Fq@l20| zd}gxf>&iFc?Lm~D1r-5m^ff?PUw}rDWKrc)5j)DNEE27y#!UXm$^RtxQfv~Zu4Xb-BIe|WKq(8 zP8KD7&hNQb4KX|nn8G|L{DxAyrWh{rr^xiA*%X}S?`~==AUx8VC0FnA;8P1vOpyh$5->>% zWOswE!RKJ$`v(7=NPNu+0LRX>gBcf~B@X905J6Zk(!7d#Ap6zo(}vmOHF$k;(ZG zl5r8-vN!E>@^i0D6 z55bt15mBP zpeQkiK4eBTntriI0B&Irj(UMf-N3|{uUZB^DMP6y(a zSa4jc`8}xhswZAWPuDpEU3E(Ozv{U~!AoaA`YM+vnVNA z7ebtHy!Q8USOE$CNLRex_XVB+f0L5xg7M#)jvLiy1iQyXYtJaVe;~k8=R_$ft9A? z|MK;hYx6`t2t5(@k~&NmFQ+l;$;)Yg2TP}#VCjQ8$>aGcYBDgM*;A_ixo3lAeM~T; z9Pfll)cs(Fr1N(C60yf0^wuxKfV|=je20GF%d^%8dd}CF?{=RW=X|>irFUo0AU2=Z zJVlg-@n^u)8#9<~?6ClL58|4Av$_T1+tn$E;8@RJnmkCgD-d@JgF6(Z47^vZ3dA?V zFR#%K3IU%uo!kw({Ww_wx7o$QFI>2eIwv#AttN+H;q-M=hGtZ&0^?f&nw`|l0ugr| zAQ*A;4!mf3TxL=lUAF0EZ>ey)cuV*-zQ8TiRrUpLDF~mG-gVxyBP<-b>POE}^$=PP z_)6BHk^?_^s#xk7sbtH4hzLel{u2da`A7cj*`z)wU>^x*RAm2x)yl81Xh5eJz5^J_ zDfzWP=BFqJjAV@7^edJRDrq~~8?kt$t`-B5Lic1r3{`AE8cP)!kN{NMFen(1`g-pT zUN`nD1SmJvVTb+!k*y|}VOw_+@~7iP%j+cBy3Z1$q644(*86^q?MUZ?lw!Q#YB^4@ z97=4a?t@6kPkfF<%4TZI)wp_2cevK&U2^tc&j1Uta)1uz?`m6*?N|@T0vmv% zy*$pa4U0aY9U@aj-phyaKms4o*0U||c)aGXTi#Kz!4GhM8p(h;DdhCkVsYMw%<&Ox z{Wmfe5fT~_y)l8Wh<2N`p)_1wQL$s@fFAgyX-gLE^ zh&bGUEmw;k0v0TkIiX}1IK#)a6)Iu(TIeB-t2S5nnaX=`)FFM2dI#7#UNyrmpJ3WF z1ZTk&r5Aw|&juSLd3#ZT)z=i3K(-o&2SMs9XQs@lKQ}!-Q>w?^Z0|w!E6yjtsUhlu zK|d2hC$){m(S502b7XVkHIYJ_T~etFP7P!b&O1d%c-9*bMcr%Ux$pv69WG?!3&N-B zdPBzyf>Tzs=5h1c$`6#S=~&V3m??@DzedrHCdOFNj>gx5LkTfg>E2bnI!w{ltLA+V z-yHzQGS#wXmCUH_jkl~-T*tG~S$a-AuSc!CMl@@34exGzPnbGM(rd5EeeDE~F0UO92|c>ycEu@b40HN92&=sBG3$J9xmp1{f96kz+BtDI9Y zO0FafPJ+J}hQX~@(NTRg2RH>UjrRLzsFQ8L0ziIbw$h^?|;kI_lLNVaa(i6K-+Ta9t3R zd*f$Fo}dAO?Fk*oXYJ$q|F79cg2cGlXBo*UOyY=}eLo1v&3?&{fo72`QqQ0FuNS(K zWD5daaR8gQUNBM#Djcbd(fM7Vyg5V~sPl!_ar81IO}0WaFmPzHw1x&STcH-SaYaR$ zEIr*arG{>l;k7+03B+lVuD(W0(%KB~(^#M8_G#hCfApuW^d-bTJ5#(hjV^CFTc$$& z1&mL*??WxI3S6nrw(+*rld`;XvG_`actL3_kZ2+_ma5w5l`S!(<_iH{P@03!2-Duv zYl)CU4YrsqY7qGB_Azb{-4TQLHfJe<153J8@QDMD6fE?a~4zBMHaa{tg zKeVtYMI8H!UNvU3Cqb~FOy^&iEk5t?_TGbVxC4Uf;t4?-1N*^jF;Bo?^ArLwq@D$5 zL8tdvkd%A?R~!U&1i@9fQ24X_`DqLLeDi|1RVi?@yn$S|#t zpMlO_>GkNJR>e2gnGLbytWyXlENvj(iAcg1#G*4vSE$;BBHaYwl7WD9S?#uzZjjow z;9wZdN1E2!sI$6z8zpZfiE?ynF7<#F?OYso=v1_|vtd3Ro4)j~+1|722DBCMXw`;7 z`bx-749i%(~;G)b9ZhjvK_|wAhoWs+MY;q2NHWa9matFx!{Dwf71o2I z5QU(YRC~aVGtV*%HWQp>pxThl+-h}BYOP4?E&hnrYc z@o6;1bM7Zoz+=4)=PAG{syKJP96nfIug24-S;MWwE9>j^b8&U6etC>H)3b|eoho`Q z1_8|)dXM#qQ*KI!=ByJtO?#@_?81e zu;X{GC}bR3Sm;G$iXt+v3O0vUUV>jk3i)-S;!w!z=dwaZ@>cOAZ1KkSJ8F1~MMPOx5GfLzHjJp)wA$ou`jNg}{A15*j6Hq1g)hf39T+H`N%Ac@-Z%H!(H zG;e!+Ln=ffQ|BFwsfUx|xT;4uojzsLA?a{V{`dePCW{zOkh2y#bA3`n3gJ-Ib>U=} zl}$DvG;Bt3&|!JqAyviUbng0ZI!`+248zl7sxO6;c)eT_+@;SQB#fkfm8uKjbbc?J zPEb-*GHrRf5mKnHIVF!a{Ek1xh?IS?!>-q7L`%gkE{VGTO2wvz^ zczo}I+Te7N%q8A#QXZww!BL|S^S9_BeNCX#Qt#c!xH`2Fb2%LOUen+GbQRTPK^ZM( zEGWCh1`AA!*ebITkFc;4)|!)-d;8Pg8LHsKj=BrDUF%yChe?(B$~?e#Ln5Lyzl}0n z;CFN_$L{lN@6248?cvurA&ZDZc0v{*)4=J3Y+U6H&+;3;+I!yGM*NwDwJi%I$?wf} zDK0%}t#<^}FWu$v+7==l;eHe^5cgyBI`0`|=>T?udI)l(9c#~1QL?%p(yO+>J;r7} zs-fL`0OHlIFS#mg>Tz}fFR57%>9adStTsEk>PV}KPTNKgDiP=9Tq|v1 zy$V%qQ=_ky*(TPjsEQgx75h8WW2$zu+EIO;KK_Za!y|63u9c-cK(plyw0UN=s{oF; zwE1>auuZI41=<{G+QgDopiNW-f{4BGFavG249<<#8JycfIH=!7R9x4l4Rc@z|PqqQq;(6%}U#kTqi4S0l0sHa0*qt(uM<%_F~j>?jq_) zAjq}C0~wlJ-Z&snq^L?#H>;`O20v&P%@jg*=W&-{MVBgBD64a>Fg&O*D(6&T+cR z1ftFqO}Yvod0lLt0I@DEBp`M?Xu#9D*qgU{??9$8(INGORd4HVZ%tbK-b=m*t%}_t z1lWEQFBIS7E+XVmSp65uWN_0$nG7<18zGaXAKUBgEZ0VVY*;AzW3Ap=?0u1DYk~GL zPp9_Zm-Y+WR&Jv4<%tYz<>0O|6F)2zh4vU4C9mb@a+rDFFvG;!2+cHo?;YMga&4G- z$H`0!{p6kAb5Il5JlW%!r;X&~H7zfiGA^o>4ZYaJ9f@}7z;&7W?r~orvuPa+J z^{$geGHm)bsIiLbf{SFx^9bI^k03g&e4@Naw$y}-M>xA35Yny@_%XKI8vJ|5A+^X0d|j)jpXpL`?NY}|YYy=&+QK$bKm@26fT7H;iA z`3%ddh2n7(;-S&>_8L563LaF})>D`@a5iT2BF89a_xjhv-pz1S8RX0&Wvk>xLMD1q zkPN#UZ5?D?#1gJ~!n+5{7r>Wr=wo`-lQ4a+=-gwljgJ9}&Sv{S0LVC@iY?)H zR27=Uezi!f5pJ_JdKh420rQ{sj#i0_WuhO8Q-fe?Rn5gR{YLr3baz{8vCO_vB+{xg zZaZeMR(qZHnuIeIKmz1Bm7=_^k#eVSwwe|}3;Cq4c}?PYImoQnx1i^w*Y73S$=q-; zuI|-?p7Un8@1k0#UN6!`&v~Cyn-^1rWTZauJk;$*o%@3K9km<1!ZAypTL|B&xi_Ns z_*kVn1OQsacz^&{YtzFat^N5+-X-dl#j=X=0>BZ#Q}_+8VyMp+^Lhl9j<{QVILKL| z<51e`7t4h41)cS(m+^Vsf#}gG+jqW-2q+4)?tph4bb6@ci^b9OzvkV7!1JoNFkkg7 z5e4a?Vhu`igbRwx!MgjSNpYBmv3~p&jghj>SW+evM1>WDP?3B`xn{+1)tm5o%{_KO zT}wnUfFs`3^As_N2;F{svI)W_-LM~{D)5OWgru1zUQVAyJOl(v3S#G5-j#SP+@1Ad z42y%V-+Us*rHs6yRxdF=@@noe^Y`%E_-25V#YJARL^RAS@M)M~MfH?}k0&De(8u2O zjzhLT7#ZTvyIe)RYN$LBqQZLWdk2+oN>RZ8@2b=OM_LMEm)VUxYjueU8U^*2q5h3f zxAyD9AL1cn{Lyx0Ur|}=LFb+JHi-Ilv8X2e8r9TlDXv&GwOSgkn&y2J?yi^g`PiFm z;VegRX#DlQOZ6L{crTH6iaOR!eTiO#ZW^;xbko(JdEdbU1*~MgU9(iY=M_?gh!mD; za=(VUx>0IKKLLmxSvq(X8#90$+J(A%skrI}3r;GL1{Ua?`W8NF=Wo2N^~u$hnhDu= zod9RQfOqpb*T^BBXo>yI8T#y(-o@4>zP0m7d}PV+8LRjG0Q$t|pF*%2)l5)-I(cl$ zP_hJ4)HETqg|*=_;nv{xVq8#SPA8oQr+gBIxsClGAdTD1=PV)0hmE4O5TD7~bIzM@ zZQ%QyPq=28NOgxnc^jWKTqbHCF%hDOfN-G3uP6yZpO%inWsOv*?yC z7tw8zDhiRJikrPvh@xnn_vWV@TwZFJo3k8r*4Or$;FRM&rf3BEOo%Mi(~8?kt_l+- zZm}@G2!m!OeikMG!NRPdb1V5|)`=>HNR%pi1@6;l{_(ccB?>vMVbe6gvP1)2Ya7Ig zTDsg!)9^h9kd|qhfz$P)eX^|_6(m{x1S&+Xs9`fcW2tN>FHZ}Q8RxAHD~Nuc{^?l7 z(DZT13X;B&m0uXhTY%RO^(3o(f`gfJXch|`UMGAc44g%QZ+L5hx!nZe^elQq zL=<&)Rq-9PqIIszXSRS>jrHwQYNhOJ_%PPj*s{EGn-eHKD+7egL=m7oQEV(gY#|#E z5L-ynx#V&jOYp75(RSPn?-uU{G+H<8Ms<#jU!$lz3g;5#+det7e+&_G_#Kz^*&4nS z1p+*^z;Xi+sK`6LRtx?L!tbiC0TA24e0WfpjR_u(YcP|qGQJ;PWC>)9K^*{k84oh+L(5aHf^#YhT8?%f|krubS$zAa zE}j{_vsTX`^WLk7HX5Nuh}OW(%Cx5YqrFi%e*GIH7C)o6wpdq0nsDFNBK1 z3GFDC5U&Z`A0))0e=Jz!3GvH9@`Z4cul^@VeZHj+nufmnj(#%L^FgZoKrxs}beF=Z zTC2+w9Y0Vbd!GGPJF_Dy*4*UB|3d@c&;T&G z#0Xm8@kI>oxJJGb3tvtk0{r-Ut(M1+Z~rt2JpS=?JxYyPEv|atots#8CqRLp{{q26 zG4%Y`N!{uQN*n&0(rrOXp#g9}>h6o6bf{cPJOU7_rJjH%epYV4C4+Zlacqqsiz!2Q)bcL;APz?XhMH2nR!E zu92zASnTtlsS3#OBxAFK%tj}ft?hg(U_~K^;iRC$a})5TC06gZt&t63St&s&93-F!rux~N!Z*;IvVHPEtk;5##%brbe znB|(4GMB-xnafmMiz}YXR9qWAmwBj*Z(UfJWkpxtUR7(YBmbfLT76SD-%qNURPtn| zIuVSR%%rcC$xLdt?;6!(tpq~4u4Ttj<*b!J2+DRp1VYwIAOuAYgcRboGZ2F8zFxk* zil8aLjgS5g@n!iB?@UWBujN3HTivp@^w~z%P9~sJ=fu<~j{>_dUi1O(i=9FJWB26= zy2@Cq>-X_B^`uk5>9Zt5CVhO5sN*b~k$QGt-)-utwG!@l7oDSU$6JKOBNig!5!<}K zZ=w1QZP7XTUjdxL9rz7}J1(!4a0k>ddM;<7TI)c^;dVT+R$|mZq&JTVQJy6cqMw)OV7kxq>p0zq?$1yk$Q>T@&lA}QCf;8sW4_;L-%)jbos9YKa3Bi>|1PbQF^@9) z-Ld-YWbwPL@ATHOzC2_cpk{9P2O_JjcR2f*f<h>`ta+G@Q44zCG+$R_>~ICg0{|4@oMWivJwfOW|HPq*x@Jq9QjzAA1@(mk8)_R_Be(IO`+7&G*Vc5EI~B+T#)GMB;D00QE<%yc5kuj>gkNOPHznZDH!u+X8+V5@;fa~ZfY^LQ?k zgA-?QIm)`3`ohx~_iaSSp-*x*h&}-_TXI1bFI}$LlCPTWqsSl;7B3x>MG_CsL6&Zi zImqfl-##oWhd6rEaP($?qjWhY@*80bA9|S&PyH}hprGn^<*)`S?6XwRXBR^pyrP3T z_E~I4UE=lPvjpg2uUwg31ul10xRS1#Yu=PTc!4j=G8OESzE(zG2VCo$2bXl;65kM= zlam;0T_5mB!6Z#2o9e|2@wVgCs36m0A{d-l4uid}7Y2I~E>4{pYo)-8;%kl?XJ0Q1 zkC;0z_DSM`wMcm6{0?l@TMV^775$`Dr9Ff?Dti3yA zZ}pA(qgFUj`JZ*ZRahjT8{!`k;RrdUZxmZmXM=Ay_EiE_g1ucgvbn$_IaiVDMHP8T zQbDR46|6luHNTMRL$ThOjBlbtFqlM_h)_KljBQjEVK8uy4aVJJ;H~Izp>N(dnGXzIH(c^a0RF}?T0>oL`*_GNp*@JcauoP3=qmHON!M1)6 zvfn_T>{uzbJl@4$#4}}ok^09PfAJ<T=S+A~yi%{%z99qv-)*Qas*HG8#?8L_)Ur(y1^eq}Uk^*|GXzE- z^mSDGodovjOSj;y0RR&?-Xx}yn;2tWOqdL`g1ftR-s<~Hy<{lxF0SGrxJfd9Zj)md z*8{it@~uyG;vU~rbp|OGwCoqcFj?mxgC1sh)`ul&dwq>8^@o$)%T9Lx&{g*N(g>go zc1`=g2sQQLCNk<~r&g&p-`gaq@ZgqH;X?q1%n2qVJGJz@Js2VBcfg$I-F*;8tLj#k8 z4G5PLI2D5#6F9Mv>Tba4jFiN>_y#eCMdg!XV~7QCCn-KxvP9}0jv)1T`J_19@Me${ zn?>oKSRJ`$4`AY5@s;%I`+Z}v=7pxk4N(2SZlR}#K5+;Jr_BvwaQ-0xO0Ewb z@GVk_o8>j&QJlOv^cv6|p2#E~@+DJ&CNe5+Gn*%9j6g#)w^v;@%Uq`8=E#Rf`b7-| zUD~YxnTF5qRp7x4-YlDS@ynZar-v|j!O;Q7yLAD_2d*p+!Ie!pYVc;6-z%VS7Y0Zd zR7aqag>6G!X|Kt`%8=wKesbA5lP5ikZ;(k3evK)6g!;{<>=B*)sB_ZuC<6PK0fE^X z{^BJ~OWrCW-SGz64$OJ1S4!4C?n|=NCsN5K>=hyyVZuJ%EGDe=lfLiNFaOurdk02U zeDA~V1OjO!o3iCXAOWP8(4`0@^dbb1VxcMukt#({5D=6iB@oEaJ4h!e5TwVB@R0x( z5D>6}pn{5Bd7pD;_U_%goA2-4KknW#^URquGiT16nK?684R?N;tA;z6o4m8g)ej5C zN&1S|d1{D{&pgCWofjyzlkuJWJ>fem={FIMh8O*gB@Gd6<|*v-c?!D+BGWboJTv$} z4UT8-7n{Ewohio5qmlop+;^fohGiu-RmTXA)G=o27of?)Kp0>|pAtcl4Oa3tx!*NDVJC)Q>48`&|^9)BFM#i7jb69x6b68vOLd{{} zjW5eQj4G;TP-kA}bkZ2H5fnS(7MX>B(c62@u)sV??~0ADbf{CiBI zW4%dtHF`=!eGCg^-w-S11A<7Lh-o&aZmL~X$ERa49RFR`}Un%!>$5@vv3 ziv*zTijvu?HiBWi?WBmxz}nHf5Ct?IzCxmewWIRcxVs{AuO>A}xI}NQ%F+7}D5M;@ zuO&Szs$^3o?Jb+7x@X9HDXt`$b}*@=)-3La!%A9E^k6m%{ir4c%RTlb)I3)uIcivV zD|z{=q*p|rY-MG87*WW|hJU}6ZFn|Y*+f>h>a<4^j-}HspRGD=L}CjYfslnw{in#S z-zL?e2bSvHKrtD#yJV{&@aFH5Hi=C-`E@#Z{NJhP9wrXzl=HJyU;h$PqJi(>A}ByS zQX9ls9gm(#Z#aB2GC>YI6qhW%)L*XH5Wg-Ok+cW#mkp6m%8Xj57*ld#AbBwhLoz>qU47AbqR1vfx9TGX}_F zXyw2=U2oZcOD9wa@>16Xg+j9@jZl_kJ4lnM;V!izHLB*KfCkqv|MkCK!-lQfhSHei02IK86{DaYl_PZVjY8x;?r`>F)^4`g;&cn?*#e_Ot+}R+Ju3 z`ZPxjBD*F6XtH_IXOV^M1%YJ0=6H=hJ}l7s{N7v8=m(yRH{_l$S0bOpjs@cg#WOzT zlyJt{JZm(_=LBJiW`u26Wbv&>UKn+7)+Bu)&xAv&70wDP;Y%Rz{fU*nsuu)TlRB%=%xEBAN^>PFDTKpR&Rk0~Q82XHlsH#ehvO}Jte=yT-NdzG6u1C2x^uMl&`q>cT!f>(}GvSJHy9#*}grus{y5tfCZA7_6df zL!pq0@(yu|Rg@nWaR+w9$hnIXcLC}A0f z_$1?pGtp65exl{=O0L5=@rB7HcPLo@%u%!aQCZHe;Hc3{{ZVy(=Tvp|f$0?h=sZ@5 z7}0)-U)nl!26ik_lj}Q(2M;;0ro|dOaA2+DICjXq>X3yymRM!&rNEdxE$>f*r{y_~ zCNMrH#LMpel}OS=DQTz^U}QcCfMb-A$7_Uz%Nqa0#QM@~Afj`XT>*Ilku7x0VxZ|h zIcqG z1ZK1DH##9~zN3VG(Fx%*2^B#uZuZ76^$m>(j_tWgQVmq_%!6SN#ELG#NDoX)kk#-lQ8jm3+ z8&O-R;PglueP&qn{pwBUrE1*Lbg3Fvbt@W(O{h-?0Yi1q+FM=4Wyfx=bYB2W<~7IMEGyzAmZ||{@9t0(uw%(&*a6M3 z0}3>4RG&%n&uav5PM5pJwwY+mfua6D*26nEx!wh5|-ZuAl;baaP=2AR2Y`#pAx=JnqOb0r1_}!&e7uD zG9~!_UdDnC)o{-!mzp=kD^|a7ChkI(QNyuZt?Hks2%@=7U#OV@p;!@I!k|_I7=>m< zun2-!B%VR8NhIDR&ap_`w;Xpj<&|Ns`U%(RtyLtRTP7F2lh{NK7!EW2A-QKfnhv>0 z$vJZSLH1&0DV<9rT+!mda<$JnVx((7HXU+=;|bvr2`4BShSu|P2+0a0PRAGp1@a<& zX9W@k$W^}MXxB(O7-Kvn!qDg|gigU%^7u8My)g79qM%jvfP* z5iwb1R56u=()XjP#+S$)>#D9%d6kE_g;JpL^~L3?ah+f8-;5?QR;c#bg3<~g_TD(x z9{KqTU=L56^Ov1}Gs;9ZK@V2L z51fiN4{}I@6$>;abAu=;`MhhsSi3^4XBX*a*>i@omGH%lk#|;t*|ex2tYD>HmsXlz!jqdvZ42@R zuIdj=0GL%tl2?-xs=(6)qp%MLeDGz06~CgmNJ8_2Y}X_l|ICrei9_H_SNByae_57f z@s7vN6VyBQ^XCiqN?p4klP8o3&gSzu9BB{lW#3fIdxbqinh@Vw$`C1NW|=O!g$9S^F{Y`1NK z13<}pRSQD0h}oZ4DP0xOSm8F3Go^_pv; zh+CuP2V&M(b8X$69-c+z6wawbjEKh&TKpS&j7rUd=-%IaSj-(n2fsA$L_H z;bjNyLW^B~Ku9~uzI}TBIts2?mnFP9Mxt2%ijud(A zunQc;XX}u=3qE6^0Y0BOj;^`PTGdT?x}VsU>EdEAvLu46Sd&P+x!L?Kp% z@0MZ5u31s=iAuUl4mfFf(`Ir4c+`sp-XMsJWePU2|ZYLI|oG=(MWpH zKTnvc{}dVZk*hwvBq4$6c);j2&THU%i=2~1op$XIziAqNRy6!q8QPxI6<`K}W+g&j8lf&vk4t4U2@S)7DcO`(z(XD^Upc`1NXCI0w*2(eYOJ=T%u}{b5u$(R;*Rn zumkJ0VvWGu0qoOMZ}d}5BYRXr8rhQup+yqQz;o-A48*^df#o*fj%8pu%#vAU;N34= zfsWlyTybrOmzUAkeR_2L4a%`wzbmdd`RX-SFGoB6${KZj0=8+?Z8s>%xaCVs9{%fe zIVJ9TKo19IJ=wAeT(50V`Zb*5;uS9iegysvsyQ2~Foo}6=lBMtUB61Np!Lp+PSsm6 z#LNv!yG9&VOnYunb4f)JLxKr@PQ&HyZ(;w&;N`k&w2XTu%x{t0!vyKMq!WIs=slfk z{u#aUJJ`W%o(;Mg5R$dTB4}V4RU3>U8P$Q9#xkn-M%;DSAa{T7s+G`|URz~U9VA0q zV%3|j#Ug5>l2pH6b*<2AOiH3U&>EAJjjHM=6B<{26aiQL^FO#Ihz1*#7E%Yt70-8; z!HGtG8Psv3l0og{!n=9`C%!YmScFjVjY>^Ke3nA^=VnXKeLSgB-geazc;IGRi-7b= z&&eQ}ny7(*)I?`!I;Yv`%wO>{CY;1t&f-Jrj0P_SVs7Z%u0%HeO{yh7_!T3xJ%EB- zj`xSsi)VLH`WXU&X>#83U8BG#LiDZ8Efp!2;A|)8N3{IhqMC==iNQ$QGI79affPe3y0c{p^Oyyn&P z{IOY$=gZ1&W!&TghXd3I2teAMyz0e4!vW4s5S3<{V0+{^51VnqKHRJ{R>vTIr=0ER zV57`nlp9_c`fVAvUKolulzs6cDh7^fbrn@Rsf(zU?tTaxoRO2ozNsq5GFhjrTOTE{ zhjS#By{2|*tgRIl?>I)mM+ewsd~tX&<2f@9)j!8IKdpdad&W-+A?5FI)7y|jXoy4h z)>TyHPKk2&QUv|nz4SpPC;RZT)B?GCN#26HXXU|i?gj}X>8-VQc@!+6-lb`Zdkg#> zASvz41nU`J6Dc?vjn)XDdeaBq)z^UFxPPGrO*(F)3hvpC9x4bMPrD)-8GF0Rf~s!q z%o4|vRdn~kCarF@+nB*<0i$QcArgQYvoT+yc6;i4UuY`S1T?t7q59myA z8KT1$)^u|#yBA?7#I!OYD>Wf26(N4FmT;X!)V!{!p&2C151&bQ*G$ODFM=vyF;$GE zsN&l}j+GXIVEWbs6;yK{a@?{Ib6pd2-Om+)`F7U+{|iA#*w)bO0S*(wIEs+#a$QYG z4g8s$`NkxK#{h5Fa?cSDY*jiy{jFR+0{?y`;2}kd=(v>!0VY4X7C{Cgvm!uXwANJp zr^uW-?&kEsDr+6ACwLiaO?3guRdwB$#0*WwR7Hkks=Qs#JzOl)1mxNXSP_~4L~}HT z$iMnmu~e}~^KmMU+Hm&}1sdw84eIUx3o1#byckwNT(CmbmRGZiR}$ZAyzgvyxBf4@ zMzTzEx0(m(dZ~&-ll|ancTiJAHA&Hf~c|71Ur(jVF26>3n5d@hx%6#fCMj$y=0Wg@3JCMQz6&YgSQM6=EH6rM7b~@XcJv%r+6&UDwWCC@OBZ zXjUoP)eisTsqSzY*VBlSS37|H^;8(vvr;Glo1Rs7yVA2Rbady54%?NU)n>cWvwCk= zdKR8p7aF`>S&rJk0|6S&bNFmkv&P^vsaXilJ!txNy(p!NyO&s@v8Be|s`-*yP}rq+1k&xsXQCUyec0Ud7sW5r zYSqRDl)giy_lQbQ;F+yfPa_;}^wHnP`Me5?l|D6mzQUCqIWA5W(>kf+@E1=etkZFD0;bQX+HM!fnulsp% zV29ez_FrFjnmEo;)wa&C13Mh@cJXj81%U+V&O4;@i40C!&;J692cBQ-Py^446oADA z)j(1V1`cqq5`Th2i(pAAyjcngbxA8*r_xVoFJR!(@Y+- z(9mb6vVc|Csb(hnhNeXThx=g0QGKwwl~td1x1rN$DO)U6THwqBD@jd;KuKBTCuzPW zX}*P|*DNG$w2`#62$F!qBr%R6iEp2VmvKKeullLsd5v4B&pcZW#?dJK{0`L*+){C} z^GZD!eS=c;6)em0y~Ewvj(=4UK1gD1geWfl+NrE+H*kPB$^=k6cs6#a`r+PXhheK) zZ5%&E<7Tkjw5kbR=A!y8HEzZ~o7LL*1M>`nB^=w;5YBH`d(0o0CmD3$uyhtY-R4%ZZgD<7Ddz?oY)L5TqR# zx0koCyC0GtX2+GHfaa!XnfbhXk2uExwcX?-5x|YLnA+5EdY7`Bta!nFQ+$n7$Zir8 z>KZX3Lm)8QO@h9kQj8+INz!Uc!q)YilvgIZJBnhv?fBt}iq&%Qi|#X`+-?aU35{f7 z&tj2brFT1IT!z&tiL#B zCF+omsQvAVRT2NQ5_L!ubwCldPZ2d5Bludg-A{^JLG(nb62TyX=-K!Gq$gAU@OZI4 zA~w%bbWwS_=+^WtR!Jo1`HRjGC8w=+^BI(~#-L)6qGTS)hDLHE9>R(v9v9@Pe#Kgg zCV8^dJa>E1EKkj{_-mbZ#qofSdn}_^BpeKwz%2(9i~PUJ^&uJ8wO9qwH&33Pk3#Hk zAzeJCF`2kN7UD$DJb8S9yFYwcr)0akib+9KMJvutuu|3Y|0h)of5j07113a7TH2nj zuB-DuTIf!4_(Z_|9QSC4$jkHVgN_~f*A~0spWv8!$qL|(yx?kmG*2mjTXWriiBIyB z0(d4*DS%()Da8fPtVrE~vk{t(!!ztVF4?Sgd@~WYhj%E;QE`|)D!<&_S=>V~nw&gC z8SO0ohtRZ?rSu9Yc2)Lp5?CEjunlICwT()Y6AkxpGI*D|+1*gIhS`KBC@ab{YcXbv zTjlN`dZ|Rz;t(vpS{D~zPIN~=Qrs%;QHq;NXuNn{r-2z8GmTj~jqxgtT%E>vN@Jkd zqVtgb1=^#Ahq}+?9M(Z$!zMJ^>MB0eXgbJw6+~>@Lx!G)a@H1~p~^=pzObQ6C69IV z-FCuwmbu$mL+sIps#5A5dxciPN0z%tpTBkZ#dHjp>nLWu?k#7##jY@4T5BhXIPm6 zs@tprfA%`==#hQ%-gnBKMZc296zrt~r5Y!`zW zsD@G8hjx`|h#eac>GRi>sq1GQeqAYN^iPy5D?ZeuNTVJ6x_c?DK|P8wGFzA;-cSl< z1idRQ(+?uNY~)6XT;mIL>@XE`3VP}ECP)Qc%%uTJLXTX>&j(uNUGbI}MVB$1Eb z(V@u$5|gKp)N&bh&*U|I)7=uQyg1)XUXMWX*zQ#85BDUpV4DnEugSw4F)=JNu4Hv^ z(p?o3;7ruXBW7{IfTrbm(xO?LGJ$|}o#iORVk*D94kYbchdr z$Ftf$y{?qdTd%7rv+jG92Hlm?_ti&I#Pd77?S9iCM(m|tLaTl^snT+D&>dCQUZwi2 ze%C!iOaT;BzXX3MeZu!7dND6MNM}`T&Hc;X_w^B()h7 zv(CR)Q@qDcv21<9-9?;0aMJm~SaYrn)2rMl-rcKIe*8m~@4VzQ5AVe^!)vclX zTOJ2AdP9u^@UO=KY5Q=;p!3ep=B+_W%h%sKbxVgy{R)Q;=x z$dU^$p);PePxZ}N^4c{#&VeUu(g3n>s55y!r2>{ptNsTEZBq~QEdjxb0^=(u0m zct&YJJlFXQzF_^IStEGr8%z-q;R=Fj^rgL7g$*mSUugnjFI-@lzD#_f-ttpOs(>im z&+DrMzWZ{@Rx4{ouof`10RPUApY~fUPMV+MCP=4ERz)CiciR&DMR)6bl&TSTx3T%S zdvu@le&?>0(3@UcyVnfVChA^uzH=X@joLq>FU%Vg6Dco_^W@6R$Ba1H<%T;(#OJfI zDSy%p3^1Vialp*mC8OdAo)NVrDLy~H+D-Rc4je(7`X|gXX>WwZN$(Ht_3+WgvB=q& zXqYdr<++-%F{*+Ip~qEq^VRs`^jGjr^zm=*gs`j%`Lf_g_f$teg~5|ok5N39pwvL9 zM=y2ToeNKdoDBEq;}C5p)GJVeHNbRm>wNkOcUSpjpBnBY2uoic3$n;z7UJ=aCCum{ zG}gr4`3KI~X^j_jAO_frfAW{L0WoOV>zhR*@v_&`0Z6>p>#9P!Y(x68Xe8e2^@k5B z{XchUkj7kYdDP*x+!vQMe#eyWI0~vwSI_1v)78j)Wlf{bTvR-u?0G5ZsmY#)|1+<| z4^CX-U{?+I-8Xr06*WR?d_Z-h4YBm!n(w9uLURyEW~VN?>BxA=jw=S~=l(XZC;v~d zM&fxt4)^V^>gQQDoOwm#Q0GqBWV56CPm%vS?k-O+x#vheU^0rWYQwlTri;hGKH@ub}Z+Lj1-;G*XyfsdAfVk~WzV9g&tp9(`C*DPC0MO_T(OAI6BPXr1{^W+d$$}jtael`M;vFYAOTA;SiFn5;E)S7nu1*nQd?~U>Eh^tMu%cti z;GZa%{NrybX<9^NmZrDR97vjmzX`^&H2s?H!rzoH#CmEbgwcaln*Mk|Nz-3rJqKW| z;Y9iT$@~VTI*`Gyi(KLKlo8*(sif(7r)Rdq@uwN^!Gu3dNG(nglxOW@q|-nNunjlz zAkt;QN2N=GuUwL69xR^}giYfW52}$2*7zHqq1ZaWk=Ziei6Flmp{8b?a%=*Alt-Ku{Vfp;$;si!BX7oSpvyp(lT1pg2nhm3p^=OMwphF z2bD1CeozU~xkb>!cP;o;nD|{Y8#37)P_p{kY-3v zt2oTnQ&z6BW&G8$p4E=4Du~}QepzFk@?-Ig>Ax1Nzk;y%xV-p7N>xUF+2ZZvd8tFH z!y{J*B8nf<#a|YD(pe=TR)9Ks#TnKp+4<;=8-p6vlL zX3YJb??gXP=#w$x(L?zsD?z0a!_`|hQawtDHX$?YkPT`GhAwz3HBiK2iAjvGnUjzw_QBe)wWW1D#z zBn+dsRtel2m5=n<>}H-kQTqs0=H7D0ub6~j>07(Gr-G<)M9p=!KB7kA=>*8)6!n-J z{+Je?E#i?QN;m3>;G`SjA9I~qV#E=(%;y=I-r1v9KaC;?i!iMU=!-7Hfn1XVwV5gk zK|pV*r8WyljRQY4gu^@Eryo&*a9NRfyjXv?4Ug1Gaa`ja34!-kk$Ak3{=6TL^&`qM ztw2%#DRM(wPj7nQ3AXNpuUDL;gTo|Gn;%i~G+f^4hI++kri2}}u{FQ2y=SBY7BvpT z{<R2*v8=xprJ}1_1idb$|ggx z)2>9sAUj7G0%+n{faAO+llZ}Q;^pISl!}tWx_CNctqa0EEKpW#?=Wo`0;SHQhlxkk z>X(TW5MA9~c=*pTBeCSS1m*QEIw&uc$^0=f9&5=065$2NmPmW5yS!l&k6NA395Z8B zQ^0U&U3YBE&q=m)9+G-)8g*A5=x}}TpnvH`4*jQVZ zo$9FuwRH3op1Lx-OH!q1$1z()kXL$oHe<&T2buav$x6a|Oeq4Y{;TbD@ntDqV51`T zh9w=t4m51h#&{J7rP+S@W^WHU8lz{)XFmPW+tVD=Gn_Ed5^x+95j?sP{U3+!~KKjxVo(COaa zH!@XTEQD=)7STEahmbtp*YhKMz~D)_^_oFwwhlM9l>+ea%S$&0L zJj3Ib5d;g*eRQ`>-s~(cNtE({7Fww#}EG8TZ8$`CAW0$ zS=|Ubt}I9QP=)9K6z6fJYT%hwfO5x`s)1*}s!`{7fT|&C9{2arqK!tNm!xp?z_Uf+ zpup@S=xKjAPHCJ@3E$ZsHXVsr>|qp-dQ>4*Jb1R~HpY|8Cy;Pgh17X&5 z&PgGORrT)^RsVjXvgZ2Nv;cQM$%n>zYA4*Hx7Pai*)i35e=yc_P^1^gZr9yEaIGk1 z4b{9rb>F=TRQKJ3Ai4WSz2NS9_j8`b;+X=~eLs!h)P3WhyYHz5%8)S`nWHV#FHv-h zlxbR^ggC-;-@QzQci`aCNuD%$wG@_>Zq*o@3zXPef;eOZ+Fmpk_uBmemT{%QyzQ8qrGUtT56i}AtU-P(?$zOI&&*@C6^qYb z+oHY>7~yCvP>Qw=-B%YjzU5oa3ari!=qLo~i^ScnC8%D&iZD$jJ9GXxFg#X9X$P1( zQrJdti+#RfLlhx%pR`VADBF@D>XT6asZUD!%pyQd$!JRHl3_~++|&DUS?9x4Fa}S5(+8e(5O;Oyat=88Uu1huJA|`V{_aKSDqO{@ zA(=?JaH@Pz3Km_hTkNSGR=*Y&{49f|A+Ck9t(>#OQ)&u-H@nJlgR;62)xGF4DGirt zborGof6`@G9b87!n7AmrZopMwi{q zaoJ0kf75Xh8Myr22ABKV;__z)T>k4Y1=nTWa9K?k*%OzQbXorhF0aw0bbnk@=o8HmoUGk2~4!pPJ;Ew%d_Q=H@`;I%a40r4@sSUXVU=JO? zt-;;jbg8`o7v7KAXA|yt>r81{%*Tsxom{_pDchl4s*W5&{YD*mKo(!>+0Y?yl^d$Z zYk7#vs~6y3=DsYRSh+>^6*da?B&CnXrc;jLj@7JB=lWLsukWnD>#O&?#bxP5UXM87{}wL4U+IZ&Um49T>p3*Jtg3W3gYK%)-9oynLU*g_ zt_Iz0r@QKOcK~v{Kj(ot|NWQSjGgN%ciKNN6bsm?@Jm+!B2UmL% zuzIN5YR?1FrwM~kQabgvymQghD6C3Wp&Z@IXqdCCMS@-r^@|N6UQSr!Y38_Xhxow) zkzU-}HK#{gAB5{2Vr{x3K{~f$PzXBW<*`BDgq*d*%E+hJLH&=D1=~GcEd<5DE6hdD z131>3u;hZxo|v52e$jHvW>2(esqtVNHSx-A@H|A`_yH5;&sQS~p;v0uhbehVd|3sV zDR*q~MCV)?93dBM1mtiHnPq{zUCAI4lXFHO)P}7dClm=A{*y)FGs*Xh+7C!j%gvmaY}p$!e4j;4B4x2v4Sm#ArCsR=9=Ex*swh$+U{P$1O^|ry6mTyz`#D@T$ncV6vm6`eY-xIK2%j zx0!Fkz#MrLbt>xRU9`4H$FqUjv0A_ibqlzk6-yx6zO zS+LRB-^8SPjDhUB9U%Mrw`I3pMmb0gmWz*`^a-`qoQ_|##>-AWdX1dI8}TyxC`8%{ zg0srlrEpSg5osfjc}j}{P3%!Su~RCc?G@fgkp15Bl$1S>gA?#fLX5XjjhRp4?!Nad z!mX=(t^iiWA2s+*JNN@{K@+|n67HLja0}lCt)<`R3Lrf1OXnw^KGGy{GlEcCghu81zvX?9 zIZmTKt5FAh;At;L2H^|~!kIQ7O@99gPl8ylA=YS!8b5nfVa)x|;}R=_u$Cz-TD^S| zWr2bw35Z!l)F6Gv;wi38juYH#%C!rm51hEJS5yCoa{T^% z8frDN$ldQ`>RC@&8UB&y11ZmW>gJ>jEg`2K#X+9my|1M2*D4OD1bIsufv&=mR2aM} zIImi9Wu+2SmZL9wc%ir@or>}{YOJXh$mVBI4?CDqtH_;aJZae16C!FWirU!Me{VaB zp;7zKbZd7Er5JVP)t#Qoa?m+X1IJVJ!rE~^!IH=)6x9r5-un_mHNet^gKTHsDx^9#^ zp=2=ZuivWDt0D_WpbNTPTExiJm$6Fq6)1T)j-9`gsIW9h*NFfDH1QHzO9zdJGBgou z|LRGR{k{g+qnAA{M=L*=CCe@8ZH9R8gs*J6l|b`(@e7E8@fvfC1rvqCm`*wL3J4q( z5_5P_m=W^W_vl@gU4^E$L7_|6x6psM2KlffWb7@38gmV5?x=53zigrso?-(@X7(=p z5^N~cpyjXoK>bWO{u4GkJogo-{xBrf@0+k(rNCv@e^82A-DJ*;{0CyM(l=1PBV_g+ za4!5qdF>FyXyH@7^4mS$h?T{^^*BY?hjw9l--k+=`cawq3ScW%YcXIw4G4B*h_oPt znxPSD-|$p+JfRQJ6Nxgpu5ilg--D#SL4c120kS&T@usJYBU=H^(}2v( z-Bm>inbHoIc0U4eP7vVCAVAJz*B?ChV>XWScu)hf-c|UVQ9%)xAB43x6jr8u>L*Vs zBU(=tsiraNdGRV2ELW)7$9_E&&J z!ybgc&}OqcmU0SzDKg8({{oh^mJ9DeqNP(XEgHeL7Fc>`18N!w#Fg$uXgPM{F0`HJ z37EBQmSYb%o?`$KVHV*q_GEx?AfcmW*eXRB{5G3}vCPRlA(CXXKcMQs>wREeak_^u zuQ)9zwYZn`Coas#{)CG9At4$imV~QAh0e6`R&%^>!Z(pXj*+KMi)h*6FEqP%?C>xz z7Xjb*Z;S?hR|NlRB371Ae%m_k*l~U=5@+3I z1ng*WUSoZtvCz6&i?czIPun9Sf5RbX_r!Q{*rdD@>ur~t2QvX@Za`wOGICByu=`#R z&_4=DEIcW>C7>R&_(hM-&lOe6aHN|3w$i?4M0&}(z}nZcs>Kp@WzQrE>c~+wyjm}M zNM4KcTGjZD|D%TDHaz&D?1uA=O>_ZbSn?e(P+-$!g?xXsAD2{oFEHQ zyjImNPNtT#=Ot5SCwWt$N%}EbDU2>IZ(B!8JH~?{FyN2I?M;E#Xg|g%g+T)gd3-W9 zD&0O*teBkZ@wyzt?T}e^NN#a?UT-pa^)$1#iXc}w;6^<#SJEDxOX$tgVDbMf(b2gO zXH=V=Y?P5RJAz;D+tJ<$iFPd6TR~=)NA=(_^Otmonp#DoJ8XyJg={3<2?=tp9CBY- zI%=T|DxN0E)>aNE<3&>=MREX@ecum?myo+t(B4w9$}VtJSN60LZ?DL8sa`#}8A|sV z;wfa*KU9|g`=)rTZdH9LIc`kt*Qc$3duPLZe=+>NP}(LZ#dn!^$TgvuNZg*G@4!@<=t* z6IjIQlTEMxuL#iU-V{+^gVr%YvmCYjC>9Y@o!(|x*v9$&uBO*325OLgCP)>zsuqOR zVOeXXK= zBVVha?v;upR$i!!AcN_HZAgF(UV)kBx)NR=oV#8q>%8mDuo7Cyn<7h3Gvejl`k?X4 zkThN~5xM(8W#;Y(Z9|U+xW}2=(3>jCo}mIyQ%(5qhTh7eG`96(q;F{qo-?YsJ!NTb z9l5!|@h9~#)SI>Nb!0s0&`ZM(_)qs?qDK&H<{4Wjmej;sL5%aqtRfdR@ir3A2E`o7 zG0ko)w<)GFmU6swvE+_z&sYTcEOZKu zggW8PeF;6m`;Vi6-U@=e5ejl)y0^3_ch)!dc4m5UX5|5hOm3cW;U%JF=1WGj9Gih^ z;g$Fv)PcLCqbsPG8<2UqsFl}{5487H-S_AY#a4w>0gS*1`10%$QF2Uc0JjYZ+$tpS z!ZxT)6E(%-DWawr)-Vlx;U!3wxorVFCM57E1{QPAC_M`0&PFY4S#1Xqs5PfUM@tx5 ziQLVpr78LswfEL{z#mQ50M%(L-1=KApgA2N5zcBNAu3HG$+9R1yj!B2>K&o;h2ZE3 zMc;d8eGQA{)uv9~a^jxG{KtZcDF()jkdr$@)A%za=5HY}QKQ1;{=Z6;lE)rGjjC}@ zjy?>*kopKjF_+e`?%q@x_X|pE>%-t@CH2WBYAVp%3}K`9jjoXVkDOCgtCs~cD-*g? zkB~^2A(233ig-mMO}8L{y5{IWnOqx9lS3lq_wZH}Z)l`E3ljHnw|^}WBcJJ5(y21L zGbHdfJ1~!PKj`T#Bd%)T%NAg+?hO3V@RE^odoOVD^N_%w*@0PLf7ly&kNH?}F;Y67 zKs#Ey4B`(X85qZi;*(=bmXiDW0JsEww<@H?=!G7c2NX}H{P+>b=_VSukp&nET$$V> z*e$bQami>oxTfKB)VJf-DGIl%yz&^T>C+nbNeeDlQzm%iCIFL^atyQs_xnGAOUfVm zV(xjdMqd~b{i6ZiD0!-%Hy*p{Z0vZoX!M)?y_H0P20m&5W(`{v-~ew$OjX!0afVlD z7I&5R2BPQrQDfe;U_w-70M6ZyA_O)K4ud$#*wZ{=!$q_NK_%py<84`0@NK6_o z$k#^cF3JJ(x5?H|he61n2#NJxNGvzV5dUcU{}LL&WQBC$S&E+j-Z^vtk` zGP)b8`ze*b?uHzry-h{!Pwh%ojZXvmp@?Tut9x?1bkY4&>8xWsBh#Lbs4TXhp~?V`syx`|nsFO$tJq7=*;VSn2UlICg7_ zc4#nEHm_W;CBnsehS(Yew%HHHyh1iZ@M``9Z%y%yl}kwzpx`shVxF=QP~; zdQ`8>&W|WAkKKugm2r~+TAM*FBbFNULd$JGFf*{$i(ud&O>BP)vDDKrv6*vl4qn_8 z;6850eIyWED!T>e{>!Q#6DmT+u;Ux@z4`~_?SZGwT z;L*qw*<_a|60?dnX1>lyq=Iwj7x4;2`Mv4hB=L;~`_cl&OCSpCM^=*G&p>9cFqnmj zm*|CJqT_-bIG;_mKHL-$f1V3m#GaSk3cSxqAeEDUyaJ^^`n_~;%!PQ~q?1_h&vK$%I}f#g zO%SCkHKisD2?B9eBb?Sma)E-#M7d>w*CkE`!JN?4?bg(xt`K!%m{z_qT;u15)No8$ zFh@M#w_y60l_g)G0!x#b5Bo-c#s$0lb6@aRMIMe$If2z9gJwl~jg%f^2aX*&X6#Tb zCbN#nn)zX?$ggs|ZAIfC*oGEZX6O8zNS7AN{W*TRcpPEUQEqulyj{d27wlE27enaL zWv2Wp7ai~H3v!PWV<#OmrMgj8w(JsBPIkQ!87{xri7GTb2xuxQA?<9Pe8DH8nWC?c zM8(Nww)b$lh&X@Kd2F#XvAh~y*)*vAc*>*Ay%*RRux!LNo)JW(?LYFXb=Teem#WT zlR=0BLnAJ@f_iv*1BQiC!!FjaTr&N;L`BQbH-e7~gAnJ3M*L%wx4L*ogB577DUmwnEYlI1CHvpF6y-%Bf9Y0svu;%Aa<6GqGNvaIU4^i==z35W$*)m=}y90yzhjr9$Ix1I!<4HKk zm|H@ZAdpTMRr$BaiZ65dV^{glE~o+1G}wz8Ecys!^yIS9(UR-`3qfELLW6x=B|2Gl z-Ge&1OCxUAh+uUs8Mg?AZm$1Zf)FGIZD{qyan?Jv8x&bBS=czbw4AyYbxEKL4Ak%L1!0ZO$D-&43Z|}x ziTVH}f%E00w{vu&ynX;!wS%x~Tnfql@PpnotV3hE`fI?$U;6-$4~>qIk*@*p@gTrQ zf&lLv^1kR;ps?m@ER>8=3+- zmMZevG0f_HbjjYaoJ8suF?aat0|>8Yd}kkx_D!z+s%X4(Nv6(&F0r;j%>6RqI0VFx zL4@99B-70J*;^1bWiNB9ag>&4&XPTgn%}Coy}jX=wA-105q*+$oY@pPI`K4)WwVhpG9(B(-G*Y5 z2EnmaCP?=Wy-zyU*g;m>LC{Vzi%6`|qG4hL;*!Vb`Q5z2TDC2n+@CBcF z`(jcm6!<7n{JVn_wuj!PSwW z;Lz_@6HjZnC;f1_kN7I!f~y#<478*53yF5<8i-r0(H8pABzh=rC@y*QOK*9Y!)(O8 z8WQe@ue^0dfrdM3frAhq0Q;8>1Rj+_Fbo2zmiSSF+_Zo|7B!YNzr)1mbvx2Gb|hb= zt0hWbRa%ATs_N&M?E`AXCCG6%(3K>?9ZFz77k^dtO*T21^F5?ndkxk`gK-;8n-rHU zkKF`VMi5vFKNxi-j+=7NE!2_gs*~W=sg9HCovn9y;f*-oB*Gj{l}9gCXgzgvG4rau zlbHdEdC_k3%cGG)78Fj^^gO|>b_^2Oi1iK5>% znfkRiBN!KY?jK&SqfaQ@o*{6d+de8={2CYOrcvXPJBRP%pKn6%Rh@%b{*=JlG}&^s z5h-8%3psc>R7x*}NQsMl<=<${2Q=tDKPc3JvT|)PC$^OQ9p{oe{sHpqp^$fnK;}Gj z33EouEB~VN`$ofm>4#^UzYxyI_;FcZ(%!2->fypWsIG)cmL^^sj%wu~~0m$KSHe$fftwj|`s0ta_t{>K*M#;W0Alsnt*2)0KD9%uoAyU3l%196oDO{PDXw*|R%wHq2*BK?` z@K~U>v!k}Qp)!+UEhs79?Ba|KV8-)0g*cZl1!l#FOceObPJoZKgO6r#aq_AfBSZSq za05rr`sHX>Sv3LFzoEI3XW6LhHCZSB6ZZyD{uT?Qd$}=gxV&pwn40+FuJwzqwleGjf z^H|P`#=O3qiWMe>Tb!}7v)70bO*C#J3ocAcIJIGmGe$NsjCd$iHeAd+2ID?b+Ndd> z)@V;!&|vi`E2l=pd*!P0fPA_PGCt4_i8;q$NG3I{LVR36wOFjvSZGND6!(H|Wup^Q zjRBxMr1^eryi@jT86PDJ%NenvK%>DikI7dksp$PS8c;@3KrH-B1@aZsjRCkmzCzp5 zXg4ir#Le8*@ulPs5k&dzn0n{QGsH<#O1>$?0271;4Adm~DPc@^uSg&!{Sa4As4`Wg>6oJcZKwJ{jY8W1IS_9!M6K39{ z-uvb4-3i#9SkrK0S}_zFHn|0m#c0!Op(y^*Xn$JB;-VN;+o*x5#ZYL!ghIn|!{TyR zno$-b)H+R3NR@Duov%GZyj99I5{tSzeWSEvx`Lf*fn{kA*kn2XHAwr@4S+q_ zj{SU**grIc#KIvJ#Dkp{Sgu5XO_YU=j1uumizMcoAHi*anU6rUtrh0Yane z?!cj!f$aaXNT4+&ORfl6xDBiHj&wAfqD2sBGdn1E?UyDpT>PdXQ9UY2oMh*c5j}wROAy-akZ6@3 zMnkA{L$%Zja?e0tOXVzI?T#YGd5UFlvLilOn`<(?P|a1W)5;>o{lT{BzT$C)Pm_7G zywzm2-bNdk11Yj?`n?x+I9TRVn)NX%iz%A2Nq)*;T z9U5q>1tqADa-Ey1B)xKADCVxJex+8{z8!GJ93QOLD2wsYX`y{9A*KVxr=~ z@8KAwDGl%s;Vx%!Ra%-{g$Mdwval8PzAjnEW#SN{e#%??@HSt`(^;3ScW^&D>s?&? zF3x&i4jE$HkL?!ohZvI`)$*f<8sQF@z!S2JD~{^&mn`G-l<;autN}SX>Q0x*7pohsl&{^^f)RvqA{k{g5v<r++2~R+}mKU^)Mr~;|VZ$ z^5VHMLk5oNKX~*wELs>jLi@i#G0f&-p3S8^n+th1m+@?NnKOIbkjFdSH*Ux_D%2D5 zvEfi(E6cp$MynEc0ZT4){u*v{H6JoZ7@ZUJ7pfE=gyWJ{;y$@>tKo&`m8vDPeDVH7 zP%~cVkw!c7Vfjd-h52xGq|rIvg7|O*5Z#gTr^yC3$B@I4t}A1$0V+o#z~V@`XO1sG z_WEM}WKWDT+MD2>(Uz3@;lT=2HkyE<83?31$sk!;I90yb z$x>lCkQFNjjzhmQYP=C{#+p3d$S@z?8*hPdK4)~&Ib(=Q6#;SYe%W%oQCa%7JC`)$ zZhy|`U_Si)oXMhUvi$_3x%p+@1S7qYg|HWD0Ciq1UwIs?jYs`i{yM>u*G3a9T$nu3 ztP$1ZsfiYR=ksPguO=UR-pH_Kp=Jiq4`ommDyl7@=btxXOxkWeZ=t&J3r0qYh0xdA zBJQ+yK0?=bBSPhh7mQXoGxo|0Mr-_4oMg1e-|$IBOZ@GcWOTvbzmts4`0F?s?G5)wKN56;>*HSh=WwSBia)n|RmMJRl%tIeDVpW{{z(e=_B?8lDRRMdBhgG? z+jOI)`EX~t(ZqbHJHzs2;taD+){yVauuxd?WwZ9zkeM%=^|*#y_Oe-5YRD^iuu{}| zB`8W>EgfSZY<#P_6B4YMsks_K4y~3~r-A6TePA8DI>;OA6G%1W;a4nNbIi1)+;OHQ z_PO9GleBFqP63*Aj`=Y9X)#dfMMy7_X zE?dkqdYKO^=NXTi5BKI7eawe`^Nq*MhvV~&-sVHu1(q*U7gzwkT43}wgSE@HeA$+5 z^fbSOFSGy*S!fJ2zZ5RC0MuV(3^2c}SY$!_Z;>(7{4yfP7-T+tmSaI{vDhr=>ayQr zlbh@uuf|tkP*g41cQwW}qdvqk`2Our76$U#cEg%*!eea z$$)_D+Vf+3z{*x?*ym?wj8Tai%ppcu^UQ8Q-;s~6Ho98luusrt^;8_5!?RMyenR)k zxHYCEHpSK)ko6(Tw!&jdIT#Bi;I%{fU;5yVn{I%9d-5aBKSPV03W<*?%W$ zV&JrtPh4=4?0z)5A<>zkl}>)o&PZo8)I2ulh63WUo6>(861j~e=6Fh431H8qV;d<3 zjL39GS<%^<>HNkHIqD^pAQ?A21D}4{CwiCw_Hv4S8ZvJ*g7_v%0`kc2PnR^2KW#H= z%KzL(Yyfra5_L^;nYqzu&a)Ru0r>1E^@ntaJT)J>hdCb+0KpzqZ?;hon0Sau41i#_ zsy8~wotuz8<_F4J3x_?e&X!#_8eOcf+3V^|xoe}*(PL=??1FU>MnnGUno=zxpcb-k z)+p>QScBBaq8>nMX&OZJ8bq{ovT~Zew>~%6A!BBOjXsNactBkC>-x)JxqBm!r*1aN zSj&-Jy)Mt9a;)hyMmw!3um{*jhU=O_hUEZob_@ILD5@kBKa$MD0TtyX8sJUDF+h~B z(~XR{fVR#aWM7= zlYH6`*E04%yBj;bDe)G4lH#qv?3A|HY?)5=>))3#LuV;5_EWo0F4$_cvBqJiwaar9 zFYl$e0(i-OY+GSIdYjSC%0l*PTd>UE*!%{>7%MpYylt?ODtv&rWDmICu2H#wRWBeH z>=d`$2E`sS(FGI_JIZapNoH?F9$|8GThn9Txl!8{EzJ@8xvhL; zKfE|oLH_tE${IGJ^49oMXnc>82Ye})pJE}D-Sv`NV9v+5tQ$PwuafmM{P~U|j3}+VCc@)K?zB zWxik9`niSe^Y&!xS00F2BJal#%@56^pCR)3-LM}IkxTJ6MTKQG?!pV!usl+*d~Jsj zfgdU9mPsVXt-8hf^~s&cl_l=^9oDZkEODn${wwaYerEMiMdrpw&b<8z=acSa`Rc&4 z|0^pEmap*XZTZU8&hnMKIlqx-7?{}mD9@-^PMdGShYcJwco^Gl=9YYV@Q9%!o*X=3 zaaN9W?lGP!m5XwN=`AaRC|@dH-eaUDt;f3|eX?wy4()-J4Kq)BjM`~A2$4mXA$@R6 z^-6kL<$I#oSqcK*UZbbiWXso$I&2+;!HzsHbMt{)p}Pt1g$k4)gMn{EM#} HN5lR<%cnQb delta 95450 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 z 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 diff --git a/docs/_build/doctrees/versioning.doctree b/docs/_build/doctrees/versioning.doctree index 1161033cde459c2fe06126637c3a873e60442c50..9e1222011a4680048966429d5457a2639d6a7e5d 100644 GIT binary patch delta 65536 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 diff --git a/docs/_build/html/_sources/versioning.rst.txt b/docs/_build/html/_sources/versioning.rst.txt index 3efd5a3..ed0e686 100644 --- a/docs/_build/html/_sources/versioning.rst.txt +++ b/docs/_build/html/_sources/versioning.rst.txt @@ -12,7 +12,7 @@ The main goal of this approach is to version the data and track information at e 3. **Ensure transparency:** Citation of the various data stages and datasets should be straightforward; users should know when using the interface exactly what versions they are using, and should be able to consult the precise statistics related to them. -Data Statistics and NewspaperStatistics +Data Statistics and Newspaper Statistics ------------------------------------------ .. automodule:: impresso_commons.versioning.data_statistics diff --git a/docs/_build/html/index.html b/docs/_build/html/index.html index be27cbe..4e07105 100644 --- a/docs/_build/html/index.html +++ b/docs/_build/html/index.html @@ -106,7 +106,7 @@

Welcome to Impresso PyCommons’s documentation!Data Versioning
    -
  • Data Statistics and NewspaperStatistics
  • +
  • Data Statistics and Newspaper Statistics
  • Data Manifest
  • Versioning Helpers
  • Manifest Computing Script
  • diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js index 17c745a..b847985 100644 --- a/docs/_build/html/searchindex.js +++ b/docs/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["images", "index", "io", "rebuild", "utils", "versioning"], "filenames": ["images.rst", "index.rst", "io.rst", "rebuild.rst", "utils.rst", "versioning.rst"], "titles": ["Image handling", "Welcome to Impresso PyCommons\u2019s documentation!", "Input/Output", "Text Rebuild", "Utilities", "Data Versioning"], "terms": {"class": [0, 2, 4, 5], "impresso_common": [0, 2, 3, 4, 5], "img_util": 0, "boxstrategi": 0, "valu": [0, 2, 4, 5], "name": [0, 2, 3, 4, 5], "none": [0, 2, 3, 4, 5], "modul": [0, 1, 5], "qualnam": [0, 5], "type": [0, 2, 3, 4, 5], "start": [0, 4, 5], "boundari": [0, 5], "base": [0, 2, 3, 4, 5], "enum": [0, 5], "jpg_highest": 0, "jpg_uniq": 0, "png_highest": 0, "png_uniq": 0, "compos": 0, "path_img_on": 0, "path_img_two": 0, "path_img_thre": 0, "get_img_from_arch": 0, "archiv": [0, 3, 4], "path_check": 0, "ext_check": 0, "name_check": 0, "get_imgdimens": 0, "image_data": 0, "return": [0, 2, 3, 4, 5], "height": 0, "width": 0, "get_jpg": 0, "page_digit": 0, "get_page_fold": 0, "get_png": 0, "get_tif": 0, "run_cmd": 0, "cmd": 0, "execut": 0, "shell": 0, "result": [0, 2, 4, 5], "stdout": 0, "stderr": 0, "function": [0, 1, 5], "support": [0, 2, 4], "re": [0, 5], "comput": [0, 1, 2, 4], "coordin": [0, 3, 4], "olive_box": 0, "compute_box": 0, "scale_factor": 0, "input_box": 0, "iiif": [0, 3, 4], "rel": [0, 5], "paramet": [0, 2, 3, 4, 5], "float": [0, 4, 5], "ratio": 0, "between": [0, 5], "differ": [0, 3, 4, 5], "dimens": 0, "str": [0, 2, 3, 4, 5], "string": [0, 2, 3, 4, 5], "separ": [0, 2, 4, 5], "space": 0, "new": [0, 4, 5], "compute_scale_factor": 0, "img_source_path": 0, "img_dest_path": 0, "x": 0, "scale": [0, 3], "factor": 0, "bewteen": 0, "full": [0, 5], "path": [0, 2, 3, 4, 5], "sourc": [0, 4], "destin": 0, "convert_box": 0, "convert": [0, 4, 5], "y": 0, "w": 0, "h": 0, "upper": 0, "left": 0, "lower": [0, 5], "right": 0, "get_iiif_url": 0, "page_id": 0, "http": [0, 2, 3, 4, 5], "dhlabsrv17": [0, 4], "epfl": [0, 3, 4], "ch": [0, 4], "iiif_impresso": [0, 4], "iiif_manifest_uri": 0, "pct": [0, 4], "bool": [0, 2, 3, 4, 5], "fals": [0, 2, 4, 5], "impresso": [0, 2, 3, 4, 5], "url": [0, 4, 5], "given": [0, 2, 3, 4, 5], "page": [0, 2, 3, 4, 5], "id": [0, 2, 3, 4, 5], "e": [0, 2, 3, 4, 5], "g": [0, 2, 3, 4], "exp": 0, "1930": 0, "06": 0, "10": [0, 2, 4, 5], "p0001": [0, 2, 4], "blank": [0, 2], "get_scale_factor": 0, "issue_dir_path": 0, "page_xml": 0, "box_strategi": 0, "img_source_nam": 0, "context": [0, 4], "strategi": 0, "choos": 0, "issu": [0, 2, 3, 4, 5], "zipfil": 0, "zip": 0, "byte": [0, 4], "xml": 0, "handler": 0, "found": [0, 4, 5], "info": [0, 3, 4, 5], "txt": [0, 2], "from": [0, 1, 3, 4, 5], "jp2": 0, "folder": 0, "hopefulli": 0, "correct": 0, "librari": [0, 4], "take": [0, 2, 4], "best": 0, "avail": 0, "highest": 0, "were": [0, 5], "accord": [0, 2], "an": [0, 2, 3, 4, 5], "which": [0, 3, 4, 5], "we": 0, "have": [0, 3, 4, 5], "identifi": 0, "among": 0, "format": [0, 3, 4, 5], "coverag": 0, "i": [0, 1, 3, 4, 5], "devis": 0, "The": [0, 2, 3, 4, 5], "present": [0, 2, 3, 5], "file": [0, 1, 5], "wa": [0, 3, 5], "dest": 0, "can": [0, 3, 4, 5], "therefor": 0, "us": [0, 2, 3, 4, 5], "need": [0, 3, 4, 5], "read": [0, 2, 3, 4, 5], "normal": 0, "In": [0, 2, 3, 5], "thi": [0, 3, 4, 5], "acquir": 0, "It": [0, 3, 4, 5], "look": [0, 5], "also": [0, 5], "took": [0, 5], "ocr": [0, 4], "possibl": [0, 2, 4, 5], "reli": 0, "resolut": 0, "indic": [0, 5], "should": [0, 3, 4, 5], "same": [0, 5], "our": [0, 2, 3, 4], "n": [0, 4], "b": [0, 2, 3, 4], "heigth": 0, "do": [0, 5], "correspond": [0, 2, 4, 5], "usual": 0, "discrep": [0, 4], "tag": 0, "images_resolut": 0, "hand": 0, "page_width": 0, "other": [0, 5], "seem": [0, 2, 4], "ignor": 0, "current": [0, 3, 5], "here": [0, 4, 5], "ar": [0, 2, 3, 4, 5], "equal": 0, "To": 0, "check": [0, 2, 4, 5], "happen": 0, "choic": 0, "acquisit": [0, 3], "addit": [0, 3, 5], "see": [0, 2, 3], "ones": [0, 5], "danger": 0, "anoth": [0, 5], "did": 0, "provid": [0, 4, 5], "thing": [0, 5], "fit": 0, "like": 0, "test": [0, 5], "move": [0, 5], "proper": [0, 4], "unit": [0, 4], "python": 1, "bit": 1, "code": [1, 2], "object": [1, 2, 3, 4, 5], "highli": 1, "reusabl": [1, 4], "within": [1, 2, 4, 5], "input": [1, 3, 4, 5], "output": [1, 3, 4, 5], "gener": [1, 3, 4, 5], "o": [1, 4], "system": [1, 5], "s3": [1, 3, 5], "text": [1, 4, 5], "rebuild": 1, "helper": 1, "config": [1, 2, 5], "exampl": [1, 2, 4, 5], "util": [1, 3, 5], "basic": [1, 3, 5], "dask": [1, 2, 3, 5], "apach": 1, "uima": 1, "xmi": 1, "loader": 1, "imag": [1, 2, 3, 5], "handl": [1, 4, 5], "oliv": 1, "box": [1, 4], "data": [1, 2, 3, 4], "version": [1, 2, 4], "statist": 1, "newspaperstatist": 1, "manifest": [1, 3, 4], "script": [1, 3], "id2issuedir": 2, "todo": [2, 5], "document": [2, 3, 5], "parse_canonical_filenam": 2, "filenam": [2, 4, 5], "pars": 2, "canon": [2, 3, 4, 5], "its": [2, 3, 5], "compon": 2, "tupl": [2, 3, 4, 5], "gdl": [2, 3, 4], "1950": 2, "01": 2, "02": 2, "i0002": 2, "2": [2, 3, 4, 5], "": [2, 3, 4, 5], "directori": [2, 3, 4, 5], "structur": [2, 5], "path_f": 2, "contentitem": [2, 4], "alia": 2, "item": [2, 3, 4, 5], "issuedir": [2, 3, 4], "journal": 2, "date": [2, 4, 5], "edit": 2, "field": [2, 5], "number": [2, 3, 4, 5], "1": [2, 3, 4, 5], "0": [2, 3, 4, 5], "3": [2, 5], "canonical_path": 2, "dir": [2, 3, 5], "extens": [2, 4, 5], "path_typ": 2, "creat": [2, 3, 4, 5], "repres": [2, 5], "newspap": [2, 3, 4, 5], "onli": [2, 4, 5], "build": 2, "check_filenam": 2, "file_basenam": 2, "whether": [2, 3, 4, 5], "compli": 2, "convent": 2, "1900": [2, 3], "detect_canonical_issu": 2, "base_dir": 2, "detect": [2, 4], "import": [2, 3], "nb": [2, 3, 4], "invalid": 2, "skip": 2, "warn": [2, 4], "messag": [2, 5], "log": [2, 3, 4, 5], "root": [2, 3, 4], "list": [2, 3, 4, 5], "consid": [2, 4, 5], "acronym": 2, "instanc": [2, 4], "detect_issu": 2, "journal_filt": 2, "exclud": [2, 5], "basestr": 2, "set": [2, 3, 4, 5], "filter": [2, 3, 4], "posit": 2, "neg": 2, "boolean": [2, 3, 4], "detect_journal_issu": 2, "get_issueshortpath": 2, "short": [2, 4], "pair_issu": 2, "issue_list1": 2, "issue_list2": 2, "associ": [2, 5], "pair": [2, 5], "origin": [2, 5], "repositori": [2, 3, 4, 5], "arrai": 2, "contain": [2, 3, 4, 5], "issue1": 2, "issue2": 2, "select_issu": 2, "config_dict": [2, 4, 5], "inp_dir": 2, "configur": [2, 3, 4, 5], "select": 2, "md": [2, 3, 5], "explan": 2, "usag": [2, 3, 4, 5], "config_fil": 2, "isfil": 2, "open": [2, 3], "r": 2, "f": [2, 3, 4], "json": [2, 3, 4, 5], "load": [2, 4, 5], "els": [2, 3], "dict": [2, 3, 4, 5], "dit": 2, "where": [2, 3, 4, 5], "get": [2, 3, 4, 5], "path_s3": 2, "issuedirectori": 2, "fetch_fil": 2, "bucket_nam": [2, 3, 4, 5], "true": [2, 4, 5], "file_typ": 2, "newspapers_filt": 2, "bag": [2, 4, 5], "fetch": [2, 3, 5], "bucket": [2, 3, 4, 5], "If": [2, 3, 4, 5], "content": [2, 3, 4, 5], "all": [2, 3, 4, 5], "specifi": [2, 3, 4], "remain": 2, "distribut": [2, 4], "both": [2, 5], "alwai": [2, 5], "first": [2, 3], "element": [2, 4, 5], "second": 2, "henc": 2, "entri": 2, "undesir": 2, "adapt": [2, 3], "github": [2, 3, 5], "com": [2, 3], "sanitycheck": 2, "tree": 2, "master": [2, 5], "sanity_check": 2, "s3_data": 2, "py": [2, 3, 4, 5], "form": [2, 5], "option": [2, 3, 4, 5], "default": [2, 3, 4, 5], "rais": [2, 4, 5], "notimplementederror": 2, "one": [2, 3, 4, 5], "db": [2, 4, 5], "core": [2, 4, 5], "impresso_iter_bucket": 2, "item_typ": 2, "prefix": [2, 4], "filter_config": 2, "partition_s": 2, "15": [2, 4], "iter": 2, "over": 2, "possibli": 2, "either": [2, 5], "valid": [2, 4, 5], "individu": [2, 5], "articl": [2, 3, 4], "param": [2, 3, 4], "kei": [2, 3, 4, 5], "exclus": 2, "year": [2, 3, 4, 5], "interv": 2, "1960": 2, "jdg": 2, "1890": 2, "last": [2, 4, 5], "partit": [2, 4, 5], "size": [2, 4, 5], "list_fil": 2, "locat": 2, "list_newspap": 2, "s3_client": [2, 3], "botocor": 2, "client": [2, 3, 4, 5], "page_s": 2, "int": [2, 3, 4, 5], "10000": 2, "25": 2, "000": 2, "maximum": 2, "pages": 2, "switchengin": 2, "implement": [2, 5], "ceph": 2, "copi": 2, "get_s3_client": [2, 4], "pagin": 2, "alias": 2, "read_s3_issu": 2, "input_bucket": [2, 3], "s3contentitem": 2, "key_nam": [2, 4], "doc_typ": 2, "rebuilt_vers": 2, "canonical_vers": 2, "s3_filter_arch": 2, "suffix": 2, "jsonl": [2, 4, 5], "bz2": [2, 4, 5], "k": [2, 4], "v": [2, 5], "time": [2, 5], "rubric": 2, "1970": 2, "empti": [2, 5], "mean": [2, 5], "1798": 2, "1999": [2, 3], "each": [2, 4, 5], "10th": 2, "sequenc": 2, "key_suffix": 2, "end": [2, 5], "s3_iter_bucket": 2, "get_bucket": [2, 4], "mybucket": 2, "begin": 2, "how": [2, 5], "A": [3, 4, 5], "transform": 3, "purpos": 3, "cli": 3, "For": [3, 5], "member": [3, 5], "run": [3, 5], "runai": 3, "infrastructur": 3, "blob": 3, "main": [3, 4, 5], "howto": 3, "rebuild_articl": 3, "od": 3, "fc": 3, "fo": 3, "schedul": [3, 5], "sch": [3, 5], "ob": 3, "verbos": [3, 4, 5], "clear": 3, "languag": 3, "lg": 3, "nworker": [3, 5], "nw": [3, 5], "git": [3, 5], "repo": [3, 5], "gr": 3, "temp": 3, "tp": 3, "prev": 3, "pm": 3, "rebuilt": [3, 4, 5], "upload": [3, 4, 5], "otherwis": [3, 4, 5], "tell": [3, 5], "exist": [3, 4, 5], "ll": [3, 5], "level": [3, 4, 5], "debug": [3, 5], "remov": [3, 5], "befor": 3, "after": [3, 4, 5], "solr": [3, 5], "passim": [3, 5], "worker": [3, 4, 5], "local": [3, 4, 5], "includ": [3, 5], "temporari": 3, "clone": [3, 5], "releas": [3, 5], "previou": [3, 5], "cleanup": 3, "upload_success": 3, "filepath": [3, 5], "ha": [3, 5], "been": [3, 5], "successfulli": 3, "success": [3, 4, 5], "compress": 3, "json_fil": [3, 4], "output_dir": [3, 4], "merg": 3, "line": [3, 4, 5], "singl": 3, "signatur": 3, "write": [3, 4, 5], "sort": 3, "serial": [3, 5], "rytp": 3, "sort_kei": 3, "expect": [3, 5], "concaten": 3, "init_log": 3, "initialis": [3, 4], "logger": [3, 4], "desir": [3, 4, 5], "rootlogg": [3, 4], "duplic": 3, "init_logg": [3, 4], "could": [3, 4, 5], "work": 3, "properli": 3, "so": [3, 5], "keep": [3, 4], "rebuild_for_passim": 3, "content_item": 3, "ani": [3, 4, 5], "metadata": [3, 4], "built": 3, "rebuild_for_solr": 3, "thought": 3, "especi": 3, "ingest": [3, 5], "index": [3, 5], "follow": [3, 4, 5], "schema": [3, 4, 5], "rebuild_issu": 3, "dask_client": 3, "_format": 3, "filter_languag": 3, "outp_dir": 3, "store": [3, 4, 5], "rebuild_text": 3, "append": [3, 5], "conform": 3, "being": 3, "fulltext": 3, "offset": [3, 4], "token": 3, "region": 3, "rebuild_text_passim": 3, "group": 3, "get_iiif_and_coord": 3, "ci": [3, 4, 5], "link": [3, 4], "variou": [3, 4, 5], "case": [3, 4, 5], "117": 3, "retriev": [3, 4, 5], "inform": [3, 4, 5], "part": [3, 5], "miss": [3, 5], "insert_whitespac": 3, "next_t": 3, "prev_t": 3, "lang": [3, 5], "determin": [3, 5], "whitespac": 3, "insert": 3, "pages_to_articl": 3, "belong": 3, "read_issu": 3, "inject": 3, "s3_version": 3, "boto3": [3, 4], "resourc": [3, 4], "factori": [3, 4], "serviceresourc": [3, 4], "connect": [3, 4], "storag": 3, "represent": [3, 5], "read_issue_pag": 3, "issue_json": 3, "parallel": [3, 4], "read_pag": 3, "page_kei": 3, "reconstruct_iiif_link": 3, "construct": [3, 5], "api": 3, "endpoint": [3, 4], "process": [3, 4, 5], "some": [3, 5], "inconsist": [3, 5], "variat": 3, "more": [3, 4, 5], "detail": [3, 4], "area": 3, "rejoin_articl": 3, "text_apply_break": 3, "break": [3, 4], "appli": [3, 5], "visual": 3, "charact": 3, "paragraph": 3, "etc": [3, 5], "chunk": [3, 4, 5], "cluster": 3, "bytes_to": 4, "bytes_nb": 4, "to_unit": 4, "bsize": 4, "1024": 4, "target": [4, 5], "kilobyt": 4, "m": [4, 5], "megabyt": 4, "gigabyt": 4, "t": [4, 5], "terabyt": 4, "p": [4, 5], "petabyt": 4, "exabyt": 4, "convers": 4, "keyerror": [4, 5], "chunksiz": 4, "yield": 4, "get_pkg_resourc": 4, "file_manag": 4, "exitstack": 4, "packag": [4, 5], "posixpath": 4, "manag": 4, "instanti": [4, 5], "prior": 4, "call": [4, 5], "close": 4, "onc": [4, 5], "longer": 4, "contextlib": 4, "pathlib": 4, "20": 4, "_description_": [4, 5], "parse_json": 4, "validate_against_schema": 4, "json_to_valid": 4, "path_to_schema": 4, "against": [4, 5], "drive": 4, "boto": 4, "kept": 4, "until": 4, "third": 4, "parti": 4, "lib": 4, "depend": 4, "solv": 4, "alternative_read_text": 4, "s3_kei": [4, 5], "s3_credenti": 4, "line_by_lin": 4, "reason": [4, 5], "bug": 4, "read_text": 4, "1000": 4, "filenotfounderror": 4, "fixed_s3fs_glob": [4, 5], "boto3_bucket": 4, "benoit": 4, "pyimag": 4, "custom": 4, "glob": 4, "s3f": 4, "unabl": 4, "than": 4, "switch": 4, "get_boto3_bucket": 4, "request": 4, "ask": 4, "doe": 4, "turn": 4, "newli": [4, 5], "testb": 4, "depreci": 4, "pleas": 4, "priorit": 4, "get_or_create_bucket": 4, "instead": [4, 5], "yet": 4, "get_bucket_boto3": 4, "host_url": 4, "zhdk": 4, "cloud": 4, "get_s3_connect": 4, "host": 4, "assum": 4, "two": [4, 5], "environ": 4, "variabl": 4, "se_access_kei": 4, "se_secret_kei": 4, "get_s3_resourc": 4, "get_s3_object_s": 4, "whose": 4, "you": 4, "want": 4, "doesn": 4, "relat": [4, 5], "get_s3_vers": 4, "modifi": [4, 5], "datetim": 4, "get_s3_versions_cli": 4, "get_storage_opt": 4, "read_jsonlin": 4, "point": [4, 5], "extract": [4, 5], "doc": 4, "per": [4, 5], "from_sequ": 4, "s3r": 4, "print": [4, 5], "count": [4, 5], "map": [4, 5], "pluck": 4, "ft": 4, "without": 4, "readtext_jsonlin": 4, "limit": 4, "textual": 4, "leav": 4, "out": 4, "serv": 4, "pure": 4, "ne": [4, 5], "reus": [4, 5], "topic": [4, 5], "s3_get_articl": 4, "ad": [4, 5], "advertis": 4, "iter_bucket": 4, "cpu": 4, "dictionari": [4, 5], "s3_get_pag": 4, "issue_id": 4, "page_nam": 4, "imp": 4, "1990": 4, "03": 4, "partition_nam": 4, "newspaper_prefix": 4, "upload_to_s3": 4, "local_path": 4, "path_within_bucket": 4, "help": 4, "prepar": 4, "view": 4, "orient": 4, "daskutil": 4, "cf": [4, 5], "argument": [4, 5], "create_even_partit": 4, "config_newspap": 4, "local_f": 4, "keep_ful": 4, "nb_partit": 4, "500": 4, "yearli": [4, 5], "even": [4, 5], "enabl": 4, "effici": 4, "bypass": 4, "shuffl": 4, "well": 4, "decid": 4, "what": [4, 5], "memori": 4, "span": 4, "classic": 4, "produc": 4, "arg": 4, "partition": 4, "nbpart": 4, "export": [4, 5], "compute_image_link": 4, "pad": 4, "iiif_endpoint": 4, "iiif_link": 4, "summari": [4, 5], "descript": 4, "get_iiif_link": 4, "canonical_bucket": 4, "rebuilt2xmi": 4, "typesystem_path": 4, "iiif_map": 4, "pct_coordin": 4, "typesystem": 4, "defit": 4, "annot": 4, "layer": 4, "task": 4, "config_load": 4, "initi": [4, 5], "method": [4, 5], "check_bucket": 4, "attribut": [4, 5], "check_param": 4, "classmethod": [4, 5], "from_json": 4, "to_dict": 4, "partitionerconfig": 4, "As": [4, 5], "now": 4, "solr_serv": 4, "server": 4, "solr_cor": 4, "s3_host": 4, "s3_bucket_rebuilt": 4, "s3_bucket_partit": 4, "s3_bucket_process": 4, "key_batch": 4, "batch": 4, "number_partit": 4, "1991": 4, "1998": 4, "sever": 5, "allow": 5, "stage": 5, "pipelin": 5, "goal": 5, "approach": 5, "track": 5, "everi": 5, "ensur": 5, "consisteni": 5, "eas": 5, "consist": 5, "across": 5, "justifi": 5, "through": 5, "identif": 5, "leakag": 5, "partial": 5, "updat": 5, "subset": 5, "know": 5, "step": 5, "necessari": 5, "when": 5, "media": 5, "collect": 5, "arriv": 5, "patch": 5, "transpar": 5, "citat": 5, "dataset": 5, "straightforward": 5, "user": 5, "interfac": 5, "exactli": 5, "thei": 5, "abl": 5, "consult": 5, "precis": 5, "them": 5, "definit": 5, "datastatst": 5, "dure": 5, "preprocess": 5, "augment": 5, "project": 5, "progress": 5, "data_statist": 5, "datastatist": 5, "data_stag": 5, "datastag": 5, "granular": 5, "abc": 5, "specif": 5, "portion": 5, "stat": 5, "respect": 5, "count_kei": 5, "frequenc": 5, "add_count": 5, "new_count": 5, "replac": 5, "add": 5, "init_count": 5, "defin": 5, "pretty_print": 5, "modif_d": 5, "include_count": 5, "These": 5, "agnost": 5, "self": 5, "child": 5, "modif": 5, "union": 5, "about": 5, "abstract": 5, "same_count": 5, "other_stat": 5, "possible_count_kei": 5, "titl": 5, "content_items_out": 5, "ft_token": 5, "content_items_in": 5, "ne_ment": 5, "ne_ent": 5, "embeddings_el": 5, "lang_fd": 5, "text_reuse_clust": 5, "text_reuse_passag": 5, "nps_stat": 5, "pretti": 5, "data_manifest": 5, "datamanifest": 5, "s3_output_bucket": 5, "git_repo": 5, "temp_dir": 5, "s3_input_bucket": 5, "new_vers": 5, "is_patch": 5, "patched_field": 5, "previous_mft_path": 5, "only_count": 5, "note": 5, "push_to_git": 5, "add_by_ci_id": 5, "ci_id": 5, "add_by_title_year": 5, "add_count_list_by_title_year": 5, "all_count": 5, "lsit": 5, "aggregate_stats_for_titl": 5, "media_dict": 5, "aggreg": 5, "radio": 5, "radiostatist": 5, "don": 5, "displai": 5, "show": 5, "final": 5, "append_to_not": 5, "to_start": 5, "export_to_git_and_s3": 5, "commit_msg": 5, "perform": 5, "logic": 5, "lazi": 5, "behavior": 5, "readi": 5, "access": 5, "particular": 5, "_processing_stat": 5, "crystal": 5, "_generation_d": 5, "corpu": 5, "manifest_data": 5, "dump": 5, "validate_and_export_manifest": 5, "commit": 5, "define_update_info_for_titl": 5, "processed_year": 5, "prev_version_year": 5, "four": 5, "place": 5, "eg": 5, "alreadi": 5, "generate_media_dict": 5, "old_media_list": 5, "conclud": 5, "increas": 5, "flag": 5, "conduct": 5, "major": 5, "verison": 5, "get_count_kei": 5, "integr": 5, "init": 5, "has_title_year_kei": 5, "verifi": 5, "init_yearly_count_dict": 5, "new_media": 5, "By": 5, "update_typ": 5, "update_level": 5, "updated_year": 5, "updated_field": 5, "properti": 5, "output_mft_s3_path": 5, "versison": 5, "cannot": 5, "overall_stat": 5, "title_stat": 5, "overal": 5, "replace_by_ci_id": 5, "oper": 5, "overwrit": 5, "isn": 5, "better": 5, "suit": 5, "replace_by_title_year": 5, "title_level_stat": 5, "media_list": 5, "stats_as_dict": 5, "update_media_stat": 5, "yearly_stat": 5, "actual": 5, "chang": 5, "statisit": 5, "potenti": 5, "match": 5, "output_bucket_nam": 5, "overriden": 5, "problem": 5, "occur": 5, "push": 5, "critic": 5, "won": 5, "alter": 5, "overrid": 5, "strenum": 5, "requir": 5, "accordingli": 5, "exact": 5, "embed": 5, "entiti": 5, "langid": 5, "linguistic_process": 5, "lingproc": 5, "mysql_ci": 5, "mysql": 5, "ocrqa": 5, "solr_emb": 5, "emb": 5, "solr_ent": 5, "solr_text": 5, "text_reus": 5, "has_valu": 5, "cl": 5, "agg": 5, "reduc": 5, "clone_git_repo": 5, "repo_nam": 5, "branch": 5, "ideal": 5, "absolut": 5, "appear": 5, "fail": 5, "ssh": 5, "compute_stats_in_canonical_bag": 5, "s3_canonical_issu": 5, "compute_stats_in_entities_bag": 5, "s3_entiti": 5, "compute_stats_in_langident_bag": 5, "s3_langid": 5, "compute_stats_in_rebuilt_bag": 5, "rebuilt_articl": 5, "include_np": 5, "fly": 5, "groupbi": 5, "paassim": 5, "compute_stats_in_solr_text_bag": 5, "s3_solr_text": 5, "counts_for_canonical_issu": 5, "include_np_yr": 5, "later": 5, "counts_for_rebuilt": 5, "rebuilt_ci": 5, "extract_vers": 5, "name_or_path": 5, "as_int": 5, "_vm": 5, "filter_new_or_modified_media": 5, "rebuilt_mft_path": 5, "previous_mft_path_str": 5, "compar": 5, "typic": 5, "atom": 5, "ident": 5, "new_or_modifi": 5, "get_new_or_modified_media": 5, "new_manifest": 5, "previous_manifest": 5, "media_titl": 5, "new_media_item_1": 5, "last_modif_d": 5, "2024": 5, "04": 5, "04t12": 5, "00": 5, "00z": 5, "modified_media_item_2": 5, "03t12": 5, "agg_tu": 5, "find_s3_data_manifest_path": 5, "find": 5, "latest": 5, "On": 5, "wai": 5, "enrich": 5, "own": 5, "insid": 5, "get_head_commit_url": 5, "three": 5, "alreadai": 5, "outsid": 5, "previous": 5, "activ": 5, "get_media_item_year": 5, "mnf_json": 5, "mb": 5, "media_items_year": 5, "get_media_titl": 5, "input_data": 5, "ex": 5, "typeerror": 5, "git_commit_push": 5, "full_git_filepath": 5, "make": 5, "non": 5, "increment_vers": 5, "prev_vers": 5, "increment": 5, "accod": 5, "minor": 5, "reset": 5, "vesion": 5, "init_media_info": 5, "full_titl": 5, "relev": 5, "comparison": 5, "is_git_repo": 5, "manifest_summari": 5, "extended_summari": 5, "extend": 5, "manifest_json": 5, "8": 5, "5": 5, "media_list_from_mft_json": 5, "json_mft": 5, "still": 5, "along": 5, "read_manifest_from_s3": 5, "read_manifest_from_s3_path": 5, "manifest_s3_path": 5, "arbitrari": 5, "remove_media_in_manifest": 5, "white_list": 5, "whitelist": 5, "whatev": 5, "retain": 5, "validate_granular": 5, "valueerror": 5, "validate_stag": 5, "return_value_str": 5, "neither": 5, "nor": 5, "validate_vers": 5, "regex": 5, "9": 5, "vm": 5, "integ": 5, "version_as_list": 5, "len": 5, "respec": 5, "write_and_push_to_git": 5, "file_cont": 5, "path_in_repo": 5, "write_dump_to_f": 5, "abs_path": 5, "filesystem": 5, "written": 5, "writen": 5, "ioerror": 5, "command": 5, "compute_manifest": 5, "lf": 5, "compute_stats_for_stag": 5, "files_bag": 5, "create_manifest": 5, "togeth": 5, "iption": 5, "np": 5, "further": 5, "markdown": 5, "manifest_config": 5, "guidelin": 5, "extract_np_kei": 5, "31": 5, "indeplux": 5, "1889": 5, "get_files_to_consid": 5, "file_extens": 5, "validate_config": 5, "mssing": 5}, "objects": {"impresso_commons.images": [[0, 0, 0, "-", "img_utils"], [0, 0, 0, "-", "olive_boxes"]], "impresso_commons.images.img_utils": [[0, 1, 1, "", "BoxStrategy"], [0, 3, 1, "", "compose"], [0, 3, 1, "", "get_img_from_archive"], [0, 3, 1, "", "get_imgdimensions"], [0, 3, 1, "", "get_jpg"], [0, 3, 1, "", "get_page_folders"], [0, 3, 1, "", "get_png"], [0, 3, 1, "", "get_tif"], [0, 3, 1, "", "run_cmd"]], "impresso_commons.images.img_utils.BoxStrategy": [[0, 2, 1, "", "jpg_highest"], [0, 2, 1, "", "jpg_uniq"], [0, 2, 1, "", "png_highest"], [0, 2, 1, "", "png_uniq"], [0, 2, 1, "", "tif"]], "impresso_commons.images.olive_boxes": [[0, 3, 1, "", "compute_box"], [0, 3, 1, "", "compute_scale_factor"], [0, 3, 1, "", "convert_box"], [0, 3, 1, "", "get_iiif_url"], [0, 3, 1, "", "get_scale_factor"], [0, 3, 1, "", "test"]], "impresso_commons": [[2, 0, 0, "-", "path"]], "impresso_commons.path": [[2, 3, 1, "", "id2IssueDir"], [2, 3, 1, "", "parse_canonical_filename"], [2, 0, 0, "-", "path_fs"], [2, 0, 0, "-", "path_s3"]], "impresso_commons.path.path_fs": [[2, 2, 1, "", "ContentItem"], [2, 1, 1, "", "IssueDir"], [2, 3, 1, "", "canonical_path"], [2, 3, 1, "", "check_filenaming"], [2, 3, 1, "", "detect_canonical_issues"], [2, 3, 1, "", "detect_issues"], [2, 3, 1, "", "detect_journal_issues"], [2, 3, 1, "", "get_issueshortpath"], [2, 3, 1, "", "pair_issue"], [2, 3, 1, "", "select_issues"]], "impresso_commons.path.path_fs.IssueDir": [[2, 2, 1, "", "date"], [2, 2, 1, "", "edition"], [2, 2, 1, "", "journal"], [2, 2, 1, "", "path"]], "impresso_commons.path.path_s3": [[2, 2, 1, "", "IssueDir"], [2, 3, 1, "", "fetch_files"], [2, 3, 1, "", "impresso_iter_bucket"], [2, 3, 1, "", "list_files"], [2, 3, 1, "", "list_newspapers"], [2, 3, 1, "", "read_s3_issues"], [2, 1, 1, "", "s3ContentItem"], [2, 3, 1, "", "s3_filter_archives"], [2, 3, 1, "", "s3_iter_bucket"]], "impresso_commons.text": [[3, 0, 0, "-", "helpers"], [3, 0, 0, "-", "rebuilder"]], "impresso_commons.text.helpers": [[3, 3, 1, "", "get_iiif_and_coords"], [3, 3, 1, "", "insert_whitespace"], [3, 3, 1, "", "pages_to_article"], [3, 3, 1, "", "read_issue"], [3, 3, 1, "", "read_issue_pages"], [3, 3, 1, "", "read_page"], [3, 3, 1, "", "reconstruct_iiif_link"], [3, 3, 1, "", "rejoin_articles"], [3, 3, 1, "", "text_apply_breaks"]], "impresso_commons.text.rebuilder": [[3, 3, 1, "", "cleanup"], [3, 3, 1, "", "compress"], [3, 3, 1, "", "init_logging"], [3, 3, 1, "", "main"], [3, 3, 1, "", "rebuild_for_passim"], [3, 3, 1, "", "rebuild_for_solr"], [3, 3, 1, "", "rebuild_issues"], [3, 3, 1, "", "rebuild_text"], [3, 3, 1, "", "rebuild_text_passim"], [3, 3, 1, "", "upload"]], "impresso_commons.utils": [[4, 0, 0, "-", "config_loader"], [4, 0, 0, "-", "daskutils"], [4, 0, 0, "-", "s3"], [4, 0, 0, "-", "uima"], [4, 0, 0, "-", "utils"]], "impresso_commons.utils.config_loader": [[4, 1, 1, "", "Base"], [4, 1, 1, "", "PartitionerConfig"], [4, 3, 1, "", "main"]], "impresso_commons.utils.config_loader.Base": [[4, 4, 1, "", "check_bucket"], [4, 4, 1, "", "check_params"], [4, 4, 1, "", "from_json"], [4, 4, 1, "", "to_dict"]], "impresso_commons.utils.daskutils": [[4, 3, 1, "", "create_even_partitions"], [4, 3, 1, "", "main"], [4, 3, 1, "", "partitioner"]], "impresso_commons.utils.s3": [[4, 3, 1, "", "alternative_read_text"], [4, 3, 1, "", "fixed_s3fs_glob"], [4, 3, 1, "", "get_boto3_bucket"], [4, 3, 1, "", "get_bucket"], [4, 3, 1, "", "get_bucket_boto3"], [4, 3, 1, "", "get_or_create_bucket"], [4, 3, 1, "", "get_s3_client"], [4, 3, 1, "", "get_s3_connection"], [4, 3, 1, "", "get_s3_object_size"], [4, 3, 1, "", "get_s3_resource"], [4, 3, 1, "", "get_s3_versions"], [4, 3, 1, "", "get_s3_versions_client"], [4, 3, 1, "", "get_storage_options"], [4, 3, 1, "", "read_jsonlines"], [4, 3, 1, "", "readtext_jsonlines"], [4, 3, 1, "", "s3_get_articles"], [4, 3, 1, "", "s3_get_pages"], [4, 3, 1, "", "upload"], [4, 3, 1, "", "upload_to_s3"]], "impresso_commons.utils.uima": [[4, 3, 1, "", "compute_image_links"], [4, 3, 1, "", "get_iiif_links"], [4, 3, 1, "", "rebuilt2xmi"]], "impresso_commons.utils.utils": [[4, 3, 1, "", "bytes_to"], [4, 3, 1, "", "chunk"], [4, 3, 1, "", "get_pkg_resource"], [4, 3, 1, "", "init_logger"], [4, 3, 1, "", "parse_json"], [4, 3, 1, "", "validate_against_schema"]], "impresso_commons.versioning": [[5, 0, 0, "-", "compute_manifest"], [5, 0, 0, "-", "data_manifest"], [5, 0, 0, "-", "data_statistics"], [5, 0, 0, "-", "helpers"]], "impresso_commons.versioning.compute_manifest": [[5, 3, 1, "", "compute_stats_for_stage"], [5, 3, 1, "", "create_manifest"], [5, 3, 1, "", "extract_np_key"], [5, 3, 1, "", "get_files_to_consider"], [5, 3, 1, "", "main"], [5, 3, 1, "", "validate_config"]], "impresso_commons.versioning.data_manifest": [[5, 1, 1, "", "DataManifest"]], "impresso_commons.versioning.data_manifest.DataManifest": [[5, 4, 1, "", "add_by_ci_id"], [5, 4, 1, "", "add_by_title_year"], [5, 4, 1, "", "add_count_list_by_title_year"], [5, 4, 1, "", "aggregate_stats_for_title"], [5, 4, 1, "", "append_to_notes"], [5, 4, 1, "", "compute"], [5, 4, 1, "", "define_update_info_for_title"], [5, 4, 1, "", "generate_media_dict"], [5, 4, 1, "", "get_count_keys"], [5, 4, 1, "", "has_title_year_key"], [5, 4, 1, "", "init_yearly_count_dict"], [5, 4, 1, "", "new_media"], [5, 5, 1, "", "output_mft_s3_path"], [5, 4, 1, "", "overall_stats"], [5, 4, 1, "", "replace_by_ci_id"], [5, 4, 1, "", "replace_by_title_year"], [5, 4, 1, "", "title_level_stats"], [5, 4, 1, "", "update_media_stats"], [5, 4, 1, "", "validate_and_export_manifest"]], "impresso_commons.versioning.data_statistics": [[5, 1, 1, "", "DataStatistics"], [5, 1, 1, "", "NewspaperStatistics"]], "impresso_commons.versioning.data_statistics.DataStatistics": [[5, 4, 1, "", "add_counts"], [5, 2, 1, "", "count_keys"], [5, 2, 1, "", "counts"], [5, 2, 1, "", "element"], [5, 2, 1, "", "granularity"], [5, 4, 1, "", "init_counts"], [5, 4, 1, "", "pretty_print"], [5, 4, 1, "", "same_counts"], [5, 2, 1, "", "stage"]], "impresso_commons.versioning.data_statistics.NewspaperStatistics": [[5, 2, 1, "", "count_keys"], [5, 2, 1, "", "counts"], [5, 2, 1, "", "element"], [5, 2, 1, "", "granularity"], [5, 2, 1, "", "possible_count_keys"], [5, 4, 1, "", "pretty_print"], [5, 4, 1, "", "same_counts"], [5, 2, 1, "", "stage"]], "impresso_commons.versioning.helpers": [[5, 1, 1, "", "DataStage"], [5, 3, 1, "", "agg"], [5, 3, 1, "", "chunk"], [5, 3, 1, "", "clone_git_repo"], [5, 3, 1, "", "compute_stats_in_canonical_bag"], [5, 3, 1, "", "compute_stats_in_entities_bag"], [5, 3, 1, "", "compute_stats_in_langident_bag"], [5, 3, 1, "", "compute_stats_in_rebuilt_bag"], [5, 3, 1, "", "compute_stats_in_solr_text_bag"], [5, 3, 1, "", "counts_for_canonical_issue"], [5, 3, 1, "", "counts_for_rebuilt"], [5, 3, 1, "", "extract_version"], [5, 3, 1, "", "filter_new_or_modified_media"], [5, 3, 1, "", "finalize"], [5, 3, 1, "", "find_s3_data_manifest_path"], [5, 3, 1, "", "get_head_commit_url"], [5, 3, 1, "", "get_media_item_years"], [5, 3, 1, "", "get_media_titles"], [5, 3, 1, "", "git_commit_push"], [5, 3, 1, "", "increment_version"], [5, 3, 1, "", "init_media_info"], [5, 3, 1, "", "is_git_repo"], [5, 3, 1, "", "manifest_summary"], [5, 3, 1, "", "media_list_from_mft_json"], [5, 3, 1, "", "read_manifest_from_s3"], [5, 3, 1, "", "read_manifest_from_s3_path"], [5, 3, 1, "", "remove_media_in_manifest"], [5, 3, 1, "", "validate_granularity"], [5, 3, 1, "", "validate_stage"], [5, 3, 1, "", "validate_version"], [5, 3, 1, "", "version_as_list"], [5, 3, 1, "", "write_and_push_to_git"], [5, 3, 1, "", "write_dump_to_fs"]], "impresso_commons.versioning.helpers.DataStage": [[5, 2, 1, "", "CANONICAL"], [5, 2, 1, "", "EMBEDDINGS"], [5, 2, 1, "", "ENTITIES"], [5, 2, 1, "", "EVENIZED"], [5, 2, 1, "", "LANGIDENT"], [5, 2, 1, "", "LINGUISTIC_PROCESSING"], [5, 2, 1, "", "MYSQL_CIS"], [5, 2, 1, "", "OCRQA"], [5, 2, 1, "", "PASSIM"], [5, 2, 1, "", "REBUILT"], [5, 2, 1, "", "SOLR_EMBS"], [5, 2, 1, "", "SOLR_ENTITIES"], [5, 2, 1, "", "SOLR_TEXT"], [5, 2, 1, "", "TEXT_REUSE"], [5, 2, 1, "", "TOPICS"], [5, 4, 1, "", "has_value"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:attribute", "3": "py:function", "4": "py:method", "5": "py:property"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "function", "Python function"], "4": ["py", "method", "Python method"], "5": ["py", "property", "Python property"]}, "titleterms": {"imag": 0, "handl": 0, "util": [0, 4], "oliv": 0, "box": 0, "background": 0, "inform": 0, "case": 0, "1": 0, "tif": 0, "2": 0, "sever": 0, "png": 0, "3": 0, "one": 0, "onli": 0, "4": 0, "jpg": 0, "welcom": 1, "impresso": 1, "pycommon": 1, "": 1, "document": 1, "content": 1, "input": 2, "output": 2, "gener": 2, "i": 2, "o": 2, "from": 2, "file": [2, 3, 4], "system": 2, "s3": [2, 4], "text": 3, "rebuild": 3, "function": [3, 4], "helper": [3, 5], "config": [3, 4], "exampl": 3, "basic": 4, "dask": 4, "apach": 4, "uima": 4, "xmi": 4, "loader": 4, "data": 5, "version": 5, "statist": 5, "newspaperstatist": 5, "manifest": 5, "comput": 5, "script": 5}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx": 60}, "alltitles": {"Image handling": [[0, "image-handling"]], "Image Utils": [[0, "module-impresso_commons.images.img_utils"]], "Olive Boxes": [[0, "module-impresso_commons.images.olive_boxes"]], "Background information": [[0, "background-information"]], "Case 1: tif": [[0, "case-1-tif"]], "Case 2: several png": [[0, "case-2-several-png"]], "Case 3: one png only": [[0, "case-3-one-png-only"]], "Case 4: one jpg only": [[0, "case-4-one-jpg-only"]], "Welcome to Impresso PyCommons\u2019s documentation!": [[1, "welcome-to-impresso-pycommons-s-documentation"]], "Contents:": [[1, null]], "Input/Output": [[2, "input-output"]], "General": [[2, "module-impresso_commons.path"]], "I/O from file system": [[2, "module-impresso_commons.path.path_fs"]], "I/O from S3": [[2, "module-impresso_commons.path.path_s3"]], "Text Rebuild": [[3, "text-rebuild"]], "Rebuild functions": [[3, "rebuild-functions"]], "Helpers": [[3, "module-impresso_commons.text.helpers"]], "Config file example": [[3, "config-file-example"]], "Utilities": [[4, "utilities"]], "Basic Utils Functions": [[4, "module-impresso_commons.utils.utils"]], "S3 Utils Functions": [[4, "module-impresso_commons.utils.s3"]], "Dask Utils Functions": [[4, "module-impresso_commons.utils.daskutils"]], "Apache UIMA XMI Utils Functions": [[4, "module-impresso_commons.utils.uima"]], "Config File Loader": [[4, "module-impresso_commons.utils.config_loader"]], "Data Versioning": [[5, "data-versioning"]], "Data Statistics and NewspaperStatistics": [[5, "module-impresso_commons.versioning.data_statistics"]], "Data Manifest": [[5, "module-impresso_commons.versioning.data_manifest"]], "Versioning Helpers": [[5, "module-impresso_commons.versioning.helpers"]], "Manifest Computing Script": [[5, "module-impresso_commons.versioning.compute_manifest"]]}, "indexentries": {"boxstrategy (class in impresso_commons.images.img_utils)": [[0, "impresso_commons.images.img_utils.BoxStrategy"]], "compose() (in module impresso_commons.images.img_utils)": [[0, "impresso_commons.images.img_utils.compose"]], "compute_box() (in module impresso_commons.images.olive_boxes)": [[0, "impresso_commons.images.olive_boxes.compute_box"]], "compute_scale_factor() (in module impresso_commons.images.olive_boxes)": [[0, "impresso_commons.images.olive_boxes.compute_scale_factor"]], "convert_box() (in module impresso_commons.images.olive_boxes)": [[0, "impresso_commons.images.olive_boxes.convert_box"]], "get_iiif_url() (in module impresso_commons.images.olive_boxes)": [[0, "impresso_commons.images.olive_boxes.get_iiif_url"]], "get_img_from_archive() (in module impresso_commons.images.img_utils)": [[0, "impresso_commons.images.img_utils.get_img_from_archive"]], "get_imgdimensions() (in module impresso_commons.images.img_utils)": [[0, "impresso_commons.images.img_utils.get_imgdimensions"]], "get_jpg() (in module impresso_commons.images.img_utils)": [[0, "impresso_commons.images.img_utils.get_jpg"]], "get_page_folders() (in module impresso_commons.images.img_utils)": [[0, "impresso_commons.images.img_utils.get_page_folders"]], "get_png() (in module impresso_commons.images.img_utils)": [[0, "impresso_commons.images.img_utils.get_png"]], "get_scale_factor() (in module impresso_commons.images.olive_boxes)": [[0, "impresso_commons.images.olive_boxes.get_scale_factor"]], "get_tif() (in module impresso_commons.images.img_utils)": [[0, "impresso_commons.images.img_utils.get_tif"]], "impresso_commons.images.img_utils": [[0, "module-impresso_commons.images.img_utils"]], "impresso_commons.images.olive_boxes": [[0, "module-impresso_commons.images.olive_boxes"]], "jpg_highest (impresso_commons.images.img_utils.boxstrategy attribute)": [[0, "impresso_commons.images.img_utils.BoxStrategy.jpg_highest"]], "jpg_uniq (impresso_commons.images.img_utils.boxstrategy attribute)": [[0, "impresso_commons.images.img_utils.BoxStrategy.jpg_uniq"]], "module": [[0, "module-impresso_commons.images.img_utils"], [0, "module-impresso_commons.images.olive_boxes"], [2, "module-impresso_commons.path"], [2, "module-impresso_commons.path.path_fs"], [2, "module-impresso_commons.path.path_s3"], [3, "module-impresso_commons.text.helpers"], [3, "module-impresso_commons.text.rebuilder"], [4, "module-impresso_commons.utils.config_loader"], [4, "module-impresso_commons.utils.daskutils"], [4, "module-impresso_commons.utils.s3"], [4, "module-impresso_commons.utils.uima"], [4, "module-impresso_commons.utils.utils"], [5, "module-impresso_commons.versioning.compute_manifest"], [5, "module-impresso_commons.versioning.data_manifest"], [5, "module-impresso_commons.versioning.data_statistics"], [5, "module-impresso_commons.versioning.helpers"]], "png_highest (impresso_commons.images.img_utils.boxstrategy attribute)": [[0, "impresso_commons.images.img_utils.BoxStrategy.png_highest"]], "png_uniq (impresso_commons.images.img_utils.boxstrategy attribute)": [[0, "impresso_commons.images.img_utils.BoxStrategy.png_uniq"]], "run_cmd() (in module impresso_commons.images.img_utils)": [[0, "impresso_commons.images.img_utils.run_cmd"]], "test() (in module impresso_commons.images.olive_boxes)": [[0, "impresso_commons.images.olive_boxes.test"]], "tif (impresso_commons.images.img_utils.boxstrategy attribute)": [[0, "impresso_commons.images.img_utils.BoxStrategy.tif"]], "contentitem (in module impresso_commons.path.path_fs)": [[2, "impresso_commons.path.path_fs.ContentItem"]], "issuedir (class in impresso_commons.path.path_fs)": [[2, "impresso_commons.path.path_fs.IssueDir"]], "issuedir (in module impresso_commons.path.path_s3)": [[2, "impresso_commons.path.path_s3.IssueDir"]], "canonical_path() (in module impresso_commons.path.path_fs)": [[2, "impresso_commons.path.path_fs.canonical_path"]], "check_filenaming() (in module impresso_commons.path.path_fs)": [[2, "impresso_commons.path.path_fs.check_filenaming"]], "date (impresso_commons.path.path_fs.issuedir attribute)": [[2, "impresso_commons.path.path_fs.IssueDir.date"]], "detect_canonical_issues() (in module impresso_commons.path.path_fs)": [[2, "impresso_commons.path.path_fs.detect_canonical_issues"]], "detect_issues() (in module impresso_commons.path.path_fs)": [[2, "impresso_commons.path.path_fs.detect_issues"]], "detect_journal_issues() (in module impresso_commons.path.path_fs)": [[2, "impresso_commons.path.path_fs.detect_journal_issues"]], "edition (impresso_commons.path.path_fs.issuedir attribute)": [[2, "impresso_commons.path.path_fs.IssueDir.edition"]], "fetch_files() (in module impresso_commons.path.path_s3)": [[2, "impresso_commons.path.path_s3.fetch_files"]], "get_issueshortpath() (in module impresso_commons.path.path_fs)": [[2, "impresso_commons.path.path_fs.get_issueshortpath"]], "id2issuedir() (in module impresso_commons.path)": [[2, "impresso_commons.path.id2IssueDir"]], "impresso_commons.path": [[2, "module-impresso_commons.path"]], "impresso_commons.path.path_fs": [[2, "module-impresso_commons.path.path_fs"]], "impresso_commons.path.path_s3": [[2, "module-impresso_commons.path.path_s3"]], "impresso_iter_bucket() (in module impresso_commons.path.path_s3)": [[2, "impresso_commons.path.path_s3.impresso_iter_bucket"]], "journal (impresso_commons.path.path_fs.issuedir attribute)": [[2, "impresso_commons.path.path_fs.IssueDir.journal"]], "list_files() (in module impresso_commons.path.path_s3)": [[2, "impresso_commons.path.path_s3.list_files"]], "list_newspapers() (in module impresso_commons.path.path_s3)": [[2, "impresso_commons.path.path_s3.list_newspapers"]], "pair_issue() (in module impresso_commons.path.path_fs)": [[2, "impresso_commons.path.path_fs.pair_issue"]], "parse_canonical_filename() (in module impresso_commons.path)": [[2, "impresso_commons.path.parse_canonical_filename"]], "path (impresso_commons.path.path_fs.issuedir attribute)": [[2, "impresso_commons.path.path_fs.IssueDir.path"]], "read_s3_issues() (in module impresso_commons.path.path_s3)": [[2, "impresso_commons.path.path_s3.read_s3_issues"]], "s3contentitem (class in impresso_commons.path.path_s3)": [[2, "impresso_commons.path.path_s3.s3ContentItem"]], "s3_filter_archives() (in module impresso_commons.path.path_s3)": [[2, "impresso_commons.path.path_s3.s3_filter_archives"]], "s3_iter_bucket() (in module impresso_commons.path.path_s3)": [[2, "impresso_commons.path.path_s3.s3_iter_bucket"]], "select_issues() (in module impresso_commons.path.path_fs)": [[2, "impresso_commons.path.path_fs.select_issues"]], "cleanup() (in module impresso_commons.text.rebuilder)": [[3, "impresso_commons.text.rebuilder.cleanup"]], "compress() (in module impresso_commons.text.rebuilder)": [[3, "impresso_commons.text.rebuilder.compress"]], "get_iiif_and_coords() (in module impresso_commons.text.helpers)": [[3, "impresso_commons.text.helpers.get_iiif_and_coords"]], "impresso_commons.text.helpers": [[3, "module-impresso_commons.text.helpers"]], "impresso_commons.text.rebuilder": [[3, "module-impresso_commons.text.rebuilder"]], "init_logging() (in module impresso_commons.text.rebuilder)": [[3, "impresso_commons.text.rebuilder.init_logging"]], "insert_whitespace() (in module impresso_commons.text.helpers)": [[3, "impresso_commons.text.helpers.insert_whitespace"]], "main() (in module impresso_commons.text.rebuilder)": [[3, "impresso_commons.text.rebuilder.main"]], "pages_to_article() (in module impresso_commons.text.helpers)": [[3, "impresso_commons.text.helpers.pages_to_article"]], "read_issue() (in module impresso_commons.text.helpers)": [[3, "impresso_commons.text.helpers.read_issue"]], "read_issue_pages() (in module impresso_commons.text.helpers)": [[3, "impresso_commons.text.helpers.read_issue_pages"]], "read_page() (in module impresso_commons.text.helpers)": [[3, "impresso_commons.text.helpers.read_page"]], "rebuild_for_passim() (in module impresso_commons.text.rebuilder)": [[3, "impresso_commons.text.rebuilder.rebuild_for_passim"]], "rebuild_for_solr() (in module impresso_commons.text.rebuilder)": [[3, "impresso_commons.text.rebuilder.rebuild_for_solr"]], "rebuild_issues() (in module impresso_commons.text.rebuilder)": [[3, "impresso_commons.text.rebuilder.rebuild_issues"]], "rebuild_text() (in module impresso_commons.text.rebuilder)": [[3, "impresso_commons.text.rebuilder.rebuild_text"]], "rebuild_text_passim() (in module impresso_commons.text.rebuilder)": [[3, "impresso_commons.text.rebuilder.rebuild_text_passim"]], "reconstruct_iiif_link() (in module impresso_commons.text.helpers)": [[3, "impresso_commons.text.helpers.reconstruct_iiif_link"]], "rejoin_articles() (in module impresso_commons.text.helpers)": [[3, "impresso_commons.text.helpers.rejoin_articles"]], "text_apply_breaks() (in module impresso_commons.text.helpers)": [[3, "impresso_commons.text.helpers.text_apply_breaks"]], "upload() (in module impresso_commons.text.rebuilder)": [[3, "impresso_commons.text.rebuilder.upload"]], "base (class in impresso_commons.utils.config_loader)": [[4, "impresso_commons.utils.config_loader.Base"]], "partitionerconfig (class in impresso_commons.utils.config_loader)": [[4, "impresso_commons.utils.config_loader.PartitionerConfig"]], "alternative_read_text() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.alternative_read_text"]], "bytes_to() (in module impresso_commons.utils.utils)": [[4, "impresso_commons.utils.utils.bytes_to"]], "check_bucket() (impresso_commons.utils.config_loader.base method)": [[4, "impresso_commons.utils.config_loader.Base.check_bucket"]], "check_params() (impresso_commons.utils.config_loader.base method)": [[4, "impresso_commons.utils.config_loader.Base.check_params"]], "chunk() (in module impresso_commons.utils.utils)": [[4, "impresso_commons.utils.utils.chunk"]], "compute_image_links() (in module impresso_commons.utils.uima)": [[4, "impresso_commons.utils.uima.compute_image_links"]], "create_even_partitions() (in module impresso_commons.utils.daskutils)": [[4, "impresso_commons.utils.daskutils.create_even_partitions"]], "fixed_s3fs_glob() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.fixed_s3fs_glob"]], "from_json() (impresso_commons.utils.config_loader.base class method)": [[4, "impresso_commons.utils.config_loader.Base.from_json"]], "get_boto3_bucket() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.get_boto3_bucket"]], "get_bucket() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.get_bucket"]], "get_bucket_boto3() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.get_bucket_boto3"]], "get_iiif_links() (in module impresso_commons.utils.uima)": [[4, "impresso_commons.utils.uima.get_iiif_links"]], "get_or_create_bucket() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.get_or_create_bucket"]], "get_pkg_resource() (in module impresso_commons.utils.utils)": [[4, "impresso_commons.utils.utils.get_pkg_resource"]], "get_s3_client() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.get_s3_client"]], "get_s3_connection() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.get_s3_connection"]], "get_s3_object_size() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.get_s3_object_size"]], "get_s3_resource() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.get_s3_resource"]], "get_s3_versions() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.get_s3_versions"]], "get_s3_versions_client() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.get_s3_versions_client"]], "get_storage_options() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.get_storage_options"]], "impresso_commons.utils.config_loader": [[4, "module-impresso_commons.utils.config_loader"]], "impresso_commons.utils.daskutils": [[4, "module-impresso_commons.utils.daskutils"]], "impresso_commons.utils.s3": [[4, "module-impresso_commons.utils.s3"]], "impresso_commons.utils.uima": [[4, "module-impresso_commons.utils.uima"]], "impresso_commons.utils.utils": [[4, "module-impresso_commons.utils.utils"]], "init_logger() (in module impresso_commons.utils.utils)": [[4, "impresso_commons.utils.utils.init_logger"]], "main() (in module impresso_commons.utils.config_loader)": [[4, "impresso_commons.utils.config_loader.main"]], "main() (in module impresso_commons.utils.daskutils)": [[4, "impresso_commons.utils.daskutils.main"]], "parse_json() (in module impresso_commons.utils.utils)": [[4, "impresso_commons.utils.utils.parse_json"]], "partitioner() (in module impresso_commons.utils.daskutils)": [[4, "impresso_commons.utils.daskutils.partitioner"]], "read_jsonlines() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.read_jsonlines"]], "readtext_jsonlines() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.readtext_jsonlines"]], "rebuilt2xmi() (in module impresso_commons.utils.uima)": [[4, "impresso_commons.utils.uima.rebuilt2xmi"]], "s3_get_articles() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.s3_get_articles"]], "s3_get_pages() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.s3_get_pages"]], "to_dict() (impresso_commons.utils.config_loader.base method)": [[4, "impresso_commons.utils.config_loader.Base.to_dict"]], "upload() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.upload"]], "upload_to_s3() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.upload_to_s3"]], "validate_against_schema() (in module impresso_commons.utils.utils)": [[4, "impresso_commons.utils.utils.validate_against_schema"]], "canonical (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.CANONICAL"]], "datamanifest (class in impresso_commons.versioning.data_manifest)": [[5, "impresso_commons.versioning.data_manifest.DataManifest"]], "datastage (class in impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.DataStage"]], "datastatistics (class in impresso_commons.versioning.data_statistics)": [[5, "impresso_commons.versioning.data_statistics.DataStatistics"]], "embeddings (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.EMBEDDINGS"]], "entities (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.ENTITIES"]], "evenized (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.EVENIZED"]], "langident (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.LANGIDENT"]], "linguistic_processing (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.LINGUISTIC_PROCESSING"]], "mysql_cis (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.MYSQL_CIS"]], "newspaperstatistics (class in impresso_commons.versioning.data_statistics)": [[5, "impresso_commons.versioning.data_statistics.NewspaperStatistics"]], "ocrqa (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.OCRQA"]], "passim (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.PASSIM"]], "rebuilt (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.REBUILT"]], "solr_embs (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.SOLR_EMBS"]], "solr_entities (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.SOLR_ENTITIES"]], "solr_text (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.SOLR_TEXT"]], "text_reuse (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.TEXT_REUSE"]], "topics (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.TOPICS"]], "add_by_ci_id() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.add_by_ci_id"]], "add_by_title_year() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.add_by_title_year"]], "add_count_list_by_title_year() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.add_count_list_by_title_year"]], "add_counts() (impresso_commons.versioning.data_statistics.datastatistics method)": [[5, "impresso_commons.versioning.data_statistics.DataStatistics.add_counts"]], "agg() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.agg"]], "aggregate_stats_for_title() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.aggregate_stats_for_title"]], "append_to_notes() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.append_to_notes"]], "chunk() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.chunk"]], "clone_git_repo() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.clone_git_repo"]], "compute() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.compute"]], "compute_stats_for_stage() (in module impresso_commons.versioning.compute_manifest)": [[5, "impresso_commons.versioning.compute_manifest.compute_stats_for_stage"]], "compute_stats_in_canonical_bag() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.compute_stats_in_canonical_bag"]], "compute_stats_in_entities_bag() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.compute_stats_in_entities_bag"]], "compute_stats_in_langident_bag() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.compute_stats_in_langident_bag"]], "compute_stats_in_rebuilt_bag() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.compute_stats_in_rebuilt_bag"]], "compute_stats_in_solr_text_bag() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.compute_stats_in_solr_text_bag"]], "count_keys (impresso_commons.versioning.data_statistics.datastatistics attribute)": [[5, "impresso_commons.versioning.data_statistics.DataStatistics.count_keys"]], "count_keys (impresso_commons.versioning.data_statistics.newspaperstatistics attribute)": [[5, "impresso_commons.versioning.data_statistics.NewspaperStatistics.count_keys"]], "counts (impresso_commons.versioning.data_statistics.datastatistics attribute)": [[5, "impresso_commons.versioning.data_statistics.DataStatistics.counts"]], "counts (impresso_commons.versioning.data_statistics.newspaperstatistics attribute)": [[5, "impresso_commons.versioning.data_statistics.NewspaperStatistics.counts"]], "counts_for_canonical_issue() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.counts_for_canonical_issue"]], "counts_for_rebuilt() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.counts_for_rebuilt"]], "create_manifest() (in module impresso_commons.versioning.compute_manifest)": [[5, "impresso_commons.versioning.compute_manifest.create_manifest"]], "define_update_info_for_title() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.define_update_info_for_title"]], "element (impresso_commons.versioning.data_statistics.datastatistics attribute)": [[5, "impresso_commons.versioning.data_statistics.DataStatistics.element"]], "element (impresso_commons.versioning.data_statistics.newspaperstatistics attribute)": [[5, "impresso_commons.versioning.data_statistics.NewspaperStatistics.element"]], "extract_np_key() (in module impresso_commons.versioning.compute_manifest)": [[5, "impresso_commons.versioning.compute_manifest.extract_np_key"]], "extract_version() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.extract_version"]], "filter_new_or_modified_media() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.filter_new_or_modified_media"]], "finalize() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.finalize"]], "find_s3_data_manifest_path() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.find_s3_data_manifest_path"]], "generate_media_dict() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.generate_media_dict"]], "get_count_keys() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.get_count_keys"]], "get_files_to_consider() (in module impresso_commons.versioning.compute_manifest)": [[5, "impresso_commons.versioning.compute_manifest.get_files_to_consider"]], "get_head_commit_url() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.get_head_commit_url"]], "get_media_item_years() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.get_media_item_years"]], "get_media_titles() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.get_media_titles"]], "git_commit_push() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.git_commit_push"]], "granularity (impresso_commons.versioning.data_statistics.datastatistics attribute)": [[5, "impresso_commons.versioning.data_statistics.DataStatistics.granularity"]], "granularity (impresso_commons.versioning.data_statistics.newspaperstatistics attribute)": [[5, "impresso_commons.versioning.data_statistics.NewspaperStatistics.granularity"]], "has_title_year_key() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.has_title_year_key"]], "has_value() (impresso_commons.versioning.helpers.datastage class method)": [[5, "impresso_commons.versioning.helpers.DataStage.has_value"]], "impresso_commons.versioning.compute_manifest": [[5, "module-impresso_commons.versioning.compute_manifest"]], "impresso_commons.versioning.data_manifest": [[5, "module-impresso_commons.versioning.data_manifest"]], "impresso_commons.versioning.data_statistics": [[5, "module-impresso_commons.versioning.data_statistics"]], "impresso_commons.versioning.helpers": [[5, "module-impresso_commons.versioning.helpers"]], "increment_version() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.increment_version"]], "init_counts() (impresso_commons.versioning.data_statistics.datastatistics method)": [[5, "impresso_commons.versioning.data_statistics.DataStatistics.init_counts"]], "init_media_info() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.init_media_info"]], "init_yearly_count_dict() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.init_yearly_count_dict"]], "is_git_repo() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.is_git_repo"]], "main() (in module impresso_commons.versioning.compute_manifest)": [[5, "impresso_commons.versioning.compute_manifest.main"]], "manifest_summary() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.manifest_summary"]], "media_list_from_mft_json() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.media_list_from_mft_json"]], "new_media() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.new_media"]], "output_mft_s3_path (impresso_commons.versioning.data_manifest.datamanifest property)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.output_mft_s3_path"]], "overall_stats() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.overall_stats"]], "possible_count_keys (impresso_commons.versioning.data_statistics.newspaperstatistics attribute)": [[5, "impresso_commons.versioning.data_statistics.NewspaperStatistics.possible_count_keys"]], "pretty_print() (impresso_commons.versioning.data_statistics.datastatistics method)": [[5, "impresso_commons.versioning.data_statistics.DataStatistics.pretty_print"]], "pretty_print() (impresso_commons.versioning.data_statistics.newspaperstatistics method)": [[5, "impresso_commons.versioning.data_statistics.NewspaperStatistics.pretty_print"]], "read_manifest_from_s3() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.read_manifest_from_s3"]], "read_manifest_from_s3_path() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.read_manifest_from_s3_path"]], "remove_media_in_manifest() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.remove_media_in_manifest"]], "replace_by_ci_id() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.replace_by_ci_id"]], "replace_by_title_year() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.replace_by_title_year"]], "same_counts() (impresso_commons.versioning.data_statistics.datastatistics method)": [[5, "impresso_commons.versioning.data_statistics.DataStatistics.same_counts"]], "same_counts() (impresso_commons.versioning.data_statistics.newspaperstatistics method)": [[5, "impresso_commons.versioning.data_statistics.NewspaperStatistics.same_counts"]], "stage (impresso_commons.versioning.data_statistics.datastatistics attribute)": [[5, "impresso_commons.versioning.data_statistics.DataStatistics.stage"]], "stage (impresso_commons.versioning.data_statistics.newspaperstatistics attribute)": [[5, "impresso_commons.versioning.data_statistics.NewspaperStatistics.stage"]], "title_level_stats() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.title_level_stats"]], "update_media_stats() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.update_media_stats"]], "validate_and_export_manifest() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.validate_and_export_manifest"]], "validate_config() (in module impresso_commons.versioning.compute_manifest)": [[5, "impresso_commons.versioning.compute_manifest.validate_config"]], "validate_granularity() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.validate_granularity"]], "validate_stage() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.validate_stage"]], "validate_version() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.validate_version"]], "version_as_list() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.version_as_list"]], "write_and_push_to_git() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.write_and_push_to_git"]], "write_dump_to_fs() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.write_dump_to_fs"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["images", "index", "io", "rebuild", "utils", "versioning"], "filenames": ["images.rst", "index.rst", "io.rst", "rebuild.rst", "utils.rst", "versioning.rst"], "titles": ["Image handling", "Welcome to Impresso PyCommons\u2019s documentation!", "Input/Output", "Text Rebuild", "Utilities", "Data Versioning"], "terms": {"class": [0, 2, 4, 5], "impresso_common": [0, 2, 3, 4, 5], "img_util": 0, "boxstrategi": 0, "valu": [0, 2, 4, 5], "name": [0, 2, 3, 4, 5], "none": [0, 2, 3, 4, 5], "modul": [0, 1, 5], "qualnam": [0, 5], "type": [0, 2, 3, 4, 5], "start": [0, 4, 5], "boundari": [0, 5], "base": [0, 2, 3, 4, 5], "enum": [0, 5], "jpg_highest": 0, "jpg_uniq": 0, "png_highest": 0, "png_uniq": 0, "compos": 0, "path_img_on": 0, "path_img_two": 0, "path_img_thre": 0, "get_img_from_arch": 0, "archiv": [0, 3, 4], "path_check": 0, "ext_check": 0, "name_check": 0, "get_imgdimens": 0, "image_data": 0, "return": [0, 2, 3, 4, 5], "height": 0, "width": 0, "get_jpg": 0, "page_digit": 0, "get_page_fold": 0, "get_png": 0, "get_tif": 0, "run_cmd": 0, "cmd": 0, "execut": 0, "shell": 0, "result": [0, 2, 4, 5], "stdout": 0, "stderr": 0, "function": [0, 1, 5], "support": [0, 2, 4], "re": [0, 5], "comput": [0, 1, 2, 4], "coordin": [0, 3, 4], "olive_box": 0, "compute_box": 0, "scale_factor": 0, "input_box": 0, "iiif": [0, 3, 4], "rel": [0, 5], "paramet": [0, 2, 3, 4, 5], "float": [0, 4, 5], "ratio": 0, "between": [0, 5], "differ": [0, 3, 4, 5], "dimens": 0, "str": [0, 2, 3, 4, 5], "string": [0, 2, 3, 4, 5], "separ": [0, 2, 4, 5], "space": 0, "new": [0, 4, 5], "compute_scale_factor": 0, "img_source_path": 0, "img_dest_path": 0, "x": 0, "scale": [0, 3], "factor": 0, "bewteen": 0, "full": [0, 5], "path": [0, 2, 3, 4, 5], "sourc": [0, 4], "destin": 0, "convert_box": 0, "convert": [0, 4, 5], "y": 0, "w": 0, "h": 0, "upper": 0, "left": 0, "lower": [0, 5], "right": 0, "get_iiif_url": 0, "page_id": 0, "http": [0, 2, 3, 4, 5], "dhlabsrv17": [0, 4], "epfl": [0, 3, 4], "ch": [0, 4], "iiif_impresso": [0, 4], "iiif_manifest_uri": 0, "pct": [0, 4], "bool": [0, 2, 3, 4, 5], "fals": [0, 2, 4, 5], "impresso": [0, 2, 3, 4, 5], "url": [0, 4, 5], "given": [0, 2, 3, 4, 5], "page": [0, 2, 3, 4, 5], "id": [0, 2, 3, 4, 5], "e": [0, 2, 3, 4, 5], "g": [0, 2, 3, 4], "exp": 0, "1930": 0, "06": 0, "10": [0, 2, 4, 5], "p0001": [0, 2, 4], "blank": [0, 2], "get_scale_factor": 0, "issue_dir_path": 0, "page_xml": 0, "box_strategi": 0, "img_source_nam": 0, "context": [0, 4], "strategi": 0, "choos": 0, "issu": [0, 2, 3, 4, 5], "zipfil": 0, "zip": 0, "byte": [0, 4], "xml": 0, "handler": 0, "found": [0, 4, 5], "info": [0, 3, 4, 5], "txt": [0, 2], "from": [0, 1, 3, 4, 5], "jp2": 0, "folder": 0, "hopefulli": 0, "correct": 0, "librari": [0, 4], "take": [0, 2, 4], "best": 0, "avail": 0, "highest": 0, "were": [0, 5], "accord": [0, 2], "an": [0, 2, 3, 4, 5], "which": [0, 3, 4, 5], "we": 0, "have": [0, 3, 4, 5], "identifi": 0, "among": 0, "format": [0, 3, 4, 5], "coverag": 0, "i": [0, 1, 3, 4, 5], "devis": 0, "The": [0, 2, 3, 4, 5], "present": [0, 2, 3, 5], "file": [0, 1, 5], "wa": [0, 3, 5], "dest": 0, "can": [0, 3, 4, 5], "therefor": 0, "us": [0, 2, 3, 4, 5], "need": [0, 3, 4, 5], "read": [0, 2, 3, 4, 5], "normal": 0, "In": [0, 2, 3, 5], "thi": [0, 3, 4, 5], "acquir": 0, "It": [0, 3, 4, 5], "look": [0, 5], "also": [0, 5], "took": [0, 5], "ocr": [0, 4], "possibl": [0, 2, 4, 5], "reli": 0, "resolut": 0, "indic": [0, 5], "should": [0, 3, 4, 5], "same": [0, 5], "our": [0, 2, 3, 4], "n": [0, 4], "b": [0, 2, 3, 4], "heigth": 0, "do": [0, 5], "correspond": [0, 2, 4, 5], "usual": 0, "discrep": [0, 4], "tag": 0, "images_resolut": 0, "hand": 0, "page_width": 0, "other": [0, 5], "seem": [0, 2, 4], "ignor": 0, "current": [0, 3, 5], "here": [0, 4, 5], "ar": [0, 2, 3, 4, 5], "equal": 0, "To": 0, "check": [0, 2, 4, 5], "happen": 0, "choic": 0, "acquisit": [0, 3], "addit": [0, 3, 5], "see": [0, 2, 3], "ones": [0, 5], "danger": 0, "anoth": [0, 5], "did": 0, "provid": [0, 4, 5], "thing": [0, 5], "fit": 0, "like": 0, "test": [0, 5], "move": [0, 5], "proper": [0, 4], "unit": [0, 4], "python": 1, "bit": 1, "code": [1, 2], "object": [1, 2, 3, 4, 5], "highli": 1, "reusabl": [1, 4], "within": [1, 2, 4, 5], "input": [1, 3, 4, 5], "output": [1, 3, 4, 5], "gener": [1, 3, 4, 5], "o": [1, 4], "system": [1, 5], "s3": [1, 3, 5], "text": [1, 4, 5], "rebuild": 1, "helper": 1, "config": [1, 2, 5], "exampl": [1, 2, 4, 5], "util": [1, 3, 5], "basic": [1, 3, 5], "dask": [1, 2, 3, 5], "apach": 1, "uima": 1, "xmi": 1, "loader": 1, "imag": [1, 2, 3, 5], "handl": [1, 4, 5], "oliv": 1, "box": [1, 4], "data": [1, 2, 3, 4], "version": [1, 2, 4], "statist": 1, "newspap": [1, 2, 3, 4], "manifest": [1, 3, 4], "script": [1, 3], "id2issuedir": 2, "todo": [2, 5], "document": [2, 3, 5], "parse_canonical_filenam": 2, "filenam": [2, 4, 5], "pars": 2, "canon": [2, 3, 4, 5], "its": [2, 3, 5], "compon": 2, "tupl": [2, 3, 4, 5], "gdl": [2, 3, 4], "1950": 2, "01": 2, "02": 2, "i0002": 2, "2": [2, 3, 4, 5], "": [2, 3, 4, 5], "directori": [2, 3, 4, 5], "structur": [2, 5], "path_f": 2, "contentitem": [2, 4], "alia": 2, "item": [2, 3, 4, 5], "issuedir": [2, 3, 4], "journal": 2, "date": [2, 4, 5], "edit": 2, "field": [2, 5], "number": [2, 3, 4, 5], "1": [2, 3, 4, 5], "0": [2, 3, 4, 5], "3": [2, 5], "canonical_path": 2, "dir": [2, 3, 5], "extens": [2, 4, 5], "path_typ": 2, "creat": [2, 3, 4, 5], "repres": [2, 5], "onli": [2, 4, 5], "build": 2, "check_filenam": 2, "file_basenam": 2, "whether": [2, 3, 4, 5], "compli": 2, "convent": 2, "1900": [2, 3], "detect_canonical_issu": 2, "base_dir": 2, "detect": [2, 4], "import": [2, 3], "nb": [2, 3, 4], "invalid": 2, "skip": 2, "warn": [2, 4], "messag": [2, 5], "log": [2, 3, 4, 5], "root": [2, 3, 4], "list": [2, 3, 4, 5], "consid": [2, 4, 5], "acronym": 2, "instanc": [2, 4], "detect_issu": 2, "journal_filt": 2, "exclud": [2, 5], "basestr": 2, "set": [2, 3, 4, 5], "filter": [2, 3, 4], "posit": 2, "neg": 2, "boolean": [2, 3, 4], "detect_journal_issu": 2, "get_issueshortpath": 2, "short": [2, 4], "pair_issu": 2, "issue_list1": 2, "issue_list2": 2, "associ": [2, 5], "pair": [2, 5], "origin": [2, 5], "repositori": [2, 3, 4, 5], "arrai": 2, "contain": [2, 3, 4, 5], "issue1": 2, "issue2": 2, "select_issu": 2, "config_dict": [2, 4, 5], "inp_dir": 2, "configur": [2, 3, 4, 5], "select": 2, "md": [2, 3, 5], "explan": 2, "usag": [2, 3, 4, 5], "config_fil": 2, "isfil": 2, "open": [2, 3], "r": 2, "f": [2, 3, 4], "json": [2, 3, 4, 5], "load": [2, 4, 5], "els": [2, 3], "dict": [2, 3, 4, 5], "dit": 2, "where": [2, 3, 4, 5], "get": [2, 3, 4, 5], "path_s3": 2, "issuedirectori": 2, "fetch_fil": 2, "bucket_nam": [2, 3, 4, 5], "true": [2, 4, 5], "file_typ": 2, "newspapers_filt": 2, "bag": [2, 4, 5], "fetch": [2, 3, 5], "bucket": [2, 3, 4, 5], "If": [2, 3, 4, 5], "content": [2, 3, 4, 5], "all": [2, 3, 4, 5], "specifi": [2, 3, 4], "remain": 2, "distribut": [2, 4], "both": [2, 5], "alwai": [2, 5], "first": [2, 3], "element": [2, 4, 5], "second": 2, "henc": 2, "entri": 2, "undesir": 2, "adapt": [2, 3], "github": [2, 3, 5], "com": [2, 3], "sanitycheck": 2, "tree": 2, "master": [2, 5], "sanity_check": 2, "s3_data": 2, "py": [2, 3, 4, 5], "form": [2, 5], "option": [2, 3, 4, 5], "default": [2, 3, 4, 5], "rais": [2, 4, 5], "notimplementederror": 2, "one": [2, 3, 4, 5], "db": [2, 4, 5], "core": [2, 4, 5], "impresso_iter_bucket": 2, "item_typ": 2, "prefix": [2, 4], "filter_config": 2, "partition_s": 2, "15": [2, 4], "iter": 2, "over": 2, "possibli": 2, "either": [2, 5], "valid": [2, 4, 5], "individu": [2, 5], "articl": [2, 3, 4], "param": [2, 3, 4], "kei": [2, 3, 4, 5], "exclus": 2, "year": [2, 3, 4, 5], "interv": 2, "1960": 2, "jdg": 2, "1890": 2, "last": [2, 4, 5], "partit": [2, 4, 5], "size": [2, 4, 5], "list_fil": 2, "locat": 2, "list_newspap": 2, "s3_client": [2, 3], "botocor": 2, "client": [2, 3, 4, 5], "page_s": 2, "int": [2, 3, 4, 5], "10000": 2, "25": 2, "000": 2, "maximum": 2, "pages": 2, "switchengin": 2, "implement": [2, 5], "ceph": 2, "copi": 2, "get_s3_client": [2, 4], "pagin": 2, "alias": 2, "read_s3_issu": 2, "input_bucket": [2, 3], "s3contentitem": 2, "key_nam": [2, 4], "doc_typ": 2, "rebuilt_vers": 2, "canonical_vers": 2, "s3_filter_arch": 2, "suffix": 2, "jsonl": [2, 4, 5], "bz2": [2, 4, 5], "k": [2, 4], "v": [2, 5], "time": [2, 5], "rubric": 2, "1970": 2, "empti": [2, 5], "mean": [2, 5], "1798": 2, "1999": [2, 3], "each": [2, 4, 5], "10th": 2, "sequenc": 2, "key_suffix": 2, "end": [2, 5], "s3_iter_bucket": 2, "get_bucket": [2, 4], "mybucket": 2, "begin": 2, "how": [2, 5], "A": [3, 4, 5], "transform": 3, "purpos": 3, "cli": 3, "For": [3, 5], "member": [3, 5], "run": [3, 5], "runai": 3, "infrastructur": 3, "blob": 3, "main": [3, 4, 5], "howto": 3, "rebuild_articl": 3, "od": 3, "fc": 3, "fo": 3, "schedul": [3, 5], "sch": [3, 5], "ob": 3, "verbos": [3, 4, 5], "clear": 3, "languag": 3, "lg": 3, "nworker": [3, 5], "nw": [3, 5], "git": [3, 5], "repo": [3, 5], "gr": 3, "temp": 3, "tp": 3, "prev": 3, "pm": 3, "rebuilt": [3, 4, 5], "upload": [3, 4, 5], "otherwis": [3, 4, 5], "tell": [3, 5], "exist": [3, 4, 5], "ll": [3, 5], "level": [3, 4, 5], "debug": [3, 5], "remov": [3, 5], "befor": 3, "after": [3, 4, 5], "solr": [3, 5], "passim": [3, 5], "worker": [3, 4, 5], "local": [3, 4, 5], "includ": [3, 5], "temporari": 3, "clone": [3, 5], "releas": [3, 5], "previou": [3, 5], "cleanup": 3, "upload_success": 3, "filepath": [3, 5], "ha": [3, 5], "been": [3, 5], "successfulli": 3, "success": [3, 4, 5], "compress": 3, "json_fil": [3, 4], "output_dir": [3, 4], "merg": 3, "line": [3, 4, 5], "singl": 3, "signatur": 3, "write": [3, 4, 5], "sort": 3, "serial": [3, 5], "rytp": 3, "sort_kei": 3, "expect": [3, 5], "concaten": 3, "init_log": 3, "initialis": [3, 4], "logger": [3, 4], "desir": [3, 4, 5], "rootlogg": [3, 4], "duplic": 3, "init_logg": [3, 4], "could": [3, 4, 5], "work": 3, "properli": 3, "so": [3, 5], "keep": [3, 4], "rebuild_for_passim": 3, "content_item": 3, "ani": [3, 4, 5], "metadata": [3, 4], "built": 3, "rebuild_for_solr": 3, "thought": 3, "especi": 3, "ingest": [3, 5], "index": [3, 5], "follow": [3, 4, 5], "schema": [3, 4, 5], "rebuild_issu": 3, "dask_client": 3, "_format": 3, "filter_languag": 3, "outp_dir": 3, "store": [3, 4, 5], "rebuild_text": 3, "append": [3, 5], "conform": 3, "being": 3, "fulltext": 3, "offset": [3, 4], "token": 3, "region": 3, "rebuild_text_passim": 3, "group": 3, "get_iiif_and_coord": 3, "ci": [3, 4, 5], "link": [3, 4], "variou": [3, 4, 5], "case": [3, 4, 5], "117": 3, "retriev": [3, 4, 5], "inform": [3, 4, 5], "part": [3, 5], "miss": [3, 5], "insert_whitespac": 3, "next_t": 3, "prev_t": 3, "lang": [3, 5], "determin": [3, 5], "whitespac": 3, "insert": 3, "pages_to_articl": 3, "belong": 3, "read_issu": 3, "inject": 3, "s3_version": 3, "boto3": [3, 4], "resourc": [3, 4], "factori": [3, 4], "serviceresourc": [3, 4], "connect": [3, 4], "storag": 3, "represent": [3, 5], "read_issue_pag": 3, "issue_json": 3, "parallel": [3, 4], "read_pag": 3, "page_kei": 3, "reconstruct_iiif_link": 3, "construct": [3, 5], "api": 3, "endpoint": [3, 4], "process": [3, 4, 5], "some": [3, 5], "inconsist": [3, 5], "variat": 3, "more": [3, 4, 5], "detail": [3, 4], "area": 3, "rejoin_articl": 3, "text_apply_break": 3, "break": [3, 4], "appli": [3, 5], "visual": 3, "charact": 3, "paragraph": 3, "etc": [3, 5], "chunk": [3, 4, 5], "cluster": 3, "bytes_to": 4, "bytes_nb": 4, "to_unit": 4, "bsize": 4, "1024": 4, "target": [4, 5], "kilobyt": 4, "m": [4, 5], "megabyt": 4, "gigabyt": 4, "t": [4, 5], "terabyt": 4, "p": [4, 5], "petabyt": 4, "exabyt": 4, "convers": 4, "keyerror": [4, 5], "chunksiz": 4, "yield": 4, "get_pkg_resourc": 4, "file_manag": 4, "exitstack": 4, "packag": [4, 5], "posixpath": 4, "manag": 4, "instanti": [4, 5], "prior": 4, "call": [4, 5], "close": 4, "onc": [4, 5], "longer": 4, "contextlib": 4, "pathlib": 4, "20": 4, "_description_": [4, 5], "parse_json": 4, "validate_against_schema": 4, "json_to_valid": 4, "path_to_schema": 4, "against": [4, 5], "drive": 4, "boto": 4, "kept": 4, "until": 4, "third": 4, "parti": 4, "lib": 4, "depend": 4, "solv": 4, "alternative_read_text": 4, "s3_kei": [4, 5], "s3_credenti": 4, "line_by_lin": 4, "reason": [4, 5], "bug": 4, "read_text": 4, "1000": 4, "filenotfounderror": 4, "fixed_s3fs_glob": [4, 5], "boto3_bucket": 4, "benoit": 4, "pyimag": 4, "custom": 4, "glob": 4, "s3f": 4, "unabl": 4, "than": 4, "switch": 4, "get_boto3_bucket": 4, "request": 4, "ask": 4, "doe": 4, "turn": 4, "newli": [4, 5], "testb": 4, "depreci": 4, "pleas": 4, "priorit": 4, "get_or_create_bucket": 4, "instead": [4, 5], "yet": 4, "get_bucket_boto3": 4, "host_url": 4, "zhdk": 4, "cloud": 4, "get_s3_connect": 4, "host": 4, "assum": 4, "two": [4, 5], "environ": 4, "variabl": 4, "se_access_kei": 4, "se_secret_kei": 4, "get_s3_resourc": 4, "get_s3_object_s": 4, "whose": 4, "you": 4, "want": 4, "doesn": 4, "relat": [4, 5], "get_s3_vers": 4, "modifi": [4, 5], "datetim": 4, "get_s3_versions_cli": 4, "get_storage_opt": 4, "read_jsonlin": 4, "point": [4, 5], "extract": [4, 5], "doc": 4, "per": [4, 5], "from_sequ": 4, "s3r": 4, "print": [4, 5], "count": [4, 5], "map": [4, 5], "pluck": 4, "ft": 4, "without": 4, "readtext_jsonlin": 4, "limit": 4, "textual": 4, "leav": 4, "out": 4, "serv": 4, "pure": 4, "ne": [4, 5], "reus": [4, 5], "topic": [4, 5], "s3_get_articl": 4, "ad": [4, 5], "advertis": 4, "iter_bucket": 4, "cpu": 4, "dictionari": [4, 5], "s3_get_pag": 4, "issue_id": 4, "page_nam": 4, "imp": 4, "1990": 4, "03": 4, "partition_nam": 4, "newspaper_prefix": 4, "upload_to_s3": 4, "local_path": 4, "path_within_bucket": 4, "help": 4, "prepar": 4, "view": 4, "orient": 4, "daskutil": 4, "cf": [4, 5], "argument": [4, 5], "create_even_partit": 4, "config_newspap": 4, "local_f": 4, "keep_ful": 4, "nb_partit": 4, "500": 4, "yearli": [4, 5], "even": [4, 5], "enabl": 4, "effici": 4, "bypass": 4, "shuffl": 4, "well": 4, "decid": 4, "what": [4, 5], "memori": 4, "span": 4, "classic": 4, "produc": 4, "arg": 4, "partition": 4, "nbpart": 4, "export": [4, 5], "compute_image_link": 4, "pad": 4, "iiif_endpoint": 4, "iiif_link": 4, "summari": [4, 5], "descript": 4, "get_iiif_link": 4, "canonical_bucket": 4, "rebuilt2xmi": 4, "typesystem_path": 4, "iiif_map": 4, "pct_coordin": 4, "typesystem": 4, "defit": 4, "annot": 4, "layer": 4, "task": 4, "config_load": 4, "initi": [4, 5], "method": [4, 5], "check_bucket": 4, "attribut": [4, 5], "check_param": 4, "classmethod": [4, 5], "from_json": 4, "to_dict": 4, "partitionerconfig": 4, "As": [4, 5], "now": 4, "solr_serv": 4, "server": 4, "solr_cor": 4, "s3_host": 4, "s3_bucket_rebuilt": 4, "s3_bucket_partit": 4, "s3_bucket_process": 4, "key_batch": 4, "batch": 4, "number_partit": 4, "1991": 4, "1998": 4, "sever": 5, "allow": 5, "stage": 5, "pipelin": 5, "goal": 5, "approach": 5, "track": 5, "everi": 5, "ensur": 5, "consisteni": 5, "eas": 5, "consist": 5, "across": 5, "justifi": 5, "through": 5, "identif": 5, "leakag": 5, "partial": 5, "updat": 5, "subset": 5, "know": 5, "step": 5, "necessari": 5, "when": 5, "media": 5, "collect": 5, "arriv": 5, "patch": 5, "transpar": 5, "citat": 5, "dataset": 5, "straightforward": 5, "user": 5, "interfac": 5, "exactli": 5, "thei": 5, "abl": 5, "consult": 5, "precis": 5, "them": 5, "definit": 5, "datastatst": 5, "dure": 5, "preprocess": 5, "augment": 5, "project": 5, "progress": 5, "data_statist": 5, "datastatist": 5, "data_stag": 5, "datastag": 5, "granular": 5, "abc": 5, "specif": 5, "portion": 5, "stat": 5, "respect": 5, "count_kei": 5, "frequenc": 5, "add_count": 5, "new_count": 5, "replac": 5, "add": 5, "init_count": 5, "defin": 5, "pretty_print": 5, "modif_d": 5, "include_count": 5, "These": 5, "agnost": 5, "self": 5, "child": 5, "modif": 5, "union": 5, "about": 5, "abstract": 5, "same_count": 5, "other_stat": 5, "newspaperstatist": 5, "possible_count_kei": 5, "titl": 5, "content_items_out": 5, "ft_token": 5, "content_items_in": 5, "ne_ment": 5, "ne_ent": 5, "embeddings_el": 5, "lang_fd": 5, "text_reuse_clust": 5, "text_reuse_passag": 5, "nps_stat": 5, "pretti": 5, "data_manifest": 5, "datamanifest": 5, "s3_output_bucket": 5, "git_repo": 5, "temp_dir": 5, "s3_input_bucket": 5, "new_vers": 5, "is_patch": 5, "patched_field": 5, "previous_mft_path": 5, "only_count": 5, "note": 5, "push_to_git": 5, "add_by_ci_id": 5, "ci_id": 5, "add_by_title_year": 5, "add_count_list_by_title_year": 5, "all_count": 5, "lsit": 5, "aggregate_stats_for_titl": 5, "media_dict": 5, "aggreg": 5, "radio": 5, "radiostatist": 5, "don": 5, "displai": 5, "show": 5, "final": 5, "append_to_not": 5, "to_start": 5, "export_to_git_and_s3": 5, "commit_msg": 5, "perform": 5, "logic": 5, "lazi": 5, "behavior": 5, "readi": 5, "access": 5, "particular": 5, "_processing_stat": 5, "crystal": 5, "_generation_d": 5, "corpu": 5, "manifest_data": 5, "dump": 5, "validate_and_export_manifest": 5, "commit": 5, "define_update_info_for_titl": 5, "processed_year": 5, "prev_version_year": 5, "four": 5, "place": 5, "eg": 5, "alreadi": 5, "generate_media_dict": 5, "old_media_list": 5, "conclud": 5, "increas": 5, "flag": 5, "conduct": 5, "major": 5, "verison": 5, "get_count_kei": 5, "integr": 5, "init": 5, "has_title_year_kei": 5, "verifi": 5, "init_yearly_count_dict": 5, "new_media": 5, "By": 5, "update_typ": 5, "update_level": 5, "updated_year": 5, "updated_field": 5, "properti": 5, "output_mft_s3_path": 5, "versison": 5, "cannot": 5, "overall_stat": 5, "title_stat": 5, "overal": 5, "replace_by_ci_id": 5, "oper": 5, "overwrit": 5, "isn": 5, "better": 5, "suit": 5, "replace_by_title_year": 5, "title_level_stat": 5, "media_list": 5, "stats_as_dict": 5, "update_media_stat": 5, "yearly_stat": 5, "actual": 5, "chang": 5, "statisit": 5, "potenti": 5, "match": 5, "output_bucket_nam": 5, "overriden": 5, "problem": 5, "occur": 5, "push": 5, "critic": 5, "won": 5, "alter": 5, "overrid": 5, "strenum": 5, "requir": 5, "accordingli": 5, "exact": 5, "embed": 5, "entiti": 5, "langid": 5, "linguistic_process": 5, "lingproc": 5, "mysql_ci": 5, "mysql": 5, "ocrqa": 5, "solr_emb": 5, "emb": 5, "solr_ent": 5, "solr_text": 5, "text_reus": 5, "has_valu": 5, "cl": 5, "agg": 5, "reduc": 5, "clone_git_repo": 5, "repo_nam": 5, "branch": 5, "ideal": 5, "absolut": 5, "appear": 5, "fail": 5, "ssh": 5, "compute_stats_in_canonical_bag": 5, "s3_canonical_issu": 5, "compute_stats_in_entities_bag": 5, "s3_entiti": 5, "compute_stats_in_langident_bag": 5, "s3_langid": 5, "compute_stats_in_rebuilt_bag": 5, "rebuilt_articl": 5, "include_np": 5, "fly": 5, "groupbi": 5, "paassim": 5, "compute_stats_in_solr_text_bag": 5, "s3_solr_text": 5, "counts_for_canonical_issu": 5, "include_np_yr": 5, "later": 5, "counts_for_rebuilt": 5, "rebuilt_ci": 5, "extract_vers": 5, "name_or_path": 5, "as_int": 5, "_vm": 5, "filter_new_or_modified_media": 5, "rebuilt_mft_path": 5, "previous_mft_path_str": 5, "compar": 5, "typic": 5, "atom": 5, "ident": 5, "new_or_modifi": 5, "get_new_or_modified_media": 5, "new_manifest": 5, "previous_manifest": 5, "media_titl": 5, "new_media_item_1": 5, "last_modif_d": 5, "2024": 5, "04": 5, "04t12": 5, "00": 5, "00z": 5, "modified_media_item_2": 5, "03t12": 5, "agg_tu": 5, "find_s3_data_manifest_path": 5, "find": 5, "latest": 5, "On": 5, "wai": 5, "enrich": 5, "own": 5, "insid": 5, "get_head_commit_url": 5, "three": 5, "alreadai": 5, "outsid": 5, "previous": 5, "activ": 5, "get_media_item_year": 5, "mnf_json": 5, "mb": 5, "media_items_year": 5, "get_media_titl": 5, "input_data": 5, "ex": 5, "typeerror": 5, "git_commit_push": 5, "full_git_filepath": 5, "make": 5, "non": 5, "increment_vers": 5, "prev_vers": 5, "increment": 5, "accod": 5, "minor": 5, "reset": 5, "vesion": 5, "init_media_info": 5, "full_titl": 5, "relev": 5, "comparison": 5, "is_git_repo": 5, "manifest_summari": 5, "extended_summari": 5, "extend": 5, "manifest_json": 5, "8": 5, "5": 5, "media_list_from_mft_json": 5, "json_mft": 5, "still": 5, "along": 5, "read_manifest_from_s3": 5, "read_manifest_from_s3_path": 5, "manifest_s3_path": 5, "arbitrari": 5, "remove_media_in_manifest": 5, "white_list": 5, "whitelist": 5, "whatev": 5, "retain": 5, "validate_granular": 5, "valueerror": 5, "validate_stag": 5, "return_value_str": 5, "neither": 5, "nor": 5, "validate_vers": 5, "regex": 5, "9": 5, "vm": 5, "integ": 5, "version_as_list": 5, "len": 5, "respec": 5, "write_and_push_to_git": 5, "file_cont": 5, "path_in_repo": 5, "write_dump_to_f": 5, "abs_path": 5, "filesystem": 5, "written": 5, "writen": 5, "ioerror": 5, "command": 5, "compute_manifest": 5, "lf": 5, "compute_stats_for_stag": 5, "files_bag": 5, "create_manifest": 5, "togeth": 5, "iption": 5, "np": 5, "further": 5, "markdown": 5, "manifest_config": 5, "guidelin": 5, "extract_np_kei": 5, "31": 5, "indeplux": 5, "1889": 5, "get_files_to_consid": 5, "file_extens": 5, "validate_config": 5, "mssing": 5}, "objects": {"impresso_commons.images": [[0, 0, 0, "-", "img_utils"], [0, 0, 0, "-", "olive_boxes"]], "impresso_commons.images.img_utils": [[0, 1, 1, "", "BoxStrategy"], [0, 3, 1, "", "compose"], [0, 3, 1, "", "get_img_from_archive"], [0, 3, 1, "", "get_imgdimensions"], [0, 3, 1, "", "get_jpg"], [0, 3, 1, "", "get_page_folders"], [0, 3, 1, "", "get_png"], [0, 3, 1, "", "get_tif"], [0, 3, 1, "", "run_cmd"]], "impresso_commons.images.img_utils.BoxStrategy": [[0, 2, 1, "", "jpg_highest"], [0, 2, 1, "", "jpg_uniq"], [0, 2, 1, "", "png_highest"], [0, 2, 1, "", "png_uniq"], [0, 2, 1, "", "tif"]], "impresso_commons.images.olive_boxes": [[0, 3, 1, "", "compute_box"], [0, 3, 1, "", "compute_scale_factor"], [0, 3, 1, "", "convert_box"], [0, 3, 1, "", "get_iiif_url"], [0, 3, 1, "", "get_scale_factor"], [0, 3, 1, "", "test"]], "impresso_commons": [[2, 0, 0, "-", "path"]], "impresso_commons.path": [[2, 3, 1, "", "id2IssueDir"], [2, 3, 1, "", "parse_canonical_filename"], [2, 0, 0, "-", "path_fs"], [2, 0, 0, "-", "path_s3"]], "impresso_commons.path.path_fs": [[2, 2, 1, "", "ContentItem"], [2, 1, 1, "", "IssueDir"], [2, 3, 1, "", "canonical_path"], [2, 3, 1, "", "check_filenaming"], [2, 3, 1, "", "detect_canonical_issues"], [2, 3, 1, "", "detect_issues"], [2, 3, 1, "", "detect_journal_issues"], [2, 3, 1, "", "get_issueshortpath"], [2, 3, 1, "", "pair_issue"], [2, 3, 1, "", "select_issues"]], "impresso_commons.path.path_fs.IssueDir": [[2, 2, 1, "", "date"], [2, 2, 1, "", "edition"], [2, 2, 1, "", "journal"], [2, 2, 1, "", "path"]], "impresso_commons.path.path_s3": [[2, 2, 1, "", "IssueDir"], [2, 3, 1, "", "fetch_files"], [2, 3, 1, "", "impresso_iter_bucket"], [2, 3, 1, "", "list_files"], [2, 3, 1, "", "list_newspapers"], [2, 3, 1, "", "read_s3_issues"], [2, 1, 1, "", "s3ContentItem"], [2, 3, 1, "", "s3_filter_archives"], [2, 3, 1, "", "s3_iter_bucket"]], "impresso_commons.text": [[3, 0, 0, "-", "helpers"], [3, 0, 0, "-", "rebuilder"]], "impresso_commons.text.helpers": [[3, 3, 1, "", "get_iiif_and_coords"], [3, 3, 1, "", "insert_whitespace"], [3, 3, 1, "", "pages_to_article"], [3, 3, 1, "", "read_issue"], [3, 3, 1, "", "read_issue_pages"], [3, 3, 1, "", "read_page"], [3, 3, 1, "", "reconstruct_iiif_link"], [3, 3, 1, "", "rejoin_articles"], [3, 3, 1, "", "text_apply_breaks"]], "impresso_commons.text.rebuilder": [[3, 3, 1, "", "cleanup"], [3, 3, 1, "", "compress"], [3, 3, 1, "", "init_logging"], [3, 3, 1, "", "main"], [3, 3, 1, "", "rebuild_for_passim"], [3, 3, 1, "", "rebuild_for_solr"], [3, 3, 1, "", "rebuild_issues"], [3, 3, 1, "", "rebuild_text"], [3, 3, 1, "", "rebuild_text_passim"], [3, 3, 1, "", "upload"]], "impresso_commons.utils": [[4, 0, 0, "-", "config_loader"], [4, 0, 0, "-", "daskutils"], [4, 0, 0, "-", "s3"], [4, 0, 0, "-", "uima"], [4, 0, 0, "-", "utils"]], "impresso_commons.utils.config_loader": [[4, 1, 1, "", "Base"], [4, 1, 1, "", "PartitionerConfig"], [4, 3, 1, "", "main"]], "impresso_commons.utils.config_loader.Base": [[4, 4, 1, "", "check_bucket"], [4, 4, 1, "", "check_params"], [4, 4, 1, "", "from_json"], [4, 4, 1, "", "to_dict"]], "impresso_commons.utils.daskutils": [[4, 3, 1, "", "create_even_partitions"], [4, 3, 1, "", "main"], [4, 3, 1, "", "partitioner"]], "impresso_commons.utils.s3": [[4, 3, 1, "", "alternative_read_text"], [4, 3, 1, "", "fixed_s3fs_glob"], [4, 3, 1, "", "get_boto3_bucket"], [4, 3, 1, "", "get_bucket"], [4, 3, 1, "", "get_bucket_boto3"], [4, 3, 1, "", "get_or_create_bucket"], [4, 3, 1, "", "get_s3_client"], [4, 3, 1, "", "get_s3_connection"], [4, 3, 1, "", "get_s3_object_size"], [4, 3, 1, "", "get_s3_resource"], [4, 3, 1, "", "get_s3_versions"], [4, 3, 1, "", "get_s3_versions_client"], [4, 3, 1, "", "get_storage_options"], [4, 3, 1, "", "read_jsonlines"], [4, 3, 1, "", "readtext_jsonlines"], [4, 3, 1, "", "s3_get_articles"], [4, 3, 1, "", "s3_get_pages"], [4, 3, 1, "", "upload"], [4, 3, 1, "", "upload_to_s3"]], "impresso_commons.utils.uima": [[4, 3, 1, "", "compute_image_links"], [4, 3, 1, "", "get_iiif_links"], [4, 3, 1, "", "rebuilt2xmi"]], "impresso_commons.utils.utils": [[4, 3, 1, "", "bytes_to"], [4, 3, 1, "", "chunk"], [4, 3, 1, "", "get_pkg_resource"], [4, 3, 1, "", "init_logger"], [4, 3, 1, "", "parse_json"], [4, 3, 1, "", "validate_against_schema"]], "impresso_commons.versioning": [[5, 0, 0, "-", "compute_manifest"], [5, 0, 0, "-", "data_manifest"], [5, 0, 0, "-", "data_statistics"], [5, 0, 0, "-", "helpers"]], "impresso_commons.versioning.compute_manifest": [[5, 3, 1, "", "compute_stats_for_stage"], [5, 3, 1, "", "create_manifest"], [5, 3, 1, "", "extract_np_key"], [5, 3, 1, "", "get_files_to_consider"], [5, 3, 1, "", "main"], [5, 3, 1, "", "validate_config"]], "impresso_commons.versioning.data_manifest": [[5, 1, 1, "", "DataManifest"]], "impresso_commons.versioning.data_manifest.DataManifest": [[5, 4, 1, "", "add_by_ci_id"], [5, 4, 1, "", "add_by_title_year"], [5, 4, 1, "", "add_count_list_by_title_year"], [5, 4, 1, "", "aggregate_stats_for_title"], [5, 4, 1, "", "append_to_notes"], [5, 4, 1, "", "compute"], [5, 4, 1, "", "define_update_info_for_title"], [5, 4, 1, "", "generate_media_dict"], [5, 4, 1, "", "get_count_keys"], [5, 4, 1, "", "has_title_year_key"], [5, 4, 1, "", "init_yearly_count_dict"], [5, 4, 1, "", "new_media"], [5, 5, 1, "", "output_mft_s3_path"], [5, 4, 1, "", "overall_stats"], [5, 4, 1, "", "replace_by_ci_id"], [5, 4, 1, "", "replace_by_title_year"], [5, 4, 1, "", "title_level_stats"], [5, 4, 1, "", "update_media_stats"], [5, 4, 1, "", "validate_and_export_manifest"]], "impresso_commons.versioning.data_statistics": [[5, 1, 1, "", "DataStatistics"], [5, 1, 1, "", "NewspaperStatistics"]], "impresso_commons.versioning.data_statistics.DataStatistics": [[5, 4, 1, "", "add_counts"], [5, 2, 1, "", "count_keys"], [5, 2, 1, "", "counts"], [5, 2, 1, "", "element"], [5, 2, 1, "", "granularity"], [5, 4, 1, "", "init_counts"], [5, 4, 1, "", "pretty_print"], [5, 4, 1, "", "same_counts"], [5, 2, 1, "", "stage"]], "impresso_commons.versioning.data_statistics.NewspaperStatistics": [[5, 2, 1, "", "count_keys"], [5, 2, 1, "", "counts"], [5, 2, 1, "", "element"], [5, 2, 1, "", "granularity"], [5, 2, 1, "", "possible_count_keys"], [5, 4, 1, "", "pretty_print"], [5, 4, 1, "", "same_counts"], [5, 2, 1, "", "stage"]], "impresso_commons.versioning.helpers": [[5, 1, 1, "", "DataStage"], [5, 3, 1, "", "agg"], [5, 3, 1, "", "chunk"], [5, 3, 1, "", "clone_git_repo"], [5, 3, 1, "", "compute_stats_in_canonical_bag"], [5, 3, 1, "", "compute_stats_in_entities_bag"], [5, 3, 1, "", "compute_stats_in_langident_bag"], [5, 3, 1, "", "compute_stats_in_rebuilt_bag"], [5, 3, 1, "", "compute_stats_in_solr_text_bag"], [5, 3, 1, "", "counts_for_canonical_issue"], [5, 3, 1, "", "counts_for_rebuilt"], [5, 3, 1, "", "extract_version"], [5, 3, 1, "", "filter_new_or_modified_media"], [5, 3, 1, "", "finalize"], [5, 3, 1, "", "find_s3_data_manifest_path"], [5, 3, 1, "", "get_head_commit_url"], [5, 3, 1, "", "get_media_item_years"], [5, 3, 1, "", "get_media_titles"], [5, 3, 1, "", "git_commit_push"], [5, 3, 1, "", "increment_version"], [5, 3, 1, "", "init_media_info"], [5, 3, 1, "", "is_git_repo"], [5, 3, 1, "", "manifest_summary"], [5, 3, 1, "", "media_list_from_mft_json"], [5, 3, 1, "", "read_manifest_from_s3"], [5, 3, 1, "", "read_manifest_from_s3_path"], [5, 3, 1, "", "remove_media_in_manifest"], [5, 3, 1, "", "validate_granularity"], [5, 3, 1, "", "validate_stage"], [5, 3, 1, "", "validate_version"], [5, 3, 1, "", "version_as_list"], [5, 3, 1, "", "write_and_push_to_git"], [5, 3, 1, "", "write_dump_to_fs"]], "impresso_commons.versioning.helpers.DataStage": [[5, 2, 1, "", "CANONICAL"], [5, 2, 1, "", "EMBEDDINGS"], [5, 2, 1, "", "ENTITIES"], [5, 2, 1, "", "EVENIZED"], [5, 2, 1, "", "LANGIDENT"], [5, 2, 1, "", "LINGUISTIC_PROCESSING"], [5, 2, 1, "", "MYSQL_CIS"], [5, 2, 1, "", "OCRQA"], [5, 2, 1, "", "PASSIM"], [5, 2, 1, "", "REBUILT"], [5, 2, 1, "", "SOLR_EMBS"], [5, 2, 1, "", "SOLR_ENTITIES"], [5, 2, 1, "", "SOLR_TEXT"], [5, 2, 1, "", "TEXT_REUSE"], [5, 2, 1, "", "TOPICS"], [5, 4, 1, "", "has_value"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:attribute", "3": "py:function", "4": "py:method", "5": "py:property"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "function", "Python function"], "4": ["py", "method", "Python method"], "5": ["py", "property", "Python property"]}, "titleterms": {"imag": 0, "handl": 0, "util": [0, 4], "oliv": 0, "box": 0, "background": 0, "inform": 0, "case": 0, "1": 0, "tif": 0, "2": 0, "sever": 0, "png": 0, "3": 0, "one": 0, "onli": 0, "4": 0, "jpg": 0, "welcom": 1, "impresso": 1, "pycommon": 1, "": 1, "document": 1, "content": 1, "input": 2, "output": 2, "gener": 2, "i": 2, "o": 2, "from": 2, "file": [2, 3, 4], "system": 2, "s3": [2, 4], "text": 3, "rebuild": 3, "function": [3, 4], "helper": [3, 5], "config": [3, 4], "exampl": 3, "basic": 4, "dask": 4, "apach": 4, "uima": 4, "xmi": 4, "loader": 4, "data": 5, "version": 5, "statist": 5, "newspap": 5, "manifest": 5, "comput": 5, "script": 5}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx": 60}, "alltitles": {"Image handling": [[0, "image-handling"]], "Image Utils": [[0, "module-impresso_commons.images.img_utils"]], "Olive Boxes": [[0, "module-impresso_commons.images.olive_boxes"]], "Background information": [[0, "background-information"]], "Case 1: tif": [[0, "case-1-tif"]], "Case 2: several png": [[0, "case-2-several-png"]], "Case 3: one png only": [[0, "case-3-one-png-only"]], "Case 4: one jpg only": [[0, "case-4-one-jpg-only"]], "Welcome to Impresso PyCommons\u2019s documentation!": [[1, "welcome-to-impresso-pycommons-s-documentation"]], "Contents:": [[1, null]], "Input/Output": [[2, "input-output"]], "General": [[2, "module-impresso_commons.path"]], "I/O from file system": [[2, "module-impresso_commons.path.path_fs"]], "I/O from S3": [[2, "module-impresso_commons.path.path_s3"]], "Text Rebuild": [[3, "text-rebuild"]], "Rebuild functions": [[3, "rebuild-functions"]], "Helpers": [[3, "module-impresso_commons.text.helpers"]], "Config file example": [[3, "config-file-example"]], "Utilities": [[4, "utilities"]], "Basic Utils Functions": [[4, "module-impresso_commons.utils.utils"]], "S3 Utils Functions": [[4, "module-impresso_commons.utils.s3"]], "Dask Utils Functions": [[4, "module-impresso_commons.utils.daskutils"]], "Apache UIMA XMI Utils Functions": [[4, "module-impresso_commons.utils.uima"]], "Config File Loader": [[4, "module-impresso_commons.utils.config_loader"]], "Data Versioning": [[5, "data-versioning"]], "Data Statistics and Newspaper Statistics": [[5, "module-impresso_commons.versioning.data_statistics"]], "Data Manifest": [[5, "module-impresso_commons.versioning.data_manifest"]], "Versioning Helpers": [[5, "module-impresso_commons.versioning.helpers"]], "Manifest Computing Script": [[5, "module-impresso_commons.versioning.compute_manifest"]]}, "indexentries": {"boxstrategy (class in impresso_commons.images.img_utils)": [[0, "impresso_commons.images.img_utils.BoxStrategy"]], "compose() (in module impresso_commons.images.img_utils)": [[0, "impresso_commons.images.img_utils.compose"]], "compute_box() (in module impresso_commons.images.olive_boxes)": [[0, "impresso_commons.images.olive_boxes.compute_box"]], "compute_scale_factor() (in module impresso_commons.images.olive_boxes)": [[0, "impresso_commons.images.olive_boxes.compute_scale_factor"]], "convert_box() (in module impresso_commons.images.olive_boxes)": [[0, "impresso_commons.images.olive_boxes.convert_box"]], "get_iiif_url() (in module impresso_commons.images.olive_boxes)": [[0, "impresso_commons.images.olive_boxes.get_iiif_url"]], "get_img_from_archive() (in module impresso_commons.images.img_utils)": [[0, "impresso_commons.images.img_utils.get_img_from_archive"]], "get_imgdimensions() (in module impresso_commons.images.img_utils)": [[0, "impresso_commons.images.img_utils.get_imgdimensions"]], "get_jpg() (in module impresso_commons.images.img_utils)": [[0, "impresso_commons.images.img_utils.get_jpg"]], "get_page_folders() (in module impresso_commons.images.img_utils)": [[0, "impresso_commons.images.img_utils.get_page_folders"]], "get_png() (in module impresso_commons.images.img_utils)": [[0, "impresso_commons.images.img_utils.get_png"]], "get_scale_factor() (in module impresso_commons.images.olive_boxes)": [[0, "impresso_commons.images.olive_boxes.get_scale_factor"]], "get_tif() (in module impresso_commons.images.img_utils)": [[0, "impresso_commons.images.img_utils.get_tif"]], "impresso_commons.images.img_utils": [[0, "module-impresso_commons.images.img_utils"]], "impresso_commons.images.olive_boxes": [[0, "module-impresso_commons.images.olive_boxes"]], "jpg_highest (impresso_commons.images.img_utils.boxstrategy attribute)": [[0, "impresso_commons.images.img_utils.BoxStrategy.jpg_highest"]], "jpg_uniq (impresso_commons.images.img_utils.boxstrategy attribute)": [[0, "impresso_commons.images.img_utils.BoxStrategy.jpg_uniq"]], "module": [[0, "module-impresso_commons.images.img_utils"], [0, "module-impresso_commons.images.olive_boxes"], [2, "module-impresso_commons.path"], [2, "module-impresso_commons.path.path_fs"], [2, "module-impresso_commons.path.path_s3"], [3, "module-impresso_commons.text.helpers"], [3, "module-impresso_commons.text.rebuilder"], [4, "module-impresso_commons.utils.config_loader"], [4, "module-impresso_commons.utils.daskutils"], [4, "module-impresso_commons.utils.s3"], [4, "module-impresso_commons.utils.uima"], [4, "module-impresso_commons.utils.utils"], [5, "module-impresso_commons.versioning.compute_manifest"], [5, "module-impresso_commons.versioning.data_manifest"], [5, "module-impresso_commons.versioning.data_statistics"], [5, "module-impresso_commons.versioning.helpers"]], "png_highest (impresso_commons.images.img_utils.boxstrategy attribute)": [[0, "impresso_commons.images.img_utils.BoxStrategy.png_highest"]], "png_uniq (impresso_commons.images.img_utils.boxstrategy attribute)": [[0, "impresso_commons.images.img_utils.BoxStrategy.png_uniq"]], "run_cmd() (in module impresso_commons.images.img_utils)": [[0, "impresso_commons.images.img_utils.run_cmd"]], "test() (in module impresso_commons.images.olive_boxes)": [[0, "impresso_commons.images.olive_boxes.test"]], "tif (impresso_commons.images.img_utils.boxstrategy attribute)": [[0, "impresso_commons.images.img_utils.BoxStrategy.tif"]], "contentitem (in module impresso_commons.path.path_fs)": [[2, "impresso_commons.path.path_fs.ContentItem"]], "issuedir (class in impresso_commons.path.path_fs)": [[2, "impresso_commons.path.path_fs.IssueDir"]], "issuedir (in module impresso_commons.path.path_s3)": [[2, "impresso_commons.path.path_s3.IssueDir"]], "canonical_path() (in module impresso_commons.path.path_fs)": [[2, "impresso_commons.path.path_fs.canonical_path"]], "check_filenaming() (in module impresso_commons.path.path_fs)": [[2, "impresso_commons.path.path_fs.check_filenaming"]], "date (impresso_commons.path.path_fs.issuedir attribute)": [[2, "impresso_commons.path.path_fs.IssueDir.date"]], "detect_canonical_issues() (in module impresso_commons.path.path_fs)": [[2, "impresso_commons.path.path_fs.detect_canonical_issues"]], "detect_issues() (in module impresso_commons.path.path_fs)": [[2, "impresso_commons.path.path_fs.detect_issues"]], "detect_journal_issues() (in module impresso_commons.path.path_fs)": [[2, "impresso_commons.path.path_fs.detect_journal_issues"]], "edition (impresso_commons.path.path_fs.issuedir attribute)": [[2, "impresso_commons.path.path_fs.IssueDir.edition"]], "fetch_files() (in module impresso_commons.path.path_s3)": [[2, "impresso_commons.path.path_s3.fetch_files"]], "get_issueshortpath() (in module impresso_commons.path.path_fs)": [[2, "impresso_commons.path.path_fs.get_issueshortpath"]], "id2issuedir() (in module impresso_commons.path)": [[2, "impresso_commons.path.id2IssueDir"]], "impresso_commons.path": [[2, "module-impresso_commons.path"]], "impresso_commons.path.path_fs": [[2, "module-impresso_commons.path.path_fs"]], "impresso_commons.path.path_s3": [[2, "module-impresso_commons.path.path_s3"]], "impresso_iter_bucket() (in module impresso_commons.path.path_s3)": [[2, "impresso_commons.path.path_s3.impresso_iter_bucket"]], "journal (impresso_commons.path.path_fs.issuedir attribute)": [[2, "impresso_commons.path.path_fs.IssueDir.journal"]], "list_files() (in module impresso_commons.path.path_s3)": [[2, "impresso_commons.path.path_s3.list_files"]], "list_newspapers() (in module impresso_commons.path.path_s3)": [[2, "impresso_commons.path.path_s3.list_newspapers"]], "pair_issue() (in module impresso_commons.path.path_fs)": [[2, "impresso_commons.path.path_fs.pair_issue"]], "parse_canonical_filename() (in module impresso_commons.path)": [[2, "impresso_commons.path.parse_canonical_filename"]], "path (impresso_commons.path.path_fs.issuedir attribute)": [[2, "impresso_commons.path.path_fs.IssueDir.path"]], "read_s3_issues() (in module impresso_commons.path.path_s3)": [[2, "impresso_commons.path.path_s3.read_s3_issues"]], "s3contentitem (class in impresso_commons.path.path_s3)": [[2, "impresso_commons.path.path_s3.s3ContentItem"]], "s3_filter_archives() (in module impresso_commons.path.path_s3)": [[2, "impresso_commons.path.path_s3.s3_filter_archives"]], "s3_iter_bucket() (in module impresso_commons.path.path_s3)": [[2, "impresso_commons.path.path_s3.s3_iter_bucket"]], "select_issues() (in module impresso_commons.path.path_fs)": [[2, "impresso_commons.path.path_fs.select_issues"]], "cleanup() (in module impresso_commons.text.rebuilder)": [[3, "impresso_commons.text.rebuilder.cleanup"]], "compress() (in module impresso_commons.text.rebuilder)": [[3, "impresso_commons.text.rebuilder.compress"]], "get_iiif_and_coords() (in module impresso_commons.text.helpers)": [[3, "impresso_commons.text.helpers.get_iiif_and_coords"]], "impresso_commons.text.helpers": [[3, "module-impresso_commons.text.helpers"]], "impresso_commons.text.rebuilder": [[3, "module-impresso_commons.text.rebuilder"]], "init_logging() (in module impresso_commons.text.rebuilder)": [[3, "impresso_commons.text.rebuilder.init_logging"]], "insert_whitespace() (in module impresso_commons.text.helpers)": [[3, "impresso_commons.text.helpers.insert_whitespace"]], "main() (in module impresso_commons.text.rebuilder)": [[3, "impresso_commons.text.rebuilder.main"]], "pages_to_article() (in module impresso_commons.text.helpers)": [[3, "impresso_commons.text.helpers.pages_to_article"]], "read_issue() (in module impresso_commons.text.helpers)": [[3, "impresso_commons.text.helpers.read_issue"]], "read_issue_pages() (in module impresso_commons.text.helpers)": [[3, "impresso_commons.text.helpers.read_issue_pages"]], "read_page() (in module impresso_commons.text.helpers)": [[3, "impresso_commons.text.helpers.read_page"]], "rebuild_for_passim() (in module impresso_commons.text.rebuilder)": [[3, "impresso_commons.text.rebuilder.rebuild_for_passim"]], "rebuild_for_solr() (in module impresso_commons.text.rebuilder)": [[3, "impresso_commons.text.rebuilder.rebuild_for_solr"]], "rebuild_issues() (in module impresso_commons.text.rebuilder)": [[3, "impresso_commons.text.rebuilder.rebuild_issues"]], "rebuild_text() (in module impresso_commons.text.rebuilder)": [[3, "impresso_commons.text.rebuilder.rebuild_text"]], "rebuild_text_passim() (in module impresso_commons.text.rebuilder)": [[3, "impresso_commons.text.rebuilder.rebuild_text_passim"]], "reconstruct_iiif_link() (in module impresso_commons.text.helpers)": [[3, "impresso_commons.text.helpers.reconstruct_iiif_link"]], "rejoin_articles() (in module impresso_commons.text.helpers)": [[3, "impresso_commons.text.helpers.rejoin_articles"]], "text_apply_breaks() (in module impresso_commons.text.helpers)": [[3, "impresso_commons.text.helpers.text_apply_breaks"]], "upload() (in module impresso_commons.text.rebuilder)": [[3, "impresso_commons.text.rebuilder.upload"]], "base (class in impresso_commons.utils.config_loader)": [[4, "impresso_commons.utils.config_loader.Base"]], "partitionerconfig (class in impresso_commons.utils.config_loader)": [[4, "impresso_commons.utils.config_loader.PartitionerConfig"]], "alternative_read_text() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.alternative_read_text"]], "bytes_to() (in module impresso_commons.utils.utils)": [[4, "impresso_commons.utils.utils.bytes_to"]], "check_bucket() (impresso_commons.utils.config_loader.base method)": [[4, "impresso_commons.utils.config_loader.Base.check_bucket"]], "check_params() (impresso_commons.utils.config_loader.base method)": [[4, "impresso_commons.utils.config_loader.Base.check_params"]], "chunk() (in module impresso_commons.utils.utils)": [[4, "impresso_commons.utils.utils.chunk"]], "compute_image_links() (in module impresso_commons.utils.uima)": [[4, "impresso_commons.utils.uima.compute_image_links"]], "create_even_partitions() (in module impresso_commons.utils.daskutils)": [[4, "impresso_commons.utils.daskutils.create_even_partitions"]], "fixed_s3fs_glob() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.fixed_s3fs_glob"]], "from_json() (impresso_commons.utils.config_loader.base class method)": [[4, "impresso_commons.utils.config_loader.Base.from_json"]], "get_boto3_bucket() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.get_boto3_bucket"]], "get_bucket() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.get_bucket"]], "get_bucket_boto3() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.get_bucket_boto3"]], "get_iiif_links() (in module impresso_commons.utils.uima)": [[4, "impresso_commons.utils.uima.get_iiif_links"]], "get_or_create_bucket() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.get_or_create_bucket"]], "get_pkg_resource() (in module impresso_commons.utils.utils)": [[4, "impresso_commons.utils.utils.get_pkg_resource"]], "get_s3_client() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.get_s3_client"]], "get_s3_connection() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.get_s3_connection"]], "get_s3_object_size() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.get_s3_object_size"]], "get_s3_resource() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.get_s3_resource"]], "get_s3_versions() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.get_s3_versions"]], "get_s3_versions_client() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.get_s3_versions_client"]], "get_storage_options() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.get_storage_options"]], "impresso_commons.utils.config_loader": [[4, "module-impresso_commons.utils.config_loader"]], "impresso_commons.utils.daskutils": [[4, "module-impresso_commons.utils.daskutils"]], "impresso_commons.utils.s3": [[4, "module-impresso_commons.utils.s3"]], "impresso_commons.utils.uima": [[4, "module-impresso_commons.utils.uima"]], "impresso_commons.utils.utils": [[4, "module-impresso_commons.utils.utils"]], "init_logger() (in module impresso_commons.utils.utils)": [[4, "impresso_commons.utils.utils.init_logger"]], "main() (in module impresso_commons.utils.config_loader)": [[4, "impresso_commons.utils.config_loader.main"]], "main() (in module impresso_commons.utils.daskutils)": [[4, "impresso_commons.utils.daskutils.main"]], "parse_json() (in module impresso_commons.utils.utils)": [[4, "impresso_commons.utils.utils.parse_json"]], "partitioner() (in module impresso_commons.utils.daskutils)": [[4, "impresso_commons.utils.daskutils.partitioner"]], "read_jsonlines() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.read_jsonlines"]], "readtext_jsonlines() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.readtext_jsonlines"]], "rebuilt2xmi() (in module impresso_commons.utils.uima)": [[4, "impresso_commons.utils.uima.rebuilt2xmi"]], "s3_get_articles() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.s3_get_articles"]], "s3_get_pages() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.s3_get_pages"]], "to_dict() (impresso_commons.utils.config_loader.base method)": [[4, "impresso_commons.utils.config_loader.Base.to_dict"]], "upload() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.upload"]], "upload_to_s3() (in module impresso_commons.utils.s3)": [[4, "impresso_commons.utils.s3.upload_to_s3"]], "validate_against_schema() (in module impresso_commons.utils.utils)": [[4, "impresso_commons.utils.utils.validate_against_schema"]], "canonical (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.CANONICAL"]], "datamanifest (class in impresso_commons.versioning.data_manifest)": [[5, "impresso_commons.versioning.data_manifest.DataManifest"]], "datastage (class in impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.DataStage"]], "datastatistics (class in impresso_commons.versioning.data_statistics)": [[5, "impresso_commons.versioning.data_statistics.DataStatistics"]], "embeddings (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.EMBEDDINGS"]], "entities (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.ENTITIES"]], "evenized (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.EVENIZED"]], "langident (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.LANGIDENT"]], "linguistic_processing (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.LINGUISTIC_PROCESSING"]], "mysql_cis (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.MYSQL_CIS"]], "newspaperstatistics (class in impresso_commons.versioning.data_statistics)": [[5, "impresso_commons.versioning.data_statistics.NewspaperStatistics"]], "ocrqa (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.OCRQA"]], "passim (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.PASSIM"]], "rebuilt (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.REBUILT"]], "solr_embs (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.SOLR_EMBS"]], "solr_entities (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.SOLR_ENTITIES"]], "solr_text (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.SOLR_TEXT"]], "text_reuse (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.TEXT_REUSE"]], "topics (impresso_commons.versioning.helpers.datastage attribute)": [[5, "impresso_commons.versioning.helpers.DataStage.TOPICS"]], "add_by_ci_id() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.add_by_ci_id"]], "add_by_title_year() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.add_by_title_year"]], "add_count_list_by_title_year() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.add_count_list_by_title_year"]], "add_counts() (impresso_commons.versioning.data_statistics.datastatistics method)": [[5, "impresso_commons.versioning.data_statistics.DataStatistics.add_counts"]], "agg() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.agg"]], "aggregate_stats_for_title() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.aggregate_stats_for_title"]], "append_to_notes() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.append_to_notes"]], "chunk() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.chunk"]], "clone_git_repo() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.clone_git_repo"]], "compute() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.compute"]], "compute_stats_for_stage() (in module impresso_commons.versioning.compute_manifest)": [[5, "impresso_commons.versioning.compute_manifest.compute_stats_for_stage"]], "compute_stats_in_canonical_bag() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.compute_stats_in_canonical_bag"]], "compute_stats_in_entities_bag() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.compute_stats_in_entities_bag"]], "compute_stats_in_langident_bag() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.compute_stats_in_langident_bag"]], "compute_stats_in_rebuilt_bag() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.compute_stats_in_rebuilt_bag"]], "compute_stats_in_solr_text_bag() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.compute_stats_in_solr_text_bag"]], "count_keys (impresso_commons.versioning.data_statistics.datastatistics attribute)": [[5, "impresso_commons.versioning.data_statistics.DataStatistics.count_keys"]], "count_keys (impresso_commons.versioning.data_statistics.newspaperstatistics attribute)": [[5, "impresso_commons.versioning.data_statistics.NewspaperStatistics.count_keys"]], "counts (impresso_commons.versioning.data_statistics.datastatistics attribute)": [[5, "impresso_commons.versioning.data_statistics.DataStatistics.counts"]], "counts (impresso_commons.versioning.data_statistics.newspaperstatistics attribute)": [[5, "impresso_commons.versioning.data_statistics.NewspaperStatistics.counts"]], "counts_for_canonical_issue() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.counts_for_canonical_issue"]], "counts_for_rebuilt() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.counts_for_rebuilt"]], "create_manifest() (in module impresso_commons.versioning.compute_manifest)": [[5, "impresso_commons.versioning.compute_manifest.create_manifest"]], "define_update_info_for_title() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.define_update_info_for_title"]], "element (impresso_commons.versioning.data_statistics.datastatistics attribute)": [[5, "impresso_commons.versioning.data_statistics.DataStatistics.element"]], "element (impresso_commons.versioning.data_statistics.newspaperstatistics attribute)": [[5, "impresso_commons.versioning.data_statistics.NewspaperStatistics.element"]], "extract_np_key() (in module impresso_commons.versioning.compute_manifest)": [[5, "impresso_commons.versioning.compute_manifest.extract_np_key"]], "extract_version() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.extract_version"]], "filter_new_or_modified_media() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.filter_new_or_modified_media"]], "finalize() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.finalize"]], "find_s3_data_manifest_path() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.find_s3_data_manifest_path"]], "generate_media_dict() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.generate_media_dict"]], "get_count_keys() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.get_count_keys"]], "get_files_to_consider() (in module impresso_commons.versioning.compute_manifest)": [[5, "impresso_commons.versioning.compute_manifest.get_files_to_consider"]], "get_head_commit_url() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.get_head_commit_url"]], "get_media_item_years() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.get_media_item_years"]], "get_media_titles() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.get_media_titles"]], "git_commit_push() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.git_commit_push"]], "granularity (impresso_commons.versioning.data_statistics.datastatistics attribute)": [[5, "impresso_commons.versioning.data_statistics.DataStatistics.granularity"]], "granularity (impresso_commons.versioning.data_statistics.newspaperstatistics attribute)": [[5, "impresso_commons.versioning.data_statistics.NewspaperStatistics.granularity"]], "has_title_year_key() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.has_title_year_key"]], "has_value() (impresso_commons.versioning.helpers.datastage class method)": [[5, "impresso_commons.versioning.helpers.DataStage.has_value"]], "impresso_commons.versioning.compute_manifest": [[5, "module-impresso_commons.versioning.compute_manifest"]], "impresso_commons.versioning.data_manifest": [[5, "module-impresso_commons.versioning.data_manifest"]], "impresso_commons.versioning.data_statistics": [[5, "module-impresso_commons.versioning.data_statistics"]], "impresso_commons.versioning.helpers": [[5, "module-impresso_commons.versioning.helpers"]], "increment_version() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.increment_version"]], "init_counts() (impresso_commons.versioning.data_statistics.datastatistics method)": [[5, "impresso_commons.versioning.data_statistics.DataStatistics.init_counts"]], "init_media_info() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.init_media_info"]], "init_yearly_count_dict() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.init_yearly_count_dict"]], "is_git_repo() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.is_git_repo"]], "main() (in module impresso_commons.versioning.compute_manifest)": [[5, "impresso_commons.versioning.compute_manifest.main"]], "manifest_summary() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.manifest_summary"]], "media_list_from_mft_json() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.media_list_from_mft_json"]], "new_media() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.new_media"]], "output_mft_s3_path (impresso_commons.versioning.data_manifest.datamanifest property)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.output_mft_s3_path"]], "overall_stats() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.overall_stats"]], "possible_count_keys (impresso_commons.versioning.data_statistics.newspaperstatistics attribute)": [[5, "impresso_commons.versioning.data_statistics.NewspaperStatistics.possible_count_keys"]], "pretty_print() (impresso_commons.versioning.data_statistics.datastatistics method)": [[5, "impresso_commons.versioning.data_statistics.DataStatistics.pretty_print"]], "pretty_print() (impresso_commons.versioning.data_statistics.newspaperstatistics method)": [[5, "impresso_commons.versioning.data_statistics.NewspaperStatistics.pretty_print"]], "read_manifest_from_s3() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.read_manifest_from_s3"]], "read_manifest_from_s3_path() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.read_manifest_from_s3_path"]], "remove_media_in_manifest() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.remove_media_in_manifest"]], "replace_by_ci_id() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.replace_by_ci_id"]], "replace_by_title_year() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.replace_by_title_year"]], "same_counts() (impresso_commons.versioning.data_statistics.datastatistics method)": [[5, "impresso_commons.versioning.data_statistics.DataStatistics.same_counts"]], "same_counts() (impresso_commons.versioning.data_statistics.newspaperstatistics method)": [[5, "impresso_commons.versioning.data_statistics.NewspaperStatistics.same_counts"]], "stage (impresso_commons.versioning.data_statistics.datastatistics attribute)": [[5, "impresso_commons.versioning.data_statistics.DataStatistics.stage"]], "stage (impresso_commons.versioning.data_statistics.newspaperstatistics attribute)": [[5, "impresso_commons.versioning.data_statistics.NewspaperStatistics.stage"]], "title_level_stats() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.title_level_stats"]], "update_media_stats() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.update_media_stats"]], "validate_and_export_manifest() (impresso_commons.versioning.data_manifest.datamanifest method)": [[5, "impresso_commons.versioning.data_manifest.DataManifest.validate_and_export_manifest"]], "validate_config() (in module impresso_commons.versioning.compute_manifest)": [[5, "impresso_commons.versioning.compute_manifest.validate_config"]], "validate_granularity() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.validate_granularity"]], "validate_stage() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.validate_stage"]], "validate_version() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.validate_version"]], "version_as_list() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.version_as_list"]], "write_and_push_to_git() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.write_and_push_to_git"]], "write_dump_to_fs() (in module impresso_commons.versioning.helpers)": [[5, "impresso_commons.versioning.helpers.write_dump_to_fs"]]}}) \ No newline at end of file diff --git a/docs/_build/html/versioning.html b/docs/_build/html/versioning.html index 3e17599..31be165 100644 --- a/docs/_build/html/versioning.html +++ b/docs/_build/html/versioning.html @@ -48,7 +48,7 @@
  • Utilities
  • Image handling
  • Data Versioning
      -
    • Data Statistics and NewspaperStatistics
        +
      • Data Statistics and Newspaper Statistics
        • DataStatistics
          • DataStatistics.stage
          • DataStatistics.granularity
          • @@ -200,7 +200,7 @@

            Data Versioning -

            Data Statistics and NewspaperStatistics

            +

            Data Statistics and Newspaper Statistics

            This module contains the definition of a data statistics class.

            A DataStatstics object should be instantiated during each processing step of the data preprocessing and augmentation of the Impresso project, and used to @@ -592,9 +592,9 @@

            Data Versioning
            The steps of this computation are the following:
            • Ensure _processing_stats is not empty so the manifest can be computed and -crystallize the time this function is called as the _generation_date .

            • +crystallize the time this function is called as the _generation_date.

            • Fetch the previous version of this manifest from S3, extract its media list.

            • -
            • Generate the new media list given the previous one and _processing_stats .

            • +
            • Generate the new media list given the previous one and _processing_stats.

            • Compute the new title and corpus level statistics using the new media list.

            • Compute the new version based on the performed updates.

            • Define the manifest_data attribute corresponding to the final manifest.

            • @@ -894,14 +894,18 @@

              Data Versioningupdate_media_stats(title: str, yearly_stats: dict[str, dict], old_media_list: dict[str, dict]) dict | list[str]

              Update a title’s media statistics given the its newly computed yearly stats.

              Note that it’s actually the old_media_list’s contents which are updated when -necessary. -In addition, the value of self.only_counting will change the behavior: -- When False, the computation of the manifest should follow a processing, and +necessary.

              +
              +
              In addition, the value of self.only_counting will change the behavior:
                +
              • When False, the computation of the manifest should follow a processing, and all data within the _processing_stats (here yearly_stats for 1 title) will -be considered to have been modified (or re-generated). -- When True, the manifest is computed to verify the contents of the data, and +be considered to have been modified (or re-generated).

              • +
              • When True, the manifest is computed to verify the contents of the data, and the media’s information will be update only if differences in statisitics are -found between the previous and current version.

                +found between the previous and current version.

              • +
              +
              +
              Parameters:
                diff --git a/docs/versioning.rst b/docs/versioning.rst index 3efd5a3..ed0e686 100644 --- a/docs/versioning.rst +++ b/docs/versioning.rst @@ -12,7 +12,7 @@ The main goal of this approach is to version the data and track information at e 3. **Ensure transparency:** Citation of the various data stages and datasets should be straightforward; users should know when using the interface exactly what versions they are using, and should be able to consult the precise statistics related to them. -Data Statistics and NewspaperStatistics +Data Statistics and Newspaper Statistics ------------------------------------------ .. automodule:: impresso_commons.versioning.data_statistics diff --git a/impresso_commons/versioning/data_manifest.py b/impresso_commons/versioning/data_manifest.py index dc8e674..1a8e13e 100644 --- a/impresso_commons/versioning/data_manifest.py +++ b/impresso_commons/versioning/data_manifest.py @@ -764,13 +764,14 @@ def update_media_stats( Note that it's actually the `old_media_list`'s contents which are updated when necessary. + In addition, the value of `self.only_counting` will change the behavior: - - When False, the computation of the manifest should follow a processing, and - all data within the `_processing_stats` (here `yearly_stats` for 1 title) will - be considered to have been modified (or re-generated). - - When True, the manifest is computed to verify the contents of the data, and - the media's information will be update only if differences in statisitics are - found between the previous and current version. + - When False, the computation of the manifest should follow a processing, and + all data within the `_processing_stats` (here `yearly_stats` for 1 title) will + be considered to have been modified (or re-generated). + - When True, the manifest is computed to verify the contents of the data, and + the media's information will be update only if differences in statisitics are + found between the previous and current version. Args: title (str): Media title for which to update the media list. @@ -989,9 +990,9 @@ def compute( The steps of this computation are the following: - Ensure `_processing_stats` is not empty so the manifest can be computed and - crystallize the time this function is called as the `_generation_date` . + crystallize the time this function is called as the `_generation_date`. - Fetch the previous version of this manifest from S3, extract its media list. - - Generate the new media list given the previous one and `_processing_stats` . + - Generate the new media list given the previous one and `_processing_stats`. - Compute the new title and corpus level statistics using the new media list. - Compute the new version based on the performed updates. - Define the `manifest_data` attribute corresponding to the final manifest.