dls-dodal 1.29.4__py3-none-any.whl → 1.30.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. {dls_dodal-1.29.4.dist-info → dls_dodal-1.30.0.dist-info}/METADATA +27 -42
  2. dls_dodal-1.30.0.dist-info/RECORD +132 -0
  3. {dls_dodal-1.29.4.dist-info → dls_dodal-1.30.0.dist-info}/WHEEL +1 -1
  4. dls_dodal-1.30.0.dist-info/entry_points.txt +3 -0
  5. dodal/__init__.py +1 -4
  6. dodal/_version.py +2 -2
  7. dodal/beamlines/__init__.py +3 -1
  8. dodal/beamlines/i03.py +28 -23
  9. dodal/beamlines/i04.py +34 -12
  10. dodal/beamlines/i13_1.py +66 -0
  11. dodal/beamlines/i22.py +5 -5
  12. dodal/beamlines/i24.py +1 -1
  13. dodal/beamlines/p38.py +7 -7
  14. dodal/beamlines/p45.py +7 -5
  15. dodal/beamlines/p99.py +61 -0
  16. dodal/cli.py +6 -3
  17. dodal/common/beamlines/beamline_parameters.py +2 -2
  18. dodal/common/beamlines/beamline_utils.py +6 -5
  19. dodal/common/maths.py +1 -3
  20. dodal/common/types.py +2 -3
  21. dodal/common/udc_directory_provider.py +14 -3
  22. dodal/common/visit.py +2 -3
  23. dodal/devices/CTAB.py +22 -17
  24. dodal/devices/aperturescatterguard.py +114 -136
  25. dodal/devices/areadetector/adaravis.py +8 -6
  26. dodal/devices/areadetector/adsim.py +2 -3
  27. dodal/devices/areadetector/adutils.py +20 -12
  28. dodal/devices/cryostream.py +19 -7
  29. dodal/devices/detector/__init__.py +13 -2
  30. dodal/devices/detector/det_dim_constants.py +2 -2
  31. dodal/devices/detector/det_dist_to_beam_converter.py +1 -1
  32. dodal/devices/detector/detector.py +5 -5
  33. dodal/devices/detector/detector_motion.py +38 -31
  34. dodal/devices/eiger.py +11 -15
  35. dodal/devices/eiger_odin.py +9 -10
  36. dodal/devices/fast_grid_scan.py +4 -3
  37. dodal/devices/fluorescence_detector_motion.py +13 -4
  38. dodal/devices/focusing_mirror.py +4 -4
  39. dodal/devices/hutch_shutter.py +4 -4
  40. dodal/devices/i22/dcm.py +4 -3
  41. dodal/devices/i22/fswitch.py +4 -4
  42. dodal/devices/i22/nxsas.py +23 -32
  43. dodal/devices/i24/pmac.py +47 -8
  44. dodal/devices/ipin.py +7 -4
  45. dodal/devices/linkam3.py +11 -5
  46. dodal/devices/logging_ophyd_device.py +1 -1
  47. dodal/devices/motors.py +31 -5
  48. dodal/devices/oav/grid_overlay.py +1 -0
  49. dodal/devices/oav/microns_for_zoom_levels.json +1 -1
  50. dodal/devices/oav/oav_detector.py +2 -1
  51. dodal/devices/oav/oav_parameters.py +18 -10
  52. dodal/devices/oav/oav_to_redis_forwarder.py +100 -0
  53. dodal/devices/oav/pin_image_recognition/__init__.py +6 -6
  54. dodal/devices/oav/pin_image_recognition/utils.py +5 -6
  55. dodal/devices/oav/utils.py +2 -2
  56. dodal/devices/p99/__init__.py +0 -0
  57. dodal/devices/p99/sample_stage.py +43 -0
  58. dodal/devices/robot.py +30 -18
  59. dodal/devices/scintillator.py +8 -5
  60. dodal/devices/smargon.py +3 -3
  61. dodal/devices/status.py +2 -31
  62. dodal/devices/tetramm.py +4 -4
  63. dodal/devices/thawer.py +5 -3
  64. dodal/devices/undulator_dcm.py +6 -8
  65. dodal/devices/util/adjuster_plans.py +2 -2
  66. dodal/devices/util/epics_util.py +5 -7
  67. dodal/devices/util/lookup_tables.py +2 -3
  68. dodal/devices/util/save_panda.py +87 -0
  69. dodal/devices/util/test_utils.py +17 -0
  70. dodal/devices/webcam.py +3 -3
  71. dodal/devices/xbpm_feedback.py +0 -23
  72. dodal/devices/zebra.py +10 -10
  73. dodal/devices/zebra_controlled_shutter.py +3 -3
  74. dodal/devices/zocalo/zocalo_interaction.py +10 -2
  75. dodal/devices/zocalo/zocalo_results.py +31 -18
  76. dodal/log.py +14 -5
  77. dodal/plans/data_session_metadata.py +1 -0
  78. dodal/plans/motor_util_plans.py +117 -0
  79. dodal/utils.py +65 -22
  80. dls_dodal-1.29.4.dist-info/RECORD +0 -125
  81. dls_dodal-1.29.4.dist-info/entry_points.txt +0 -2
  82. dodal/devices/qbpm1.py +0 -8
  83. {dls_dodal-1.29.4.dist-info → dls_dodal-1.30.0.dist-info}/LICENSE +0 -0
  84. {dls_dodal-1.29.4.dist-info → dls_dodal-1.30.0.dist-info}/top_level.txt +0 -0
  85. /dodal/devices/i24/{I24_detector_motion.py → i24_detector_motion.py} +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dls-dodal
3
- Version: 1.29.4
3
+ Version: 1.30.0
4
4
  Summary: Ophyd devices and other utils that could be used across DLS beamlines
5
5
  Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
6
6
  License: Apache License
@@ -210,8 +210,9 @@ Classifier: Development Status :: 3 - Alpha
210
210
  Classifier: License :: OSI Approved :: Apache Software License
211
211
  Classifier: Programming Language :: Python :: 3.10
212
212
  Classifier: Programming Language :: Python :: 3.11
213
+ Classifier: Programming Language :: Python :: 3.12
213
214
  Requires-Python: >=3.10
214
- Description-Content-Type: text/x-rst
215
+ Description-Content-Type: text/markdown
215
216
  License-File: LICENSE
