From 6e1bd9b344a3d4805fd04712e592707951ccee9b Mon Sep 17 00:00:00 2001 From: callumforrester Date: Tue, 7 Jan 2025 09:33:42 +0000 Subject: [PATCH] deploy: 82b208f5622752a6dbb43de7cf1c393849040c7d --- main/.buildinfo | 2 +- main/.doctrees/how-to/edit-live.doctree | Bin 10492 -> 11188 bytes main/.doctrees/reference/cli.doctree | Bin 2216340 -> 2218898 bytes main/.doctrees/reference/rest-spec.doctree | Bin 2237643 -> 2240201 bytes main/_api.html | 4 ++-- main/_api/blueapi.html | 4 ++-- main/_sources/how-to/edit-live.md.txt | 5 +++++ main/_static/documentation_options.js | 2 +- main/explanations.html | 4 ++-- main/explanations/architecture.html | 4 ++-- main/explanations/decisions.html | 4 ++-- .../0001-record-architecture-decisions.html | 4 ++-- ...02-switched-to-python-copier-template.html | 4 ++-- .../decisions/0003-no-queues.html | 4 ++-- .../explanations/decisions/0004-api-case.html | 4 ++-- .../decisions/0005-connect-devices.html | 4 ++-- main/explanations/events.html | 4 ++-- main/explanations/extension-code.html | 4 ++-- main/explanations/lifecycle.html | 4 ++-- main/explanations/plans.html | 4 ++-- main/explanations/type_validators.html | 4 ++-- main/genindex.html | 4 ++-- main/how-to.html | 4 ++-- main/how-to/add-plans-and-devices.html | 4 ++-- main/how-to/configure-app.html | 4 ++-- main/how-to/contribute.html | 4 ++-- main/how-to/edit-live.html | 8 ++++++-- main/how-to/run-cli.html | 4 ++-- main/how-to/run-container.html | 4 ++-- main/how-to/write-devices.html | 4 ++-- main/how-to/write-plans.html | 4 ++-- main/http-routingtable.html | 4 ++-- main/index.html | 4 ++-- main/py-modindex.html | 4 ++-- main/reference.html | 4 ++-- main/reference/cli.html | 4 ++-- main/reference/messaging-spec.html | 4 ++-- main/reference/rest-spec.html | 6 +++--- main/search.html | 4 ++-- main/searchindex.js | 2 +- main/tutorials.html | 4 ++-- main/tutorials/installation.html | 4 ++-- main/tutorials/quickstart.html | 4 ++-- main/tutorials/run-bus.html | 4 ++-- main/tutorials/run-plan.html | 4 ++-- main/tutorials/run-with-dev.html | 4 ++-- 46 files changed, 91 insertions(+), 82 deletions(-) diff --git a/main/.buildinfo b/main/.buildinfo index 7ec26668c..920c0e368 100644 --- a/main/.buildinfo +++ b/main/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file records the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 5994c929fd9659219ab99d3e2c7f281b +config: af7fde940e7f568dd5c8e4c57fd5b044 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/main/.doctrees/how-to/edit-live.doctree b/main/.doctrees/how-to/edit-live.doctree index 7ca9feab22cab5e2f772f559b4c77d49cd23777d..0708097497ebae041771b544f2d95aeaaeac9a4e 100644 GIT binary patch delta 1359 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 delta 40006 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 P=~eS!6a7jt>mL0V!P0bv diff --git a/main/.doctrees/reference/rest-spec.doctree b/main/.doctrees/reference/rest-spec.doctree index f0efe64249a43eebb1efb9dc640e66bbef17e4f3..b25036b15a6f513033517e56ff43b04ca253598d 100644 GIT binary patch delta 35406 zcma*wcUTlx!}oEAw)EaXx`KjYuc+7y#vV0xMFdv_6tL@Ji3*~k3m$v#73c4m7CTP0mCb(xi4-fs%U7MFg?HOQGAw0fXgm5IMx;Uq$rzH>U+cPmWa$tH=nUutyN&4>Z zOY0rqc?4PgvoAN>Ic^C1dZzVFPD+g=rsigc=ye~wYgQ`LGo^2t*q*6zx!LajoD$hL zDK)KUVxoG6JU=0MaGA8^$iV~qrp2irBhRnR`TC{rODgU%x$B3#E3Uuw-p?eVm;Us- z;?DNp&f&t;o`kE%*L&yU?DTC{Y;uyEjb7<#arzM-YIk=1_Zf0m&%Q}<19P)2jGJ?_ zt^OIB+-%!__efT|%U(qGN=%QFWp1|9kB;#1z0&o51-|7SzqKFNyKh>V#J+=MkIgtw zcKqM1MJD#`6Bj!)HZe|L>w}l8%YW>P8x)t6ma6Yq5UmLPtO9>!x_(E2kIzuIV#Txz zB-vKR4=LNfckZvbZF03a`j-Ws$}qjis?ySH|e0K7}g7^}RneQl{wFd}^SK*T4D{uITi> zpGzxa^^HH5SF-g(rJ4FQpGzni`tzTIl*#&cp9A%kzc}bazBuXKWZB?LEoG#B%$MNe zzka_k?QBK%!9va#*EOCF4ACF_Qc{_yfAXc7GEQHqFi0;79rSU9PD-wRaAANlN$?Q7ylcn9jZ z7LbO(XP5|IB?-N>#oT2c#|AUfERu$lOR^@7BH5AhHdp%lnxZt$vscQfBb}wO((O+2 z4!2N8EK3u#+E`=kvor}ijWxzFOVjqGvBo%NX)azh))<&9&9q0x8iSLiF%%kW3{aM) zk?kJ!6Bwi{%|>ryE!(&=t(39Klw@gQ8yRa%OP1zzXJd`2$O=wd}L{goiWxjnCUD{$!o?c6O*O!d10(EIawNii@oY~ zGeKFJ01so0Ny^fU2r<@}r!38$YQ`FKCCB1tV~rJ>rD?z1SYwrDX%=oW*5q6U$!fFO z`_zwMLgiEpQ)>ymvNVmC?3X*lbwz2S=tZ!JQbNfRO-+>I%4`vDqJ$`uMYi1N#b->- z4a>GITQ;&y!@3QAYRFBOqn#*zGf}!&(JgjY5d%z>Ako@X@lb||zNX3|SMIZs^2wMy zFeRa9Qf`7ps&=~YGgHdQ4^k`?7t!5Ju@Mc-6<0Bew9`VSc`_;Ejr(_#b;f*yJl2>$ z%RGaFz0Bol2hC+uRm~MU;i*wvn+(>rk?Sx645-&9P8Qi}tcx;*5ptY6xTX+(NOHL#&RVokotzG-Hk+ z4>9H#nZ-Sh)@qbWiVzDlN^`NwN^zTEspN^eR*HvMYpK)`F4i)A@|Ad5DPh9TR;KEH zN+~g#YM!I4?zd9fiuoFuN?R)laz12R?qZd-Jo_X2i>#FfBEnv#PBuz6G2Tw5vo=ag zamGoevh|b@@r$hzrpz>+c)g+GC$_O+jJRW~v=F2D%oeQ_Z_&+8e&z~V%4w}QigmK8 z0E4md!@IMA^bUOpS=G>PD&e5pESftX)m5?6gM$ri0s}cCwWMorQD$#t^|r-oMrVA zJ)7yQY%#t;Ch@pa-vTp9>bqnkNqryeC8_U&lO*-wewCy?+#izEhx;3n`fx8IsSkHs z51DveX}w758>A$O$CS3B$3Jh7Xf~>Eke^8EORN(~eTl`B)OSQ0Nqt9*CaLd;DJ1nB zF^8nSBUX}l{Ajn5)K|nolKP4`OX6`*ReO`Dz7?O4)c3{*lKS2-^;F**j8h67Iq%WbWyv6;$+D8kPi={v*DVj;-H9!#g%p< z%3JwK%=DA1W`(z0_vQQ*`|b?!_}mui08=tplnfOm14YRlPRSUJ&yCZzl9$v~UWz(J z>g=e)td6icxSXIJZkXbucq*c9NqP63^Hm0kqEd>Jke6pCdKXtli|cjeb;;YLyXas4 z`;KjX%CNR-lWmP3(n6hdKAkD2WWp(#Zb~Nm-&dtB5_Ns3OG8~1*+O26hlp+`7vMpE z<)|ptS5_AUDD%Z0?f1{_9H<

MB;3QJh87AmuJqXR*GlT+pq8m3zi&kIHgs{}Q4+ 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 G)m^x@sxe&i{ zLsOFD69<&b)V=QRth-lpX3+n0M}C}HkNh~7JckkG{<~}A;##|gScO*@P&qs%vTy&0 zej5iC8Atr@2Hn25kZF5}(*Fc6ffC<9|*Vn--gxBK8{hib;ysMZfd4jO&wUYWTcv z(z{??z2azlyC3bv_KQym9TcAytJ_@c=alF0pO%!<=z6_#*Nu7astf(#YGX~C75fZI zjiv4EVo#~Ma@l>}t8H!my}F8h2gU3Dc^9O6S8VU)^`9nF(vxC)rNs=2?-wJkS$F%r zmyg4LFPD?%=a~&)LqUN@?Z`@+=J35SGv{e_Vds ze9c7N%MWhSSe^MtFQ1YB9%cP+^Zy<=N>}frzcgJJ`!P()*5!XxOEYv^KKe-GbeBE` z>NbBYt+V{(D2>qheDani>uP-}C&{{gpBhR!-KtOZrCi;sPZgvbomWY)RG@2A5-w%v z(uH}tRV4vZy6#+wzm%nWSEANMd@ijk``KRSEXw+yqogUi(VxqBkNMd(&1^|rg{c@U zdN!U*$k*-v94KY#o_ua9X?0b<_)F7toxb?$YJRfRjr!uM>-eR#Zs`{nX{K)17f4>(0%cg%lSaWNm=0SZ8+O7B*aPEWKTLo_FanM`YlV}ECqRbN zpo8;}3zr}Vu0jFafDE_|d2kQX;UQ$fW0(a0Kq0(C-*KFenLya-aHOshds4r9cg5!ai4O{CiO7XxL3JmNh1t3W@xV2&Xa~3vozPN{dGf4+)IB^tv*On zPRI=vL%Kn!#r4TGdwx$PcF5Nysj)O&E~AnHq-?o~O7fP*$pchUSt(1-6C2$*$JG4t zdDdZJ727t5uHT{okKHs)rhHr_b+_QM*c~YkF_Qe{Hb#=GG**r`k`_AgoMqyvAIrBSuy1a*<2C#0C!wsk~fhE>aC2DM%ho^_iLY z%pMD=gZzvg6)dGVIn-99m6qbu1b-e@5C$a<<)rA2jJbIDFNwGq|%W}@1vwd5i9qPopWROi`9)#TB1_PLEz zSFX>t`nFO(c>+!Cv6Y&O8Rus$a#|OujNGua_~3b(?bK5WkXKSor23?^v_@V@Z?y5E zH|OlcjwhC)YG*IC6+@|vLAt%vQTC;=S;NK1mDo$=#ds>aMvaiva#siOsX{JpmV>m( z@J5)#@};cmGfB$3VLeG%-*=Og_5B1%S*)*;l*RfXNm;Dlkd(#xJ4sortzAV@-U#j_ z<&6+XQr-wvT>pI|)McacMrc7|tfbM(<8rpOJ&^0=eJZwostoxWc(-@JxZ2qN(OFxeypao zp#j5vQ*N0u_R6p;Bd)xCW&Ko7$xRYZjeUrCLiUysh)1V|*s#!5@|I)0MS9{cdMciv zUUIGnbKOVEXs5LJZzq`uoSbPu$t0j;3Q#fu{b24;9aGQ-A3%L$xSOJoIhKNOuj@-Vvgy zu4Sc%hHC2o>5aV1ODsEfJ_7O3*Oe~^ibflGi$;UXiAF{G(WqN_(Wp{Y8ubkljVe{8 z(elBfQKc#x^^~hukgmwS9mD{M^}|&j5h5CW*g-UUCPXwUlG13gA&K@r7?RS|sfwa0 z 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 diff --git a/main/_api.html b/main/_api.html index 4bea9fe7d..731390276 100644 --- a/main/_api.html +++ b/main/_api.html @@ -8,7 +8,7 @@ - API — blueapi 0.7.1.dev1+g21a6cf5d documentation + API — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/_api/blueapi.html b/main/_api/blueapi.html index 148ab4399..8f451024c 100644 --- a/main/_api/blueapi.html +++ b/main/_api/blueapi.html @@ -8,7 +8,7 @@ - blueapi — blueapi 0.7.1.dev1+g21a6cf5d documentation + blueapi — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/_sources/how-to/edit-live.md.txt b/main/_sources/how-to/edit-live.md.txt index 8f1eb8c7c..af8695585 100644 --- a/main/_sources/how-to/edit-live.md.txt +++ b/main/_sources/how-to/edit-live.md.txt @@ -11,6 +11,8 @@ Blueapi can be configured to install editable Python packages from a chosen dire scratch: root: /path/to/my/scratch/directory + # Required GID for the scratch area + required_gid: 12345 repositories: # Repository for DLS devices - name: dodal @@ -21,6 +23,9 @@ scratch: remote_url: https://github.com/DiamondLightSource/mx-bluesky.git ``` +Note the `required_gid` field, which is useful for stopping blueapi from locking the files it clones +to a particular owner. + ## Synchronization Blueapi will synchronize reality with the configuration if you run diff --git a/main/_static/documentation_options.js b/main/_static/documentation_options.js index c104a8754..8e6ce983a 100644 --- a/main/_static/documentation_options.js +++ b/main/_static/documentation_options.js @@ -1,5 +1,5 @@ const DOCUMENTATION_OPTIONS = { - VERSION: '0.7.1.dev1+g21a6cf5d', + VERSION: '0.7.1.dev2+g82b208f5', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/main/explanations.html b/main/explanations.html index 2b9d789e1..825ae9b8b 100644 --- a/main/explanations.html +++ b/main/explanations.html @@ -8,7 +8,7 @@ - Explanations — blueapi 0.7.1.dev1+g21a6cf5d documentation + Explanations — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/explanations/architecture.html b/main/explanations/architecture.html index 5bbdfdf1b..5544655eb 100644 --- a/main/explanations/architecture.html +++ b/main/explanations/architecture.html @@ -8,7 +8,7 @@ - Architecture — blueapi 0.7.1.dev1+g21a6cf5d documentation + Architecture — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/explanations/decisions.html b/main/explanations/decisions.html index 51caded53..00420cdee 100644 --- a/main/explanations/decisions.html +++ b/main/explanations/decisions.html @@ -8,7 +8,7 @@ - Architectural Decision Records — blueapi 0.7.1.dev1+g21a6cf5d documentation + Architectural Decision Records — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/explanations/decisions/0001-record-architecture-decisions.html b/main/explanations/decisions/0001-record-architecture-decisions.html index c83e7f723..31607b0ad 100644 --- a/main/explanations/decisions/0001-record-architecture-decisions.html +++ b/main/explanations/decisions/0001-record-architecture-decisions.html @@ -8,7 +8,7 @@ - 1. Record architecture decisions — blueapi 0.7.1.dev1+g21a6cf5d documentation + 1. Record architecture decisions — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/explanations/decisions/0002-switched-to-python-copier-template.html b/main/explanations/decisions/0002-switched-to-python-copier-template.html index 481e354ed..7679b265d 100644 --- a/main/explanations/decisions/0002-switched-to-python-copier-template.html +++ b/main/explanations/decisions/0002-switched-to-python-copier-template.html @@ -8,7 +8,7 @@ - 2. Adopt python-copier-template for project structure — blueapi 0.7.1.dev1+g21a6cf5d documentation + 2. Adopt python-copier-template for project structure — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/explanations/decisions/0003-no-queues.html b/main/explanations/decisions/0003-no-queues.html index 2a0b43bd3..2c93ba3dd 100644 --- a/main/explanations/decisions/0003-no-queues.html +++ b/main/explanations/decisions/0003-no-queues.html @@ -8,7 +8,7 @@ - 3. No Queues — blueapi 0.7.1.dev1+g21a6cf5d documentation + 3. No Queues — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/explanations/decisions/0004-api-case.html b/main/explanations/decisions/0004-api-case.html index c3a83df84..e5c1f3300 100644 --- a/main/explanations/decisions/0004-api-case.html +++ b/main/explanations/decisions/0004-api-case.html @@ -8,7 +8,7 @@ - 4. API Model Case — blueapi 0.7.1.dev1+g21a6cf5d documentation + 4. API Model Case — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/explanations/decisions/0005-connect-devices.html b/main/explanations/decisions/0005-connect-devices.html index 387dcbf12..ad522a258 100644 --- a/main/explanations/decisions/0005-connect-devices.html +++ b/main/explanations/decisions/0005-connect-devices.html @@ -8,7 +8,7 @@ - 5. Connect all dodal devices during startup — blueapi 0.7.1.dev1+g21a6cf5d documentation + 5. Connect all dodal devices during startup — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/explanations/events.html b/main/explanations/events.html index c77d55ce4..21e0d4b2d 100644 --- a/main/explanations/events.html +++ b/main/explanations/events.html @@ -8,7 +8,7 @@ - Events Emitted by the Worker — blueapi 0.7.1.dev1+g21a6cf5d documentation + Events Emitted by the Worker — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/explanations/extension-code.html b/main/explanations/extension-code.html index c6c8dbac8..16d2433a9 100644 --- a/main/explanations/extension-code.html +++ b/main/explanations/extension-code.html @@ -8,7 +8,7 @@ - Home of Plans and Devices — blueapi 0.7.1.dev1+g21a6cf5d documentation + Home of Plans and Devices — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/explanations/lifecycle.html b/main/explanations/lifecycle.html index 4b835b39c..b7f16fa7b 100644 --- a/main/explanations/lifecycle.html +++ b/main/explanations/lifecycle.html @@ -8,7 +8,7 @@ - Lifecycle of a Plan — blueapi 0.7.1.dev1+g21a6cf5d documentation + Lifecycle of a Plan — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/explanations/plans.html b/main/explanations/plans.html index 6ba1d4fde..df47c4a9a 100644 --- a/main/explanations/plans.html +++ b/main/explanations/plans.html @@ -8,7 +8,7 @@ - Plans — blueapi 0.7.1.dev1+g21a6cf5d documentation + Plans — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/explanations/type_validators.html b/main/explanations/type_validators.html index 33c2d6be5..2a745fe9b 100644 --- a/main/explanations/type_validators.html +++ b/main/explanations/type_validators.html @@ -8,7 +8,7 @@ - Type Validators — blueapi 0.7.1.dev1+g21a6cf5d documentation + Type Validators — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/genindex.html b/main/genindex.html index 56e671ec9..b9b20f33c 100644 --- a/main/genindex.html +++ b/main/genindex.html @@ -7,7 +7,7 @@ - Index — blueapi 0.7.1.dev1+g21a6cf5d documentation + Index — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -40,7 +40,7 @@ - + diff --git a/main/how-to.html b/main/how-to.html index cf73aed67..11758d8be 100644 --- a/main/how-to.html +++ b/main/how-to.html @@ -8,7 +8,7 @@ - How-to Guides — blueapi 0.7.1.dev1+g21a6cf5d documentation + How-to Guides — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/how-to/add-plans-and-devices.html b/main/how-to/add-plans-and-devices.html index 45e3bf6e0..97d3b9b53 100644 --- a/main/how-to/add-plans-and-devices.html +++ b/main/how-to/add-plans-and-devices.html @@ -8,7 +8,7 @@ - Add Plans and Devices to your Blueapi Environment — blueapi 0.7.1.dev1+g21a6cf5d documentation + Add Plans and Devices to your Blueapi Environment — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/how-to/configure-app.html b/main/how-to/configure-app.html index d6b64c9cc..1d2356944 100644 --- a/main/how-to/configure-app.html +++ b/main/how-to/configure-app.html @@ -8,7 +8,7 @@ - Configure the Application — blueapi 0.7.1.dev1+g21a6cf5d documentation + Configure the Application — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/how-to/contribute.html b/main/how-to/contribute.html index a434de0dc..34e12e836 100644 --- a/main/how-to/contribute.html +++ b/main/how-to/contribute.html @@ -8,7 +8,7 @@ - Contribute to the project — blueapi 0.7.1.dev1+g21a6cf5d documentation + Contribute to the project — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/how-to/edit-live.html b/main/how-to/edit-live.html index d5b70e16e..c11a660d1 100644 --- a/main/how-to/edit-live.html +++ b/main/how-to/edit-live.html @@ -8,7 +8,7 @@ - Edit Plans and Device Live — blueapi 0.7.1.dev1+g21a6cf5d documentation + Edit Plans and Device Live — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + @@ -470,6 +470,8 @@

