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
dodal/utils.py CHANGED
@@ -4,6 +4,7 @@ import os
4
4
  import re
5
5
  import socket
6
6
  import string
7
+ from collections.abc import Callable, Iterable, Mapping
7
8
  from dataclasses import dataclass
8
9
  from functools import wraps
9
10
  from importlib import import_module
@@ -12,13 +13,6 @@ from os import environ
12
13
  from types import ModuleType
13
14
  from typing import (
14
15
  Any,
15
- Callable,
16
- Dict,
17
- Iterable,
18
- List,
19
- Mapping,
20
- Tuple,
21
- Type,
22
16
  TypeVar,
23
17
  )
24
18
 
@@ -46,7 +40,7 @@ import dodal.log
46
40
  try:
47
41
  from typing import TypeAlias
48
42
  except ImportError:
49
- from typing_extensions import TypeAlias
43
+ from typing import TypeAlias
50
44
 
51
45
 
52
46
  #: Protocols defining interface to hardware
@@ -108,9 +102,35 @@ def skip_device(precondition=lambda: True):
108
102
  return decorator
109
103
 
110
104
 
105
+ def make_device(
106
+ module: str | ModuleType,
107
+ device_name: str,
108
+ **kwargs,
109
+ ) -> dict[str, AnyDevice]:
110
+ """Make a single named device and its dependencies from the given beamline module.
111
+
112
+ Args:
113
+ module (str | ModuleType): The module to make devices from.
114
+ device_name: Name of the device to construct
115
+ **kwargs: Arguments passed on to every device factory
116
+
117
+ Returns:
118
+ dict[str, AnyDevice]: A dict mapping device names to the constructed devices
119
+ """
120
+ if isinstance(module, str):
121
+ module = import_module(module)
122
+
123
+ device_collector = {}
124
+ factories = collect_factories(module)
125
+ device_collector[device_name] = _make_one_device(
126
+ module, device_name, device_collector, factories, **kwargs
127
+ )
128
+ return device_collector
129
+
130
+
111
131
  def make_all_devices(
112
132
  module: str | ModuleType | None = None, include_skipped: bool = False, **kwargs
113
- ) -> Tuple[Dict[str, AnyDevice], Dict[str, Exception]]:
133
+ ) -> tuple[dict[str, AnyDevice], dict[str, Exception]]:
114
134
  """Makes all devices in the given beamline module.
115
135
 
116
136
  In cases of device interdependencies it ensures a device is created before any which
@@ -129,7 +149,7 @@ def make_all_devices(
129
149
  if isinstance(module, str) or module is None:
130
150
  module = import_module(module or __name__)
131
151
  factories = collect_factories(module, include_skipped)
132
- devices: Tuple[Dict[str, AnyDevice], Dict[str, Exception]] = invoke_factories(
152
+ devices: tuple[dict[str, AnyDevice], dict[str, Exception]] = invoke_factories(
133
153
  factories, **kwargs
134
154
  )
135
155
 
@@ -139,7 +159,7 @@ def make_all_devices(
139
159
  def invoke_factories(
140
160
  factories: Mapping[str, AnyDeviceFactory],
141
161
  **kwargs,
142
- ) -> Tuple[Dict[str, AnyDevice], Dict[str, Exception]]:
162
+ ) -> tuple[dict[str, AnyDevice], dict[str, Exception]]:
143
163
  """Call device factory functions in the correct order to resolve dependencies.
144
164
  Inspect function signatures to work out dependencies and execute functions in
145
165
  correct order.
@@ -259,15 +279,13 @@ def is_any_device_factory(func: Callable) -> bool:
259
279
  return is_v1_device_factory(func) or is_v2_device_factory(func)
260
280
 
261
281
 
262
- def is_v2_device_type(obj: Type[Any]) -> bool:
263
- return inspect.isclass(obj) and issubclass(obj, OphydV2Device)
282
+ def is_v2_device_type(obj: type[Any]) -> bool:
283
+ return inspect.isclass(obj) and isinstance(obj, OphydV2Device)
264
284
 
265
285
 
266
- def is_v1_device_type(obj: Type[Any]) -> bool:
286
+ def is_v1_device_type(obj: type[Any]) -> bool:
267
287
  is_class = inspect.isclass(obj)
268
- follows_protocols = any(
269
- (isinstance(obj, protocol) for protocol in BLUESKY_PROTOCOLS)
270
- )
288
+ follows_protocols = any(isinstance(obj, protocol) for protocol in BLUESKY_PROTOCOLS)
271
289
  return is_class and follows_protocols and not is_v2_device_type(obj)