216
217
  Requires-Dist: click
217
218
  Requires-Dist: ophyd
@@ -220,7 +221,7 @@ Requires-Dist: bluesky
220
221
  Requires-Dist: pyepics
221
222
  Requires-Dist: dataclasses-json
222
223
  Requires-Dist: pillow
223
- Requires-Dist: zocalo >=0.32.0
224
+ Requires-Dist: zocalo <1.0.0,>=0.32.0
224
225
  Requires-Dist: requests
225
226
  Requires-Dist: graypy
226
227
  Requires-Dist: pydantic
@@ -230,18 +231,23 @@ Requires-Dist: p4p
230
231
  Requires-Dist: numpy <2.0
231
232
  Requires-Dist: aiofiles
232
233
  Requires-Dist: aiohttp
234
+ Requires-Dist: redis
233
235
  Provides-Extra: dev
236
+ Requires-Dist: black ; extra == 'dev'
237
+ Requires-Dist: diff-cover ; extra == 'dev'
234
238
  Requires-Dist: mypy ; extra == 'dev'
235
- Requires-Dist: mockito ; extra == 'dev'
239
+ Requires-Dist: myst-parser ; extra == 'dev'
236
240
  Requires-Dist: pipdeptree ; extra == 'dev'
237
241
  Requires-Dist: pre-commit ; extra == 'dev'
238
242
  Requires-Dist: psutil ; extra == 'dev'
239
243
  Requires-Dist: pydata-sphinx-theme >=0.12 ; extra == 'dev'
244
+ Requires-Dist: pyright ; extra == 'dev'
240
245
  Requires-Dist: pytest ; extra == 'dev'
241
246
  Requires-Dist: pytest-asyncio ; extra == 'dev'
242
247
  Requires-Dist: pytest-cov ; extra == 'dev'
243
248
  Requires-Dist: pytest-random-order ; extra == 'dev'
244
249
  Requires-Dist: ruff ; extra == 'dev'
250
+ Requires-Dist: sphinx <7.4.6 ; extra == 'dev'
245
251
  Requires-Dist: sphinx-autobuild ; extra == 'dev'
246
252
  Requires-Dist: sphinx-copybutton ; extra == 'dev'
247
253
  Requires-Dist: sphinxcontrib-mermaid ; extra == 'dev'
@@ -253,64 +259,43 @@ Requires-Dist: types-mock ; extra == 'dev'
253
259
  Requires-Dist: types-PyYAML ; extra == 'dev'
254
260
  Requires-Dist: types-aiofiles ; extra == 'dev'
255
261
 