Configurationscratch: root: /path/to/my/scratch/directory + # Required GID for the scratch area + required_gid: 12345 repositories: # Repository for DLS devices - name: dodal @@ -480,6 +482,8 @@

Configuration remote_url: https://github.com/DiamondLightSource/mx-bluesky.git +

Note the required_gid field, which is useful for stopping blueapi from locking the files it clones +to a particular owner.

Synchronization#

diff --git a/main/how-to/run-cli.html b/main/how-to/run-cli.html index 98638808f..ee97312f7 100644 --- a/main/how-to/run-cli.html +++ b/main/how-to/run-cli.html @@ -8,7 +8,7 @@ - Control the Worker via the CLI — blueapi 0.7.1.dev1+g21a6cf5d documentation + Control the Worker via the CLI — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/how-to/run-container.html b/main/how-to/run-container.html index 95e48bb04..86c256694 100644 --- a/main/how-to/run-container.html +++ b/main/how-to/run-container.html @@ -8,7 +8,7 @@ - Run in a Container — blueapi 0.7.1.dev1+g21a6cf5d documentation + Run in a Container — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/how-to/write-devices.html b/main/how-to/write-devices.html index 5bb2383ba..5cb0360a3 100644 --- a/main/how-to/write-devices.html +++ b/main/how-to/write-devices.html @@ -8,7 +8,7 @@ - Write Devices for Blueapi — blueapi 0.7.1.dev1+g21a6cf5d documentation + Write Devices for Blueapi — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/how-to/write-plans.html b/main/how-to/write-plans.html index a1084d37f..31e0929d3 100644 --- a/main/how-to/write-plans.html +++ b/main/how-to/write-plans.html @@ -8,7 +8,7 @@ - Write Bluesky Plans for Blueapi — blueapi 0.7.1.dev1+g21a6cf5d documentation + Write Bluesky Plans for Blueapi — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/http-routingtable.html b/main/http-routingtable.html index 5f21719ca..62ebe14ec 100644 --- a/main/http-routingtable.html +++ b/main/http-routingtable.html @@ -7,7 +7,7 @@ - HTTP Routing Table — blueapi 0.7.1.dev1+g21a6cf5d documentation + HTTP Routing Table — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -40,7 +40,7 @@ - + diff --git a/main/index.html b/main/index.html index 32d5eb30c..1711171e8 100644 --- a/main/index.html +++ b/main/index.html @@ -8,7 +8,7 @@ - How the documentation is structured — blueapi 0.7.1.dev1+g21a6cf5d documentation + How the documentation is structured — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/py-modindex.html b/main/py-modindex.html index 6ac6946db..c16f86c17 100644 --- a/main/py-modindex.html +++ b/main/py-modindex.html @@ -7,7 +7,7 @@ - Python Module Index — blueapi 0.7.1.dev1+g21a6cf5d documentation + Python Module Index — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -40,7 +40,7 @@ - + diff --git a/main/reference.html b/main/reference.html index bf7ec56c1..c16e92726 100644 --- a/main/reference.html +++ b/main/reference.html @@ -8,7 +8,7 @@ - Reference — blueapi 0.7.1.dev1+g21a6cf5d documentation + Reference — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/reference/cli.html b/main/reference/cli.html index 7f1f3341d..5305a8474 100644 --- a/main/reference/cli.html +++ b/main/reference/cli.html @@ -8,7 +8,7 @@ - Command-Line Interface — blueapi 0.7.1.dev1+g21a6cf5d documentation + Command-Line Interface — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/reference/messaging-spec.html b/main/reference/messaging-spec.html index a7b71a6e1..f6b9eda48 100644 --- a/main/reference/messaging-spec.html +++ b/main/reference/messaging-spec.html @@ -8,7 +8,7 @@ - Messaging Specification — blueapi 0.7.1.dev1+g21a6cf5d documentation + Messaging Specification — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/reference/rest-spec.html b/main/reference/rest-spec.html index 1134d7929..42f988295 100644 --- a/main/reference/rest-spec.html +++ b/main/reference/rest-spec.html @@ -8,7 +8,7 @@ - REST Specification — blueapi 0.7.1.dev1+g21a6cf5d documentation + REST Specification — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + @@ -566,7 +566,7 @@

REST Specification
Query Parameters:
    -
  • task_status ({'null', 'string'})

  • +
  • task_status ({'string', 'null'})