272
290
 
273
291
 
@@ -292,13 +310,11 @@ def get_beamline_based_on_environment_variable() -> ModuleType:
292
310
  or any(c not in valid_characters for c in beamline)
293
311
  ):
294
312
  raise ValueError(
295
- "Invalid BEAMLINE variable - module name is not a permissible python module name, got '{}'".format(
296
- beamline
297
- )
313
+ f"Invalid BEAMLINE variable - module name is not a permissible python module name, got '{beamline}'"
298
314
  )
299
315
 
300
316
  try:
301
- return importlib.import_module("dodal.beamlines.{}".format(beamline))
317
+ return importlib.import_module(f"dodal.beamlines.{beamline}")
302
318
  except ImportError as e:
303
319
  raise ValueError(
304
320
  f"Failed to import beamline-specific dodal module 'dodal.beamlines.{beamline}'."
@@ -306,7 +322,7 @@ def get_beamline_based_on_environment_variable() -> ModuleType:
306
322
  ) from e
307
323
 
308
324
 
309
- def _find_next_run_number_from_files(file_names: List[str]) -> int:
325
+ def _find_next_run_number_from_files(file_names: list[str]) -> int:
310
326
  valid_numbers = []
311
327
 
312
328
  for file_name in file_names:
@@ -336,3 +352,30 @@ def get_run_number(directory: str, prefix: str = "") -> int:
336
352
  return 1
337
353
  else:
338
354
  return _find_next_run_number_from_files(nexus_file_names)