256
- dodal
257
- ============
258
-
259
- |code_ci| |docs_ci| |coverage| |pypi_version| |license|
262
+ [![CI](https://github.com/DiamondLightSource/dodal/actions/workflows/ci.yml/badge.svg)](https://github.com/DiamondLightSource/dodal/actions/workflows/ci.yml)
263
+ [![Coverage](https://codecov.io/gh/DiamondLightSource/dodal/branch/main/graph/badge.svg)](https://codecov.io/gh/DiamondLightSource/dodal)
264
+ [![PyPI](https://img.shields.io/pypi/v/dls-dodal.svg)](https://pypi.org/project/dls-dodal)
265
+ [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
260
266
 
267
+ # dodal
261
268
 
262
269
  Ophyd devices and other utils that could be used across DLS beamlines
263
270
 
264
- ============== ==============================================================
265
- PyPI ``pip install dls-dodal``
266
- Source code https://github.com/DiamondLightSource/dodal
267
- Documentation https://DiamondLightSource.github.io/dodal
268
- Releases https://github.com/DiamondLightSource/dodal/releases
269
- ============== ==============================================================
271
+ Source | <https://github.com/DiamondLightSource/dodal>
272
+ :---: | :---:
273
+ PyPI | `pip install dls-dodal`
274
+ Documentation | <https://diamondlightsource.github.io/dodal>
275
+ Releases | <https://github.com/DiamondLightSource/dodal/releases>
270
276
 
271
277
  Testing Connectivity
272
278
  --------------------
273
279
 
274
280
  You can test your connection to a beamline if it's PVs are visible to your machine with:
275
281
 
276
- .. code:: shell
277
282
 
283
+ ```
278
284
  # On any workstation:
279
285
  dodal connect <BEAMLINE>
280
286
 
281
287
  # On a beamline workstation, this should suffice:
282
288
  dodal connect ${BEAMLINE}
289
+ ```
283
290
 
284
291
 
285
- For more options, including a list of valid beamlines, type
286
292
 
287
- .. code:: shell
293
+ For more options, including a list of valid beamlines, type
288
294
 
295
+ ```
289
296
  dodal connect --help
297
+ ```
290
298
 
299
+ <!-- README only content. Anything below this line won't be included in index.md -->
291
300
 
292
- .. |code_ci| image:: https://github.com/DiamondLightSource/dodal/actions/workflows/code.yml/badge.svg?branch=main
293
- :target: https://github.com/DiamondLightSource/dodal/actions/workflows/code.yml
294
- :alt: Code CI
295
-
296
- .. |docs_ci| image:: https://github.com/DiamondLightSource/dodal/actions/workflows/docs.yml/badge.svg?branch=main
297
- :target: https://github.com/DiamondLightSource/dodal/actions/workflows/docs.yml
298
- :alt: Docs CI
299
-
300
- .. |coverage| image:: https://codecov.io/gh/DiamondLightSource/dodal/branch/main/graph/badge.svg
301
- :target: https://codecov.io/gh/DiamondLightSource/dodal
302
- :alt: Test Coverage
303
-
304
- .. |pypi_version| image:: https://img.shields.io/pypi/v/dls-dodal.svg
305
- :target: https://pypi.org/project/dls-dodal
306
- :alt: Latest PyPI version
307
-
308
- .. |license| image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg
309
- :target: https://opensource.org/licenses/Apache-2.0
310
- :alt: Apache License
311
-
312
- ..
313
- Anything below this line is used when viewing README.rst and will be replaced
314
- when included in index.rst
315
-
316
- See https://DiamondLightSource.github.io/dodal for more detailed documentation.
301
+ See https://diamondlightsource.github.io/dodal for more detailed documentation.
@@ -0,0 +1,132 @@
1
+ dodal/__init__.py,sha256=v-rRiDOgZ3sQSMQKq0vgUQZvpeOkoHFXissAx6Ktg84,61
2
+ dodal/__main__.py,sha256=kP2S2RPitnOWpNGokjZ1Yq-1umOtp5sNOZk2B3tBPLM,111
3
+ dodal/_version.py,sha256=3O7CSAW5ITJG2wygPANaMSiqdTff8ZC6oMkdurXzaA8,413
4
+ dodal/adsim.py,sha256=OW2dcS7ciD4Yq9WFw4PN_c5Bwccrmu7R-zr-u6ZCbQM,497
5
+ dodal/cli.py,sha256=_crmaHchxphSW8eEJB58_XZIeK82aiUv9bV7tpz-LpA,2122
6
+ dodal/log.py,sha256=1o93tmUdeTxfzM5c1eAJq5yi_dwOBitcWIC1wp60CfI,8873
7
+ dodal/utils.py,sha256=VV-IQHehAdE95wxq3C4kIl5Dt5MTtmgzVaqKm-k3Q4I,11769
8
+ dodal/beamline_specific_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
+ dodal/beamline_specific_utils/i03.py,sha256=Ixe1anFQl-kwRJubmQx28TIW4Zw8qDxpElNNNapWQHI,396
10
+ dodal/beamlines/README.md,sha256=K9MkL_GomxlsoTB7Mz-_dJA5NNSbmCfMiutchGg3C8o,404
11
+ dodal/beamlines/__init__.py,sha256=XNjwp8yvxlF9eik6igebVs9jeur4Cu7xwEAMFcuhspU,2968
12
+ dodal/beamlines/i03.py,sha256=NF-CcIC93_6JyVuURgcX-w0iqrhbHaKr-vzqXYn6o24,17045
13
+ dodal/beamlines/i04.py,sha256=34m9KqKc9QlR_CeeXC_A1C_bPq9QJ5YdMg_-gTEZYtc,13759
14
+ dodal/beamlines/i04_1.py,sha256=KDxSUQNhIs_NFiRaLY-Jiory0DeN7Y0ErvGuoTrwCDU,4731
15
+ dodal/beamlines/i13_1.py,sha256=Nda_Saz1Q-ov37XKKWdjv8I3_jQEmjjjXQBVw1eOMzg,1879
16
+ dodal/beamlines/i20_1.py,sha256=MaPgONHqpoZuBtkiKEzYtViJnKBM2_ekeP4OdbmuXHE,1158
17
+ dodal/beamlines/i22.py,sha256=xvCqL3GH4JBz6GzjbCKhWTbymTIir8UlqYV4gk5ww2o,9880
18
+ dodal/beamlines/i23.py,sha256=2j5qLoqE_hg9ETHqNkOVu7LLkVB8qalgXeORnVYKN_I,1075
19
+ dodal/beamlines/i24.py,sha256=1XVCNWbzowQB6CWpJGSLp9Ih0zypktIzHxb64h-Xj6Y,6583
20
+ dodal/beamlines/p38.py,sha256=M6616HlwWhznK5MsDNqVy8KUFk1NcicCigDEAxBsSUo,8032
21
+ dodal/beamlines/p45.py,sha256=wyjrO2PdOGvhtz0hKXAoo-RegN_dQVt-iFzh2V9ZaKU,2997
22
+ dodal/beamlines/p99.py,sha256=mHMYi1M_jgSB9SrOPadxvPuMrxG8LmJOYtU0Iw6fnIQ,1708
23
+ dodal/common/__init__.py,sha256=ZC4ICKUDB0BDxRaVy8nmqclVmDBne-dPtk6UJsoFq6I,258
24
+ dodal/common/coordination.py,sha256=OxIjDiO1-9A9KESRPFtzwkvvQlavbgA5RHemlbubBPg,1168
25
+ dodal/common/maths.py,sha256=K9x7iL3xXLtWYTV-xlFHDNSTIL9a2UP3Ws7wr6Dm2rQ,1803
26
+ dodal/common/types.py,sha256=0dAF8XK9FT6PmT1KPMM4_YkN4zqMtfFzDPVRGpfEMDE,571
27
+ dodal/common/udc_directory_provider.py,sha256=kftG-Fb3hprSIh9AAXoA2bULlsxYU0-XHe60Kbx1WM0,1942
28
+ dodal/common/visit.py,sha256=i7I2sTzIzV7aGDKL5-xFEt_jB5cY9wKVb8-BCOXSCxc,6042
29
+ dodal/common/beamlines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
+ dodal/common/beamlines/beamline_parameters.py,sha256=PiOhmpNwF3Z8RsUZwgEqiF1RFQZVEiaxKDoiCaz9gxo,3570
31
+ dodal/common/beamlines/beamline_utils.py,sha256=7A1RL5ZyJiN5wsdtaAY51J5gXaqi7bUgS_YiI7XJ4Ls,4482
32
+ dodal/common/beamlines/device_helpers.py,sha256=s79js7no9k8JMfG7NvdmFomSP5m5VDQ6th_Hsbx1znA,939
33
+ dodal/devices/CTAB.py,sha256=vmvb7uleWCicKhFpIfCG-LgCYkhmTi7Lp6uxxnMR3uI,2001
34
+ dodal/devices/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
+ dodal/devices/adsim.py,sha256=dMU0TKIuiODHYFHQOH4_5UvB8iJtaJEtjqaEDGjcU-w,311
36
+ dodal/devices/aperture.py,sha256=0MtTzKMDZ5DVAz0DE0kXI0M76VCp0y9vFsrMggEMpxk,586
37
+ dodal/devices/aperturescatterguard.py,sha256=sgpYrvDTa1z9KwoPSzg0jx4ZCdfI16pFRuVnrZ_L8X0,10158
38
+ dodal/devices/attenuator.py,sha256=viK1iccNekX6ZvR_ZmSwj5JdM1j2B8pcTg8qWDdmzhQ,2584
39
+ dodal/devices/backlight.py,sha256=vsNGZB4C_mVMafllvJlOTghsfv6UqALMKUMLXu3WZ5k,1115
40
+ dodal/devices/beamstop.py,sha256=8L3qhlk-3ZBOp10xK1i8qZqYTGOXX1mVF1MgXoN0dfg,215
41
+ dodal/devices/cryostream.py,sha256=CpNA2HGhN_PXkL9eqH_yAPsDxyOLIiehlUxEoNmXJVg,668
42
+ dodal/devices/dcm.py,sha256=vfyGYDzfSwTiNqlzkfNjkrL-Q1hNVSgJddvJ5Un_lvg,1610
43
+ dodal/devices/eiger.py,sha256=sR-Fr97Y0lzzq57fFOUTwUZw5E7asoj36A1JR1QUkLI,13985
44
+ dodal/devices/eiger_odin.py,sha256=tDpEhOUY02YManYAMRI3TwSDDa3uITBxI0JHevaK7Rk,7010
45
+ dodal/devices/fast_grid_scan.py,sha256=HCa8WeNbkyaQFKS-qcSRqWh77sFNxhjP86OJgowVxlY,12531
46
+ dodal/devices/fluorescence_detector_motion.py,sha256=5IcyaVHXa9TXLFlLB0tfpQ1_ThgIRJNaFNw_uj6ahCA,501
47
+ dodal/devices/flux.py,sha256=RtPStHw7Mad0igVKntKWVZfuZn2clokVJqH14HLix6M,198
48
+ dodal/devices/focusing_mirror.py,sha256=gZhJWXaea2SPx9LklbxRWsFtX2rQAtBdHXoT35Rsz1Q,5943
49
+ dodal/devices/hutch_shutter.py,sha256=_-hR3SJHM05YHV_fEtc0VYOLamYnpVGDE56AwJGJS48,3320
50
+ dodal/devices/ipin.py,sha256=qsf8E3xrJYNDwzsacNLCCp3gaqsadqmN1b-Fvou8y8k,420
51
+ dodal/devices/linkam3.py,sha256=xcOAMTnifyML7e4qEluqDwAJSiaIzAtIYiqAs8rW6Yc,3850
52
+ dodal/devices/logging_ophyd_device.py,sha256=dUVE-XhWA56WUXez0mrc4sf322CXY3MVLreTycO5j_A,668
53
+ dodal/devices/motors.py,sha256=uezbefx_vt6rAkmXkJZYuT0mjlNQ2WbUjGwmXsAMz5s,1040
54
+ dodal/devices/p45.py,sha256=jzBW2fGRhIbGzSRs5Fgupxro6aqE611n1RTcrTTG-yY,1047
55
+ dodal/devices/robot.py,sha256=1HfS65aSW-n3UaxkRi-lvEwkgESJ1LsANpV_2ph6fgo,4856
56
+ dodal/devices/s4_slit_gaps.py,sha256=j3kgF9WfGFaU9xdUuiAh-QqI5u_vhiAftaDVINt91SM,243
57
+ dodal/devices/scatterguard.py,sha256=0qnvhoo3RjLsrxVgIoDJpryqunlgMVgaTsoyKRC2g4Y,331
58
+ dodal/devices/scintillator.py,sha256=nALikcx8Kix_1ampU-MQBNur_xykAovnFQDrd1EawJw,366
59
+ dodal/devices/slits.py,sha256=URru9VN2N19KqeUPDZaBmyKYn0_JJiE0Vko4sZpfsl8,601
60
+ dodal/devices/smargon.py,sha256=tylxDN4yfGNx5Pwe12wgn7FpEXuGK6K0XnuNxiJ0spc,4707
61
+ dodal/devices/status.py,sha256=hVrJS1yooQo6PRumRACoIEh-SKBUKxvBlQl-MtLFUMQ,327
62
+ dodal/devices/synchrotron.py,sha256=QtTufJA_fCaBawHougSc7nxwu240oX46_y0P-4qIW8o,1960
63
+ dodal/devices/tetramm.py,sha256=QdDvQiD_wZpR_ZdVH8NG6Y4MpCn9JWulq1bXCBC9OBA,8585
64
+ dodal/devices/thawer.py,sha256=Gq-3f__KJUM6_Ds9OVxpZ5jC447HywJxQGXen6L33Lk,1616
65
+ dodal/devices/turbo_slit.py,sha256=W3ZRIqDhq4iMhr5GcIiWvl2U1GaPtGanqkL7upQOZTY,1132
66
+ dodal/devices/undulator.py,sha256=kn84MQpuBHtQj7H7HeBoAYKXu5buGKvTgs3tf2gdEdw,2074
67
+ dodal/devices/undulator_dcm.py,sha256=qUMGKnRluO2jsfz6TuXx6ddN59MlLg1lBqloeBgYZIg,5134
68
+ dodal/devices/webcam.py,sha256=znZHHmQjM0T0XSAYXJraCGlwPPGbt3PF6rWjTSbAikI,1394
69
+ dodal/devices/xbpm_feedback.py,sha256=MxWi_jYGHJFehumadL9fuG8B9IDYCiWFMKjstAVmcoM,1209
70
+ dodal/devices/zebra.py,sha256=MQleFvBeS94JqEhPLi7e9USC20nebeq0bcM_uTNHK34,9182
71
+ dodal/devices/zebra_controlled_shutter.py,sha256=J6emrPmDhRXhH8d9m4dlGHJcNDhS1-T4Tr2AXJ1WXTY,1061
72
+ dodal/devices/areadetector/__init__.py,sha256=8IwLxuZMW0MOJpJp_ZDdlaE20hrtsH_PXWGaKgMiYs4,240
73
+ dodal/devices/areadetector/adaravis.py,sha256=Cqw_Mzrp_zODFxQ2LZBJzHp_DsZ6_dAITkZz8gYz_0w,3797
74
+ dodal/devices/areadetector/adsim.py,sha256=cIc9PRbKnftBk7Ut8d8CU_TVrin8EwcKHObP2n9VxWM,1876
75
+ dodal/devices/areadetector/adutils.py,sha256=4axFR3wtn-K-sjMVJyfTcu-8g35odf2cY8mTKv1gS-o,3093
76
+ dodal/devices/areadetector/plugins/MJPG.py,sha256=2ISGUg9JxJYzEH640WUIsvFwKolSTywkTyPy9wz6f_k,4064
77
+ dodal/devices/detector/__init__.py,sha256=-RdACL3tzc3lLArWOoGNje48UUlv2fElOmGOz9yOuO0,317
78
+ dodal/devices/detector/det_dim_constants.py,sha256=LNrVMd0DbFEcnyNFmXosCP-VYaZ71Ajuv6inwo4Mg3U,2299
79
+ dodal/devices/detector/det_dist_to_beam_converter.py,sha256=7keoqZYfvgayePVx97lHYpcFRTJnQOfAk_PYP4EZTZQ,1951
80
+ dodal/devices/detector/det_resolution.py,sha256=aQkKp24LpRGiwzPAQM3wLVa4ANw32HdrKc2kftHfKQA,3253
81
+ dodal/devices/detector/detector.py,sha256=h0vhSj_oKitECuM_yhfx_Mlff-BvYtpxWKJ3A9bJlLA,4829
82
+ dodal/devices/detector/detector_motion.py,sha256=oB0I9HnIBTsDpEsKUYC7GgYQe4J_r0JsfIYZl8csDbA,1629
83
+ dodal/devices/i03/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
+ dodal/devices/i04/transfocator.py,sha256=uieByXIj0JRbmvMB_om5NOAEbEJkzfkCD24bl2aEo1g,3154
85
+ dodal/devices/i20_1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
+ dodal/devices/i22/dcm.py,sha256=csNl3UAR4Sw4OfAaZZHeUwn72a9xshIzGWs2fhiRzQE,6291
87
+ dodal/devices/i22/fswitch.py,sha256=_ToiihS_6WjxwJ2gosvpcb-2JCrsE_pRwSPRdwm0tC8,3060
88
+ dodal/devices/i22/nxsas.py,sha256=RRzZHfpHZv6tWppB77zsAXgXe71ETzNc6aAHNAJfqo8,5450
89
+ dodal/devices/i24/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
90
+ dodal/devices/i24/aperture.py,sha256=kKfHli5oKp-j-qZhZoXTRK81SAUNyhpI6VRvtw0SkZA,850
91
+ dodal/devices/i24/beamstop.py,sha256=28hQowTvgN5Zw38tkDh32h2ceyN-2GE8bAaGPvDOt5U,1234
92
+ dodal/devices/i24/dcm.py,sha256=Hx5pQ-SHEQ_bLCOnpQYDm6-t-it7nNDmUvopGyiGA2w,1991
93
+ dodal/devices/i24/dual_backlight.py,sha256=Th-RKr28aFxE8LCT_mdN9KkRIVw0BHLGKkI0ienfRZU,2049
94
+ dodal/devices/i24/i24_detector_motion.py,sha256=Joqr1orgeNvRS7n01bjaO-4Yu4obb8fnKaWHQfjPX14,365
95
+ dodal/devices/i24/i24_vgonio.py,sha256=Igqs7687z6lyhGVeJEDtDmPachYxU48MUH2BF0RpK9Q,461
96
+ dodal/devices/i24/pmac.py,sha256=vJrd8U00ZVoVJXcChMGzclPhc9TLVgKjNRVvm1Ufxcw,5266
97
+ dodal/devices/oav/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
98
+ dodal/devices/oav/grid_overlay.py,sha256=kYs4sCvmo7yG75HQtptuI8jPzM7dR4fSqnOGL0D5j6g,5338
99
+ dodal/devices/oav/microns_for_zoom_levels.json,sha256=kJTkbu2v6_Ccc_cDy7FRTX-gRhXxfYskjVqwBCZIqCQ,1209
100
+ dodal/devices/oav/oav_calculations.py,sha256=wt71vFcyQrr98FvX8oyUM2n5vmKi3K7PyOTuWp0gq5w,1665
101
+ dodal/devices/oav/oav_detector.py,sha256=NpIs6gcMrwe39M1y42M2ZtUhjrbl2LuMmNuUjjc13vg,3785
102
+ dodal/devices/oav/oav_errors.py,sha256=cc4mGnaTiAc5WIlOt_BIYOc7CRSkrCdnBaavfAJ0pXY,754
103
+ dodal/devices/oav/oav_parameters.py,sha256=rI0kRl8B-N2mw91yYf1lEQVn0hkBQCPU7jvljr5ZNpk,8235
104
+ dodal/devices/oav/oav_to_redis_forwarder.py,sha256=h5TBcA7uigKPSlslz29itD1z7jvvKQ-5ftWZYmCEmZY,3688
105
+ dodal/devices/oav/utils.py,sha256=OyE4h4eq_jg9bEq5DfcjCU-wfSJifO2-PIsrDbsa0NE,3020
106
+ dodal/devices/oav/pin_image_recognition/__init__.py,sha256=l5IsWMDZDw3-jk0DkGpiw_BzqyfVYRonlfX6Je1ZPR0,6446
107
+ dodal/devices/oav/pin_image_recognition/manual_test.py,sha256=h1Rto6ZDCB3jWhjSy9N8ECxRN583iYDJr9LxrTJ8kfE,903
108
+ dodal/devices/oav/pin_image_recognition/utils.py,sha256=L9ypluYqeOFoS7gQuws-vTNc8LqaKl2ZIDNeQ2JaNpg,8592
109
+ dodal/devices/p99/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
+ dodal/devices/p99/sample_stage.py,sha256=kvwKCDUmXqcoXfIbAENtqm3Hi2cHP7dZIPQgQT6hsXw,1140
111
+ dodal/devices/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
112
+ dodal/devices/util/adjuster_plans.py,sha256=kAgC0Ze_gif4A0B1OOjUHAWvnvxX42oKrvIypNVO8Lk,879
113
+ dodal/devices/util/epics_util.py,sha256=R0_I9HEZ2l19BZaTpevPqT3p3kp5GZCfmNNmnXGfdsc,4689
114
+ dodal/devices/util/lookup_tables.py,sha256=EkO4FlRluakobZzmTQnl1XYYuzezE5T4O760bDTtYRM,2137
115
+ dodal/devices/util/motor_utils.py,sha256=pNY-aUk9LxaIWeDr5rpMS6udiB9j19wcCXkNDLp1uA0,257
116
+ dodal/devices/util/save_panda.py,sha256=7hoR3pRrnDaouRzkq4Dk-KcTg5oGtqObfjnH-8VZQc4,2531
117
+ dodal/devices/util/test_utils.py,sha256=MiXb-tJciL5tk0FvF2hiAqPM_32I69wqi6gVpLXNx6I,563
118
+ dodal/devices/xspress3/xspress3.py,sha256=29elzI3JtceryKeMWXhcP9nWl0tlSdnTZhltCitet6A,4668
119
+ dodal/devices/xspress3/xspress3_channel.py,sha256=yJRwseLmtkW2Vv6GB8sLdOFuBn3e4c9Q8fgPacMgl5w,1638
120
+ dodal/devices/zocalo/__init__.py,sha256=oPhjFB39yf2NWkGD-MMcPFnnOVZ_RtdyBt2OLYn-Xa4,505
121
+ dodal/devices/zocalo/zocalo_interaction.py,sha256=cc-OwjNsh9oMpMghceVWKW9gym_TFmP-mOYBd3H1H7Q,3379
122
+ dodal/devices/zocalo/zocalo_results.py,sha256=O97H-ZX2qtzSHXpxCesOt9Ghb0K_JNjddDw8KC5R4Go,9911
123
+ dodal/parameters/experiment_parameter_base.py,sha256=O7JamfuJ5cYHkPf9tsHJPqn-OMHTAGouigvM1cDFehE,313
124
+ dodal/plans/check_topup.py,sha256=Pj6Eu8fa6nvoW4awrMxvzE_ftpLfYz8bN0QDLRw0Yuk,2989
125
+ dodal/plans/data_session_metadata.py,sha256=TolX_js4mfO_oT3ee9RaB4AyAv8vO-Un9p0ej7cyB80,1695
126
+ dodal/plans/motor_util_plans.py,sha256=pOiytk5L85z7jAcCt7uJ-_XuqnIFCs4ENp6TictQy_I,4523
127
+ dls_dodal-1.30.0.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
128
+ dls_dodal-1.30.0.dist-info/METADATA,sha256=XR1WeLos79yzY6LsNxDD_v2IcOACDZaF885uhbyTSIw,16548
129
+ dls_dodal-1.30.0.dist-info/WHEEL,sha256=nCVcAvsfA9TDtwGwhYaRrlPhTLV9m-Ga6mdyDtuwK18,91
130
+ dls_dodal-1.30.0.dist-info/entry_points.txt,sha256=bycw_EKUzup_rxfCetOwcauXV4kLln_OPpPT8jEnr-I,94
131
+ dls_dodal-1.30.0.dist-info/top_level.txt,sha256=xIozdmZk_wmMV4wugpq9-6eZs0vgADNUKz3j2UAwlhc,6
132
+ dls_dodal-1.30.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (71.0.3)
2
+ Generator: setuptools (73.0.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ dodal = dodal.__main__:main
3
+ save-panda = dodal.devices.util.save_panda:main
dodal/__init__.py CHANGED
@@ -1,6 +1,3 @@
1
- from importlib.metadata import version
2
-
3
- __version__ = version("dls-dodal")
4
- del version
1
+ from ._version import __version__
5
2
 
6
3
  __all__ = ["__version__"]
dodal/_version.py CHANGED
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '1.29.4'
16
- __version_tuple__ = version_tuple = (1, 29, 4)
15
+ __version__ = version = '1.30.0'
16
+ __version_tuple__ = version_tuple = (1, 30, 0)
@@ -1,7 +1,7 @@
1
1
  import importlib.util
2
+ from collections.abc import Iterable, Mapping
2
3
  from functools import lru_cache
3
4
  from pathlib import Path
4
- from typing import Iterable, Mapping
5
5
 
6
6
  # Where beamline names (per the ${BEAMLINE} environment variable don't always
7
7
  # match up, we have to map between them bidirectionally). The most common use case is
@@ -10,6 +10,7 @@ from typing import Iterable, Mapping
10
10
  # dictionary, which maps ${BEAMLINE} to dodal.beamlines.<MODULE NAME>
11
11
  _BEAMLINE_NAME_OVERRIDES = {
12
12
  "i04-1": "i04_1",
13
+ "i13-1": "i13_1",
13
14
  "i20-1": "i20_1",
14
15
  "s03": "i03",
15
16
  }
@@ -27,6 +28,7 @@ def all_beamline_modules() -> Iterable[str]:
27
28
  # premature importing
28
29
  spec = importlib.util.find_spec(__name__)
29
30
  if spec is not None:
31
+ assert spec.submodule_search_locations
30
32
  search_paths = [Path(path) for path in spec.submodule_search_locations]
31
33
  for path in search_paths:
32
34
  for subpath in path.glob("**/*"):
dodal/beamlines/i03.py CHANGED
@@ -1,5 +1,6 @@
1
1
  from ophyd_async.panda import HDFPanda
2
2
 
3
+ from dodal.common.beamlines.beamline_parameters import get_beamline_parameters
3
4
  from dodal.common.beamlines.beamline_utils import (
4
5
  device_instantiation,
5
6
  get_directory_provider,
@@ -7,9 +8,14 @@ from dodal.common.beamlines.beamline_utils import (
7
8
  )
8
9
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
9
10
  from dodal.common.udc_directory_provider import PandASubdirectoryProvider
10
- from dodal.devices.aperturescatterguard import AperturePositions, ApertureScatterguard
11
+ from dodal.devices.aperturescatterguard import (
12
+ ApertureScatterguard,
13
+ load_positions_from_beamline_parameters,
14
+ load_tolerances_from_beamline_params,
15
+ )
11
16
  from dodal.devices.attenuator import Attenuator
12
17
  from dodal.devices.backlight import Backlight
18
+ from dodal.devices.cryostream import CryoStream
13
19
  from dodal.devices.dcm import DCM
14
20
  from dodal.devices.detector import DetectorParams
15
21
  from dodal.devices.detector.detector_motion import DetectorMotion
@@ -20,7 +26,6 @@ from dodal.devices.focusing_mirror import FocusingMirrorWithStripes, VFMMirrorVo
20
26
  from dodal.devices.motors import XYZPositioner
21
27
  from dodal.devices.oav.oav_detector import OAV, OAVConfigParams
22
28
  from dodal.devices.oav.pin_image_recognition import PinTipDetection
23
- from dodal.devices.qbpm1 import QBPM1
24
29
  from dodal.devices.robot import BartRobot
25
30
  from dodal.devices.s4_slit_gaps import S4SlitGaps
26
31
  from dodal.devices.smargon import Smargon
@@ -53,24 +58,20 @@ set_directory_provider(PandASubdirectoryProvider())
53
58
  def aperture_scatterguard(
54
59
  wait_for_connection: bool = True,
55
60
  fake_with_ophyd_sim: bool = False,
56
- aperture_positions: AperturePositions | None = None,
57
61
  ) -> ApertureScatterguard:
58
62
  """Get the i03 aperture and scatterguard device, instantiate it if it hasn't already
59
63
  been. If this is called when already instantiated in i03, it will return the existing
60
- object. If aperture_positions is specified, it will update them.
64
+ object.
61
65
  """
62
-
63
- def load_positions(a_s: ApertureScatterguard):
64
- if aperture_positions is not None:
65
- a_s.load_aperture_positions(aperture_positions)
66
-
66
+ params = get_beamline_parameters()
67
67
  return device_instantiation(
68
68
  device_factory=ApertureScatterguard,
69
69
  name="aperture_scatterguard",
70
70
  prefix="",
71
71
  wait=wait_for_connection,
72
72
  fake=fake_with_ophyd_sim,
73
- post_create=load_positions,
73
+ loaded_positions=load_positions_from_beamline_parameters(params),
74
+ tolerances=load_tolerances_from_beamline_params(params),
74
75
  )
75
76
 
76
77
 
@@ -102,17 +103,6 @@ def dcm(wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False) ->
102
103
  )
103
104
 
104
105
 
105
- @skip_device(lambda: BL == "s03")
106
- def qbpm1(wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False) -> QBPM1:
107
- return device_instantiation(
108
- device_factory=QBPM1,
109
- name="qbpm1",
110
- prefix="",
111
- wait=wait_for_connection,
112
- fake=fake_with_ophyd_sim,
113
- )
114
-
115
-
116
106
  @skip_device(lambda: BL == "s03")
117
107
  def vfm(
118
108
  wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
@@ -498,7 +488,7 @@ def thawer(
498
488
  )
499
489
 
500
490
 
501
- def lower_gonio_positioner(
491
+ def lower_gonio(
502
492
  wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
503
493
  ) -> XYZPositioner:
504
494
  """Get the i03 lower gonio device, instantiate it if it hasn't already been.
@@ -506,8 +496,23 @@ def lower_gonio_positioner(
506
496
  """
507
497
  return device_instantiation(
508
498
  XYZPositioner,
509
- "lower_gonio_positioner",
499
+ "lower_gonio",
510
500
  "-MO-GONP-01:",
511
501
  wait_for_connection,
512
502
  fake_with_ophyd_sim,
513
503
  )
504
+
505
+
506
+ def cryo_stream(
507
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
508
+ ) -> CryoStream:
509
+ """Get the i03 cryostream device, instantiate it if it hasn't already been.
510
+ If this is called when already instantiated in i03, it will return the existing object.
511
+ """
512
+ return device_instantiation(
513
+ CryoStream,
514
+ "cryo_stream",
515
+ "",
516
+ wait_for_connection,
517
+ fake_with_ophyd_sim,
518
+ )
dodal/beamlines/i04.py CHANGED
@@ -1,6 +1,11 @@
1
+ from dodal.common.beamlines.beamline_parameters import get_beamline_parameters
1
2
  from dodal.common.beamlines.beamline_utils import device_instantiation
2
3
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
3
- from dodal.devices.aperturescatterguard import AperturePositions, ApertureScatterguard
4
+ from dodal.devices.aperturescatterguard import (
5
+ ApertureScatterguard,
6
+ load_positions_from_beamline_parameters,
7
+ load_tolerances_from_beamline_params,
8
+ )
4
9
  from dodal.devices.attenuator import Attenuator
5
10
  from dodal.devices.backlight import Backlight
6
11
  from dodal.devices.beamstop import BeamStop
@@ -14,13 +19,14 @@ from dodal.devices.i04.transfocator import Transfocator
14
19
  from dodal.devices.ipin import IPin
15
20
  from dodal.devices.motors import XYZPositioner
16
21
  from dodal.devices.oav.oav_detector import OAV, OAVConfigParams
22
+ from dodal.devices.oav.oav_to_redis_forwarder import OAVToRedisForwarder
17
23
  from dodal.devices.robot import BartRobot
18
24
  from dodal.devices.s4_slit_gaps import S4SlitGaps
19
25
  from dodal.devices.smargon import Smargon
20
26
  from dodal.devices.synchrotron import Synchrotron
21
27
  from dodal.devices.thawer import Thawer
22
28
  from dodal.devices.undulator import Undulator
23
- from dodal.devices.xbpm_feedback import XBPMFeedbackI04
29
+ from dodal.devices.xbpm_feedback import XBPMFeedback
24
30
  from dodal.devices.zebra import Zebra
25
31
  from dodal.devices.zebra_controlled_shutter import ZebraShutter
26
32
  from dodal.log import set_beamline as set_log_beamline
@@ -32,6 +38,10 @@ ZOOM_PARAMS_FILE = (
32
38
  DISPLAY_CONFIG = "/dls_sw/i04/software/gda_versions/var/display.configuration"
33
39
  DAQ_CONFIGURATION_PATH = "/dls_sw/i04/software/daq_configuration"
34
40
 
41
+ REDIS_HOST = "i04-control.diamond.ac.uk"
42
+ REDIS_PASSWORD = "not_telling"
43
+ MURKO_REDIS_DB = 7
44
+
35
45
  BL = get_beamline_name("s04")
36
46
  set_log_beamline(BL)
37
47
  set_utils_beamline(BL)
@@ -157,12 +167,12 @@ def transfocator(
157
167
 
158
168
  def xbpm_feedback(
159
169
  wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
160
- ) -> XBPMFeedbackI04:
170
+ ) -> XBPMFeedback:
161
171
  """Get the i04 xbpm_feedback device, instantiate it if it hasn't already been.
162
172
  If this is called when already instantiated in i04, it will return the existing object.
163
173
  """
164
174
  return device_instantiation(
165
- XBPMFeedbackI04,
175
+ XBPMFeedback,
166
176
  "xbpm_feedback",
167
177
  "",
168
178
  wait_for_connection,
@@ -214,24 +224,20 @@ def backlight(
214
224
  def aperture_scatterguard(
215
225
  wait_for_connection: bool = True,
216
226
  fake_with_ophyd_sim: bool = False,
217
- aperture_positions: AperturePositions | None = None,
218
227
  ) -> ApertureScatterguard:
219
228
  """Get the i04 aperture and scatterguard device, instantiate it if it hasn't already
220
229
  been. If this is called when already instantiated in i04, it will return the existing
221
- object. If aperture_positions is specified, it will update them.
230
+ object.
222
231
  """
223
-
224
- def load_positions(a_s: ApertureScatterguard):
225
- if aperture_positions is not None:
226
- a_s.load_aperture_positions(aperture_positions)
227
-
232
+ params = get_beamline_parameters()
228
233
  return device_instantiation(
229
234
  device_factory=ApertureScatterguard,
230
235
  name="aperture_scatterguard",
231
236
  prefix="",
232
237
  wait=wait_for_connection,
233
238
  fake=fake_with_ophyd_sim,
234
- post_create=load_positions,
239
+ loaded_positions=load_positions_from_beamline_parameters(params),
240
+ tolerances=load_tolerances_from_beamline_params(params),
235
241
  )
236
242
 
237
243
 
@@ -395,3 +401,19 @@ def robot(
395
401
  wait_for_connection,
396
402
  fake_with_ophyd_sim,
397
403
  )
404
+
405
+
406
+ def oav_to_redis_forwarder(
407
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
408
+ ) -> OAVToRedisForwarder:
409
+ """Get the i04 OAV to redis forwarder, instantiate it if it hasn't already been.
410
+ If this is called when already instantiated in i04, it will return the existing object.
411
+ """
412
+ return device_instantiation(
413
+ OAVToRedisForwarder,
414
+ "oav_to_redis",
415
+ "",
416
+ wait_for_connection,
417
+ fake_with_ophyd_sim,
418
+ params=OAVConfigParams(ZOOM_PARAMS_FILE, DISPLAY_CONFIG),
419
+ )
@@ -0,0 +1,66 @@
1
+ from pathlib import Path
2
+
3
+ from ophyd_async.epics.areadetector.aravis import AravisDetector
4
+
5
+ from dodal.common.beamlines.beamline_utils import (
6
+ device_instantiation,
7
+ get_directory_provider,
8
+ set_directory_provider,
9
+ )
10
+ from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
11
+ from dodal.common.visit import StaticVisitDirectoryProvider
12
+ from dodal.devices.motors import XYZPositioner
13
+ from dodal.log import set_beamline as set_log_beamline
14
+ from dodal.utils import get_beamline_name
15
+
16
+ BL = get_beamline_name("i13-1")
17
+ set_log_beamline(BL)
18
+ set_utils_beamline(BL)
19
+ set_directory_provider(
20
+ StaticVisitDirectoryProvider(
21
+ BL,
22
+ Path("/data/2024/cm37257-4/"), # latest commissioning visit
23
+ )
24
+ )
25
+
26
+
27
+ def sample_xyz_stage(
28
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
29
+ ) -> XYZPositioner:
30
+ return device_instantiation(
31
+ XYZPositioner,
32
+ prefix="BL13J-MO-PI-02:",
33
+ name="sample_xyz_stage",
34
+ wait=wait_for_connection,
35
+ fake=fake_with_ophyd_sim,
36
+ bl_prefix=False,
37
+ )
38
+
39
+
40
+ def sample_xyz_lab_fa_stage(
41
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
42
+ ) -> XYZPositioner:
43
+ return device_instantiation(
44
+ XYZPositioner,
45
+ prefix="BL13J-MO-PI-02:FIXANG:",
46
+ name="sample_xyz_lab_fa_stage",
47
+ wait=wait_for_connection,
48
+ fake=fake_with_ophyd_sim,
49
+ bl_prefix=False,
50
+ )
51
+
52
+
53
+ def side_camera(
54
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
55
+ ) -> AravisDetector:
56
+ return device_instantiation(
57
+ AravisDetector,
58
+ prefix="BL13J-OP-FLOAT-03:",
59
+ name="side_camera",
60
+ bl_prefix=False,
61
+ drv_suffix="CAM:",
62
+ hdf_suffix="HDF5:",
63
+ directory_provider=get_directory_provider(),
64
+ wait=wait_for_connection,
65
+ fake=fake_with_ophyd_sim,
66
+ )
dodal/beamlines/i22.py CHANGED
@@ -234,7 +234,7 @@ def slits_3(
234
234
  )
235
235
 
236
236
 
237
- @skip_device
237
+ @skip_device()
238
238
  def slits_4(
239
239
  wait_for_connection: bool = True,
240
240
  fake_with_ophyd_sim: bool = False,
@@ -300,7 +300,7 @@ def panda1(
300
300
  )
301
301
 
302
302
 
303
- @skip_device
303
+ @skip_device()
304
304
  def panda2(
305
305
  wait_for_connection: bool = True,
306
306
  fake_with_ophyd_sim: bool = False,
@@ -315,7 +315,7 @@ def panda2(
315
315
  )
316
316
 
317
317
 
318
- @skip_device
318
+ @skip_device()
319
319
  def panda3(
320
320
  wait_for_connection: bool = True,
321
321
  fake_with_ophyd_sim: bool = False,
@@ -330,7 +330,7 @@ def panda3(
330
330
  )
331
331
 
332
332
 
333
- @skip_device
333
+ @skip_device()
334
334
  def panda4(
335
335
  wait_for_connection: bool = True,
336
336
  fake_with_ophyd_sim: bool = False,
@@ -366,7 +366,7 @@ def oav(
366
366
  )
367
367
 
368
368
 
369
- @skip_device
369
+ @skip_device()
370
370
  def linkam(
371
371
  wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
372
372
  ) -> Linkam3:
dodal/beamlines/i24.py CHANGED
@@ -7,7 +7,7 @@ from dodal.devices.i24.aperture import Aperture
7
7
  from dodal.devices.i24.beamstop import Beamstop
8
8
  from dodal.devices.i24.dcm import DCM
9
9
  from dodal.devices.i24.dual_backlight import DualBacklight
10
- from dodal.devices.i24.I24_detector_motion import DetectorMotion
10
+ from dodal.devices.i24.i24_detector_motion import DetectorMotion
11
11
  from dodal.devices.i24.i24_vgonio import VGonio
12
12
  from dodal.devices.i24.pmac import PMAC
13
13
  from dodal.devices.oav.oav_detector import OAV