Status Codes:
diff --git a/main/search.html b/main/search.html index f6c1fe6e1..07c3dc6e3 100644 --- a/main/search.html +++ b/main/search.html @@ -6,7 +6,7 @@ - Search - blueapi 0.7.1.dev1+g21a6cf5d documentation + Search - blueapi 0.7.1.dev2+g82b208f5 documentation @@ -39,7 +39,7 @@ - + diff --git a/main/searchindex.js b/main/searchindex.js index 8321955af..cd7ed82e0 100644 --- a/main/searchindex.js +++ b/main/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"1. Record architecture decisions": [[5, null]], "2. Adopt python-copier-template for project structure": [[6, null]], "3. No Queues": [[7, null]], "4. API Model Case": [[8, null]], "5. Connect all dodal devices during startup": [[9, null]], "API": [[0, null]], "Add Plans and Devices to your Blueapi Environment": [[17, null]], "Allowed Argument Types": [[13, "allowed-argument-types"]], "Architectural Decision Records": [[4, null]], "Architecture": [[3, null]], "Basic Introspection": [[21, "basic-introspection"]], "Check your version of python": [[31, "check-your-version-of-python"]], "Code Coverage": [[19, "code-coverage"]], "Command-Line Interface": [[27, null]], "Config File": [[33, "config-file"]], "Configuration": [[17, "configuration"], [20, "configuration"]], "Configure the Application": [[18, null]], "Consequences": [[5, "consequences"], [6, "consequences"], [7, "consequences"], [8, "consequences"], [9, "consequences"]], "Context": [[5, "context"], [6, "context"], [7, "context"], [8, "context"], [9, "context"]], "Contribute to the project": [[19, null]], "Control the Worker via the CLI": [[21, null]], "Correlation ID": [[10, "correlation-id"]], "Create a virtual environment": [[31, "create-a-virtual-environment"]], "Decision": [[5, "decision"], [6, "decision"], [7, "decision"], [8, "decision"], [9, "decision"]], "Developer Information": [[19, "developer-information"]], "Docstrings": [[24, "docstrings"]], "Dodal": [[11, "dodal"]], "Edit Plans and Device Live": [[20, null]], "Events Emitted by the Worker": [[10, null]], "Example Plans": [[34, "example-plans"]], "Execution": [[12, "execution"]], "Explanations": [[2, null]], "Format": [[23, "format"], [24, "format"]], "Home of Plans and Devices": [[11, null]], "How the documentation is structured": [[25, null]], "How to Configure Detectors to Write Files": [[23, "how-to-configure-detectors-to-write-files"]], "How-to Guides": [[16, null]], "Index": [[15, null]], "Injecting Devices": [[24, "injecting-devices"]], "Injecting Metadata": [[24, "injecting-metadata"]], "Installation": [[31, null]], "Installing the library": [[31, "installing-the-library"]], "Issue or Discussion?": [[19, "issue-or-discussion"]], "Kubernetes": [[20, "kubernetes"]], "Lifecycle of a Plan": [[12, null]], "Loading and Registration": [[12, "loading-and-registration"]], "Messaging Specification": [[28, null]], "New Events": [[10, "new-events"]], "Other Repositories": [[11, "other-repositories"]], "Plans": [[13, null]], "Quickstart guide": [[32, null]], "REST Specification": [[29, null]], "Reasons": [[10, "reasons"]], "Reference": [[26, null]], "Reloading": [[20, "reloading"]], "Request": [[12, "request"]], "Run a Plan": [[34, null]], "Run in a Container": [[22, null]], "Run the Server": [[33, "run-the-server"]], "Run with local message bus": [[33, null]], "Run/Debug in a Developer Environment": [[35, null]], "Start Bluesky Worker": [[35, "start-bluesky-worker"]], "Start RabbitMQ": [[33, "start-rabbitmq"]], "Start Worker": [[32, "start-worker"]], "Starting the container": [[22, "starting-the-container"]], "Startup": [[12, "startup"]], "Status": [[5, "status"], [6, "status"], [7, "status"], [8, "status"], [9, "status"]], "Stubs": [[13, "stubs"]], "Synchronization": [[20, "synchronization"]], "Test that the Worker is Running": [[32, "test-that-the-worker-is-running"]], "Tutorials": [[30, null]], "Type Validators": [[14, null]], "Validation": [[12, "validation"]], "Write Bluesky Plans for Blueapi": [[24, null]], "Write Devices for Blueapi": [[23, null]], "abort": [[27, "blueapi-controller-abort"]], "blueapi": [[1, null], [25, "blueapi"], [27, "blueapi"]], "controller": [[27, "blueapi-controller"]], "devices": [[27, "blueapi-controller-devices"]], "env": [[27, "blueapi-controller-env"]], "listen": [[27, "blueapi-controller-listen"]], "login": [[27, "blueapi-login"]], "logout": [[27, "blueapi-logout"]], "pause": [[27, "blueapi-controller-pause"]], "plans": [[27, "blueapi-controller-plans"]], "resume": [[27, "blueapi-controller-resume"]], "run": [[27, "blueapi-controller-run"]], "schema": [[27, "blueapi-schema"]], "serve": [[27, "blueapi-serve"]], "setup-scratch": [[27, "blueapi-setup-scratch"]], "state": [[27, "blueapi-controller-state"]], "stop": [[27, "blueapi-controller-stop"]]}, "docnames": ["_api", "_api/blueapi", "explanations", "explanations/architecture", "explanations/decisions", "explanations/decisions/0001-record-architecture-decisions", "explanations/decisions/0002-switched-to-python-copier-template", "explanations/decisions/0003-no-queues", "explanations/decisions/0004-api-case", "explanations/decisions/0005-connect-devices", "explanations/events", "explanations/extension-code", "explanations/lifecycle", "explanations/plans", "explanations/type_validators", "genindex", "how-to", "how-to/add-plans-and-devices", "how-to/configure-app", "how-to/contribute", "how-to/edit-live", "how-to/run-cli", "how-to/run-container", "how-to/write-devices", "how-to/write-plans", "index", "reference", "reference/cli", "reference/messaging-spec", "reference/rest-spec", "tutorials", "tutorials/installation", "tutorials/quickstart", "tutorials/run-bus", "tutorials/run-plan", "tutorials/run-with-dev"], "envversion": {"sphinx": 64, "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.intersphinx": 1, "sphinx.ext.viewcode": 1}, "filenames": ["_api.rst", "_api/blueapi.rst", "explanations.md", "explanations/architecture.md", "explanations/decisions.md", "explanations/decisions/0001-record-architecture-decisions.md", "explanations/decisions/0002-switched-to-python-copier-template.md", "explanations/decisions/0003-no-queues.md", "explanations/decisions/0004-api-case.md", "explanations/decisions/0005-connect-devices.md", "explanations/events.md", "explanations/extension-code.md", "explanations/lifecycle.md", "explanations/plans.md", "explanations/type_validators.md", "genindex.md", "how-to.md", "how-to/add-plans-and-devices.md", "how-to/configure-app.md", "how-to/contribute.md", "how-to/edit-live.md", "how-to/run-cli.md", "how-to/run-container.md", "how-to/write-devices.md", "how-to/write-plans.md", "index.md", "reference.md", "reference/cli.md", "reference/messaging-spec.md", "reference/rest-spec.md", "tutorials.md", "tutorials/installation.md", "tutorials/quickstart.md", "tutorials/run-bus.md", "tutorials/run-plan.md", "tutorials/run-with-dev.md"], "indexentries": {"--config": [[27, "cmdoption-blueapi-c", false]], "--defer": [[27, "cmdoption-blueapi-controller-pause-defer", false]], "--output": [[27, "cmdoption-blueapi-controller-o", false], [27, "cmdoption-blueapi-schema-o", false]], "--reload": [[27, "cmdoption-blueapi-controller-env-r", false]], "--timeout": [[27, "cmdoption-blueapi-controller-env-t", false], [27, "cmdoption-blueapi-controller-run-t", false]], "--update": [[27, "cmdoption-blueapi-schema-u", false]], "--version": [[27, "cmdoption-blueapi-version", false]], "-c": [[27, "cmdoption-blueapi-c", false]], "-o": [[27, "cmdoption-blueapi-controller-o", false], [27, "cmdoption-blueapi-schema-o", false]], "-r": [[27, "cmdoption-blueapi-controller-env-r", false]], "-t": [[27, "cmdoption-blueapi-controller-env-t", false], [27, "cmdoption-blueapi-controller-run-t", false]], "-u": [[27, "cmdoption-blueapi-schema-u", false]], "__version__ (in module blueapi)": [[1, "blueapi.__version__", false]], "blueapi": [[1, "module-blueapi", false]], "blueapi command line option": [[27, "cmdoption-blueapi-c", false], [27, "cmdoption-blueapi-version", false]], "blueapi-controller command line option": [[27, "cmdoption-blueapi-controller-o", false]], "blueapi-controller-abort command line option": [[27, "cmdoption-blueapi-controller-abort-arg-REASON", false]], "blueapi-controller-env command line option": [[27, "cmdoption-blueapi-controller-env-r", false], [27, "cmdoption-blueapi-controller-env-t", false]], "blueapi-controller-pause command line option": [[27, "cmdoption-blueapi-controller-pause-defer", false]], "blueapi-controller-run command line option": [[27, "cmdoption-blueapi-controller-run-arg-NAME", false], [27, "cmdoption-blueapi-controller-run-arg-PARAMETERS", false], [27, "cmdoption-blueapi-controller-run-t", false]], "blueapi-schema command line option": [[27, "cmdoption-blueapi-schema-o", false], [27, "cmdoption-blueapi-schema-u", false]], "module": [[1, "module-blueapi", false]], "name": [[27, "cmdoption-blueapi-controller-run-arg-NAME", false]], "parameters": [[27, "cmdoption-blueapi-controller-run-arg-PARAMETERS", false]], "reason": [[27, "cmdoption-blueapi-controller-abort-arg-REASON", false]]}, "objects": {"": [[29, 0, 1, "get--devices", "/devices"], [29, 0, 1, "get--devices-name", "/devices/{name}"], [29, 1, 1, "delete--environment", "/environment"], [29, 0, 1, "get--environment", "/environment"], [29, 0, 1, "get--plans", "/plans"], [29, 0, 1, "get--plans-name", "/plans/{name}"], [29, 0, 1, "get--tasks", "/tasks"], [29, 2, 1, "post--tasks", "/tasks"], [29, 1, 1, "delete--tasks-task_id", "/tasks/{task_id}"], [29, 0, 1, "get--tasks-task_id", "/tasks/{task_id}"], [29, 0, 1, "get--worker-state", "/worker/state"], [29, 3, 1, "put--worker-state", "/worker/state"], [29, 0, 1, "get--worker-task", "/worker/task"], [29, 3, 1, "put--worker-task", "/worker/task"], [1, 4, 0, "-", "blueapi"]], "blueapi": [[1, 5, 1, "", "__version__"], [27, 6, 1, "cmdoption-blueapi-c", "--config"], [27, 6, 1, "cmdoption-blueapi-version", "--version"], [27, 6, 1, "cmdoption-blueapi-c", "-c"]], "blueapi-controller": [[27, 6, 1, "cmdoption-blueapi-controller-o", "--output"], [27, 6, 1, "cmdoption-blueapi-controller-o", "-o"]], "blueapi-controller-abort": [[27, 6, 1, "cmdoption-blueapi-controller-abort-arg-REASON", "REASON"]], "blueapi-controller-env": [[27, 6, 1, "cmdoption-blueapi-controller-env-r", "--reload"], [27, 6, 1, "cmdoption-blueapi-controller-env-t", "--timeout"], [27, 6, 1, "cmdoption-blueapi-controller-env-r", "-r"], [27, 6, 1, "cmdoption-blueapi-controller-env-t", "-t"]], "blueapi-controller-pause": [[27, 6, 1, "cmdoption-blueapi-controller-pause-defer", "--defer"]], "blueapi-controller-run": [[27, 6, 1, "cmdoption-blueapi-controller-run-t", "--timeout"], [27, 6, 1, "cmdoption-blueapi-controller-run-t", "-t"], [27, 6, 1, "cmdoption-blueapi-controller-run-arg-NAME", "NAME"], [27, 6, 1, "cmdoption-blueapi-controller-run-arg-PARAMETERS", "PARAMETERS"]], "blueapi-schema": [[27, 6, 1, "cmdoption-blueapi-schema-o", "--output"], [27, 6, 1, "cmdoption-blueapi-schema-u", "--update"], [27, 6, 1, "cmdoption-blueapi-schema-o", "-o"], [27, 6, 1, "cmdoption-blueapi-schema-u", "-u"]]}, "objnames": {"0": ["http", "get", "HTTP get"], "1": ["http", "delete", "HTTP delete"], "2": ["http", "post", "HTTP post"], "3": ["http", "put", "HTTP put"], "4": ["py", "module", "Python module"], "5": ["py", "data", "Python data"], "6": ["std", "cmdoption", "program option"]}, "objtypes": {"0": "http:get", "1": "http:delete", "2": "http:post", "3": "http:put", "4": "py:module", "5": "py:data", "6": "std:cmdoption"}, "terms": {"": [4, 5, 10, 12, 13, 18, 19, 25], "0": [12, 24, 28, 34], "05": [7, 8], "1": [4, 12, 23, 24, 28], "10": [9, 24, 27, 31, 34], "100": 19, "12": 9, "2": [4, 28], "200": 29, "201": 29, "202": 29, "2023": [7, 8], "2024": 9, "22": [7, 28], "23": 8, "273": 24, "3": [4, 12, 28, 31], "4": 4, "400": 29, "409": 29, "422": 29, "5": [4, 23, 24, 34], "6": 28, "61613": [21, 33], "8082": 21, "A": [11, 12, 24, 28], "As": [4, 6], "At": [10, 12], "By": [21, 29], "For": [4, 10, 11, 14, 17, 19, 20, 23, 24, 25], "If": [12, 13, 17, 19, 20, 24, 29, 31], "In": [3, 7, 10, 12, 34], "It": [12, 19, 24, 31, 32, 33], "No": 4, "On": 12, "The": [3, 6, 7, 8, 10, 11, 12, 14, 17, 20, 21, 23, 24, 25, 28, 29, 31, 32, 33, 34, 35], "Then": 21, "These": [3, 10, 13, 14], "To": [5, 13, 18, 22, 24, 25, 32], "With": 34, "_": [22, 23], "__all__": 13, "__exports__": 13, "__init__": 13, "__version__": 1, "_description_": 12, "abl": [14, 24], "abort": [20, 28, 29], "about": [10, 23, 29, 32, 33], "abov": [3, 5, 11, 32], "absolut": 23, "ac": 28, "accept": [3, 5, 6, 7, 8, 9, 27, 29], "access": [13, 14, 25, 28], "accident": 20, "accomplish": 24, "achiev": 28, "act": 32, "activ": [29, 31, 35], "activemq": 10, "actual": [12, 14], "ad": [11, 13], "add": [10, 16, 20, 25], "addit": [9, 24, 35], "additionalproperti": 28, "address": 21, "adopt": 4, "adr": [4, 5], "advic": [11, 24], "aforement": 3, "after": 9, "against": [12, 32], "alia": 8, "all": [4, 12, 13, 19, 20, 29, 32], "allow": [14, 24, 28, 29], "almost": 24, "alon": 13, "along": 24, "alreadi": [20, 22], "also": [10, 12, 14, 19, 21, 25, 31, 32], "although": 7, "alwai": 24, "an": [3, 7, 10, 11, 12, 13, 17, 23, 24, 25, 28, 29, 32, 33], "analysi": 13, "andor": 12, "ani": [7, 8, 11, 12, 13, 14, 19, 20, 23, 24, 27, 28, 29, 31], "annot": [23, 24, 25], "anoth": 7, "apach": 28, "api": [1, 3, 4, 7, 21, 24, 25, 26, 28], "app": 27, "applic": [16, 17, 25, 28], "ar": [3, 4, 7, 9, 10, 12, 13, 14, 17, 19, 21, 22, 23, 24, 29, 35], "arbitrari": 10, "arbitrary_types_allow": 12, "architectur": [2, 25], "area": [11, 17, 20, 35], "arg": [12, 23, 24, 27], "argument": [12, 24, 27], "arrai": 28, "articl": 5, "ask": [7, 10, 19], "associ": [10, 28], "assum": [10, 35], "async": 23, "asyncapi": 28, "asynchron": 33, "attach": 24, "attach_data_session_metadata_decor": 23, "attach_metadata": 23, "auth": 33, "autom": [3, 10], "automat": [9, 23, 25], "avail": [14, 21, 22, 23, 27, 29, 35], "await": 13, "await_callback": 13, "axes_to_mov": 34, "axi": 34, "b": 14, "back": 12, "bad": 29, "bar": 25, "base": [10, 28, 29], "basemodel": [12, 13, 14], "beamlin": [11, 12, 13], "becaus": 10, "becom": [11, 14], "been": [3, 31], "befor": 19, "begin": [23, 28, 29], "behaviour": 10, "being": [12, 14, 28, 33], "below": [4, 10, 23, 24], "between": [10, 12, 13], "big": 19, "bin": [31, 35], "bind": 28, "blob": 8, "blog": 4, "blueapi": [3, 10, 12, 13, 16, 18, 20, 21, 22, 28, 29, 31, 32, 33, 34, 35], "blueski": [3, 10, 12, 13, 14, 16, 17, 20, 23, 25, 28, 32], "bluesky_protocol": 13, "blueskycontext": 12, "boilerpl": 25, "boolean": 28, "bp": [12, 24, 25], "broad": 24, "broken": 20, "broker": 21, "bu": [12, 25, 28, 30, 34], "bug": 19, "build": 12, "built": 22, "bundl": 10, "button": 35, "c": [14, 20, 21, 27, 34], "cach": 7, "calcul": 1, "call": [13, 20, 24, 25, 29], "callback": 13, "caller": 28, "callum": 28, "camelcas": 8, "can": [6, 7, 10, 11, 12, 14, 17, 18, 19, 20, 21, 23, 25, 28, 29, 31, 32, 33, 34, 35], "capabl": [32, 35], "captur": 24, "case": [3, 4, 10], "categori": 25, "caught": 19, "caus": [20, 29], "cd": 6, "chang": [6, 12, 19, 20, 28], "channel": 28, "chart": 20, "check": [14, 19, 20], "checkpoint": [27, 29], "choic": 33, "chosen": 20, "ci": 6, "circumv": 14, "class": [11, 12, 14], "clean": 3, "cleanup": 10, "cli": [16, 18, 25, 27, 32, 33, 35], "click": 35, "client": [21, 24, 27, 28], "clone": 20, "close": 19, "close_run": 13, "closur": [13, 14], "code": [8, 10, 11, 12, 17, 20, 23, 29], "codebas": 3, "collect": [12, 23, 24, 28, 32], "com": [20, 21, 28, 31], "come": [21, 32], "command": [18, 25, 26, 32, 35], "commandlin": 31, "commit": 19, "common": [19, 23], "commun": 3, "compact": 27, "complet": [10, 13, 28, 34], "compon": [3, 28, 29], "concern": 10, "condit": [13, 28], "config": [12, 18, 27, 32], "configur": [9, 11, 12, 16, 19, 21, 25, 27, 33, 35], "conflict": 29, "conform": 10, "confus": 8, "connect": [3, 4, 33, 34], "connect_immedi": 12, "consid": 8, "consist": [6, 24], "consol": 33, "const": 28, "construct": 12, "consum": 13, "contact": 28, "contain": [10, 16, 19, 20, 25], "container": 19, "context": [12, 13, 14, 24], "contexthead": 28, "contribut": [16, 25], "control": [10, 16, 20, 24, 25, 28, 32, 34], "copi": 5, "copier": [4, 11, 19], "core": [13, 25], "correct": 14, "correlationid": 28, "could": 6, "count": [12, 23, 24, 34], "countparamet": 12, "creat": [5, 9, 11, 12, 18, 19, 23, 24, 29, 33], "creation": 9, "credenti": 33, "current": [9, 27, 28, 29, 31], "custom": [17, 20, 21, 32], "d": 14, "data": [10, 12, 13, 23, 25, 28, 32], "databas": 28, "databrok": 10, "dataev": 28, "date": [7, 8, 9], "datum": 28, "debug": [21, 25, 30], "decis": [2, 25], "decor": 23, "decoupl": 10, "def": [12, 14, 23, 24, 25], "default": [12, 13, 18, 21, 24, 27, 28, 29, 32], "defaultcontenttyp": 28, "defer": [27, 29], "defin": [8, 13, 14, 17, 18, 23, 28], "delai": 12, "delet": [20, 29], "demonstr": 12, "depend": [10, 22, 31], "depth": 12, "describ": [5, 28], "descript": [13, 24, 28], "descriptor": 28, "deseri": 14, "deserialis": [13, 14], "destin": 28, "det": 12, "detail": 24, "detect": [12, 24, 25], "detector": [12, 16, 24, 25, 34], "determin": [17, 23], "devcontain": 19, "develop": [6, 20, 25, 27, 30, 33], "devic": [2, 3, 4, 12, 13, 14, 16, 21, 25, 28, 29, 32, 34, 35], "diamond": [19, 23, 28], "diamondlightsourc": [20, 22, 25, 28, 31], "dict": [12, 13, 14, 23, 24], "differ": [6, 7, 8, 10, 24, 33], "directori": [11, 13, 20], "disconnect": 9, "displai": [28, 32, 33], "displaynam": 28, "distinct": 13, "distinguish": 13, "dl": [11, 20], "dls_sw": 20, "do": [20, 24], "doc": 28, "docker": [22, 25], "document": [10, 11, 12, 17, 24, 27, 28, 29], "dodal": [4, 12, 13, 20, 23, 24], "doe": [12, 13, 19, 20], "don": 19, "done": [3, 28], "down": 24, "downstream": 32, "drive": 24, "dure": [4, 12, 28], "e": [10, 12, 14, 20, 24, 29], "each": [20, 23, 27], "earlier": 12, "easi": 24, "easiest": [11, 33], "easili": [19, 25], "edit": [16, 25, 33], "effect": 23, "either": 12, "elaps": 28, "els": 12, "email": 28, "emit": [2, 12, 25], "enabl": [13, 24], "encourag": 24, "end": [10, 19, 28, 29], "endpoint": [25, 29], "enforc": 8, "engin": 10, "ensur": [3, 6, 9, 35], "entiti": 29, "entri": 28, "enum": 28, "env": [17, 20], "environ": [6, 11, 16, 19, 25, 27, 29, 30], "equip": 25, "equival": 13, "error": [3, 7, 10, 12, 28, 29, 33], "estim": 28, "etc": [3, 10, 24, 28], "evalu": 12, "event": [2, 12, 24, 25, 27, 28, 32], "event_descriptor": 28, "event_model": 28, "eventstreamdescriptor": 28, "everi": [10, 13, 23], "exactli": 12, "exampl": [10, 11, 14, 17, 20, 21, 23, 24, 25, 32], "exchang": 28, "execut": [7, 27, 28, 33], "exist": [5, 11, 19, 20, 31], "exit": 27, "expect": [13, 14, 28], "experi": 13, "experienc": [16, 25], "experiment": 17, "explain": 24, "explan": [12, 24, 25], "export": [12, 13, 32], "expos": [13, 24, 25], "extend": [13, 14], "extern": [3, 14, 28], "extra_metadata": 24, "fact": 14, "factor": 13, "factori": [11, 23, 24], "fail": [9, 10, 12, 27], "failur": 29, "fals": [12, 28, 29], "fastapi": [27, 29], "featur": [21, 31], "fetch": [12, 13, 24], "few": 25, "field": [8, 13], "file": [16, 17, 18, 19, 21, 24, 25, 27, 28, 32], "filesystem": 23, "fill": 10, "final": 24, "fine": 10, "finish": [10, 12], "first": [10, 17], "fit": 19, "fix": 6, "float": [12, 24, 28], "follow": [6, 12, 13, 17, 20, 25, 29, 35], "foo": [23, 25], "forev": 27, "form": [12, 24], "formalis": 13, "format": [6, 28], "forrest": 28, "found": [32, 34], "four": 25, "frame": 24, "free": [7, 19, 23], "from": [5, 6, 8, 10, 11, 12, 13, 14, 20, 22, 23, 24, 25, 28, 31, 32, 35], "front": 10, "full": [20, 21, 27, 32], "function": [11, 12, 13, 23, 24, 27], "g": [10, 12, 20, 24], "gap": 10, "gener": [12, 13, 14, 24, 25, 27, 28], "get": [22, 25, 27, 29], "ghcr": [22, 25], "git": [20, 31], "github": [11, 19, 20, 22, 25, 28, 31], "githubusercont": 28, "give": [3, 10], "global": [3, 12, 23], "go": [12, 17], "goal": 20, "goe": 24, "good": 33, "great": 19, "green": 35, "guest": 33, "guid": [11, 19, 25, 30], "ha": [3, 10, 13, 21, 24, 29, 31, 32, 33], "halt": 28, "hand": 35, "handl": [3, 10, 19], "hang": 27, "have": [3, 6, 14, 17, 19, 20, 23, 24, 35], "header": [10, 28], "helm": 20, "here": [24, 25, 29, 30], "hint": 12, "hold": [7, 12], "home": [2, 17, 23, 25], "hook": 19, "host": [20, 21, 33], "hostpath": 20, "hot": 20, "hous": 3, "how": [2, 12, 19, 28], "howev": 20, "html": 28, "http": [20, 22, 25, 28, 31], "human": [3, 10, 28], "i": [7, 8, 10, 11, 12, 13, 14, 19, 20, 23, 24, 28, 29, 31, 33], "i22": 11, "id": [14, 28], "idea": 19, "identifi": [9, 28], "idl": [28, 29], "ignor": 20, "illustr": 12, "image_det": 34, "immedi": 9, "implement": [9, 13, 24], "import": [12, 13, 17, 20, 23, 24, 25, 27], "improv": 19, "includ": [8, 10, 12, 13, 20, 21, 23, 24, 25, 26], "index": [25, 26], "indic": 28, "info": 28, "inform": [4, 10, 23, 29], "initi": [9, 20, 28, 29], "inner_funct": 23, "input": 24, "insid": [20, 25, 35], "inspect": [12, 27], "instal": [11, 17, 20, 22, 25, 30], "instanc": [13, 14, 33], "instead": [19, 22, 29], "instruct": [3, 35], "int": [12, 14, 24, 25], "integ": 28, "intend": [23, 24], "interact": 29, "interfac": [25, 26, 31], "interfer": 31, "intermedi": 14, "intern": [12, 29], "introduc": 10, "introduct": [17, 24], "introspect": 27, "intuit": 10, "invok": 25, "involv": [19, 28], "io": [22, 25], "ipython": [3, 10], "ipython_": 3, "issu": 10, "item": 28, "iter": [12, 13, 14, 23, 24], "its": [3, 12, 19, 22, 23, 24, 28, 29, 31, 33], "itself": 12, "jm": 10, "jms_correlationid": 10, "job": [3, 25], "json": [8, 12, 13, 27, 28], "just": [3, 10], "keep": [4, 28], "kei": [8, 12, 13], "kelvin": 24, "kept": [3, 7], "kind": 17, "know": 12, "knowledg": 23, "known": 28, "lab": 25, "laboratori": 32, "later": [28, 31], "latest": [6, 22, 25], "latter": 10, "lazili": 12, "least": [13, 24], "left": 35, "level": [1, 14], "librari": [13, 19, 25], "licens": 28, "lifecycl": [2, 25], "lifetim": 4, "light": 19, "lightweight": 25, "like": [12, 19, 23, 24], "line": [25, 26, 34, 35], "link": [5, 25], "lint": 6, "list": [4, 12, 13, 14, 23, 24, 27, 28], "listen": 28, "live": [16, 23, 25], "load": [14, 17], "local": [11, 25, 30], "localhost": [21, 33], "locat": [23, 25], "logic": 24, "longer": 20, "look": [12, 24], "loop": 35, "m": 31, "machin": 20, "made": [4, 5, 13, 23], "mai": [6, 8, 12, 13, 20, 23, 24, 25, 29], "main": [3, 25], "maintain": 3, "make": [13, 19, 20, 24], "manag": [3, 6], "mani": [17, 23], "manual": 20, "map": [12, 24], "mark": [27, 29], "materi": [25, 26], "mayb": 23, "md": [12, 24], "mean": [8, 23], "meant": 10, "measur": [9, 28], "memori": 12, "menu": 35, "messag": [10, 12, 21, 23, 24, 25, 26, 30, 34], "messageid": 28, "metadata": [12, 23, 28], "method": [14, 24], "michael": [4, 5], "microsecond": 24, "microsoft": 10, "might": 19, "minim": [21, 25], "minimum": 10, "mode": 20, "model": [4, 10, 12, 24, 28], "modul": [6, 12, 13, 17, 20, 25], "more": [4, 16, 19, 23, 25], "most": [8, 19], "motor": [12, 13, 24, 34], "mount": 20, "movabl": 24, "move": [24, 34], "msg": 13, "msggener": [12, 13, 23, 24, 25], "multipl": [23, 25], "must": [7, 10, 13, 17, 23, 24], "mx": 20, "my": 20, "my_beamlin": [12, 20], "my_detector": 23, "my_facility_devic": 23, "my_plan": [14, 24, 25], "my_plan_librari": 17, "my_weird_plan": 14, "mymotor": 24, "myplanmodel": 14, "mytypeofdetector": 23, "n": 12, "name": [8, 10, 12, 13, 20, 23, 24, 27, 28, 29, 34], "natur": 17, "navig": 35, "need": [5, 9, 17, 19, 20, 31, 34, 35], "never": 14, "new": [5, 11, 14, 19, 20, 23, 25, 27, 30, 34], "new_stat": 29, "newli": 29, "next": [27, 29], "none": [12, 23, 24, 27], "note": [10, 25, 26], "now": 31, "nudg": 13, "null": 29, "num": [12, 34], "number": [1, 3, 10, 12, 19, 21, 22, 23, 28], "nygard": [4, 5], "o": 27, "object": [12, 14, 28], "obviou": 19, "occur": 12, "offer": 19, "ok": 29, "one": [7, 13, 19], "oneof": 28, "ones": [5, 8], "ongo": 27, "onli": [12, 13, 14, 20, 23, 24, 27, 33], "onto": 23, "onward": 12, "open": [13, 19, 29], "open_run": 13, "openapi": 29, "oper": 28, "operationid": 28, "ophyd": [20, 23, 28], "ophyd_async_snapshot": 23, "oppos": 24, "option": [12, 23, 24, 27], "org": 28, "organ": 23, "origin": [14, 28], "other": [10, 12, 13, 28, 29], "other_config": 23, "otherwis": [20, 33], "out": [12, 13, 20, 25], "outcom": 28, "output": 27, "outsid": [3, 10, 13], "over": 12, "overridden": [12, 18], "overwrit": 20, "own": [18, 19, 23], "pa": 24, "packag": [6, 11, 13, 17, 20], "page": 28, "paln": 20, "panick": 28, "param": 12, "paramet": [8, 12, 24, 27, 29], "particular": [20, 29], "particularli": 20, "pass": [12, 18, 24, 29], "pass_metadata": 24, "password": 33, "past": 5, "path": [17, 18, 20, 27, 31, 32], "paus": [10, 28, 29], "payload": 28, "peopl": 25, "pep8": 8, "per": 23, "percentag": 28, "perform": [3, 20], "permit": 7, "pertain": 10, "pick": 23, "piec": 13, "pilatu": 12, "pip": [6, 11, 17, 20, 25, 31], "place": [11, 14, 19], "plan": [2, 3, 8, 10, 14, 16, 21, 23, 25, 28, 29, 30, 32, 35], "plan_stub": 13, "planfunct": 17, "plangener": 13, "playbook": 10, "pleas": 19, "plugin": 33, "podman": 22, "point": [12, 28], "port": [21, 33], "posit": [12, 13, 28], "possibl": [24, 29], "possibli": 25, "post": 29, "practic": [16, 25], "pre": [19, 22], "precis": 28, "prefer": 23, "premis": 25, "preserv": 23, "pressur": 24, "previou": [13, 29], "previous": 28, "primit": 13, "print": [27, 33], "prioriti": 8, "problem": [14, 20], "process": [3, 14], "produc": [10, 28], "product": 33, "programmat": 10, "progress": [3, 28], "progressev": 28, "project": [4, 5, 11, 13, 16, 25], "promptli": 9, "properti": 28, "protocol": [10, 12, 14, 24, 28], "provid": [3, 11, 28, 33], "public": 28, "publish": [12, 28, 33], "pull": [6, 19, 22], "purpos": [12, 24], "put": [11, 17, 29], "py": 13, "pydant": [12, 13, 14], "pypa": 1, "pypi": [11, 25], "python": [4, 8, 11, 13, 17, 19, 20, 23, 24], "python3": 31, "queri": [29, 32], "question": 19, "queue": [4, 12, 28], "quickstart": [25, 30], "r": [20, 27], "rabbitmq": 35, "rais": 19, "rang": 23, "rather": [23, 24], "raw": 28, "re": [13, 20], "reac": 28, "read": [12, 24], "readabl": [12, 14, 23, 24, 28], "readi": 9, "realiti": 20, "realli": 10, "reason": [27, 29], "receiv": [12, 25, 28], "recommend": [19, 31], "reconnect": 9, "record": [2, 25], "reduc": 19, "ref": 28, "refer": [12, 13, 14, 21, 25, 27, 32], "referenc": 28, "regist": 12, "registri": [3, 12, 22], "rehom": 13, "rehome_devic": 13, "relat": [10, 28], "releas": [20, 22, 25, 26, 31], "reload": [27, 29], "remain": [9, 19, 28], "remot": 25, "remote_url": 20, "remov": 20, "repeated_snapshot": 23, "replac": [10, 14], "replydestin": 28, "repo": 11, "repositori": [19, 20], "repres": 28, "request": [7, 19, 28, 29], "requir": [3, 12, 13, 14, 23, 24, 25, 27, 28, 31, 33], "resembl": [12, 20], "resolv": 12, "resourc": 28, "respons": [3, 7, 28, 29], "rest": [3, 25, 26], "restart": [20, 27], "resum": 29, "retriev": 29, "return": [7, 12, 14, 23, 24, 28, 29], "rewind": 29, "rich": 24, "root": 20, "run": [3, 7, 10, 12, 13, 16, 19, 20, 21, 25, 28, 29, 30], "run_start": 28, "run_stop": 28, "runengin": [3, 10, 12, 13], "runstart": 28, "runstop": 28, "runtim": [13, 14, 24], "same": [19, 24], "sampl": 24, "sample_nam": 24, "sample_pressur": 24, "sample_temperatur": 24, "save": 27, "scan": [24, 25, 28, 34], "schema": [13, 28, 29], "scienc": 20, "scientif": 28, "scope": 19, "scratch": [11, 17, 20, 35], "script": [32, 33], "second": [24, 27], "see": [4, 5, 10, 11, 14, 19, 21, 23, 32], "select": 35, "send": [12, 25], "sens": 13, "sensibl": 28, "sent": [12, 28], "separ": 3, "sequenc": 13, "serv": [32, 33, 35], "server": [7, 20, 25, 29, 34], "servic": [7, 12, 25, 27, 28, 32, 35], "set": [6, 10, 11, 14, 18, 19, 24, 29, 35], "setup": [6, 10, 20, 32, 35], "setuptools_scm": 1, "sh": 33, "share": 19, "should": [6, 7, 8, 13, 24, 29, 31, 32, 33], "show": 27, "side": 23, "signatur": 14, "significantli": 19, "similar": 10, "similarli": 23, "sinc": [10, 28], "singl": 24, "singleton": 12, "sleep": 34, "slice": 28, "snake_cas": 8, "snapshot": [23, 34], "so": [3, 8, 10, 13, 14, 25, 31, 32], "softwar": [20, 31], "some": [8, 13, 23, 24], "someth": [12, 19], "sometim": 10, "soon": [12, 29], "sourc": [17, 19, 20, 25, 31, 35], "spec": 34, "special": [20, 24], "specif": [10, 11, 20, 24, 25, 26, 32], "specifi": [20, 24, 28], "spend": 19, "split": 25, "src": [28, 32, 33], "stage": 12, "standalon": 13, "standard": [11, 13, 24], "start": [10, 12, 25, 27, 28, 30, 34], "start_rabbitmq": 33, "startup": [4, 17], "state": [10, 12, 14, 20, 28, 29], "stateev": 28, "statu": [28, 29], "status": [12, 28], "statusview": 28, "step": [16, 24, 25], "stomp": [10, 32, 33, 34], "stomp_config": 32, "stop": [10, 28, 29, 34], "store": 12, "stp": 24, "str": [1, 12, 13, 14, 23, 24, 25], "stream": 28, "stream_datum": 28, "stream_resourc": 28, "streamdatum": 28, "streamresourc": 28, "string": [12, 14, 28, 29], "structur": [4, 24, 28], "stub": 24, "style": 23, "subcommand": 18, "submit": [28, 29], "subprocess": 3, "subscrib": [10, 28], "subset": 13, "success": [27, 29], "suffici": 24, "suit": 19, "summari": 28, "suppli": 28, "support": 13, "sure": 19, "suspend": 28, "switch": 6, "system": 33, "t": [19, 27], "tag": 28, "taggeddatumdocu": 28, "taggeddatumstream": 28, "taggeddescriptordocu": 28, "taggedeventdocu": 28, "taggedresourcedocu": 28, "taggedresourcestream": 28, "taggedstartdocu": 28, "taggedstopdocu": 28, "take": [12, 13, 23, 24, 25, 34], "talk": 21, "target": [24, 28], "target_pressur": 24, "target_temperatur": 24, "task": [3, 7, 19, 27, 28, 29], "task_id": 29, "task_statu": 29, "taskcomplet": 28, "taskfail": 28, "tasknam": 28, "taskstatu": 28, "tcp": 21, "technic": [25, 26], "techniqu": [6, 20], "tell": [20, 21, 32], "temp_pressure_snapshot": 24, "temperatur": 24, "templat": [4, 11, 19], "temporari": 28, "termin": [3, 10, 31, 32, 34], "test": 19, "than": [23, 24], "thei": [9, 12, 23, 24, 28], "them": [11, 12, 14, 17, 23, 24, 33], "therefor": [10, 13, 24], "thi": [3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 19, 20, 21, 23, 24, 25, 28, 29, 31, 33, 34], "those": 13, "through": [12, 14, 19, 23, 29], "throughout": 4, "thsse": 10, "ticket": 19, "time": [7, 10, 19, 23, 27, 28, 34], "timeelaps": 28, "timeout": 27, "timeremain": 28, "titl": 28, "todo": 28, "tomographi": 17, "tool": [6, 11], "top": [1, 10, 25], "track": [4, 28], "tradition": [3, 10], "transact": 7, "transit": 29, "treat": 24, "true": [12, 29], "tutori": [25, 34], "tweak": 20, "type": [2, 11, 12, 23, 24, 25, 28, 31, 34], "typic": [10, 25, 30], "u": 27, "uk": 28, "uncommit": 20, "under": 13, "union": 12, "uniqu": [28, 29], "unit": [24, 28], "unknown": 28, "unprocess": 29, "unpush": 20, "unstart": 29, "until": [27, 28, 29], "up": [11, 12, 19, 23, 25, 35], "updat": [3, 6, 27, 33], "upon": 9, "url": 28, "us": [5, 6, 9, 10, 11, 13, 14, 19, 20, 22, 23, 24, 25, 27, 31, 32, 33, 34], "usabl": 25, "usag": [25, 30], "user": [8, 10, 12, 16, 25, 30, 33], "usernam": 33, "usual": [14, 23], "util": [12, 24, 27], "v": 10, "v1": 28, "valid": [2, 13, 25, 29], "validate_al": 12, "valu": [12, 20, 28, 32], "variabl": [3, 12], "variou": [14, 28], "venv": [6, 31, 35], "verifi": 10, "version": [1, 22, 27, 28, 35], "via": [11, 14, 16, 17, 20, 23, 25, 34], "view": 33, "virtual": 35, "vscode": [19, 35], "wa": [12, 14, 19, 28], "wai": [2, 4, 24, 25, 33], "wait": [13, 27, 29], "want": [17, 19, 20], "warn": 28, "we": [4, 5, 6, 7, 8, 10, 19], "welcom": 19, "well": [12, 28], "were": 17, "what": [12, 17, 28], "when": [9, 10, 12, 13, 14, 19, 27, 28], "where": [7, 20, 23, 25, 28], "whether": [7, 8, 10, 28], "which": [3, 8, 10, 11, 12, 13, 18, 21, 23, 24, 28, 29], "while": [7, 12, 13, 19, 24], "why": [2, 17, 24, 25], "within": [12, 28], "without": [13, 20], "word": 12, "work": [2, 25], "worker": [2, 7, 12, 16, 25, 27, 28, 29, 33, 34], "workerprogressev": 28, "workerst": 28, "workerstateev": 28, "world": 3, "worthwhil": 24, "would": [3, 17], "wrap": [3, 25], "wrapper": 25, "write": [16, 25], "written": [8, 12, 24], "www": 28, "x": [24, 28, 34], "yaml": [18, 20, 21, 27, 33, 34], "yield": [12, 23, 24, 25], "yml": 32, "you": [10, 17, 19, 20, 21, 23, 31, 32, 34, 35], "your": [13, 16, 18, 19, 20, 25, 33, 35]}, "titles": ["API", "blueapi", "Explanations", "Architecture", "Architectural Decision Records", "1. Record architecture decisions", "2. Adopt python-copier-template for project structure", "3. No Queues", "4. API Model Case", "5. Connect all dodal devices during startup", "Events Emitted by the Worker", "Home of Plans and Devices", "Lifecycle of a Plan", "Plans", "Type Validators", "Index", "How-to Guides", "Add Plans and Devices to your Blueapi Environment", "Configure the Application", "Contribute to the project", "Edit Plans and Device Live", "Control the Worker via the CLI", "Run in a Container", "Write Devices for Blueapi", "Write Bluesky Plans for Blueapi", "How the documentation is structured", "Reference", "Command-Line Interface", "Messaging Specification", "REST Specification", "Tutorials", "Installation", "Quickstart guide", "Run with local message bus", "Run a Plan", "Run/Debug in a Developer Environment"], "titleterms": {"1": 5, "2": 6, "3": 7, "4": 8, "5": 9, "No": 7, "abort": 27, "add": 17, "adopt": 6, "all": 9, "allow": 13, "api": [0, 8], "applic": 18, "architectur": [3, 4, 5], "argument": 13, "basic": 21, "blueapi": [1, 17, 23, 24, 25, 27], "blueski": [24, 35], "bu": 33, "case": 8, "check": 31, "cli": 21, "code": 19, "command": 27, "config": 33, "configur": [17, 18, 20, 23], "connect": 9, "consequ": [5, 6, 7, 8, 9], "contain": 22, "context": [5, 6, 7, 8, 9], "contribut": 19, "control": [21, 27], "copier": 6, "correl": 10, "coverag": 19, "creat": 31, "debug": 35, "decis": [4, 5, 6, 7, 8, 9], "detector": 23, "develop": [19, 35], "devic": [9, 11, 17, 20, 23, 24, 27], "discuss": 19, "docstr": 24, "document": 25, "dodal": [9, 11], "dure": 9, "edit": 20, "emit": 10, "env": 27, "environ": [17, 31, 35], "event": 10, "exampl": 34, "execut": 12, "explan": 2, "file": [23, 33], "format": [23, 24], "guid": [16, 32], "home": 11, "how": [16, 23, 25], "i": [25, 32], "id": 10, "index": 15, "inform": 19, "inject": 24, "instal": 31, "interfac": 27, "introspect": 21, "issu": 19, "kubernet": 20, "librari": 31, "lifecycl": 12, "line": 27, "listen": 27, "live": 20, "load": 12, "local": 33, "login": 27, "logout": 27, "messag": [28, 33], "metadata": 24, "model": 8, "new": 10, "other": 11, "paus": 27, "plan": [11, 12, 13, 17, 20, 24, 27, 34], "project": [6, 19], "python": [6, 31], "queue": 7, "quickstart": 32, "rabbitmq": 33, "reason": 10, "record": [4, 5], "refer": 26, "registr": 12, "reload": 20, "repositori": 11, "request": 12, "rest": 29, "resum": 27, "run": [22, 27, 32, 33, 34, 35], "schema": 27, "scratch": 27, "serv": 27, "server": 33, "setup": 27, "specif": [28, 29], "start": [22, 32, 33, 35], "startup": [9, 12], "state": 27, "statu": [5, 6, 7, 8, 9], "stop": 27, "structur": [6, 25], "stub": 13, "synchron": 20, "templat": 6, "test": 32, "tutori": 30, "type": [13, 14], "valid": [12, 14], "version": 31, "via": 21, "virtual": 31, "worker": [10, 21, 32, 35], "write": [23, 24], "your": [17, 31]}}) \ No newline at end of file +Search.setIndex({"alltitles": {"1. Record architecture decisions": [[5, null]], "2. Adopt python-copier-template for project structure": [[6, null]], "3. No Queues": [[7, null]], "4. API Model Case": [[8, null]], "5. Connect all dodal devices during startup": [[9, null]], "API": [[0, null]], "Add Plans and Devices to your Blueapi Environment": [[17, null]], "Allowed Argument Types": [[13, "allowed-argument-types"]], "Architectural Decision Records": [[4, null]], "Architecture": [[3, null]], "Basic Introspection": [[21, "basic-introspection"]], "Check your version of python": [[31, "check-your-version-of-python"]], "Code Coverage": [[19, "code-coverage"]], "Command-Line Interface": [[27, null]], "Config File": [[33, "config-file"]], "Configuration": [[17, "configuration"], [20, "configuration"]], "Configure the Application": [[18, null]], "Consequences": [[5, "consequences"], [6, "consequences"], [7, "consequences"], [8, "consequences"], [9, "consequences"]], "Context": [[5, "context"], [6, "context"], [7, "context"], [8, "context"], [9, "context"]], "Contribute to the project": [[19, null]], "Control the Worker via the CLI": [[21, null]], "Correlation ID": [[10, "correlation-id"]], "Create a virtual environment": [[31, "create-a-virtual-environment"]], "Decision": [[5, "decision"], [6, "decision"], [7, "decision"], [8, "decision"], [9, "decision"]], "Developer Information": [[19, "developer-information"]], "Docstrings": [[24, "docstrings"]], "Dodal": [[11, "dodal"]], "Edit Plans and Device Live": [[20, null]], "Events Emitted by the Worker": [[10, null]], "Example Plans": [[34, "example-plans"]], "Execution": [[12, "execution"]], "Explanations": [[2, null]], "Format": [[23, "format"], [24, "format"]], "Home of Plans and Devices": [[11, null]], "How the documentation is structured": [[25, null]], "How to Configure Detectors to Write Files": [[23, "how-to-configure-detectors-to-write-files"]], "How-to Guides": [[16, null]], "Index": [[15, null]], "Injecting Devices": [[24, "injecting-devices"]], "Injecting Metadata": [[24, "injecting-metadata"]], "Installation": [[31, null]], "Installing the library": [[31, "installing-the-library"]], "Issue or Discussion?": [[19, "issue-or-discussion"]], "Kubernetes": [[20, "kubernetes"]], "Lifecycle of a Plan": [[12, null]], "Loading and Registration": [[12, "loading-and-registration"]], "Messaging Specification": [[28, null]], "New Events": [[10, "new-events"]], "Other Repositories": [[11, "other-repositories"]], "Plans": [[13, null]], "Quickstart guide": [[32, null]], "REST Specification": [[29, null]], "Reasons": [[10, "reasons"]], "Reference": [[26, null]], "Reloading": [[20, "reloading"]], "Request": [[12, "request"]], "Run a Plan": [[34, null]], "Run in a Container": [[22, null]], "Run the Server": [[33, "run-the-server"]], "Run with local message bus": [[33, null]], "Run/Debug in a Developer Environment": [[35, null]], "Start Bluesky Worker": [[35, "start-bluesky-worker"]], "Start RabbitMQ": [[33, "start-rabbitmq"]], "Start Worker": [[32, "start-worker"]], "Starting the container": [[22, "starting-the-container"]], "Startup": [[12, "startup"]], "Status": [[5, "status"], [6, "status"], [7, "status"], [8, "status"], [9, "status"]], "Stubs": [[13, "stubs"]], "Synchronization": [[20, "synchronization"]], "Test that the Worker is Running": [[32, "test-that-the-worker-is-running"]], "Tutorials": [[30, null]], "Type Validators": [[14, null]], "Validation": [[12, "validation"]], "Write Bluesky Plans for Blueapi": [[24, null]], "Write Devices for Blueapi": [[23, null]], "abort": [[27, "blueapi-controller-abort"]], "blueapi": [[1, null], [25, "blueapi"], [27, "blueapi"]], "controller": [[27, "blueapi-controller"]], "devices": [[27, "blueapi-controller-devices"]], "env": [[27, "blueapi-controller-env"]], "listen": [[27, "blueapi-controller-listen"]], "login": [[27, "blueapi-login"]], "logout": [[27, "blueapi-logout"]], "pause": [[27, "blueapi-controller-pause"]], "plans": [[27, "blueapi-controller-plans"]], "resume": [[27, "blueapi-controller-resume"]], "run": [[27, "blueapi-controller-run"]], "schema": [[27, "blueapi-schema"]], "serve": [[27, "blueapi-serve"]], "setup-scratch": [[27, "blueapi-setup-scratch"]], "state": [[27, "blueapi-controller-state"]], "stop": [[27, "blueapi-controller-stop"]]}, "docnames": ["_api", "_api/blueapi", "explanations", "explanations/architecture", "explanations/decisions", "explanations/decisions/0001-record-architecture-decisions", "explanations/decisions/0002-switched-to-python-copier-template", "explanations/decisions/0003-no-queues", "explanations/decisions/0004-api-case", "explanations/decisions/0005-connect-devices", "explanations/events", "explanations/extension-code", "explanations/lifecycle", "explanations/plans", "explanations/type_validators", "genindex", "how-to", "how-to/add-plans-and-devices", "how-to/configure-app", "how-to/contribute", "how-to/edit-live", "how-to/run-cli", "how-to/run-container", "how-to/write-devices", "how-to/write-plans", "index", "reference", "reference/cli", "reference/messaging-spec", "reference/rest-spec", "tutorials", "tutorials/installation", "tutorials/quickstart", "tutorials/run-bus", "tutorials/run-plan", "tutorials/run-with-dev"], "envversion": {"sphinx": 64, "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.intersphinx": 1, "sphinx.ext.viewcode": 1}, "filenames": ["_api.rst", "_api/blueapi.rst", "explanations.md", "explanations/architecture.md", "explanations/decisions.md", "explanations/decisions/0001-record-architecture-decisions.md", "explanations/decisions/0002-switched-to-python-copier-template.md", "explanations/decisions/0003-no-queues.md", "explanations/decisions/0004-api-case.md", "explanations/decisions/0005-connect-devices.md", "explanations/events.md", "explanations/extension-code.md", "explanations/lifecycle.md", "explanations/plans.md", "explanations/type_validators.md", "genindex.md", "how-to.md", "how-to/add-plans-and-devices.md", "how-to/configure-app.md", "how-to/contribute.md", "how-to/edit-live.md", "how-to/run-cli.md", "how-to/run-container.md", "how-to/write-devices.md", "how-to/write-plans.md", "index.md", "reference.md", "reference/cli.md", "reference/messaging-spec.md", "reference/rest-spec.md", "tutorials.md", "tutorials/installation.md", "tutorials/quickstart.md", "tutorials/run-bus.md", "tutorials/run-plan.md", "tutorials/run-with-dev.md"], "indexentries": {"--config": [[27, "cmdoption-blueapi-c", false]], "--defer": [[27, "cmdoption-blueapi-controller-pause-defer", false]], "--output": [[27, "cmdoption-blueapi-controller-o", false], [27, "cmdoption-blueapi-schema-o", false]], "--reload": [[27, "cmdoption-blueapi-controller-env-r", false]], "--timeout": [[27, "cmdoption-blueapi-controller-env-t", false], [27, "cmdoption-blueapi-controller-run-t", false]], "--update": [[27, "cmdoption-blueapi-schema-u", false]], "--version": [[27, "cmdoption-blueapi-version", false]], "-c": [[27, "cmdoption-blueapi-c", false]], "-o": [[27, "cmdoption-blueapi-controller-o", false], [27, "cmdoption-blueapi-schema-o", false]], "-r": [[27, "cmdoption-blueapi-controller-env-r", false]], "-t": [[27, "cmdoption-blueapi-controller-env-t", false], [27, "cmdoption-blueapi-controller-run-t", false]], "-u": [[27, "cmdoption-blueapi-schema-u", false]], "__version__ (in module blueapi)": [[1, "blueapi.__version__", false]], "blueapi": [[1, "module-blueapi", false]], "blueapi command line option": [[27, "cmdoption-blueapi-c", false], [27, "cmdoption-blueapi-version", false]], "blueapi-controller command line option": [[27, "cmdoption-blueapi-controller-o", false]], "blueapi-controller-abort command line option": [[27, "cmdoption-blueapi-controller-abort-arg-REASON", false]], "blueapi-controller-env command line option": [[27, "cmdoption-blueapi-controller-env-r", false], [27, "cmdoption-blueapi-controller-env-t", false]], "blueapi-controller-pause command line option": [[27, "cmdoption-blueapi-controller-pause-defer", false]], "blueapi-controller-run command line option": [[27, "cmdoption-blueapi-controller-run-arg-NAME", false], [27, "cmdoption-blueapi-controller-run-arg-PARAMETERS", false], [27, "cmdoption-blueapi-controller-run-t", false]], "blueapi-schema command line option": [[27, "cmdoption-blueapi-schema-o", false], [27, "cmdoption-blueapi-schema-u", false]], "module": [[1, "module-blueapi", false]], "name": [[27, "cmdoption-blueapi-controller-run-arg-NAME", false]], "parameters": [[27, "cmdoption-blueapi-controller-run-arg-PARAMETERS", false]], "reason": [[27, "cmdoption-blueapi-controller-abort-arg-REASON", false]]}, "objects": {"": [[29, 0, 1, "get--devices", "/devices"], [29, 0, 1, "get--devices-name", "/devices/{name}"], [29, 1, 1, "delete--environment", "/environment"], [29, 0, 1, "get--environment", "/environment"], [29, 0, 1, "get--plans", "/plans"], [29, 0, 1, "get--plans-name", "/plans/{name}"], [29, 0, 1, "get--tasks", "/tasks"], [29, 2, 1, "post--tasks", "/tasks"], [29, 1, 1, "delete--tasks-task_id", "/tasks/{task_id}"], [29, 0, 1, "get--tasks-task_id", "/tasks/{task_id}"], [29, 0, 1, "get--worker-state", "/worker/state"], [29, 3, 1, "put--worker-state", "/worker/state"], [29, 0, 1, "get--worker-task", "/worker/task"], [29, 3, 1, "put--worker-task", "/worker/task"], [1, 4, 0, "-", "blueapi"]], "blueapi": [[1, 5, 1, "", "__version__"], [27, 6, 1, "cmdoption-blueapi-c", "--config"], [27, 6, 1, "cmdoption-blueapi-version", "--version"], [27, 6, 1, "cmdoption-blueapi-c", "-c"]], "blueapi-controller": [[27, 6, 1, "cmdoption-blueapi-controller-o", "--output"], [27, 6, 1, "cmdoption-blueapi-controller-o", "-o"]], "blueapi-controller-abort": [[27, 6, 1, "cmdoption-blueapi-controller-abort-arg-REASON", "REASON"]], "blueapi-controller-env": [[27, 6, 1, "cmdoption-blueapi-controller-env-r", "--reload"], [27, 6, 1, "cmdoption-blueapi-controller-env-t", "--timeout"], [27, 6, 1, "cmdoption-blueapi-controller-env-r", "-r"], [27, 6, 1, "cmdoption-blueapi-controller-env-t", "-t"]], "blueapi-controller-pause": [[27, 6, 1, "cmdoption-blueapi-controller-pause-defer", "--defer"]], "blueapi-controller-run": [[27, 6, 1, "cmdoption-blueapi-controller-run-t", "--timeout"], [27, 6, 1, "cmdoption-blueapi-controller-run-t", "-t"], [27, 6, 1, "cmdoption-blueapi-controller-run-arg-NAME", "NAME"], [27, 6, 1, "cmdoption-blueapi-controller-run-arg-PARAMETERS", "PARAMETERS"]], "blueapi-schema": [[27, 6, 1, "cmdoption-blueapi-schema-o", "--output"], [27, 6, 1, "cmdoption-blueapi-schema-u", "--update"], [27, 6, 1, "cmdoption-blueapi-schema-o", "-o"], [27, 6, 1, "cmdoption-blueapi-schema-u", "-u"]]}, "objnames": {"0": ["http", "get", "HTTP get"], "1": ["http", "delete", "HTTP delete"], "2": ["http", "post", "HTTP post"], "3": ["http", "put", "HTTP put"], "4": ["py", "module", "Python module"], "5": ["py", "data", "Python data"], "6": ["std", "cmdoption", "program option"]}, "objtypes": {"0": "http:get", "1": "http:delete", "2": "http:post", "3": "http:put", "4": "py:module", "5": "py:data", "6": "std:cmdoption"}, "terms": {"": [4, 5, 10, 12, 13, 18, 19, 25], "0": [12, 24, 28, 34], "05": [7, 8], "1": [4, 12, 23, 24, 28], "10": [9, 24, 27, 31, 34], "100": 19, "12": 9, "12345": 20, "2": [4, 28], "200": 29, "201": 29, "202": 29, "2023": [7, 8], "2024": 9, "22": [7, 28], "23": 8, "273": 24, "3": [4, 12, 28, 31], "4": 4, "400": 29, "409": 29, "422": 29, "5": [4, 23, 24, 34], "6": 28, "61613": [21, 33], "8082": 21, "A": [11, 12, 24, 28], "As": [4, 6], "At": [10, 12], "By": [21, 29], "For": [4, 10, 11, 14, 17, 19, 20, 23, 24, 25], "If": [12, 13, 17, 19, 20, 24, 29, 31], "In": [3, 7, 10, 12, 34], "It": [12, 19, 24, 31, 32, 33], "No": 4, "On": 12, "The": [3, 6, 7, 8, 10, 11, 12, 14, 17, 20, 21, 23, 24, 25, 28, 29, 31, 32, 33, 34, 35], "Then": 21, "These": [3, 10, 13, 14], "To": [5, 13, 18, 22, 24, 25, 32], "With": 34, "_": [22, 23], "__all__": 13, "__exports__": 13, "__init__": 13, "__version__": 1, "_description_": 12, "abl": [14, 24], "abort": [20, 28, 29], "about": [10, 23, 29, 32, 33], "abov": [3, 5, 11, 32], "absolut": 23, "ac": 28, "accept": [3, 5, 6, 7, 8, 9, 27, 29], "access": [13, 14, 25, 28], "accident": 20, "accomplish": 24, "achiev": 28, "act": 32, "activ": [29, 31, 35], "activemq": 10, "actual": [12, 14], "ad": [11, 13], "add": [10, 16, 20, 25], "addit": [9, 24, 35], "additionalproperti": 28, "address": 21, "adopt": 4, "adr": [4, 5], "advic": [11, 24], "aforement": 3, "after": 9, "against": [12, 32], "alia": 8, "all": [4, 12, 13, 19, 20, 29, 32], "allow": [14, 24, 28, 29], "almost": 24, "alon": 13, "along": 24, "alreadi": [20, 22], "also": [10, 12, 14, 19, 21, 25, 31, 32], "although": 7, "alwai": 24, "an": [3, 7, 10, 11, 12, 13, 17, 23, 24, 25, 28, 29, 32, 33], "analysi": 13, "andor": 12, "ani": [7, 8, 11, 12, 13, 14, 19, 20, 23, 24, 27, 28, 29, 31], "annot": [23, 24, 25], "anoth": 7, "apach": 28, "api": [1, 3, 4, 7, 21, 24, 25, 26, 28], "app": 27, "applic": [16, 17, 25, 28], "ar": [3, 4, 7, 9, 10, 12, 13, 14, 17, 19, 21, 22, 23, 24, 29, 35], "arbitrari": 10, "arbitrary_types_allow": 12, "architectur": [2, 25], "area": [11, 17, 20, 35], "arg": [12, 23, 24, 27], "argument": [12, 24, 27], "arrai": 28, "articl": 5, "ask": [7, 10, 19], "associ": [10, 28], "assum": [10, 35], "async": 23, "asyncapi": 28, "asynchron": 33, "attach": 24, "attach_data_session_metadata_decor": 23, "attach_metadata": 23, "auth": 33, "autom": [3, 10], "automat": [9, 23, 25], "avail": [14, 21, 22, 23, 27, 29, 35], "await": 13, "await_callback": 13, "axes_to_mov": 34, "axi": 34, "b": 14, "back": 12, "bad": 29, "bar": 25, "base": [10, 28, 29], "basemodel": [12, 13, 14], "beamlin": [11, 12, 13], "becaus": 10, "becom": [11, 14], "been": [3, 31], "befor": 19, "begin": [23, 28, 29], "behaviour": 10, "being": [12, 14, 28, 33], "below": [4, 10, 23, 24], "between": [10, 12, 13], "big": 19, "bin": [31, 35], "bind": 28, "blob": 8, "blog": 4, "blueapi": [3, 10, 12, 13, 16, 18, 20, 21, 22, 28, 29, 31, 32, 33, 34, 35], "blueski": [3, 10, 12, 13, 14, 16, 17, 20, 23, 25, 28, 32], "bluesky_protocol": 13, "blueskycontext": 12, "boilerpl": 25, "boolean": 28, "bp": [12, 24, 25], "broad": 24, "broken": 20, "broker": 21, "bu": [12, 25, 28, 30, 34], "bug": 19, "build": 12, "built": 22, "bundl": 10, "button": 35, "c": [14, 20, 21, 27, 34], "cach": 7, "calcul": 1, "call": [13, 20, 24, 25, 29], "callback": 13, "caller": 28, "callum": 28, "camelcas": 8, "can": [6, 7, 10, 11, 12, 14, 17, 18, 19, 20, 21, 23, 25, 28, 29, 31, 32, 33, 34, 35], "capabl": [32, 35], "captur": 24, "case": [3, 4, 10], "categori": 25, "caught": 19, "caus": [20, 29], "cd": 6, "chang": [6, 12, 19, 20, 28], "channel": 28, "chart": 20, "check": [14, 19, 20], "checkpoint": [27, 29], "choic": 33, "chosen": 20, "ci": 6, "circumv": 14, "class": [11, 12, 14], "clean": 3, "cleanup": 10, "cli": [16, 18, 25, 27, 32, 33, 35], "click": 35, "client": [21, 24, 27, 28], "clone": 20, "close": 19, "close_run": 13, "closur": [13, 14], "code": [8, 10, 11, 12, 17, 20, 23, 29], "codebas": 3, "collect": [12, 23, 24, 28, 32], "com": [20, 21, 28, 31], "come": [21, 32], "command": [18, 25, 26, 32, 35], "commandlin": 31, "commit": 19, "common": [19, 23], "commun": 3, "compact": 27, "complet": [10, 13, 28, 34], "compon": [3, 28, 29], "concern": 10, "condit": [13, 28], "config": [12, 18, 27, 32], "configur": [9, 11, 12, 16, 19, 21, 25, 27, 33, 35], "conflict": 29, "conform": 10, "confus": 8, "connect": [3, 4, 33, 34], "connect_immedi": 12, "consid": 8, "consist": [6, 24], "consol": 33, "const": 28, "construct": 12, "consum": 13, "contact": 28, "contain": [10, 16, 19, 20, 25], "container": 19, "context": [12, 13, 14, 24], "contexthead": 28, "contribut": [16, 25], "control": [10, 16, 20, 24, 25, 28, 32, 34], "copi": 5, "copier": [4, 11, 19], "core": [13, 25], "correct": 14, "correlationid": 28, "could": 6, "count": [12, 23, 24, 34], "countparamet": 12, "creat": [5, 9, 11, 12, 18, 19, 23, 24, 29, 33], "creation": 9, "credenti": 33, "current": [9, 27, 28, 29, 31], "custom": [17, 20, 21, 32], "d": 14, "data": [10, 12, 13, 23, 25, 28, 32], "databas": 28, "databrok": 10, "dataev": 28, "date": [7, 8, 9], "datum": 28, "debug": [21, 25, 30], "decis": [2, 25], "decor": 23, "decoupl": 10, "def": [12, 14, 23, 24, 25], "default": [12, 13, 18, 21, 24, 27, 28, 29, 32], "defaultcontenttyp": 28, "defer": [27, 29], "defin": [8, 13, 14, 17, 18, 23, 28], "delai": 12, "delet": [20, 29], "demonstr": 12, "depend": [10, 22, 31], "depth": 12, "describ": [5, 28], "descript": [13, 24, 28], "descriptor": 28, "deseri": 14, "deserialis": [13, 14], "destin": 28, "det": 12, "detail": 24, "detect": [12, 24, 25], "detector": [12, 16, 24, 25, 34], "determin": [17, 23], "devcontain": 19, "develop": [6, 20, 25, 27, 30, 33], "devic": [2, 3, 4, 12, 13, 14, 16, 21, 25, 28, 29, 32, 34, 35], "diamond": [19, 23, 28], "diamondlightsourc": [20, 22, 25, 28, 31], "dict": [12, 13, 14, 23, 24], "differ": [6, 7, 8, 10, 24, 33], "directori": [11, 13, 20], "disconnect": 9, "displai": [28, 32, 33], "displaynam": 28, "distinct": 13, "distinguish": 13, "dl": [11, 20], "dls_sw": 20, "do": [20, 24], "doc": 28, "docker": [22, 25], "document": [10, 11, 12, 17, 24, 27, 28, 29], "dodal": [4, 12, 13, 20, 23, 24], "doe": [12, 13, 19, 20], "don": 19, "done": [3, 28], "down": 24, "downstream": 32, "drive": 24, "dure": [4, 12, 28], "e": [10, 12, 14, 20, 24, 29], "each": [20, 23, 27], "earlier": 12, "easi": 24, "easiest": [11, 33], "easili": [19, 25], "edit": [16, 25, 33], "effect": 23, "either": 12, "elaps": 28, "els": 12, "email": 28, "emit": [2, 12, 25], "enabl": [13, 24], "encourag": 24, "end": [10, 19, 28, 29], "endpoint": [25, 29], "enforc": 8, "engin": 10, "ensur": [3, 6, 9, 35], "entiti": 29, "entri": 28, "enum": 28, "env": [17, 20], "environ": [6, 11, 16, 19, 25, 27, 29, 30], "equip": 25, "equival": 13, "error": [3, 7, 10, 12, 28, 29, 33], "estim": 28, "etc": [3, 10, 24, 28], "evalu": 12, "event": [2, 12, 24, 25, 27, 28, 32], "event_descriptor": 28, "event_model": 28, "eventstreamdescriptor": 28, "everi": [10, 13, 23], "exactli": 12, "exampl": [10, 11, 14, 17, 20, 21, 23, 24, 25, 32], "exchang": 28, "execut": [7, 27, 28, 33], "exist": [5, 11, 19, 20, 31], "exit": 27, "expect": [13, 14, 28], "experi": 13, "experienc": [16, 25], "experiment": 17, "explain": 24, "explan": [12, 24, 25], "export": [12, 13, 32], "expos": [13, 24, 25], "extend": [13, 14], "extern": [3, 14, 28], "extra_metadata": 24, "fact": 14, "factor": 13, "factori": [11, 23, 24], "fail": [9, 10, 12, 27], "failur": 29, "fals": [12, 28, 29], "fastapi": [27, 29], "featur": [21, 31], "fetch": [12, 13, 24], "few": 25, "field": [8, 13, 20], "file": [16, 17, 18, 19, 20, 21, 24, 25, 27, 28, 32], "filesystem": 23, "fill": 10, "final": 24, "fine": 10, "finish": [10, 12], "first": [10, 17], "fit": 19, "fix": 6, "float": [12, 24, 28], "follow": [6, 12, 13, 17, 20, 25, 29, 35], "foo": [23, 25], "forev": 27, "form": [12, 24], "formalis": 13, "format": [6, 28], "forrest": 28, "found": [32, 34], "four": 25, "frame": 24, "free": [7, 19, 23], "from": [5, 6, 8, 10, 11, 12, 13, 14, 20, 22, 23, 24, 25, 28, 31, 32, 35], "front": 10, "full": [20, 21, 27, 32], "function": [11, 12, 13, 23, 24, 27], "g": [10, 12, 20, 24], "gap": 10, "gener": [12, 13, 14, 24, 25, 27, 28], "get": [22, 25, 27, 29], "ghcr": [22, 25], "gid": 20, "git": [20, 31], "github": [11, 19, 20, 22, 25, 28, 31], "githubusercont": 28, "give": [3, 10], "global": [3, 12, 23], "go": [12, 17], "goal": 20, "goe": 24, "good": 33, "great": 19, "green": 35, "guest": 33, "guid": [11, 19, 25, 30], "ha": [3, 10, 13, 21, 24, 29, 31, 32, 33], "halt": 28, "hand": 35, "handl": [3, 10, 19], "hang": 27, "have": [3, 6, 14, 17, 19, 20, 23, 24, 35], "header": [10, 28], "helm": 20, "here": [24, 25, 29, 30], "hint": 12, "hold": [7, 12], "home": [2, 17, 23, 25], "hook": 19, "host": [20, 21, 33], "hostpath": 20, "hot": 20, "hous": 3, "how": [2, 12, 19, 28], "howev": 20, "html": 28, "http": [20, 22, 25, 28, 31], "human": [3, 10, 28], "i": [7, 8, 10, 11, 12, 13, 14, 19, 20, 23, 24, 28, 29, 31, 33], "i22": 11, "id": [14, 28], "idea": 19, "identifi": [9, 28], "idl": [28, 29], "ignor": 20, "illustr": 12, "image_det": 34, "immedi": 9, "implement": [9, 13, 24], "import": [12, 13, 17, 20, 23, 24, 25, 27], "improv": 19, "includ": [8, 10, 12, 13, 20, 21, 23, 24, 25, 26], "index": [25, 26], "indic": 28, "info": 28, "inform": [4, 10, 23, 29], "initi": [9, 20, 28, 29], "inner_funct": 23, "input": 24, "insid": [20, 25, 35], "inspect": [12, 27], "instal": [11, 17, 20, 22, 25, 30], "instanc": [13, 14, 33], "instead": [19, 22, 29], "instruct": [3, 35], "int": [12, 14, 24, 25], "integ": 28, "intend": [23, 24], "interact": 29, "interfac": [25, 26, 31], "interfer": 31, "intermedi": 14, "intern": [12, 29], "introduc": 10, "introduct": [17, 24], "introspect": 27, "intuit": 10, "invok": 25, "involv": [19, 28], "io": [22, 25], "ipython": [3, 10], "ipython_": 3, "issu": 10, "item": 28, "iter": [12, 13, 14, 23, 24], "its": [3, 12, 19, 22, 23, 24, 28, 29, 31, 33], "itself": 12, "jm": 10, "jms_correlationid": 10, "job": [3, 25], "json": [8, 12, 13, 27, 28], "just": [3, 10], "keep": [4, 28], "kei": [8, 12, 13], "kelvin": 24, "kept": [3, 7], "kind": 17, "know": 12, "knowledg": 23, "known": 28, "lab": 25, "laboratori": 32, "later": [28, 31], "latest": [6, 22, 25], "latter": 10, "lazili": 12, "least": [13, 24], "left": 35, "level": [1, 14], "librari": [13, 19, 25], "licens": 28, "lifecycl": [2, 25], "lifetim": 4, "light": 19, "lightweight": 25, "like": [12, 19, 23, 24], "line": [25, 26, 34, 35], "link": [5, 25], "lint": 6, "list": [4, 12, 13, 14, 23, 24, 27, 28], "listen": 28, "live": [16, 23, 25], "load": [14, 17], "local": [11, 25, 30], "localhost": [21, 33], "locat": [23, 25], "lock": 20, "logic": 24, "longer": 20, "look": [12, 24], "loop": 35, "m": 31, "machin": 20, "made": [4, 5, 13, 23], "mai": [6, 8, 12, 13, 20, 23, 24, 25, 29], "main": [3, 25], "maintain": 3, "make": [13, 19, 20, 24], "manag": [3, 6], "mani": [17, 23], "manual": 20, "map": [12, 24], "mark": [27, 29], "materi": [25, 26], "mayb": 23, "md": [12, 24], "mean": [8, 23], "meant": 10, "measur": [9, 28], "memori": 12, "menu": 35, "messag": [10, 12, 21, 23, 24, 25, 26, 30, 34], "messageid": 28, "metadata": [12, 23, 28], "method": [14, 24], "michael": [4, 5], "microsecond": 24, "microsoft": 10, "might": 19, "minim": [21, 25], "minimum": 10, "mode": 20, "model": [4, 10, 12, 24, 28], "modul": [6, 12, 13, 17, 20, 25], "more": [4, 16, 19, 23, 25], "most": [8, 19], "motor": [12, 13, 24, 34], "mount": 20, "movabl": 24, "move": [24, 34], "msg": 13, "msggener": [12, 13, 23, 24, 25], "multipl": [23, 25], "must": [7, 10, 13, 17, 23, 24], "mx": 20, "my": 20, "my_beamlin": [12, 20], "my_detector": 23, "my_facility_devic": 23, "my_plan": [14, 24, 25], "my_plan_librari": 17, "my_weird_plan": 14, "mymotor": 24, "myplanmodel": 14, "mytypeofdetector": 23, "n": 12, "name": [8, 10, 12, 13, 20, 23, 24, 27, 28, 29, 34], "natur": 17, "navig": 35, "need": [5, 9, 17, 19, 20, 31, 34, 35], "never": 14, "new": [5, 11, 14, 19, 20, 23, 25, 27, 30, 34], "new_stat": 29, "newli": 29, "next": [27, 29], "none": [12, 23, 24, 27], "note": [10, 20, 25, 26], "now": 31, "nudg": 13, "null": 29, "num": [12, 34], "number": [1, 3, 10, 12, 19, 21, 22, 23, 28], "nygard": [4, 5], "o": 27, "object": [12, 14, 28], "obviou": 19, "occur": 12, "offer": 19, "ok": 29, "one": [7, 13, 19], "oneof": 28, "ones": [5, 8], "ongo": 27, "onli": [12, 13, 14, 20, 23, 24, 27, 33], "onto": 23, "onward": 12, "open": [13, 19, 29], "open_run": 13, "openapi": 29, "oper": 28, "operationid": 28, "ophyd": [20, 23, 28], "ophyd_async_snapshot": 23, "oppos": 24, "option": [12, 23, 24, 27], "org": 28, "organ": 23, "origin": [14, 28], "other": [10, 12, 13, 28, 29], "other_config": 23, "otherwis": [20, 33], "out": [12, 13, 20, 25], "outcom": 28, "output": 27, "outsid": [3, 10, 13], "over": 12, "overridden": [12, 18], "overwrit": 20, "own": [18, 19, 23], "owner": 20, "pa": 24, "packag": [6, 11, 13, 17, 20], "page": 28, "paln": 20, "panick": 28, "param": 12, "paramet": [8, 12, 24, 27, 29], "particular": [20, 29], "particularli": 20, "pass": [12, 18, 24, 29], "pass_metadata": 24, "password": 33, "past": 5, "path": [17, 18, 20, 27, 31, 32], "paus": [10, 28, 29], "payload": 28, "peopl": 25, "pep8": 8, "per": 23, "percentag": 28, "perform": [3, 20], "permit": 7, "pertain": 10, "pick": 23, "piec": 13, "pilatu": 12, "pip": [6, 11, 17, 20, 25, 31], "place": [11, 14, 19], "plan": [2, 3, 8, 10, 14, 16, 21, 23, 25, 28, 29, 30, 32, 35], "plan_stub": 13, "planfunct": 17, "plangener": 13, "playbook": 10, "pleas": 19, "plugin": 33, "podman": 22, "point": [12, 28], "port": [21, 33], "posit": [12, 13, 28], "possibl": [24, 29], "possibli": 25, "post": 29, "practic": [16, 25], "pre": [19, 22], "precis": 28, "prefer": 23, "premis": 25, "preserv": 23, "pressur": 24, "previou": [13, 29], "previous": 28, "primit": 13, "print": [27, 33], "prioriti": 8, "problem": [14, 20], "process": [3, 14], "produc": [10, 28], "product": 33, "programmat": 10, "progress": [3, 28], "progressev": 28, "project": [4, 5, 11, 13, 16, 25], "promptli": 9, "properti": 28, "protocol": [10, 12, 14, 24, 28], "provid": [3, 11, 28, 33], "public": 28, "publish": [12, 28, 33], "pull": [6, 19, 22], "purpos": [12, 24], "put": [11, 17, 29], "py": 13, "pydant": [12, 13, 14], "pypa": 1, "pypi": [11, 25], "python": [4, 8, 11, 13, 17, 19, 20, 23, 24], "python3": 31, "queri": [29, 32], "question": 19, "queue": [4, 12, 28], "quickstart": [25, 30], "r": [20, 27], "rabbitmq": 35, "rais": 19, "rang": 23, "rather": [23, 24], "raw": 28, "re": [13, 20], "reac": 28, "read": [12, 24], "readabl": [12, 14, 23, 24, 28], "readi": 9, "realiti": 20, "realli": 10, "reason": [27, 29], "receiv": [12, 25, 28], "recommend": [19, 31], "reconnect": 9, "record": [2, 25], "reduc": 19, "ref": 28, "refer": [12, 13, 14, 21, 25, 27, 32], "referenc": 28, "regist": 12, "registri": [3, 12, 22], "rehom": 13, "rehome_devic": 13, "relat": [10, 28], "releas": [20, 22, 25, 26, 31], "reload": [27, 29], "remain": [9, 19, 28], "remot": 25, "remote_url": 20, "remov": 20, "repeated_snapshot": 23, "replac": [10, 14], "replydestin": 28, "repo": 11, "repositori": [19, 20], "repres": 28, "request": [7, 19, 28, 29], "requir": [3, 12, 13, 14, 20, 23, 24, 25, 27, 28, 31, 33], "required_gid": 20, "resembl": [12, 20], "resolv": 12, "resourc": 28, "respons": [3, 7, 28, 29], "rest": [3, 25, 26], "restart": [20, 27], "resum": 29, "retriev": 29, "return": [7, 12, 14, 23, 24, 28, 29], "rewind": 29, "rich": 24, "root": 20, "run": [3, 7, 10, 12, 13, 16, 19, 20, 21, 25, 28, 29, 30], "run_start": 28, "run_stop": 28, "runengin": [3, 10, 12, 13], "runstart": 28, "runstop": 28, "runtim": [13, 14, 24], "same": [19, 24], "sampl": 24, "sample_nam": 24, "sample_pressur": 24, "sample_temperatur": 24, "save": 27, "scan": [24, 25, 28, 34], "schema": [13, 28, 29], "scienc": 20, "scientif": 28, "scope": 19, "scratch": [11, 17, 20, 35], "script": [32, 33], "second": [24, 27], "see": [4, 5, 10, 11, 14, 19, 21, 23, 32], "select": 35, "send": [12, 25], "sens": 13, "sensibl": 28, "sent": [12, 28], "separ": 3, "sequenc": 13, "serv": [32, 33, 35], "server": [7, 20, 25, 29, 34], "servic": [7, 12, 25, 27, 28, 32, 35], "set": [6, 10, 11, 14, 18, 19, 24, 29, 35], "setup": [6, 10, 20, 32, 35], "setuptools_scm": 1, "sh": 33, "share": 19, "should": [6, 7, 8, 13, 24, 29, 31, 32, 33], "show": 27, "side": 23, "signatur": 14, "significantli": 19, "similar": 10, "similarli": 23, "sinc": [10, 28], "singl": 24, "singleton": 12, "sleep": 34, "slice": 28, "snake_cas": 8, "snapshot": [23, 34], "so": [3, 8, 10, 13, 14, 25, 31, 32], "softwar": [20, 31], "some": [8, 13, 23, 24], "someth": [12, 19], "sometim": 10, "soon": [12, 29], "sourc": [17, 19, 20, 25, 31, 35], "spec": 34, "special": [20, 24], "specif": [10, 11, 20, 24, 25, 26, 32], "specifi": [20, 24, 28], "spend": 19, "split": 25, "src": [28, 32, 33], "stage": 12, "standalon": 13, "standard": [11, 13, 24], "start": [10, 12, 25, 27, 28, 30, 34], "start_rabbitmq": 33, "startup": [4, 17], "state": [10, 12, 14, 20, 28, 29], "stateev": 28, "statu": [28, 29], "status": [12, 28], "statusview": 28, "step": [16, 24, 25], "stomp": [10, 32, 33, 34], "stomp_config": 32, "stop": [10, 20, 28, 29, 34], "store": 12, "stp": 24, "str": [1, 12, 13, 14, 23, 24, 25], "stream": 28, "stream_datum": 28, "stream_resourc": 28, "streamdatum": 28, "streamresourc": 28, "string": [12, 14, 28, 29], "structur": [4, 24, 28], "stub": 24, "style": 23, "subcommand": 18, "submit": [28, 29], "subprocess": 3, "subscrib": [10, 28], "subset": 13, "success": [27, 29], "suffici": 24, "suit": 19, "summari": 28, "suppli": 28, "support": 13, "sure": 19, "suspend": 28, "switch": 6, "system": 33, "t": [19, 27], "tag": 28, "taggeddatumdocu": 28, "taggeddatumstream": 28, "taggeddescriptordocu": 28, "taggedeventdocu": 28, "taggedresourcedocu": 28, "taggedresourcestream": 28, "taggedstartdocu": 28, "taggedstopdocu": 28, "take": [12, 13, 23, 24, 25, 34], "talk": 21, "target": [24, 28], "target_pressur": 24, "target_temperatur": 24, "task": [3, 7, 19, 27, 28, 29], "task_id": 29, "task_statu": 29, "taskcomplet": 28, "taskfail": 28, "tasknam": 28, "taskstatu": 28, "tcp": 21, "technic": [25, 26], "techniqu": [6, 20], "tell": [20, 21, 32], "temp_pressure_snapshot": 24, "temperatur": 24, "templat": [4, 11, 19], "temporari": 28, "termin": [3, 10, 31, 32, 34], "test": 19, "than": [23, 24], "thei": [9, 12, 23, 24, 28], "them": [11, 12, 14, 17, 23, 24, 33], "therefor": [10, 13, 24], "thi": [3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 19, 20, 21, 23, 24, 25, 28, 29, 31, 33, 34], "those": 13, "through": [12, 14, 19, 23, 29], "throughout": 4, "thsse": 10, "ticket": 19, "time": [7, 10, 19, 23, 27, 28, 34], "timeelaps": 28, "timeout": 27, "timeremain": 28, "titl": 28, "todo": 28, "tomographi": 17, "tool": [6, 11], "top": [1, 10, 25], "track": [4, 28], "tradition": [3, 10], "transact": 7, "transit": 29, "treat": 24, "true": [12, 29], "tutori": [25, 34], "tweak": 20, "type": [2, 11, 12, 23, 24, 25, 28, 31, 34], "typic": [10, 25, 30], "u": 27, "uk": 28, "uncommit": 20, "under": 13, "union": 12, "uniqu": [28, 29], "unit": [24, 28], "unknown": 28, "unprocess": 29, "unpush": 20, "unstart": 29, "until": [27, 28, 29], "up": [11, 12, 19, 23, 25, 35], "updat": [3, 6, 27, 33], "upon": 9, "url": 28, "us": [5, 6, 9, 10, 11, 13, 14, 19, 20, 22, 23, 24, 25, 27, 31, 32, 33, 34], "usabl": 25, "usag": [25, 30], "user": [8, 10, 12, 16, 25, 30, 33], "usernam": 33, "usual": [14, 23], "util": [12, 24, 27], "v": 10, "v1": 28, "valid": [2, 13, 25, 29], "validate_al": 12, "valu": [12, 20, 28, 32], "variabl": [3, 12], "variou": [14, 28], "venv": [6, 31, 35], "verifi": 10, "version": [1, 22, 27, 28, 35], "via": [11, 14, 16, 17, 20, 23, 25, 34], "view": 33, "virtual": 35, "vscode": [19, 35], "wa": [12, 14, 19, 28], "wai": [2, 4, 24, 25, 33], "wait": [13, 27, 29], "want": [17, 19, 20], "warn": 28, "we": [4, 5, 6, 7, 8, 10, 19], "welcom": 19, "well": [12, 28], "were": 17, "what": [12, 17, 28], "when": [9, 10, 12, 13, 14, 19, 27, 28], "where": [7, 20, 23, 25, 28], "whether": [7, 8, 10, 28], "which": [3, 8, 10, 11, 12, 13, 18, 20, 21, 23, 24, 28, 29], "while": [7, 12, 13, 19, 24], "why": [2, 17, 24, 25], "within": [12, 28], "without": [13, 20], "word": 12, "work": [2, 25], "worker": [2, 7, 12, 16, 25, 27, 28, 29, 33, 34], "workerprogressev": 28, "workerst": 28, "workerstateev": 28, "world": 3, "worthwhil": 24, "would": [3, 17], "wrap": [3, 25], "wrapper": 25, "write": [16, 25], "written": [8, 12, 24], "www": 28, "x": [24, 28, 34], "yaml": [18, 20, 21, 27, 33, 34], "yield": [12, 23, 24, 25], "yml": 32, "you": [10, 17, 19, 20, 21, 23, 31, 32, 34, 35], "your": [13, 16, 18, 19, 20, 25, 33, 35]}, "titles": ["API", "blueapi", "Explanations", "Architecture", "Architectural Decision Records", "1. Record architecture decisions", "2. Adopt python-copier-template for project structure", "3. No Queues", "4. API Model Case", "5. Connect all dodal devices during startup", "Events Emitted by the Worker", "Home of Plans and Devices", "Lifecycle of a Plan", "Plans", "Type Validators", "Index", "How-to Guides", "Add Plans and Devices to your Blueapi Environment", "Configure the Application", "Contribute to the project", "Edit Plans and Device Live", "Control the Worker via the CLI", "Run in a Container", "Write Devices for Blueapi", "Write Bluesky Plans for Blueapi", "How the documentation is structured", "Reference", "Command-Line Interface", "Messaging Specification", "REST Specification", "Tutorials", "Installation", "Quickstart guide", "Run with local message bus", "Run a Plan", "Run/Debug in a Developer Environment"], "titleterms": {"1": 5, "2": 6, "3": 7, "4": 8, "5": 9, "No": 7, "abort": 27, "add": 17, "adopt": 6, "all": 9, "allow": 13, "api": [0, 8], "applic": 18, "architectur": [3, 4, 5], "argument": 13, "basic": 21, "blueapi": [1, 17, 23, 24, 25, 27], "blueski": [24, 35], "bu": 33, "case": 8, "check": 31, "cli": 21, "code": 19, "command": 27, "config": 33, "configur": [17, 18, 20, 23], "connect": 9, "consequ": [5, 6, 7, 8, 9], "contain": 22, "context": [5, 6, 7, 8, 9], "contribut": 19, "control": [21, 27], "copier": 6, "correl": 10, "coverag": 19, "creat": 31, "debug": 35, "decis": [4, 5, 6, 7, 8, 9], "detector": 23, "develop": [19, 35], "devic": [9, 11, 17, 20, 23, 24, 27], "discuss": 19, "docstr": 24, "document": 25, "dodal": [9, 11], "dure": 9, "edit": 20, "emit": 10, "env": 27, "environ": [17, 31, 35], "event": 10, "exampl": 34, "execut": 12, "explan": 2, "file": [23, 33], "format": [23, 24], "guid": [16, 32], "home": 11, "how": [16, 23, 25], "i": [25, 32], "id": 10, "index": 15, "inform": 19, "inject": 24, "instal": 31, "interfac": 27, "introspect": 21, "issu": 19, "kubernet": 20, "librari": 31, "lifecycl": 12, "line": 27, "listen": 27, "live": 20, "load": 12, "local": 33, "login": 27, "logout": 27, "messag": [28, 33], "metadata": 24, "model": 8, "new": 10, "other": 11, "paus": 27, "plan": [11, 12, 13, 17, 20, 24, 27, 34], "project": [6, 19], "python": [6, 31], "queue": 7, "quickstart": 32, "rabbitmq": 33, "reason": 10, "record": [4, 5], "refer": 26, "registr": 12, "reload": 20, "repositori": 11, "request": 12, "rest": 29, "resum": 27, "run": [22, 27, 32, 33, 34, 35], "schema": 27, "scratch": 27, "serv": 27, "server": 33, "setup": 27, "specif": [28, 29], "start": [22, 32, 33, 35], "startup": [9, 12], "state": 27, "statu": [5, 6, 7, 8, 9], "stop": 27, "structur": [6, 25], "stub": 13, "synchron": 20, "templat": 6, "test": 32, "tutori": 30, "type": [13, 14], "valid": [12, 14], "version": 31, "via": 21, "virtual": 31, "worker": [10, 21, 32, 35], "write": [23, 24], "your": [17, 31]}}) \ No newline at end of file diff --git a/main/tutorials.html b/main/tutorials.html index e2bbca13f..cc3b66ed7 100644 --- a/main/tutorials.html +++ b/main/tutorials.html @@ -8,7 +8,7 @@ - Tutorials — blueapi 0.7.1.dev1+g21a6cf5d documentation + Tutorials — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/tutorials/installation.html b/main/tutorials/installation.html index 7025d8f13..05f370044 100644 --- a/main/tutorials/installation.html +++ b/main/tutorials/installation.html @@ -8,7 +8,7 @@ - Installation — blueapi 0.7.1.dev1+g21a6cf5d documentation + Installation — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/tutorials/quickstart.html b/main/tutorials/quickstart.html index 2a351ee72..5a4da2cb1 100644 --- a/main/tutorials/quickstart.html +++ b/main/tutorials/quickstart.html @@ -8,7 +8,7 @@ - Quickstart guide — blueapi 0.7.1.dev1+g21a6cf5d documentation + Quickstart guide — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/tutorials/run-bus.html b/main/tutorials/run-bus.html index 4e71ff249..dabf93472 100644 --- a/main/tutorials/run-bus.html +++ b/main/tutorials/run-bus.html @@ -8,7 +8,7 @@ - Run with local message bus — blueapi 0.7.1.dev1+g21a6cf5d documentation + Run with local message bus — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/tutorials/run-plan.html b/main/tutorials/run-plan.html index 70d3621c0..af4a33b11 100644 --- a/main/tutorials/run-plan.html +++ b/main/tutorials/run-plan.html @@ -8,7 +8,7 @@ - Run a Plan — blueapi 0.7.1.dev1+g21a6cf5d documentation + Run a Plan — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - + diff --git a/main/tutorials/run-with-dev.html b/main/tutorials/run-with-dev.html index 1dcec4d59..542d51cbf 100644 --- a/main/tutorials/run-with-dev.html +++ b/main/tutorials/run-with-dev.html @@ -8,7 +8,7 @@ - Run/Debug in a Developer Environment — blueapi 0.7.1.dev1+g21a6cf5d documentation + Run/Debug in a Developer Environment — blueapi 0.7.1.dev2+g82b208f5 documentation @@ -41,7 +41,7 @@ - +