From 50809201e208c4ff446feccb55127f0502101fd1 Mon Sep 17 00:00:00 2001 From: Pierre Raybaut <1311787+PierreRaybaut@users.noreply.github.com> Date: Thu, 8 Oct 2026 10:51:11 +0200 Subject: [PATCH] refactor(plugins): mirror the datalab.plugins package in the host shim Bundled Camera and Pulse wheels are rebuilt with the new import paths. Assisted-by: Claude Opus 5.5 --- doc/architecture.md | 2 +- doc/plugins.md | 8 +-- ...ra_characterization-0.2.0-py3-none-any.whl | Bin 332561 -> 332591 bytes ...se_characterization-0.2.0-py3-none-any.whl | Bin 82275 -> 82323 bytes src/runtime/bundledPlugins.ts | 8 +-- .../dlplugins/datalab/plugins/__init__.py | 64 ++++++++++++++++++ .../datalab/{plugins.py => plugins/base.py} | 12 ++-- .../examples.py} | 0 .../instruments.py} | 0 .../datalab/{ => plugins}/recipe_binding.py | 2 +- .../datalab/{ => plugins}/recipes.py | 0 .../resources.py} | 0 .../{plugin_tools.py => plugins/tools.py} | 6 +- src/runtime/dlw_applications.py | 6 +- src/runtime/dlw_plugins.py | 2 +- src/runtime/runtime.ts | 2 +- tests/e2e/user_plugin_wheel.spec.ts | 2 +- tests/python/test_applications.py | 10 +-- tests/python/test_camera_application.py | 2 +- tests/python/test_pulse_application.py | 2 +- 20 files changed, 96 insertions(+), 32 deletions(-) create mode 100644 src/runtime/dlplugins/datalab/plugins/__init__.py rename src/runtime/dlplugins/datalab/{plugins.py => plugins/base.py} (98%) rename src/runtime/dlplugins/datalab/{plugin_examples.py => plugins/examples.py} (100%) rename src/runtime/dlplugins/datalab/{plugin_instruments.py => plugins/instruments.py} (100%) rename src/runtime/dlplugins/datalab/{ => plugins}/recipe_binding.py (99%) rename src/runtime/dlplugins/datalab/{ => plugins}/recipes.py (100%) rename src/runtime/dlplugins/datalab/{plugin_resources.py => plugins/resources.py} (100%) rename src/runtime/dlplugins/datalab/{plugin_tools.py => plugins/tools.py} (95%) diff --git a/doc/architecture.md b/doc/architecture.md index 4db4d7a..a97f755 100644 --- a/doc/architecture.md +++ b/doc/architecture.md @@ -398,7 +398,7 @@ param.edit_async(...)` for parameter dialogs. - **`dlw_applications.py`** — generic application host. It prepares typed recipe slots, assesses recipe readiness on candidate objects and edited - bindings (through the shim's `datalab.recipe_binding`, shared with Desktop), + bindings (through the shim's `datalab.plugins.recipe_binding`, shared with Desktop), bridges guidata parameter schemas, opens packaged/generated examples, and commits recipe objects, results, diagnostics, and provenance transactionally. It contains no Camera- or Pulse-specific paths. diff --git a/doc/plugins.md b/doc/plugins.md index c4ac6a1..74671b2 100644 --- a/doc/plugins.md +++ b/doc/plugins.md @@ -130,18 +130,18 @@ and may implement `materialize_example()`. Recipe slots carry signal/image type, `RecipeOutcome`; DataLab-Web commits objects, anchored scalar results, diagnostics, and provenance transactionally. -The Applications dialog presents each recipe as a method card: expected inputs, a readiness status re-assessed when the selection changes, a _Run on selection…_ button, and _Try with this example_ for each example designed for it. Examples without a recipe are listed as datasets. Readiness and binding checks use the same `datalab.recipe_binding` module as DataLab Desktop, copied into the host shim, so both hosts accept the same selections. +The Applications dialog presents each recipe as a method card: expected inputs, a readiness status re-assessed when the selection changes, a _Run on selection…_ button, and _Try with this example_ for each example designed for it. Examples without a recipe are listed as datasets. Readiness and binding checks use the same `datalab.plugins.recipe_binding` module as DataLab Desktop, copied into the host shim, so both hosts accept the same selections. ### Tools and instruments -Application plugins may also declare `TOOLS`, a tuple of `datalab.plugin_tools.PluginTool` values, as on DataLab Desktop. The Applications dialog lists them in a **Tools** section, and the _Plugins_ menu lists them in the plugin's submenu, after its methods and examples. `object_type` places a tool in the signal or image menu (both when `None`), and `selection` (`none`, `exactly_one`, `at_least_one`, `at_least_two`) enables it only when enough objects of that type are selected; otherwise the dialog tells which objects to select. +Application plugins may also declare `TOOLS`, a tuple of `datalab.plugins.tools.PluginTool` values, as on DataLab Desktop. The Applications dialog lists them in a **Tools** section, and the _Plugins_ menu lists them in the plugin's submenu, after its methods and examples. `object_type` places a tool in the signal or image menu (both when `None`), and `selection` (`none`, `exactly_one`, `at_least_one`, `at_least_two`) enables it only when enough objects of that type are selected; otherwise the dialog tells which objects to select. A tool is opened in one of two ways: - **Launcher** (`launcher="method_name"`): DataLab calls the plugin method, and awaits it when it is a coroutine, so it can open dialogs with `edit_async()`. `self.get_selected_objects()` returns the objects selected when the tool was launched; objects the tool adds are refreshed and selected afterwards. -- **Instrument** (`instrument="method_name"`): the method returns a `datalab.plugin_instruments.PluginInstrument`, which holds its settings in a guidata `DataSet` and implements `preview()` (an `InstrumentFrame`: signals drawn together, or one image, with a summary and an optional fixed range) and `acquire()` (an `InstrumentAcquisition`: a group title and the acquired objects). DataLab draws the window itself: a live view on the left, the settings form on the right, a _Live_ toggle refreshing the view every `live_interval_ms`, and an _Acquire_ button adding each acquisition to a new group. The instrument instance lives as long as the plugin is registered, so settings are kept between openings. The plugin writes no user interface code, so the same instrument runs on DataLab Desktop and DataLab-Web. +- **Instrument** (`instrument="method_name"`): the method returns a `datalab.plugins.instruments.PluginInstrument`, which holds its settings in a guidata `DataSet` and implements `preview()` (an `InstrumentFrame`: signals drawn together, or one image, with a summary and an optional fixed range) and `acquire()` (an `InstrumentAcquisition`: a group title and the acquired objects). DataLab draws the window itself: a live view on the left, the settings form on the right, a _Live_ toggle refreshing the view every `live_interval_ms`, and an _Acquire_ button adding each acquisition to a new group. The instrument instance lives as long as the plugin is registered, so settings are kept between openings. The plugin writes no user interface code, so the same instrument runs on DataLab Desktop and DataLab-Web. -`datalab.plugin_tools`, `datalab.plugin_instruments` and `datalab.plugin_resources` are copied from DataLab Desktop into the host shim, like `datalab.recipe_binding`. +`datalab.plugins.tools`, `datalab.plugins.instruments` and `datalab.plugins.resources` are copied from DataLab Desktop into the host shim, like `datalab.plugins.recipe_binding`. Version 1 of the installer deliberately accepts only local `*-none-any` pure-Python wheels compatible with Pyodide's Python version. Native payloads, diff --git a/src/runtime/builtin_wheels/datalab_camera_characterization-0.2.0-py3-none-any.whl b/src/runtime/builtin_wheels/datalab_camera_characterization-0.2.0-py3-none-any.whl index 19f909eedcd0ec3cd4d49b4c140f130edee1a46a..38cf22ba035d839629be322083e116fdca102f68 100644 GIT binary patch delta 23840 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]_TF(~EXDmPabkzI#tpuOkR%L`bmtaz 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 P92Y_W^+kTDxIq60w>HHG delta 23959 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%0Dvqh0PySo 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 J3EDju^gjR~`(^+D diff --git a/src/runtime/builtin_wheels/datalab_pulse_characterization-0.2.0-py3-none-any.whl b/src/runtime/builtin_wheels/datalab_pulse_characterization-0.2.0-py3-none-any.whl index 353d9c7acece08a70414e38c04c583d662347465..a5e39b50f2a6ab58cbafb6dd4335b8fc2ef27be3 100644 GIT binary patch delta 30314 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 k#($Thf!0Ll58eHR5_K~(%FKt>FJ4c)=#Z+fk@ zdv!`Ey$@t9o_8^wpDDK+1%YT9=QIEJGDH8aA%k9JrEcipy)%M0u z#qvi*MvPPoFEEt*q&b2}FhF#7$07}mH=##eo|)g${ulUtsPR7Q{v5C3lma$u*yNYXTJK9BsLkVtL?~uX!x(OSymQvvF>|E z&QG`E1D_PQ6!pWy!_da9eM1)UjMl^LP3(?s;dYO~um0kFR?W-rw&NBr>Khjl|XiEbqPVJg=2gvxMgF z>FOGqg+xE-^Ww3su+1&~ik89TEWr`Fg3ELpSxcMx?ny(v>2>5wwz9md`_Sl2r{UP& z?49GJ9Cd~v$U1WrsrNaVHgLMlju;DHB=8y#%wqj3db=i|gHSL`wHDNaQ5wZ3BMjjo z5C^?WAnen+q{LMKl3WNgIhPomkP+PfVqZN~G5Nxmo9}jZm)t8CDN@T(QBNHy!E^1U z``6kD#E{5FG3cwpDmgNT*k^l5UNX}Pl=?|oO{Cs$`{a^gRgVkwKgo5;gVgV1&)8>2 z$)}F<$0Q`jvdhsz`YOU>R>T~}ILu+BDFTZ7mYyfzeVy{42|g2Zi0x`zEo_aMhstc#7x4lfTkGUP)~n5bcA z!}iIobF9WFPGC{E;tScE5VW@MJJ$=o{`A>3tNk(smfdDzFSaCC=o+D&@^<7RdsZT< z?u-8!+>&JjfQX3MJlp?2nklZyv0bylFat6&o zvhAwjo#w=!t+)?R|6vQWmp;$vHEWe0?X`ZMH5mH!^h~L$B=}FCpk}*EXyXFdu79O@ z?c>g?UrOE>-KsYVi)WQ@n*WQ8JV4)`WMi-=gVx)!C#~Y~BWn%AW!6^@X!pvtV-C!j*dex3 z&Bma~UnwV(xJJZ4ISZ0WqjEZt*GrB?)))@oQ>4T}e;IybiGImkh;Ub1cBweEtJE%JW)Myz~>)V>;SF+#{^j>^;Bzwq${fm6e zB?j$+ITNwa{4OaO_0)pPd~ok+Hk6~zfK9!t%8Bf9{?1d4(;#-S6wG0Y5yy6SPemrI z7PZLb6c)vOaM~jf^PaK=I_ zKX_NOx*(jgUkI03e)xGs>di(Tpr&EoY| zr?0lYSHUsYgyrD)aMgu09F{I;Bw;1DJ5i& zxQi7~-3&R9bY^Ke zvj_JaCKiss{K}B1l9hvseTPFbpbH1mD&PrmfctXYj*b+EY>wqan$C|_v4$H0csGw> zIhSN!6?W_U%jUrk4@#lZ1Pb%9;l&qT=QLZhV}hHXoJnn{;KX#Q#^EU1RP%>7DPck` zT>d8Frd?`L(8p@*_b^WI-DM3ue@@VtPQ^jms?Dfda95fnv6Xky63pNGAZBQ-IDDYB z91zuOpLCu&`v*8b8~6^UGzD8=uW>Z)M!(PrX#`(vwZd0*u?KwxBJ@Io^KC_wzh=y{kS z%mUv%{s!(jF`vMqw8AyM4pWBx!Al#>4=03EtrrJ1bKo&&WbFvis| zIKW<-?`niNKj!z8Gdbp$OWK;fR+P7v+5SA?lb+a(y5!{pEL?;58pBwTUE}lhB>^ftuC@n-VPK52sopwZefM1hLxdbD}%fHAU@`ij9DQ?Wg$h#nsLkq`_*TKd#}puvZMJP zU0#sJ(G@lA^-Y{*biP`g$7CFPHHs`6U$@S+zJlgBmOzhJp600mXcR1G%4Q4+<^KS# zun@mWr9hf~Xp+cD35|23SUOdg;;A-XFt%A(Vzx$8&pQ}*yT>jIu^cbOE(lkA>jUHP z)Bf3n_CHA~=>s@DoOO-g6{~sdA>WcO-t5?1x6Ppe>ifq z9ij52sG&nq-(okS*7=3S(4u1&N@Bn4jgQp1g1?!X>=rTsFA>wp83TcQLuH&6c(_~{P0DWEM_I)^#9pgt4|U?TUDLGBDGN4gmnga&<@sW}dN zZmv@Fp#rt(e4Dt9Ir-T2XA8O~Jk-19%ERQaR=vb#ZuFxJl%r?_&`tDQlheev3T z?<$xa=3wp1(-F8|2y!Twp6XBYlWd>HvA4EywuX)(KyUC6D+pYqB!)a2DqI%B z2_cSDB2{#4MtDMfLcbAtd9o91Mw_)fQwr|yU;j} zM+)^*QB@Mc$f-z}N+%&oBe5ZIGA~M>#dUnJOI{Uiko4{Mlr#!dg?Z*JGBOf!8ND54 zW`o9UFGTdK0Qf6i2n7{rlDsrX>`4`qo0x?qfVOn zCtv_Fod6b243X-U6)L)fVM1#cj6}{1!W9e$VT?STUScUr1|yn9lVft#j!wsf*>)t8ky zhu>ns13h5Kr#U1Muf&wyuZ+lT=9bq8cC8s;I3pMe@kfc4ZMJ}@8|hR0H+C<2DLV+% z1YlH~1b4}nA?$hvof!o@*Dh|miP~?wPTNL9aAkQhOlIt$bQCg}H=hQalN>#amj%i! zV)3(%A89IxRj?lHwuc8Dc>6g*(P1P$W~SIT_I7%HZZFR?Q&zk%=PnKq_)toapRW6p zMtbymjXfgv(E|<&hzaS(Q-AsxC$b?NaK%0R(eF z)iL-%4{Sq9K*KPvx+QW(U+BMzWl0^B%MlZ0>nBaN)W61tn6!!;me2P34&Mi^#&8J} z0tNAlPxCIY_7bF0n)G}hO!#>oh(oLgpayY6L#-mrxeO>-VSUh8XKZj%g);NDFfJqu z?7MgCvEHb0(P;-UmmB5xin)qo0UM@w3Z#Xg)%x`a`)q2UZ0RPW6wVb#w;`J>O=ZYta_FK#1Y%a zo56W?;m zhiU(a2ORdCC2=I|B@`1yr@YcnB=50r2nRPu^9o%pRRA{jJ4qW8(Jr)1$cG?Zo8V`Qi@J!Z^*vLi!x*ttbeME!%{Th}MmHym0Au@YGP$gaoC4vvMx!;hs?OqlN3;^u`=WZw)}*X<_CrPPr*S@$ zA@VmVQntAl>Ph+h#%HRGs`m=5@P-Y`%=0yB$ub!nhFM z1hm!{#R#mKSiL#~o*Tp(8e$9T9pi9K3`iujP^bpxmoJDI07RvYuz=EF8BqJRyPX8j z_T8hml`j9;63J3A6uNbZ zvAW|SjFIZ$x@>@)tagPNy_~LZ)F$b@ijN4CYH&JK3MPaz)*x4_>?k)`6z4koR;}J8 z51H`f+O#`d?3Okw!&R%Qc9BP9pX&1l?5a`9x<(yweN%QU?j`tcC@NGK!t#+A`O5(Kb51 z&^8njF<}|a9w^|);uz~cigdlRa>!yi*tcy}6>`<2e<#oAF&-9Yj+>lR2?j`$(LS>z zr#uLv*0ZO5eu;_T3%JOtlSE+X zs1&Bdh2)y;phr`QCwOh?Zli5?*3L|d0)ri^b$h3>z@_Y&wNEFkNLlJxwq_pTJ`Q|` z%O;dd)Rs1gZ34}R(}$Fl&~mXXxvoCci+uSgz!;T|IS``$9|}!&TyRBLHc!4pH4%5U z#+8MJT8xFDt%1snw5C`Q+|E++>N<|gg~3Cv0jdzSh(UdUYCWM=iuU%E!7Y=m>;^kn z);kzPj24mRg$~naeB`0gpR}^l0Y|!Uosf-uA8uYt8&j`fvhRP?e1*7$m{(WX^zZ@ym5+S=& z+SsLHpWgcK&D!Jncv;Ev`K6wC`j!+%%NdOc&7tLBqTVw$CT);GQi@W#T3NBRNs~Sz zp#IC6BTIkJuG+8;PK(H!I07EQ0z@Yc-~n!j--p3AGVNtn3R>=@e0DXfjR8-O{-mLq zJ#1)($OXgrPBegPNCsjtBn_=_uDvCijCX?-X1L54xqS4yn8~278!HyS>FFq~*ruVH zbzM6|iaVQ+V>YZ2$sDVkWBp%AVcxm?NqZUNV%cSy#)?=1lR({7d(8r5)!!8WU=wvC zu>+Bhewu)TkAC<9q;~th^Nu8 zLjIidYp;`6MET9*%B$0&=b-lMKG_i_8X{oIpECymJqvSb(d!ROW{^>q+7(pCLb5zj zn7xhfAVtH5}kdYaGN`mxNfzXvas$Pisr(3b@8v=@oS9cLTxT?e) zzb;|IDklv5xsoBe>ara1_y&U+*@4R z)$w^e!BxP^1!&Az_L>5xAq(rIue}lK1A1X;!$pn}z_4rQ57YCGMqbJRrj_oP2M2I^ z3+PNwHLkVtjuEgIi$y6eg)aRk{_uc53;5H!%obxc}u{+7nQA2TNz)epp z9l83%;u-xuqmxI7bnYlUOArvdImvE6y~k_=v0Qo`5yWH?vKF$dcu0Q;_JKrib$hv= z?CKjUcXYVNo$7y55##~^P|l_>*JEtPVPe7COZcyK=}d=a3HGJzfZzOYWHy#FGQ!klAx4wUG*iR z=H+nd;;#ON!(Ch|BjUV?gK5NO*bMS2{|lt8MvtMjPp}v)37IKjJn06H{$#8 z-G0PkbIVAgf*q?VZnQc=VCEAfp43t^_zoP!MluoZx>tOt9aUul4G77l=Bfmx2Dqpy zx9isfas`7MQqQpgP!8kO;kqCGX4d$gL;>Hj?;mBDe<{QyUa5%cvY6y8H`5sCfXmVZ zev$$7c*>ZW%v9yVd#!8M0{$n#=H+I39@L3*atb_Aiq&Wo*n#-Nm2c!TgoLoghlpl= zlm_geEdj^oT{I=eC%1mikG%dazE^VQBW)572H{Iegz$KP=t{`xi~X6Io#`!(?fgQl zq>L@O4Wi}%x~BbW#7k)ZTJk*8TfwoD_{fe_F3Fwxa7T`Urz#+Dz1%&i_9~{iQt0Je zkzHVFJiSkT&EaTjEVtq9-e#WKXg7M%BkIE2OKRvuIKV+BQ&X}E_qb?1z*iy6iBC3`!(W6?*FDBArjvT36EX@k zPrjc!8ak3-2|I}vz86OQLpo9ZKDpoz5SE8){sVi&AkGkMLy^j$PzxvoM08UP-j9+| z<;Mbb8s+dcW4f9(HQzZ#OLdzmOxWqPGIw^Sv0jIbl(d?TEU_4%BsMO~KHD-j-@r*; z`7R;rqg`yQOjS-|AuQxX!n@XOJGyg@EM&pB)LJ)T4+654h$WfhdYeiux+ihUV>biruR1 z!(f;uCsQ*tMqFN4^GE6lElpTy>iBpwN3Xu6f;k4qh)R@Dq3dTazA&}4xu8AT@l<(V zJb%XE&YE<@2J8;Iw?0BU?q~r#KRgze)f!YTsvlG?D%n``x!FGINIA%#h6N$2gt{j~ zq4_qhuZ|>8`4)_Whew-KqMP{9FvN(ID&z)_lqPhZUm4+Ed)^)h6C21^kYwM+1 z;$j*?H98ihMT^H=dGZyg5ie@Q(yNTm>sFeEYSCV%hvgEJR@>{SlRs}rSGJH5)ABt?5jX|$q~`x>RxY3?#(Y=L`}kO6PUHs zpkLOJv3`b$A_^-W1qACtpoEs2>-vakgzS-60OEJ)m=lQa6cVk#ucP!r?h>>!6mCcD z4xMA5q?PzRgg7j*U*ZUQuB>x5mm)?ca?b@jc-B#(qrwF6+IDGpIl~YqxV(WW!=WxI zu`?l}r)v@8)Tmh+-PeE--saeCx`;8vQX3?0guz7gUtIx}vFwP8s|Zny1F=vvCF`Wzl@wXJwnZ z>(rqQ+jcFf7gINS^A-o|Eil3^y4QGTL+h;~Lt)Pey`)MGDXK$RL3&ztTh&TocpLPp zh#goC2)d)w=v(g$t8#Yjm*Xk#i^@wFfMu46q6E~jjn}3v%mzzuEdmmJXs!!axEa0Y zTdJvF^jSPX96}9hJwZ~fJ{N}r-v;iXWZuZu-n9%t3Mq8PFi=o7_h3NdUZK~y#*Qbr zC0mYu5muikACP4V5^dw;obIKn1}gokG!3zk-h1Fo`u%V4_Nh4h5qk`|SAstcdUXkhBXU&u2_S0TGF9CBOA0`8SCjGp zE+^j!uYHrKn4E`$Kk`{GK6n;*`tX77jIo?}J4;26^0cH$TckaMf1)9NqG6)iI}|7#O5DMNgQgCaIb$+&A%HYs)}jJcNbuW zH@0nG(Kj(-c*qlxwbORR zx653X$aywyX#Z@unDv=zZV&*w>Zn@3LqHMEy{p`)^!baZ?-{blx&d*3vUc_}Y3(#{ z2kXwv=J)%P21$bH^ZV0cT06Sp>E?eir~c1n&B3rx?@^WwzhRQ`1UguK@9%Mb)lCgRBYq%g9HeN{kRuN)xGoZ+8UvwBbqZg4!{ zb^`w+3wpNnSWV^$-zVp-#$++-Fd8H=LGg1s})^GB9PisoHy4f!G&O|KW~?znr7hjp^%I~9nn zvXh~SOphN@lG;g09Vczagy%UVO=|JzWjA)<(#5EL402$!55%fzra$_%UxM;q(EtAr zLiqpss%|>VpVL%Kz~#Z^p*GMXz$2iAsS(1YlSx8H zISy6sz8WQ}#D*%$SZ5r+hB?*@Pm?tgqEIt{#AkYb0LS4hpAw)Twr(HQTa^K!NR$o@ zG<_FM<}cHC($_Nm3mk`m`unta1M|o1DL~N`tv(~V3Fv($c%egUJ$nDF{P7OgXQd{y zg^dSfE${)ty^{?e7o{JU?h+;$#W2fROFiceGE}l2VM%EAu1ov$t_4#Lj)f#7whRX| z@|93LhbAaw5di+cy1aSc)ZF%OO>=Ggp1f5x0DWSQFKnN8;|neGt^4-07QfH(lVZbpzXB&dfnlDmS4LbEMk_Yij;{$wqUNffOZWwiVUkLF3vf=}T zdUf{@kmpA-#Iq4u@@$>w{$~9B)HiyZ7?J7K(~s|UU1M-$y+q-5RL1S;_I16v_2k+RaGb-?QI=@6Vh?fDpY&`xxst0s_Zy9;R|Lu5uhCcbIOscEv&u})Bs;8G8$5j~mgxQW{eaokh0~1-yHT`?V zp0!vDPR>AsLu);R&tWuL*;Ky{50MCGgLuc9&H`QmVU^;?UZI|;-e%DC(6`VkppkbN zDY1aHRl^B#x$+9@uN0X0-q!IX1K9pIrBIhJ{ zk%^;j;Pm;gW6QV7Pt48SHzV8v%%b8xdV=ga-;pqU^zHEZxp%MufuJB;FL#%t0AE_* zpT?qR$^_h2SQnaJx>Q2@YL20B(+K9mFO9{j#)HG;FI}m4_c!u(DHD;x8J3D0gzN=x zAyELAP_YJZUgm-_$kMVvzJfe@pmS8P;S|hj$3?vX27Zp^pg$~^pNmZ!lq+mLPiPd+ zAd(Z~TI?3G^l`Bv63_3c!dFSf35VT*OXschT*WxW46Efk>$04C4#`YV@|<|G2zI}y zJg29PW6lU1wkyRyP8b0?=q{`@4qjSItQ)Y-8FEGn`ph)F<-O~FA}n#BbTNKPcB-}3 z)uHx1npk>oY;hzPS28xXQqeMtJEC$9}^gxN45;t>` zxUh=wR>;!VDvBn4*8OX25(7tW{b*JJDepX7jEk^cMgRjYa^&(ap3`Our^@o_8c~4L z72<8+$)_8Z2s#eFFIR9y^)R9G`>X|!$+iNi`TLr^sA1bCr^r2Z*KQ>z=a(I1bb*Or zQohv!j{vCb&7xPNL>eP_JmK}+M^Ec&g%#qJFGuNGXIABF39hIRyW6rGB%@oIoeE@A zmE;`aEVwWduh^O>S=H`vu#re5H6DPFBY_QE>xqa19aJVpRn$mFm2lu0WUdJ@l*5z& zN>8L$sg%v}q+ca1L6>1+jzxfVy^{pt*J&T^V(a;aUN`hPLSf0_EQ>n6rdq|)JJ!PD zbzXR&sMF7j40Q`8=PF?+jGMI-hNP0)(b2%U*X90eR6Af9kbg zEmS0ybtnae8WT|58u1irbN@SXafqlGdWn3z;F*;JU*Rd;9&9V?DaxVw7`Cjq8sqeP zE_66#!$W6UTFd`ORuI)QPM| zesh1hH@Pu9Ney6*c`nSYRCg+2Sjnb7C5lWKWFRUOx(L zR5?{bnd;}l7qjIzGWtUNKLDVhZJMLzBL|D{Z$gsuMgaTo9;G#o3GU@8*`(o6gz~?^ zd%!sS|73=v>EV(7%NQ_8H4EGzfq)dVrO(oVQltxWfkLIn@PMK;@ua;W{cjCNi5lGh z2C=o<|66R=4vGkNC(z_L!VZQw7EWv+E%E1x1sMc{C#7!e6F@h1$(14SpF_!wO42CJ zU4x5|>4Ad(6S!4Bp5@nN^@cR_&KB@+jv8G;B4C#oH1PFz}RYLec@aH zrh780aYd#U#A~@2{R`A5LOJ^8H-<(8J-prA(}Dh90H((JT}u^c2ni6s`@Q|g0m$3W ztBW(p-?Ks04s=-20(pXC^l(_TiubB>6dGo`eFz9-0g%$uxCtl8#`V*nK@8czS(~Qi z=eXEX?2b(q8!KR@Ath zgC5sIz+Xa#Oq`UReR^<-J|G6gKa{9LXNI4(VDHsHy)+-#>Y^vOIDND?uvE1~oPeMd z8=QOiB<1?F;djFDCVKym_ywTTxUR`ttu0Nu^|VWbe&|8Pcou39Emz0y;1gzn=7!m? z^#2YwmL|4{tl>&HzeG?Jxt~uIgxSBpANBeG0#I!@tg~Wn`rtocAuuqp-^CDT{h<_X zq2WzyfuI&mh{m56G?G)J_G|M5xsj2pv&!niQM?v{w?<5{VCzsD0$dSEA>^LUk2O3{ zg9K$W4!I24Te~Lu0{*4L>AT9Lf+33cfiHmzv7UcCRA9Nli>qb3=~oxmwq=a308hz) zBsZQBJjtAzj`pb-J0or1zYi}~=9-;Rq3?P@J!3x0do~rM_$lNtBKKv6Kzd^t5vW~M za6*vA0tXxy3S&a(h+lY7qMD|pS&b>6$k1Ad5otU>>{CRpjw@W4)-rM9y(}B<4gDWGDH2ZjxDeMp}j;bT?`vl)33Wv`=5LrWU~1&9PcGo>yL$A5vTl`l-LJ8XFh^@}C>T1w3mnwiJX-RS z2{)Du^Dq;wSWI)1Hq*n6Oior*+#mYf>nzP(I;%`8^wN;?32|Ven7hPOP<1kU%-Hc# zFbXAX*I9Q@ZnTC2qC;W)6ZUp+S}*G z=+6Xv?03)oGk|;opx!vKpBPgbl^}($E@u6_r@3P+<{C#I{gB6g#&x^bx%9XhSMpV5 zvEqR-(O^>xDfp8PY)9Us_FaO=-YDF;KIgIf4wp~$USlGX&#`uXsA zC@`s!b_8+AUh)p57`jQiRh{h#{`m^=%d)UhlipM_;tDxrkF7Krt=);W`FLW$3?6 zX|4Y>s3L?;0OV6pl^a+O4V)3P5U4mMy!wz&pcVo3_Hxd#ON7f~?UK+^V|no)BB5~Q z^JIn=NuBCHtmlVvbffMmA3&D0M0GIjQuZa+v7K1p@M=nVh_{ntz zF1T}}wZIdb=g0(|&rg-A1SI07PKoVX*8!qn@TO;}gEj*vQ>`6n03)HC7p~9B;ORMN z)!~tXCf*fh7ro37mnMX}c~Aunmi~IenqY|>xc=W?>6=h^RE+f9_olw-(a!d5BBL(9 zJ9lm)0AyEQ0Y!*c?UHU|%1zmT!jlbhXrf;_6C}*$etcK6iYup%$bv6JwbgL_E6(ZW zSHW$P<2eVdhZlu@t4F&rJo*W4?!#QKTkSD4$aeN7hi0t*+*52C(oL&%q`zQ@d{EaA zt=$5rX!OlH!uO_zbP_+3QamNG+giBjI`+120huU0$XA@6L#Gw4&D(>~xB1(*F6C^L zmhMD*3Z1i4ylaAdeqPrL%P)mF(MCvLg(tx*wrRLM%JJs(*QJQx}Gg62bP;&FgtH<#<9fGy~}Vg0->@ z1Nf@`?r>645nD_PryrT6(%&OEE7Qt%4lw7KJ}yPelMd*r}8JcM~h1 zk=EKsVF}0zNBr@CF`mWn1;sv`s{%n0zb3F5SI7Q9&9iq7OlV|uU!+1HaoL^KbVm@P ze9m!|6oW`|8x#I0=zEV|Wi5fz!RU0n1I)HIm(8I%`Mz$SKU*G08~kG3ki%%hJ%Fbh z16CSMyu3M2|E9RGY`WgwERQuxLG$OF@5)A&C-|v5wWodPspTq6P%}rV(*eQZC z+l9f_iN;E2LPNz}(P3D6O?j=5IExoc@cJ2Q>l#DgRA>L1|D_4e=4vZun_81LgH;^0 znp@}8dE(B%8>Y1Ut2kRL@~AY%9%5nGjzgbS6<+C}K$x#ZH~dF%PNBoFN@r{;&tGC( zuA5&S?T1^YWlDM1E+l6>N!xq>8Eu8=eGzS{|B1$B$PEhfOIvWO8$tFE_*F*?$%U?I z-WMCe+0y>ydr8VQO=cjU7Mr1(8l3T-AGmaEaFIak|Qcli;(=)2AV)Jvul#Qox1g5#vMJll`i02Oz#F_nA=3| znEC6$4dzxL=@4J0;6Nx{7x3k-@a)#J|D8Q!I@EQ>e*i)#l1Ynfv$U2=jYR@O&JUSq ztX+qBiv&*Jk8GMdkiGALborkSv9$yE1N5&sgDB@ltU-!% zzh!Km@=`2sTrIYH!v}FMrf1w6qQqE%2|j1TCftbtWZoxGS$GMGI9@()6G~>Xd?&Pl z4kJy1o^r(QYajVl69e?c)u1SiW27xqX_+ne4j$bRd^6skT8h5jT|Nu2)nx`N8>y{~ zUD*b_X{+CY;psFDfGZ7AIC*LF2|*$$R{K{z=W+tN zQ;D5^+F7ViCu5Ghdnl=DSdzu24Yf3o-i5EZdFPX7kE! zZd!x3_&Gg*(}?mHuO{11ZJq|GW}O@yoK3#yj}H@w%#&|2fC^Q;R7SW>3^ygBj=5f# zTm4_+}!PD?oGQr%^Z@Vaqq!*c;dhU+>fy}>L**# zvGZD1m*a1Bt`C!Q@7o+EPD8!W{n~%V>rsv@mX}&#`1UB{8KuO!2^=yOUTa#6=!tF!S*3{Q88v-avt_Xl_v0lcLG^W6iVP0DI=}ec{ zMgVu(?PqBkCC>g_ci(Gvk@_akfoWwY=?8n=Tz}4sqYE^t*y7*#Er6e547)7 z%MzMZjRDJDHpOtKU8vD)L0FqUK7GV9lD+H-zX19i0FGl8J>In!NET12EOn1&wL|#< zz3?uHwl+gnebHQ4c|HTTWz`=Hf)RBZEeos9Da1BVGv?Y9#NgVL^m|IE3_(J$FfRBy z_B+ZM11J5^(xL$-*OKfqljEt6p22eFvo|HtN(9@KLhaQEXyU~-aAIEB#sXBd=`T8C z4UV{{Fob_*3zUKWL*n+$^nddBe-?7;4TEcMz(GJ_;L>~WK`Byh_TbX%_(72YLqNUQ z15S*Q9q>0K=ob?QXL%+k6R*N6M-$^F!YoFHFk|x*?qzjgWBa6h#62pkhaP!AJ zCo-tq$jQBs&>6Q(vQb8Z@?Y&A6JZYLi!hN{?FVqMbZ9FDq;;9{_*ptLMDCHTW8ji)J!iSLUXJ_WZ`e3fGe&aNEPpla!8a3hwmT;O&p=WqK+^HPC9c|5ChLoDGLZOFKy@6Im_&qe*8js_deN#?* zcZ61cG75VhL|TrbBl{hxf;ZZQl^x1ci6S)TE9cj#wkj#daX{#l7$uThJk9$vMWu}RJq^sqsV>!0l@gx zo=?$FA~FCQPhOzzxD$_=k1c=o$qOpYCwhx$|2{%56n><++a}?)Y@v$wigHW;sAJGVPPmRCrdP33b> z8D`&jf{iG1rs}XJFwgOh;watDmLkKX#vz3K#|u`e&edCEla|QL0VrhObaD~bc<1tg ze41y#^25_-B{i3T)1E~qLCsMncA|a#8MM2u)D;iY*jWs4A^k_l^PGq)5*Ss>KDS!% z>=lqKHc!gN&gLoOIXt3#+1m#2%7(^P;kel$j{aj9zdy$W5-yV*YuyzZ;)oeZHTB-* z4LxT3lNQECqLmXln%=qHpBdM zuLa79Q0@j8r2FNycoEFBdqK$z22GKT#?g-k3 zJGIGc<{aI4b;Dy$DN5Iq5R9}PraJ{L^V0FFB620W_ zxu+~#`9olpc>k}-PI0b6={3GWB5s&48r0>?bd5ap3SIi;=AiOJR&`n6u2`SN_{7M% z(|VYl=tIpq8+*NrohF5*XiF6(U1u5ZJ)?`9(0l5juN^r&0=761M0o#*(d2ge_mi9* zz~P}0Ov$|y;3JSXL(LVSVkB@Y*KrcV+*#+3{xUn4X?P)G1H$pc?I-k4uJ+FZCLZDN z3mZ-xFbG9my@LbwwE8fa&KEh57Go@$8xXk&B$2^^fGCJ>8#N|OD^I2nLsob2DMisp z(%K-(`5g$kxhUiAo1BDr?<`AEa+FyFh)IHnz%&bDO&@R$!C#vrlkw3ghp&NKeR(E8 z1e_f|hc}VNT*Ij2D%X*;z)2H_zCuCChF~J>Vpui@qYMP=*l~zbu9mP30e{&=Cav(y zyv^sF#oa}`EG2sLd@&R6T-LzI>hR;w2tmTfX-OXQ;UIpp!39Fo+X8-{8|_sCLWfSP zV{`ic>0u35C;}WBzh$kD_wUsg4GBo|SyAxgKn}%(l+(E(0PZj=2~@w3@}y+yhG$YRn%o>huFU%JDTlz+JpL7LP5cFc&8>52Y zP@WaZ2fkCwF$iSQS#04ONkcFIv~Ph@_0{ra>D9C%dscM>gsc@QP_YSI6Edzmd5ptB z$%l@vJO=XTbQ{X?Y{*gq2;TS(MLo7Lw=dxkT5S7!0*|-PS-|RXP`r4_I55#YEbU&2 z2_TL+9{xGpgKE*=yN%c1#E5;knssAbl+JL!6OP>@b4L+VWp1e#C4+(`@Y`}?D>bm*mt zLS?*U<95yKEXI=nEoj&dKk{DYR3LGNi2*h%A*aD%w<@Gzm?Y(?q>cKGdu}q(qnyO(~pH*}Wpo@7%7R#x~rir;RdArKqS2phft+#nV+s2W_>#b%NE zP=_l*3LopHr1I9pZEYAhT&EK0Q8Qs&?-gmbahhxHd6CT@cZO?ZwpYPjt~nmKw}~Zl zP-mlGjwgwrb;AO;KZPehQUgSs#n;CNvw{&v+|;eC7eHt-Mj8Wb@eoh~Bclp%QvvqBBW5Zca2fwljX_N4cQ1qiogmM!63rD7t>w%7)A`3X z02rqULDA23dKPK3)lD77uhlDWmQ5F$`|i(dvGaN4fbHwuA$XFlb~uk-jqC>KqmFgq zzdw{5oqg?gM!&PCrE^B!YY$_5u#YM2PjDfNXZ%RNs%Ztm{CuZ*3wfp!5t7LvONuII zXP{z61u9zrJ2CBx7v&TIcL(FAv*59LFH8pC9(IqD3+dYnDLY?EHlTzZdGbQ~b%wcn zWsFEy*=w^snS|L#vBEIta6G@dcC=DODlzkPeQc0WusTs*@vxNB;1woSPi^fA>k!mi zR5yhW6GDVAq_F{OH89^4zdy|C}+)3{jg8v7ak-sf8_31%Kd#tCM+SR)hgC6&oZGk!M@H1P*a zAZ{m*+j7q&ITwano94vD4+&M!>sE61^jDqtGGG|IGQwRm*He{RLN}k~QtDQlZd19p(YnD*b2IUDu=a@uqzK~VSVnw#r?+`Fm$%Et;ZpzWOtXIE^- zWH|5CXIp&`kB{2G=sim4K-HcYC}2@-!i;_9;OQ<$pTq8&>5_gUWPUO25l{+T zerOv$x+11Xxl5{e9pzQ9v8Nq#Su$;}fhJ_j`Pp8GAJ2$VfvRH7LSFpMzS8Ewv1Xxf zFM#zNY{4c$VSoFoVrUwrDyC;~U?W5-u6d8Qe}cX@r%Q{>!iQR*FmMTAMvi7THXr&x zISnzIvNEq{mX-LVqV9+|K8#C|L=MTX{8j23qgMi6Rm(RLP^q# zn4pO=#eib$GlH0tdQC{p6LGhRq8o(@^_y2I$ckC)0m8~T{tdIhk8m^buX)UF?Au&= zBPXX$a*T32sQqo)@XtTlm5-RBP8FdrHw@}t?U1I^b=q% zOo9zBzB`WyQTzYOddsLdpX6&t+g$}LJi0t`4P8CwfZV^958^E>x&h$uR#`o{_1 zGn~z)OZ3Y6juV>;I!rieZ6%kGL*VeV;egCcL@$E+{1tv>a~jbmE<>!Y27WKyw!9uv zf6rmmTEW3npfYWMV8T;;G{*~gY2nt?6sKNAa} z7o<#7$1hQCevBFo3{tStQ1;rmRPuF;_$*h>ZZ=Y=g#8K~po99Ia03Kt{L4rQ+>TT2Ij0-hl6VL^UOb9#pqb0ai$CF!OrtcI zs8%5!DGS#%wJV@u)x*lTXG%E2Pz7W_su!inO$^lNw$K8hFKr#RBzx;d%9B&v}ebCx}69wLK!mfDl9ACymQ&vg6rW2zhe5{H)F;Im&Dl^2IC)N ze9rmX`vu|6PoY;Hy1>wJ+Z8Qv-ujV31%Lse^KLdyL=%xFKr&Tw>?5?u_thdwLy`W# z&4Gk8i(9O-l>ZuNbi+lah^5>Z58abMDMm6wOl;$%eA=I+58-5Cm>BsD zD#h1`cphmk=?HLSbj8DYt<&W(ipjfc^|?q^xt>qDPc8ye()( zwsY0~bnDd@SJ%#M<{HT~T$+F+{1a|M(zyo%v+UXf2ARacB$rJ;j2jAU3&ORZsCL!{ z^qY9{b+!wz?|E&T8ZJ~I_V~HdCu_O%s}5;FQt12VfL6Ubhvjh}{j`D#^U91uqH^ou z7|lpJ4mK^QW*SS7put3Mq#vp%U=7-wc(VwOxWgd9{n9TUh6yYzH*33vNtY&g8Na$8 z&`fN$^Lx);tyn2kf+Owg^lbC#q>^iwmlZTAo z?aHz7%BZB8z{k`VPay=#^_ItF(&qPep4*3+->PQd4RB z1I`u3MA)y#Za8y8wL*L~I2VC+64D)t7Yis4K>razhK(T8gDylFg{>~W-#^sU2V}w) z>sZ^ATr-S@uIxOF{UXI3-AWXe@@0!_a9Uu->ZG8V+dWz z-16`YTX;JuzrH`A5x9vG!&xH;%AMz|Lu5~S{KOX@@*dDzrZPBA(oOWM{pq#l&h_MG z5{SUG6XP6pQC=un^m`B+vBdsSbg4G9Rk*tu_MNbagV|%N-sYybveJ;|kOIs8SY*GC zdytezUtpMkI9p+U_k~%Hi5JD*rq^}A_^21;0+?42`Sqx6yy4N|c99HL-+hGfCqR@p zI#csAaHZrX9v@oN|F?GD^zL?9o_640*?zpf;gtA6%g9?&*l=LsY_R34`Oc^|{+$_%n@cf_`FVi1_`2fYT-x+reY)qM-3}@21 zk#5MNdneP17rDJNF}l}>AMn+LYI#$O#M>~3S}H7~p3_wziv?%t!WvB4M(7dRLyr zibkOgUvLG()5GI}vz;pZx6+&=4SBp~7LUqi+`E`coa|6qn{dFAt!#NdRkncVvnhES ze4oc+xxq*3=(;U$9+K6%0`g#+hBc6?x$Qz*6s`0&<2wlXY+GEv+qy#&=hxazo&lWL zgz>R0YX1A16IAeO*81m=IM;RQ!BbD)C(O12zBMl|`JV=;4{bK+of@-;R_*6Wk;wvj z?-Dk5d73q-4!30&9Bewg1$9TvtUr49JWl;VX4@_W%l$rxIZSPahw$0NaxMzIrqVUF!t;MK2@J?;Eee=Z!5C8T5dg zx{SbJ@JRLdAj;W|t2KI^T5xa@xzlYgiZoWdhyvDpyhPyO_tPau^XQ#aqs9S8)?#N< z@=*GYhbHwADuw4NsMIenujmQl|0BVp(eOXRl;QOpkj{l+cUFP9nF?v z`TKZ6*P2Tlo0<&^3`$u|r)snE+L^2Rx45c~$WB6qU7}Or+}6k8etpS6AjDa{+mnfT zEr*b1WlgRTd2R{qTvciR8)|Bj`1=qD@m{U2rD-16L5{d0zClZ%-7^qA*`+hDvM(ey z@z@;$dUf*Lk6Y+zZ)NUfY&Qye@Ki>LYXUd)$*_YIqdA!46BnywG@e6;F5#E^U?;al zS9lyIv|raFR28ROT1zf`#gdF0@dcJOwBDmSdhR~uC<0(Q3PDD^eKCp2+m0x`(rKhS zW?$dNukEY5(N#8&#XNw#YsKHa*+nIPXWpKP3uyzK0<<>rX`y{3jRag|cPrsVAH&vh ziUjG-MoVo#0cW^3@r`3jI)gv!J-ulxO2%cGl)bo`v+_sQ4m^Nvyo1cf!11IezF|oM zvH`YwWeHlugpiAx_Vxut3A3_or?2)kQ*lo%SYYAviEa7WlpnuR+*ZO;yyh&yFjR1v z;b$d8Hu%_FcFU*MYMC0>>{?}q-J2TpVrI3FE+HY-J#4sm(;HS#k-}5(Wf7}<8|vSi zQEuA-;|%Y~ePnUs0*$#g8_jTTg(%K0tODS1cg5M)LnFp)Dyt40VjD!L8`)Y4)C^WCx0%k^VY>^;tE!7-zu2)7LdfFg5>eO@AkM`L`7E8 z?Yy@rki9kOrxR~bD>O8>Cdld1+8v!$+@?Xup}dNlZOFCoJf7edmjX|Cp93GlL~Y5M zYz&sJXJZn*XFaW9b5yx*2|^w}3tWocuVy=d>r!*Qzdiz6cqD+oEa}{A-2f>}w*K7c z%^1s@h>ks@L_@Hp(#Kqjxn5j$d`JQVzj!|xu#xQ{_t$_o$?7;ne=DJea$lJxiUX5> znTT!);sxxs1Mc`EJR`sq5#Bgvl;Xh4`cp#MWD&rqjT^q=sVfY_aNn9mr)upVhr)Ok zFF+hJi5~%_uv_qh>Bg0%b!nD3>pOJ#R`whA&UoOve>jV7(V+*z$Ex~MK$i|FN z@{Cqh7pf)anh=2ZWbOi2`h;VZ(;35=4T=DVeZFw)1&Fl9&(5XhKk`z=F58nKgF~as z&{t1Q3g{woenFUD6GZkGd8{2D^%awUN+TVF%t`|eVMJW=`8MbsRf&pWZ}zgg8AC7K z@?d^`sL`KGvaf>N!^gmNtJ$2SHbz9&K6!xQGymnwR$Y%?Jp;*{AE?iFVN!1co|)Sb zR)$Gxql+vysiyTay@G(u915#VEUv+CH(SH($|Hk|U;ttj)|#fVXdP(@1GXF=e}2LO zqmmnl=V`Fn$lH_O3C`5PBQdQ+&qLja`ltoM-bBsn7kH;roQ#&|#>v-)OLW?kz=g$; z>ra!XAqF)%(4Na}_praBuXV5e;XMOb zbW5yFCHRv1l`UO25@O|>-H-hN-ezhc1=mJkiLNl?iSBDIiGCi&E8g=XhS7R@@_O!Y zcQ)Td{!X`)#CmdX`pNXntHji}X6%jtkAE7c+-wHVSX4WXZs zg>=L){@p%7W+V-8=LbWw#g4`OfKY0^z@xb}p~j*zx-%xxbP(>QunU!ajQ+`78LH1f z;(P{|=*++<+P+Emf*UfWpH8|pkf7md_-Wqf%AOB3zc|D?k>TYe&-WV0e1ly0lpq%U z@}!pir>1Zyv(^E}Q?SQ1D0G=9oB-ASOe=2YIvF?$G%pmefI}?M*kt9Eh~nJ^R(Q-W zzS5_Rtt*E@xvob6YD6z{5sVD;sk?bmvW`2C&+w1Y&H_d>@6VTQCQM7 zLILXNcR=ciHtFIv!Ex9OV-ln(}G%vj#0Lc-Trazg#n|yA6XV**q(tplYA@Sr& zSzB3bl52UIPQ)a&Q302xy{eFp7cab$b|;sV1?GiR`&^hrmtwXX-hVO{kswPY3%E%L z4ocs{CIN7I4KCW|R{;IKhe`lXG6wm`j(>{|5l9;Jgj!BWxp((wCtmdQxTF1?f%7d_ zvomIH$lhkqi6Nm~6*V;nZ>O=Zw7sMe)EjML^)eA~b@!2^9`?VOWx4P6BvZ|SLC$Gk zXDBkmpLgE&2m5Yu@NtTZJl(JXzs+p={d1@!tbpL{2#m4Q9CKtSp|d5h<kM z=XsN7!->1^rdZf3&*_!G2?g>=LBv~I{qAfp`>4vSHscYGvyN#-r>m# zc&mP6*G;?|et*6kU45B<_&s%6oHtJL{6pdp4aBUB%%&|!4!%hL8LXbysG5H*N{~9Q zT5U$ygj;O}3JLOS+vfIMb>Cb~O+Lb5X57LXL@S?VEtc^-NLnQNqEfL8AcK)d1Hu>?|7zbA)B1$bb+zFGQRM zV*$v1q5PL`i2jGN@=q9%eRx@n?SoqggboCR>kqe33e!g*F(pd?fRGUK&JUVrnK1Zn z0JOnEVmD3Ud~;dFKZU}hv*|=+pgX2eCSfzLzj|T?oo>YQ89%A2NKdw?1wL}#2cu7I z491z^k3Bb+*{;^QQZSCU+2C3n_aEla*$BGOPqd)wXQ)FRM(WoW(RxP!iy;UIn>vy5 zQ9fdgpE*0(i$)v zDqE6zP6&JiI9uM|0|>OngSeYBI{|@i<_D18dphj{rmg&?Q`M9^Bkd~R63lOvR6W>L zTOPVsPo!@L7CiE^ZL~C!JaxWh!nF3xnVLMN&KI%06zsz~xWB_j;Z=dy-h5FhS>!-%(xA(^ZV8bX~xT|MDB@z)^nYQ6Sjuwr@YId4|}b)Xl!qJ34B z^kmQPdvqh=cZ#~H2PY+GJKOHBA6Z(i6as%tR}iKxfTuYk)FN3s_F>a zcW5*L&T#m7rP@#u5^@d0rB!yl%xI?%TL=afn|58bsbyB}dojr_tco4XjzsS|gGJml z1!KbC2!%&OoV@SX&FVRp3!vw`25;DlOaC}qd7DAYxC$Y@aB|it7~(h#odaG!U7|?J zkO0$m_ytI@JOmV<<&%FF&x2Wa_Rd$5<9J@(jRQb{D~J z(rrQN3$eaIEf@HUm2_GhG~7}Lf(dI}YsC~@!8BV!HQFE^E6Wx2-(raeIY9Yio8xGz zkLpz^pLKx^q@UXreFAn!@=|kUuUiag8IHnJNZ8Oy%h(I(d*f9v>VV|v=;G?EaA4r> zRcE7Ut*}$1>Vb1?nmWm4v7T&A@!N3MLmYGHx(^+4-+QD9Jaug5OnPSdAWE|(LUNb) zDufZ*AF?>Q^Xs*j0}JA0bs#4_9MhfTjcFqjXexP=n<)h6#v;I`jaTzMb>8M1Q$NK- zE)uUVP6b{;jk5n1fj!}2aTQD`ZNDWAjt5Ci(s{8KHi(r|lLvD`M1bf~((pMUDFCAx z58~8?4o(i1nF4+f`YH~>bqnJ|_Dk<_4UfTlA<7BE$GC#xotFsz5va*0nDfPwD<6Q6T_)!PlG|IO2-c zCy@cIj0M_ZCur-$0J#S;UQ#GaIFW1~_#7Te&p}Wz#*1q~0x>}P(35u&pp-WQ?O}yh z)|<*<-Duf$M=|6h(>vS2mYM@of_k4Ydv5VLnr4{%Ih5o;UpZ@#m6teDIU7WgS=7jQDtq&{h}|{|$Xm-Q zvjifbs@i%L@=u15)M(4a7)j6QQhs{nj9Du&ggnKw`XxggSspo89=Q_*07K#N44hC? z0)>%`QDTTEG~Bhbd)1t!A9it{a@}=JTi&1x#-kJ&Nn^u^cS>#>}t zCN1=I&Fz5G@KbT#Ad4En3uc6`B1nfWp#q{Pti7P7zS$>>xoczu{80hwCElN35dpcfVDIhs?@8S|_%Y5g(vx zmpm(4CzTdKv?kM8Kyf2TwXu8wi#oV07X{>RF&lsL9ZRS4rZrKsC)43ICM9;>8ScB% zEzHXuV`nC!jT1-DwB zswvui##pF(6+oiYHxR)9=esD8_C?^b?_@L4&DCAHFy-l9FHb_TEW}vj*jbuFa%bri zbY1q-7|RXUx+AIW)ft+NW49iKkJ+R@odRl@+3@^T)sj~JzG zhRehCFrCn|)LI#h`)~oo47rWJHc$ z{gkr>s;Y00W%Lf?O1uqlB`Uy1#k|VYA?R1ee1^*juGpwcPPZ&d}`+=pjj2kLI8$tQng`o22HZs%~64! zZoY|G{OZigL(7Smn9n0Dx@(a%D`tG7nImvk zA3ZfGYUUePw>Cz=|B602!LRJ(ogInw$QOds>(!bR<8AUf`j++}7{p>%e~tLvwEL{8 z+Ya{1`OJBH%thy21LF6NSq_jK#dB8m3bA8my^8tWFpKRJl^cyX^4H8%&R?@ zeZNU7)B0PNKm)o?g>WQ#v^y(|Oc+~pQZ&`hPgU%O65#`bg zvg`#^G`6B$Db7XA)x{b7ySAttW~;2-OaaK99lS@I{|<|7uKx8iSRRRVf~{hDqBH7p1S`N|NZ0Q$JY-T!NG%o5HlwTegBi! z29p8_3)lkJOw?USxqt-_0J-h_N1#sV4cOMR(6$O5+y%j2F5OWyUW2pr8gMW8+xJW~ zhy8$bHl~Ep{FiM_fsNnHRn>l4s~*zhe{SvYHq`6v9$9g1v>(H<99fa~)cgtdT3Kgj z69*f>_R`$08Uk4OQ^ z5Cj_>avRNanhp}Xrvx49H8^{H3PyMzarMlS6}R&ybRjZn>gI}4!u0sGLorxn!JOwD zGR@UOnWk3mXO5!or-AKeYhH8ja^|(`kL;HSoq*tG%KMk>1w|h$qY}>q8gq)X2<(@a zhR}1appy`vIiT0XHi6JWWhRZT6j;^C>vq4gn88!}INQ*PX`eZ3VK_kysU#1wv1dV;_glQ68lY*#37YCZ7S1U z&-b8%*nQTQM2>)5l!35p(q47p2hIeNlg@jQy{sqk6L3gb;zq&0R($!>7w~J%EHD9o z-1(f9s#2o6n$JRYHmBCA{@jZ36_OuG=|L+zyi+k*#TjK^vMs-@VrlppVnnztOUdJ! zn&;CIpWOK!_kcDSA$a;^BA+g!_ESPKtd=3^+j{xK8dOu!M45jYP87D+9P^&tk0G+W zq7P-vRRmh)N@nU363Tc6qZB1LTNtxArYXmRa(;=O*huI>-00qBie=kR)nQx@@oKU+ zX@@y2g+HKav{;kvt(MZEaYBq|fVkR{QDn{(Q3;s06l_5NKdRdXv4SnstfUExb&tVf zE|2c3h^px%^3Q_&0zK16*Lw~Zhb?PU1D>VWlLhQ0Wg<)~JIIr) zQak8_3uGZ@^L~aK_GI~Dq3kfwXtbY3kOY#2c%sOLD8KtOB=l=T3@HiZ&_z>f*f)2a z)l8OQZ2Xv>C&x=j88@@$EUEfJAu1Q4vaqtN`gH%IxxLIl<>{np`I$@NO^8sVcbzP;QY#p^ zmG6Ie3VVXm+dOjjz72gF&_2cI3HU4IoW9F39b3nLpnYvm^Q(Bgl3 z--9bJ2Dbz8ZPDFUpZTOjzm=j#9N><*yo{N$jjnm*FjYOps5qS?YA)OKMelM-@q>)T zRX`%e0a7UmU~~4F{4x&%td%-}gqG4;z}pekpTK2tZp^RSX03Ujs|nUJ_awt zi-pfNnE+CoKktd|GnNsH213QPniq95UTJwI>K->{Q&%836L{~ zPN1TR7P5EPlp6Gxbec{ciMb8f4@$KGJ3o6!XBm72eM#Ac5=$mjCu1gi9$=urc0(L) zNqB@=J0K*1TK3*Vjk4Sr0;C#mp@a_!$rDsNyj6E{Pv+ z=!#k|~-q)YN0?iYgd(4$^ z0n=J_8I;~nwIFoJV%19hc#UE2=|c&s?CppdjTyu&^$mzA>R~|d)ID#eK&~Jb6bhn@ z`Fj!WR*E2AF-w9f1CJ%l`@P7BDN!qNtU;~^3ys=6dW>IqoK7SJiyf?t7sw*`#QMPB z5ETv>-+bEUegZB%TMx2;sSxIJcH=~TM$CmanY}tWX_6qeQ$85IiiY?xm(lbhwf%d{ zk1iFN*!&x1UowNJMmF#(gky6cvQu@`8m|w|=X`vCLxtHWck+>Z9d!uG6{` zgcEP2ec5CCM#6z0-nf2zJ$GE=vRz{JbEAikbs!6m%jOfCKn2qo^j;cRmc7d!3~TXz zgtaFq` zBya3sqrR&H8dxCC++Mgsm&eB!mx8WLK8Jp;7aut4N_(<@Dk#tJ7?(k1OBl2|S;w(Yi*2EoY-=>(N`!40S7^{V$gIV2eKy3Fvj#QLC89gZG)Q0x6Gb0PHW1cHe>QJ1j#InLaU0Cit- zwssL`j4pfq1Tgc-?67k`w!DI(&TrnUAZa98l`FBn(jdd2&S-Yy} zo3F5wlDRTdj91|CXDqSBL|gMywP#(fMH&hMmtFIW6n!X2N8DR}gGSl)BWzt6q=!h8 z?E!Gf8Flcub2t)@TMcX22|pKTb6JmKpB@?ln-9*pHsDrMVWy;5wfY-MkL5#bZ7qe7 z)Z74u!*_Pevr?D5YYGB~Y6Vqt40a#)NM0uxo5Pz!JHl#q{4NJH46ZRvfiRLxMU=~n zb?P`6A49i##DGC2E!A&)%X|_u7v!G=U26Gd@08d_4vYmu30`Pnrd48{6$ zsMe0ve$^M+RDw)2dvyT@6bTvai?MmL1z~S!Af2$@qOb09?Um}GdcCS8^6Bjx%K60< zoptR#L&*xe^>tkvvd#%phek)a=Rq1kgz}ZUpa3&bCm+Paj?@%eB+S8H0 zV}But9#d2h4>6O4%0LR{;0s>=k~E?6y~jzaf;`i0N*(EIp6=uP0@k?nXmUaK+-Cot zlTbb$F@6cDej7h+BGIIr5?3@7)nQ^396BDSwFCA%?`0 z>S;`LNT$@X-K?)nZ}C!|>v(CLI4`eYswHR(L#TK6s?FBcjnA0F-TgLet}Jw^gXY7Z zF<^lD!KgPazYnM9qGPRD;Gn!uL)QKq>_7i7%KRjoS+M}VU|@e*4Y&XV#6PW+K^j2$ z--a_SVDN8)mk!_o^P$o|sNM1HNa>&hhybPQ^T$v?cHZ9TS0?%Bwm`wfl}wSqIl${9 zgCqN@fw$k*DI<^PHK&K5^P#&&$|fq3VmKixwD-AB7QebLu|FWe5i zhiM&6D8JmVBa5=%C@_UvrwnMo@5;H;Ak8=>O8;)XP#gtD4DH_q*BA3@?sL|)#z@LD zvQWvi7F1tcLHEKke6;1#TA8Lkx(Wn_3BVhDLkR^HnQbnlx(Fv=Q;fA^E&(MaA$b}D zsao!=bpEn}@IKi>yGtwx+P}g`c1lhx*1w%w#O3jkHOwc5)8WxTw87>me&6Cr8xE5I2#3++F&I|T^z6X=WU&rOVkPM|7iwi% zDpEi`+fy>yv-*DZ3aV+D%etoKg8yo7lg+BC`|&H5mREpBA;BGs2?OxpippA-9GRAAU`FyHLy9?AK7p8Zm(BZUJ<@20yGSnV z@_{~37*$Ytvf~7CFPQ_U<@QOSD_n&1#QF!G`rAjXUgTv4F^QPsXW%03dtIVH4KTvZ z$2Z?Rs&#C93rsqzNm^6Knq^!dp6jG1ACBFD)n9P12UY~Dre(3Rq{u&i9#3P0ePMAO74;LoNb|PGI2-4v*;6RoBy8 zu*i=xyrcQKw2KL7jKPWLuPd(F*Qg6)F|aIDIw$ya(AL(AE*Z2F9F+ zp>(b+{rHH~{GHcrzcur4Bj!84b|35vQBY4@3jG=C_^CPYc=?Wtu8lIb-$O8hlCTLn zX~;oxT8N&yR%CwdoOd|!Y*;pyv0L>Fb&$!*`1pB(^*)o$o`tn&sRjX7h5NzdN4zU`{$lN_X|TBk z^CCPJKPwfOF(w8<8Aev~;C{`R;_s%`AvP(witegn9PQ(JtSmn(Do$K}c&K`qy^%S} zb-z3g62iRaa}{wx7a!9uar5bN&p!bI#*@+NYei6k3-~_#{q4TnGD%Rh5&po;_DEc} z>v54>1MlG8&&(_}QMbMye1hNV*lkK^+V)G3AMS~Oo4pkJP(%CX82_MWxXyUC<46cQJ>Fg-t_|FsNl8hXLbEedu_|1Gw-aVe_toMAibSnv$uLDZq%Sp9B_8sVeH*bThsl7!tK)Vye=l3zN z9M#%ZR}_|HuEq3I8Jhj|&tT1cc!qNOR)9h9}tpxF1w-DW~iJJkV~+ zgk4JJ6mAXx4d@unN1Gxgf&;(-dc^UkoxsQmo1)DJfJ^2C5P%X%|J6%y0x&x_1ADNrx-@aX%@G0-y0JuLCaw$Yy9{>@%e;M_KOo+9ELHzGU`-AcS zgE{i~|1cPTJO7#JG1rIDhHrldqT>c&5&a2j{)fNrgZA_vkGY%p7x}?uhxd2rQtl74 zB;WrE&$s~ue}(WoA3~3+zd|J*0M4IrY( z_if4B{g(|FegG!nKdQ+7ceJzPKSx z0CI}0;Kz>t(M9~xdE)-JZdDL~_E&fHM;A`>-#USh&cuKG(h*I@Vw;Z%pnYtr;6En9 wMf;x)^ndMi3w_uDq5F>*IR#!Afc; object: + """Return a public name of the plugin host, importing it on first access.""" + if name in __all__: + # pylint: disable=import-outside-toplevel + from datalab.plugins import base + + return getattr(base, name) + raise AttributeError(f"module {__name__!r} has no attribute {name!r}") + + +def __dir__() -> list[str]: + """Return module attributes, including lazily imported public names.""" + return sorted({*globals(), *__all__}) diff --git a/src/runtime/dlplugins/datalab/plugins.py b/src/runtime/dlplugins/datalab/plugins/base.py similarity index 98% rename from src/runtime/dlplugins/datalab/plugins.py rename to src/runtime/dlplugins/datalab/plugins/base.py index ec38415..2c0c621 100644 --- a/src/runtime/dlplugins/datalab/plugins.py +++ b/src/runtime/dlplugins/datalab/plugins/base.py @@ -1,13 +1,13 @@ # Copyright (c) DataLab Platform Developers, BSD 3-Clause License # See LICENSE file for details """ -Portable copy of :mod:`datalab.plugins` for DataLab-Web. +Portable copy of :mod:`datalab.plugins.base` for DataLab-Web. This is a Qt-free re-implementation of the Qt plugin core. It keeps the public surface (:class:`PluginInfo`, :class:`PluginBase`, :class:`PluginRegistry`, :class:`FailedPluginInfo`, :func:`discover_plugins`) bit-for-bit compatible with -``c:/Dev/DataLab/datalab/plugins.py`` so that an unmodified Qt plugin +``c:/Dev/DataLab/datalab/plugins/base.py`` so that an unmodified Qt plugin that imports ``from datalab.plugins import PluginBase, PluginInfo`` and that does not pull in :mod:`qtpy` itself loads as-is in the browser. @@ -52,10 +52,10 @@ from datalab.config import MOD_NAME, Conf, _ from datalab.control.proxy import LocalProxy from datalab.env import execenv -from datalab.plugin_examples import PluginExample, PluginExampleData -from datalab.plugin_instruments import PluginInstrument -from datalab.plugin_tools import PluginTool, ToolSelection, tool_accepts_selection -from datalab.recipes import RecipeDescriptor +from datalab.plugins.examples import PluginExample, PluginExampleData +from datalab.plugins.instruments import PluginInstrument +from datalab.plugins.recipes import RecipeDescriptor +from datalab.plugins.tools import PluginTool, ToolSelection, tool_accepts_selection if TYPE_CHECKING: from sigima.objects import ImageObj, NewImageParam, NewSignalParam, SignalObj diff --git a/src/runtime/dlplugins/datalab/plugin_examples.py b/src/runtime/dlplugins/datalab/plugins/examples.py similarity index 100% rename from src/runtime/dlplugins/datalab/plugin_examples.py rename to src/runtime/dlplugins/datalab/plugins/examples.py diff --git a/src/runtime/dlplugins/datalab/plugin_instruments.py b/src/runtime/dlplugins/datalab/plugins/instruments.py similarity index 100% rename from src/runtime/dlplugins/datalab/plugin_instruments.py rename to src/runtime/dlplugins/datalab/plugins/instruments.py diff --git a/src/runtime/dlplugins/datalab/recipe_binding.py b/src/runtime/dlplugins/datalab/plugins/recipe_binding.py similarity index 99% rename from src/runtime/dlplugins/datalab/recipe_binding.py rename to src/runtime/dlplugins/datalab/plugins/recipe_binding.py index 4d0f369..d85ea15 100644 --- a/src/runtime/dlplugins/datalab/recipe_binding.py +++ b/src/runtime/dlplugins/datalab/plugins/recipe_binding.py @@ -18,7 +18,7 @@ import guidata.dataset as gds from sigima.objects import ImageObj, SignalObj -from datalab.recipes import ( +from datalab.plugins.recipes import ( RecipeCardinality, RecipeDescriptor, RecipeDiagnostic, diff --git a/src/runtime/dlplugins/datalab/recipes.py b/src/runtime/dlplugins/datalab/plugins/recipes.py similarity index 100% rename from src/runtime/dlplugins/datalab/recipes.py rename to src/runtime/dlplugins/datalab/plugins/recipes.py diff --git a/src/runtime/dlplugins/datalab/plugin_resources.py b/src/runtime/dlplugins/datalab/plugins/resources.py similarity index 100% rename from src/runtime/dlplugins/datalab/plugin_resources.py rename to src/runtime/dlplugins/datalab/plugins/resources.py diff --git a/src/runtime/dlplugins/datalab/plugin_tools.py b/src/runtime/dlplugins/datalab/plugins/tools.py similarity index 95% rename from src/runtime/dlplugins/datalab/plugin_tools.py rename to src/runtime/dlplugins/datalab/plugins/tools.py index 718d7de..a939527 100644 --- a/src/runtime/dlplugins/datalab/plugin_tools.py +++ b/src/runtime/dlplugins/datalab/plugins/tools.py @@ -13,8 +13,8 @@ from sigima.objects import ImageObj, SignalObj -from datalab.plugin_resources import LOCAL_ID_PATTERN, split_package_resource -from datalab.recipes import RecipeObjectType +from datalab.plugins.recipes import RecipeObjectType +from datalab.plugins.resources import LOCAL_ID_PATTERN, split_package_resource __all__ = ["PluginTool", "ToolSelection", "tool_accepts_selection"] @@ -39,7 +39,7 @@ class PluginTool: A tool is opened either by a ``launcher`` method, called without arguments, or by an ``instrument`` method returning a - :class:`datalab.plugin_instruments.PluginInstrument`, which DataLab shows + :class:`datalab.plugins.instruments.PluginInstrument`, which DataLab shows in a window with a live view and the instrument settings. Args: diff --git a/src/runtime/dlw_applications.py b/src/runtime/dlw_applications.py index f95bc6d..6c0d8cf 100644 --- a/src/runtime/dlw_applications.py +++ b/src/runtime/dlw_applications.py @@ -16,8 +16,8 @@ import dlw_plugins import guidata.dataset as gds import sigima -from datalab.plugin_examples import PluginExampleData -from datalab.recipe_binding import ( +from datalab.plugins.examples import PluginExampleData +from datalab.plugins.recipe_binding import ( RecipeInputIssueCode, RecipeReadiness, assess_recipe_inputs, @@ -25,7 +25,7 @@ find_input_issues, is_compatible, ) -from datalab.recipes import ( +from datalab.plugins.recipes import ( RECIPE_RUN_RECORD_OPTION, RecipeCardinality, RecipeDescriptor, diff --git a/src/runtime/dlw_plugins.py b/src/runtime/dlw_plugins.py index f16ab82..b74b13d 100644 --- a/src/runtime/dlw_plugins.py +++ b/src/runtime/dlw_plugins.py @@ -10,7 +10,7 @@ * the directory discovery loop (``discover_plugins_in_dir(path)``); * the hot-reload sequence (``reload_plugins()``). -The Qt counterpart lives in ``datalab/plugins.py``; here we only need +The Qt counterpart lives in ``datalab/plugins/base.py``; here we only need the pieces that DataLab-Web actually uses, in a single self-contained module so the bootstrap stays focused on the object model. """ diff --git a/src/runtime/runtime.ts b/src/runtime/runtime.ts index 4cbb131..d961a03 100644 --- a/src/runtime/runtime.ts +++ b/src/runtime/runtime.ts @@ -1695,7 +1695,7 @@ await micropip.install([${JSON.stringify(SIGIMA_INSTALL_SPEC)}, ${JSON.stringify * Mirror the portable ``datalab.*`` shim into Pyodide's site-packages. * * Each entry in *sources* is keyed by the workspace-relative path - * (``./dlplugins/datalab/plugins.py``); we strip the leading + * (``./dlplugins/datalab/plugins/base.py``); we strip the leading * ``./dlplugins/`` and write to ``/home/pyodide/``. */ private static installShim( diff --git a/tests/e2e/user_plugin_wheel.spec.ts b/tests/e2e/user_plugin_wheel.spec.ts index aca4880..b9babf8 100644 --- a/tests/e2e/user_plugin_wheel.spec.ts +++ b/tests/e2e/user_plugin_wheel.spec.ts @@ -73,7 +73,7 @@ function buildPluginWheel(): Buffer { import numpy as np from datalab.plugins import PluginBase, PluginCapability, PluginInfo -from datalab.recipes import ( +from datalab.plugins.recipes import ( RecipeDescriptor, RecipeObjectOutput, RecipeOutcome, diff --git a/tests/python/test_applications.py b/tests/python/test_applications.py index 747773c..c0a38c9 100644 --- a/tests/python/test_applications.py +++ b/tests/python/test_applications.py @@ -11,15 +11,14 @@ import dlw_plugins import numpy as np import pytest -from datalab.plugin_examples import PluginExampleData -from datalab.plugin_instruments import ( +from datalab.plugins import PluginBase, PluginCapability, PluginInfo +from datalab.plugins.examples import PluginExampleData +from datalab.plugins.instruments import ( InstrumentAcquisition, InstrumentFrame, PluginInstrument, ) -from datalab.plugin_tools import PluginTool -from datalab.plugins import PluginBase, PluginCapability, PluginInfo -from datalab.recipes import ( +from datalab.plugins.recipes import ( RECIPE_RUN_RECORD_OPTION, RecipeCardinality, RecipeDescriptor, @@ -33,6 +32,7 @@ RecipeResultOutput, RecipeValidationError, ) +from datalab.plugins.tools import PluginTool from guidata import dataset as gds from sigima.objects import create_image, create_signal from sigima.objects.scalar import TableResult diff --git a/tests/python/test_camera_application.py b/tests/python/test_camera_application.py index 702044d..c4fb8eb 100644 --- a/tests/python/test_camera_application.py +++ b/tests/python/test_camera_application.py @@ -10,7 +10,7 @@ import dlw_applications import dlw_plugins import pytest -from datalab.recipes import RECIPE_RUN_RECORD_OPTION +from datalab.plugins.recipes import RECIPE_RUN_RECORD_OPTION REPO_ROOT = Path(__file__).resolve().parents[2] CAMERA_WHEEL = ( diff --git a/tests/python/test_pulse_application.py b/tests/python/test_pulse_application.py index fb490dc..00404b5 100644 --- a/tests/python/test_pulse_application.py +++ b/tests/python/test_pulse_application.py @@ -11,7 +11,7 @@ import dlw_applications import dlw_plugins import pytest -from datalab.recipes import RECIPE_RUN_RECORD_OPTION +from datalab.plugins.recipes import RECIPE_RUN_RECORD_OPTION REPO_ROOT = Path(__file__).resolve().parents[2] PULSE_WHEEL = (