355
+
356
+
357
+ def _make_one_device(
358
+ module: ModuleType,
359
+ device_name: str,
360
+ devices: dict[str, AnyDevice],
361
+ factories: dict[str, AnyDeviceFactory],
362
+ **kwargs,
363
+ ) -> AnyDevice:
364
+ factory = factories.get(device_name)
365
+ if not factory:
366
+ raise ValueError(f"Unable to find factory for {device_name}")
367
+
368
+ dependencies = list(extract_dependencies(factories, device_name))
369
+ for dependency_name in dependencies:
370
+ if dependency_name not in devices:
371
+ try:
372
+ devices[dependency_name] = _make_one_device(
373
+ module, dependency_name, devices, factories, **kwargs
374
+ )
375
+ except Exception as e:
376
+ raise RuntimeError(
377
+ f"Unable to construct device {dependency_name}"
378
+ ) from e
379
+
380
+ params = {name: devices[name] for name in dependencies}
381
+ return factory(**params, **kwargs)
@@ -1,125 +0,0 @@
1
- dodal/__init__.py,sha256=y-VRpfiX-Lm5nchB9N0VfMy_6dwFqVxpSn5SiAQql9I,114
2
- dodal/__main__.py,sha256=kP2S2RPitnOWpNGokjZ1Yq-1umOtp5sNOZk2B3tBPLM,111
3
- dodal/_version.py,sha256=dGQcJRhmSkKpwrkZVgo13Sd0AVHTIBb9i0csee9mzMo,413
4
- dodal/adsim.py,sha256=OW2dcS7ciD4Yq9WFw4PN_c5Bwccrmu7R-zr-u6ZCbQM,497
5
- dodal/cli.py,sha256=z0UBESrNrq6Kq4rttp4uHcwS1fnOnRkKBRDHSriPpGY,2058
6
- dodal/log.py,sha256=dfo1rfYrGG8oIm2HkNxaa_ldVs4vJKtgWSoKe1Z_Xno,8533
7
- dodal/utils.py,sha256=SFDmUOLtxLe5OdNdVgS_EftNpX0ihxduBwq6tufw8s4,10174
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=U0dQYFEUloCdQOs24zyfpPTncJXOO4cDcfHSevVOAw4,2890
12
- dodal/beamlines/i03.py,sha256=J-4GawTxAhrYDQZh87n11L9ehTgObEQ1Lz2PueXCWbc,16892
13
- dodal/beamlines/i04.py,sha256=JOyNcUnC3wva4no2MHKp6b8gOKAcQXL_c4cBo7oneVs,13034
14
- dodal/beamlines/i04_1.py,sha256=KDxSUQNhIs_NFiRaLY-Jiory0DeN7Y0ErvGuoTrwCDU,4731
15
- dodal/beamlines/i20_1.py,sha256=MaPgONHqpoZuBtkiKEzYtViJnKBM2_ekeP4OdbmuXHE,1158
16
- dodal/beamlines/i22.py,sha256=3VFdA4Wc7O40-64lwUtUBIN23fH4JVNbLKJ1JLjy9as,9870
17
- dodal/beamlines/i23.py,sha256=2j5qLoqE_hg9ETHqNkOVu7LLkVB8qalgXeORnVYKN_I,1075
18
- dodal/beamlines/i24.py,sha256=tPSrWArwRd0fb59HyHFRGR1FdscM7t9_hNPk0edhh4o,6583
19
- dodal/beamlines/p38.py,sha256=TC78u4GwEnj6X0r5cnHhqNdBbbDRnh8lY8pEucBZjEU,8006
20
- dodal/beamlines/p45.py,sha256=TNIkC-SBfj0ayZtlLLXW9xCSi5CzJkO8XpAMIo8fjao,2957
21
- dodal/common/__init__.py,sha256=ZC4ICKUDB0BDxRaVy8nmqclVmDBne-dPtk6UJsoFq6I,258
22
- dodal/common/coordination.py,sha256=OxIjDiO1-9A9KESRPFtzwkvvQlavbgA5RHemlbubBPg,1168
23
- dodal/common/maths.py,sha256=JRSBhbMzwlicKp1_Bsfu9gA79JJA_Dgq9EpbExFH65M,1829
24
- dodal/common/types.py,sha256=M0gZs9F7--gREF8VYJn-Y1Mt9mIEgp1aLY3oUpUkSno,546
25
- dodal/common/udc_directory_provider.py,sha256=zNlt_VgdAlyBtVN7neTHk_0tWBbI4pPUL7q9WQOzXvo,1260
26
- dodal/common/visit.py,sha256=MhrFbLptMG0Wvd2nHubBwQ44qAzoP4Bf4_z_-wO8rh0,6063
27
- dodal/common/beamlines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
- dodal/common/beamlines/beamline_parameters.py,sha256=N22dtDLw3Hlo7EUmGxe4qFGcu7OnldwCz_mU7yK2rd0,3577
29
- dodal/common/beamlines/beamline_utils.py,sha256=AgmH9wpnFQ4DHAA7_Yo0COa2piX2ksFxukFt2_600kA,4488
30
- dodal/common/beamlines/device_helpers.py,sha256=s79js7no9k8JMfG7NvdmFomSP5m5VDQ6th_Hsbx1znA,939
31
- dodal/devices/CTAB.py,sha256=_MfL_KH4uDPxq_RuHFEZ9HVXOpUnQb5be3csoz9DdAs,1630
32
- dodal/devices/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
- dodal/devices/adsim.py,sha256=dMU0TKIuiODHYFHQOH4_5UvB8iJtaJEtjqaEDGjcU-w,311
34
- dodal/devices/aperture.py,sha256=0MtTzKMDZ5DVAz0DE0kXI0M76VCp0y9vFsrMggEMpxk,586
35
- dodal/devices/aperturescatterguard.py,sha256=2JJsEPJGJHrI0ztv1cSaP7H5T6qdzDfUcN-VEQ39B8o,11012
36
- dodal/devices/attenuator.py,sha256=viK1iccNekX6ZvR_ZmSwj5JdM1j2B8pcTg8qWDdmzhQ,2584
37
- dodal/devices/backlight.py,sha256=vsNGZB4C_mVMafllvJlOTghsfv6UqALMKUMLXu3WZ5k,1115
38
- dodal/devices/beamstop.py,sha256=8L3qhlk-3ZBOp10xK1i8qZqYTGOXX1mVF1MgXoN0dfg,215
39
- dodal/devices/cryostream.py,sha256=6MU4rXIOL33C-8F3DVfAtv0ZnwiysTtawjkeePd5IrQ,332
40
- dodal/devices/dcm.py,sha256=vfyGYDzfSwTiNqlzkfNjkrL-Q1hNVSgJddvJ5Un_lvg,1610
41
- dodal/devices/eiger.py,sha256=HpZIZ6Y8iffo9GxmuFJmnyRCa5Tl0BKSKU2_wVccHDo,14069
42
- dodal/devices/eiger_odin.py,sha256=zKNu5OaIQ9HkflfxKCi87Yr1kEG2gXfxzj0KPv0XzCk,6960
43
- dodal/devices/fast_grid_scan.py,sha256=BEj96j78r60JPPJoOMP-XXG-_9yURFTuu-pp2LcqQmY,12452
44
- dodal/devices/fluorescence_detector_motion.py,sha256=RrXfPmJzWnAjcjp9u0AnJEfjvWPMKburVTySB2hxYbw,181
45
- dodal/devices/flux.py,sha256=RtPStHw7Mad0igVKntKWVZfuZn2clokVJqH14HLix6M,198
46
- dodal/devices/focusing_mirror.py,sha256=v6TPglvmHiv9H05Lssv1LY5Nr9RBHQISLzL4SJ_QIbk,5890
47
- dodal/devices/hutch_shutter.py,sha256=nZ3gRbYIVJsXLlpZMWT4UEYUFFQP1MwMe8Oy304QsqE,3360
48
- dodal/devices/ipin.py,sha256=OGMXwAE4KDDonZRPFkUmR9Vsk6X4Ox-hEvPT5drP-mQ,208
49
- dodal/devices/linkam3.py,sha256=TPhiQ1D9i_HIlKHAlfnVfX7H6aPOAeXPEJLdmvwdKWQ,3776
50
- dodal/devices/logging_ophyd_device.py,sha256=xw4lbyqq5_ehESGterVEfubJsBiJTWvBp5b9k62gSkg,666
51
- dodal/devices/motors.py,sha256=16ID2jFJ35h6ZrFp76nJG_oQg6uDrupgcbvcbmjlc7c,300
52
- dodal/devices/p45.py,sha256=jzBW2fGRhIbGzSRs5Fgupxro6aqE611n1RTcrTTG-yY,1047
53
- dodal/devices/qbpm1.py,sha256=OY7-WbdxMiLGUK8Z57ezwqSXbHxoPP-y3GvBgj9kgMA,220
54
- dodal/devices/robot.py,sha256=5WQ9kF5m8xhHhipBycsycDV0-_2IBNBkcwuSWP-9-1I,4337
55
- dodal/devices/s4_slit_gaps.py,sha256=j3kgF9WfGFaU9xdUuiAh-QqI5u_vhiAftaDVINt91SM,243
56
- dodal/devices/scatterguard.py,sha256=0qnvhoo3RjLsrxVgIoDJpryqunlgMVgaTsoyKRC2g4Y,331
57
- dodal/devices/scintillator.py,sha256=4Dej1a6HRom9GRwTDsaTKGfvloP20POUqIeHqsI8-R8,184
58
- dodal/devices/slits.py,sha256=URru9VN2N19KqeUPDZaBmyKYn0_JJiE0Vko4sZpfsl8,601
59
- dodal/devices/smargon.py,sha256=Ds8QFqK3ljbTxalqkQ6clpArj4u4hu9d4vrt97Fzdf4,4693
60
- dodal/devices/status.py,sha256=TuUGidZ4Ar-WCRc_sX0wn58DmL6brj1pMr8rNF5Z6VU,1198
61
- dodal/devices/synchrotron.py,sha256=QtTufJA_fCaBawHougSc7nxwu240oX46_y0P-4qIW8o,1960
62
- dodal/devices/tetramm.py,sha256=XriN-zBFVnHxhnTbphSPIZcxEbdWBTbw2g_ulUBl4bw,8538
63
- dodal/devices/thawer.py,sha256=hIdZOzCNloY7CtSvdE2gk4vCMMoOtaIA4dPH_k0OwFg,1527
64
- dodal/devices/turbo_slit.py,sha256=W3ZRIqDhq4iMhr5GcIiWvl2U1GaPtGanqkL7upQOZTY,1132
65
- dodal/devices/undulator.py,sha256=kn84MQpuBHtQj7H7HeBoAYKXu5buGKvTgs3tf2gdEdw,2074
66
- dodal/devices/undulator_dcm.py,sha256=TC9fO55r1YIG_88PPbGGtzfjcRJcaoC2ny51JiDOEX4,5199
67
- dodal/devices/webcam.py,sha256=dvNWJ6hHQR7BUsMRC9TH4XiCCofVhlgZ8HYfVCvd2og,1367
68
- dodal/devices/xbpm_feedback.py,sha256=8QHYKHo9ksZo30olbFM-tHpCHcJRFozgHKVJijv3Gck,1986
69
- dodal/devices/zebra.py,sha256=9Zkq5I3-gcP6qfDBnPEAtFU4QJ-VJyp7cHvB79ZfLHk,9186
70
- dodal/devices/zebra_controlled_shutter.py,sha256=MqX4KE6w0FliZRDBltswcLCNSsp6vQrD_iBY640IljI,1094
71
- dodal/devices/areadetector/__init__.py,sha256=8IwLxuZMW0MOJpJp_ZDdlaE20hrtsH_PXWGaKgMiYs4,240
72
- dodal/devices/areadetector/adaravis.py,sha256=pwbmmnakarjhD59XoyAIXJdakS-nqDG09Xmwq17AVw4,3787
73
- dodal/devices/areadetector/adsim.py,sha256=3U7kS93RM3Xeh-XWKjeuw5jXbIGWAbrs59LfxtvB7OU,1907
74
- dodal/devices/areadetector/adutils.py,sha256=JIx1_sYlehpLtEXcwOEuzVoMplsLdKVW7OWv5eiJqgE,2576
75
- dodal/devices/areadetector/plugins/MJPG.py,sha256=2ISGUg9JxJYzEH640WUIsvFwKolSTywkTyPy9wz6f_k,4064
76
- dodal/devices/detector/__init__.py,sha256=XEwjopgTtBq93RRuFthVVVI9DT1jUvpOJzWOHantJpU,104
77
- dodal/devices/detector/det_dim_constants.py,sha256=MZ4w2nsTKzj4eN7yGsSs1pqKWIuU4vc6UzcSll02uWg,2305
78
- dodal/devices/detector/det_dist_to_beam_converter.py,sha256=f6JFp-eEB2v8NzZg27UrN0VDP5CMjRnaPU6BTA7_n_s,1937
79
- dodal/devices/detector/det_resolution.py,sha256=aQkKp24LpRGiwzPAQM3wLVa4ANw32HdrKc2kftHfKQA,3253
80
- dodal/devices/detector/detector.py,sha256=7IYhndhT9CYCft0MrN1mAnopHqKYbaCRPRGLic76srw,4740
81
- dodal/devices/detector/detector_motion.py,sha256=REREva2kyPcIzOZmahN9rT0jDSuUbV0qUDl4IcBnutA,1221
82
- dodal/devices/i03/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
- dodal/devices/i04/transfocator.py,sha256=uieByXIj0JRbmvMB_om5NOAEbEJkzfkCD24bl2aEo1g,3154
84
- dodal/devices/i20_1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
- dodal/devices/i22/dcm.py,sha256=Kzyd_qFg8KVhRsgfTQVOpghESE8yIOgACKa0Fv9NaZI,6270
86
- dodal/devices/i22/fswitch.py,sha256=AdYtnkCBuhivyJGZqelg_7sjB2pHN7vl1JTtlO4vHo4,3061
87
- dodal/devices/i22/nxsas.py,sha256=ky7v9UZ1UQFsm5hI0wD9OXG-fTKFLj2wJjB7wADxKpw,5655
88
- dodal/devices/i24/I24_detector_motion.py,sha256=Joqr1orgeNvRS7n01bjaO-4Yu4obb8fnKaWHQfjPX14,365
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_vgonio.py,sha256=Igqs7687z6lyhGVeJEDtDmPachYxU48MUH2BF0RpK9Q,461
95
- dodal/devices/i24/pmac.py,sha256=pN54myYvzqPl7iW0Vsp59J1EiV_gtn0xQGwbsKJpiYE,3876
96
- dodal/devices/oav/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
97
- dodal/devices/oav/grid_overlay.py,sha256=FRtjcFd420XY8MEQ9sWedL0i4pK-KUJOSxh2C5zM3PA,5232
98
- dodal/devices/oav/microns_for_zoom_levels.json,sha256=5PA71RzldFTp0eTUGPmov0MjxHe583mzvfor5f3thXI,1208
99
- dodal/devices/oav/oav_calculations.py,sha256=wt71vFcyQrr98FvX8oyUM2n5vmKi3K7PyOTuWp0gq5w,1665
100
- dodal/devices/oav/oav_detector.py,sha256=PlRIuMYSk46o6Aywel9tMZYh1WzMaBhfn3_GWqCas7w,3681
101
- dodal/devices/oav/oav_errors.py,sha256=cc4mGnaTiAc5WIlOt_BIYOc7CRSkrCdnBaavfAJ0pXY,754
102
- dodal/devices/oav/oav_parameters.py,sha256=4XybkhKeG7IEjPRfx0PVM9KNenuyN0rAGWBZG7H3zvQ,7941
103
- dodal/devices/oav/utils.py,sha256=BkTk0aTqqhIHCZInhcUAYjCRPxumPOlTg9m21skncTc,3018
104
- dodal/devices/oav/pin_image_recognition/__init__.py,sha256=Eve6oY9EYGOSw1x-N--xjgyIEzbZE7TTwGR-Q2NZprQ,6441
105
- dodal/devices/oav/pin_image_recognition/manual_test.py,sha256=h1Rto6ZDCB3jWhjSy9N8ECxRN583iYDJr9LxrTJ8kfE,903
106
- dodal/devices/oav/pin_image_recognition/utils.py,sha256=-7-Zs-331UVTq_AZrfdF-zwZdmMn7eitTkBSqnBrxnk,8620
107
- dodal/devices/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
108
- dodal/devices/util/adjuster_plans.py,sha256=2AYaywQP_LbA2KJ6Op3cok8GoRtj696utrSSDfaJtBY,875
109
- dodal/devices/util/epics_util.py,sha256=4AOGqYjF0ITzs4c7PTZZnHge81Zheg4gZbFonVW7Lko,4728
110
- dodal/devices/util/lookup_tables.py,sha256=Up-0BlARt79TIEM76SkDyn9LtTFLxPUcaEPZv6D6bws,2141
111
- dodal/devices/util/motor_utils.py,sha256=pNY-aUk9LxaIWeDr5rpMS6udiB9j19wcCXkNDLp1uA0,257
112
- dodal/devices/xspress3/xspress3.py,sha256=29elzI3JtceryKeMWXhcP9nWl0tlSdnTZhltCitet6A,4668
113
- dodal/devices/xspress3/xspress3_channel.py,sha256=yJRwseLmtkW2Vv6GB8sLdOFuBn3e4c9Q8fgPacMgl5w,1638
114
- dodal/devices/zocalo/__init__.py,sha256=oPhjFB39yf2NWkGD-MMcPFnnOVZ_RtdyBt2OLYn-Xa4,505
115
- dodal/devices/zocalo/zocalo_interaction.py,sha256=B6TBTDwUlluksLTwC4TiEEgfFzWLOmwgG8xM5Xd4Wik,3132
116
- dodal/devices/zocalo/zocalo_results.py,sha256=U4Vk4OF-eL8w0BR-fbw3k4jyRo6G3Ywaf8NMAkjr4Hs,9658
117
- dodal/parameters/experiment_parameter_base.py,sha256=O7JamfuJ5cYHkPf9tsHJPqn-OMHTAGouigvM1cDFehE,313
118
- dodal/plans/check_topup.py,sha256=Pj6Eu8fa6nvoW4awrMxvzE_ftpLfYz8bN0QDLRw0Yuk,2989
119
- dodal/plans/data_session_metadata.py,sha256=QNx9rb1EfGBHb21eFekIi7KjNhC0PL-SVKBCggDuNeg,1650
120
- dls_dodal-1.29.4.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
121
- dls_dodal-1.29.4.dist-info/METADATA,sha256=biJK1f1BESw8LgPh4Rl0GrxC9cMJ2WCYxP5NqGPBzak,16950
122
- dls_dodal-1.29.4.dist-info/WHEEL,sha256=-oYQCr74JF3a37z2nRlQays_SX2MqOANoqVjBBAP2yE,91
123
- dls_dodal-1.29.4.dist-info/entry_points.txt,sha256=wpzz9FsTiYxI8OBwLKX9V9ResLwThBSmtRMcPwII0FA,46
124
- dls_dodal-1.29.4.dist-info/top_level.txt,sha256=xIozdmZk_wmMV4wugpq9-6eZs0vgADNUKz3j2UAwlhc,6
125
- dls_dodal-1.29.4.dist-info/RECORD,,
@@ -1,2 +0,0 @@
1
- [console_scripts]
2
- dodal = dodal.__main__:main
dodal/devices/qbpm1.py DELETED
@@ -1,8 +0,0 @@
1
- from ophyd import Component as Cpt
2
- from ophyd import Device, EpicsSignalRO, Kind
3
-
4
-
5
- class QBPM1(Device):
6
- """Quadrant Beam Position Monitor"""
7
-
8
- intensity = Cpt(EpicsSignalRO, "-DI-QBPM-01:INTEN", kind=Kind.normal)