mx-bluesky 1.4.7__py3-none-any.whl → 1.4.9__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 (89) hide show
  1. mx_bluesky/_version.py +2 -2
  2. mx_bluesky/beamlines/aithre_lasershaping/__init__.py +8 -0
  3. mx_bluesky/beamlines/aithre_lasershaping/beamline_safe.py +36 -0
  4. mx_bluesky/beamlines/aithre_lasershaping/goniometer_controls.py +43 -0
  5. mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py +4 -4
  6. mx_bluesky/beamlines/i04/thawing_plan.py +8 -2
  7. mx_bluesky/beamlines/i23/__init__.py +3 -0
  8. mx_bluesky/beamlines/i23/serial.py +71 -0
  9. mx_bluesky/beamlines/i24/serial/__init__.py +2 -0
  10. mx_bluesky/beamlines/i24/serial/blueapi_config.yaml +2 -1
  11. mx_bluesky/beamlines/i24/serial/dcid.py +5 -5
  12. mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DetStage.edl +2 -2
  13. mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl +9 -9
  14. mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +25 -5
  15. mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DetStage.edl +2 -2
  16. mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl +14 -14
  17. mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl +5 -5
  18. mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +29 -60
  19. mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py +7 -1
  20. mx_bluesky/beamlines/i24/serial/log.py +9 -10
  21. mx_bluesky/beamlines/i24/serial/parameters/utils.py +36 -7
  22. mx_bluesky/beamlines/i24/serial/setup_beamline/pv.py +0 -1
  23. mx_bluesky/beamlines/i24/serial/setup_beamline/pv_abstract.py +4 -4
  24. mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py +4 -12
  25. mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py +2 -1
  26. mx_bluesky/beamlines/i24/serial/web_gui_plans/general_plans.py +71 -11
  27. mx_bluesky/beamlines/i24/serial/write_nexus.py +3 -3
  28. mx_bluesky/{hyperion → common}/device_setup_plans/manipulate_sample.py +6 -14
  29. mx_bluesky/{hyperion → common}/device_setup_plans/setup_oav.py +12 -6
  30. mx_bluesky/{hyperion → common}/experiment_plans/change_aperture_then_move_plan.py +4 -5
  31. mx_bluesky/{hyperion → common}/experiment_plans/oav_grid_detection_plan.py +6 -6
  32. mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py +6 -5
  33. mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_callback.py +16 -47
  34. mx_bluesky/common/external_interaction/ispyb/ispyb_store.py +4 -1
  35. mx_bluesky/common/external_interaction/ispyb/ispyb_utils.py +4 -4
  36. mx_bluesky/common/external_interaction/nexus/nexus_utils.py +2 -2
  37. mx_bluesky/common/parameters/components.py +22 -2
  38. mx_bluesky/common/parameters/constants.py +4 -16
  39. mx_bluesky/common/parameters/gridscan.py +36 -32
  40. mx_bluesky/common/plans/common_flyscan_xray_centre_plan.py +316 -0
  41. mx_bluesky/common/plans/inner_plans/__init__ .py +0 -0
  42. mx_bluesky/common/plans/read_hardware.py +3 -3
  43. mx_bluesky/common/utils/log.py +19 -15
  44. mx_bluesky/hyperion/__main__.py +6 -24
  45. mx_bluesky/hyperion/baton_handler.py +8 -3
  46. mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py +4 -4
  47. mx_bluesky/hyperion/device_setup_plans/setup_zebra.py +0 -33
  48. mx_bluesky/hyperion/device_setup_plans/smargon.py +2 -7
  49. mx_bluesky/hyperion/device_setup_plans/utils.py +6 -5
  50. mx_bluesky/hyperion/experiment_plans/__init__.py +1 -7
  51. mx_bluesky/hyperion/experiment_plans/experiment_registry.py +3 -13
  52. mx_bluesky/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py +80 -87
  53. mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py +183 -0
  54. mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py +50 -15
  55. mx_bluesky/hyperion/experiment_plans/oav_snapshot_plan.py +31 -7
  56. mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py +4 -4
  57. mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py +1 -1
  58. mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py +13 -14
  59. mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py +9 -8
  60. mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py +30 -71
  61. mx_bluesky/hyperion/experiment_plans/set_energy_plan.py +2 -2
  62. mx_bluesky/hyperion/external_interaction/agamemnon.py +78 -80
  63. mx_bluesky/hyperion/external_interaction/callbacks/__main__.py +8 -6
  64. mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py +3 -3
  65. mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py +6 -3
  66. mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py +2 -2
  67. mx_bluesky/hyperion/external_interaction/callbacks/snapshot_callback.py +183 -31
  68. mx_bluesky/hyperion/external_interaction/config_server.py +4 -1
  69. mx_bluesky/hyperion/parameters/cli.py +4 -19
  70. mx_bluesky/hyperion/parameters/constants.py +1 -5
  71. mx_bluesky/hyperion/parameters/device_composites.py +40 -5
  72. mx_bluesky/hyperion/parameters/gridscan.py +9 -58
  73. mx_bluesky/hyperion/parameters/load_centre_collect.py +4 -4
  74. mx_bluesky/hyperion/parameters/rotation.py +9 -12
  75. mx_bluesky/hyperion/utils/context.py +2 -2
  76. mx_bluesky/hyperion/utils/validation.py +15 -19
  77. {mx_bluesky-1.4.7.dist-info → mx_bluesky-1.4.9.dist-info}/METADATA +7 -6
  78. {mx_bluesky-1.4.7.dist-info → mx_bluesky-1.4.9.dist-info}/RECORD +86 -83
  79. {mx_bluesky-1.4.7.dist-info → mx_bluesky-1.4.9.dist-info}/WHEEL +1 -1
  80. mx_bluesky/common/external_interaction/test_config_server.py +0 -38
  81. mx_bluesky/hyperion/device_setup_plans/check_beamstop.py +0 -27
  82. mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py +0 -467
  83. /mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/{short1-laser.png → s1l.png} +0 -0
  84. /mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/{short2-laser.png → s2l.png} +0 -0
  85. /mx_bluesky/{hyperion → common}/device_setup_plans/position_detector.py +0 -0
  86. /mx_bluesky/common/plans/{do_fgs.py → inner_plans/do_fgs.py} +0 -0
  87. {mx_bluesky-1.4.7.dist-info → mx_bluesky-1.4.9.dist-info}/entry_points.txt +0 -0
  88. {mx_bluesky-1.4.7.dist-info → mx_bluesky-1.4.9.dist-info}/licenses/LICENSE +0 -0
  89. {mx_bluesky-1.4.7.dist-info → mx_bluesky-1.4.9.dist-info}/top_level.txt +0 -0
@@ -12,7 +12,7 @@ from mx_bluesky.hyperion.parameters.components import WithHyperionUDCFeatures
12
12
  from mx_bluesky.hyperion.parameters.robot_load import (
13
13
  RobotLoadThenCentre,
14
14
  )
15
- from mx_bluesky.hyperion.parameters.rotation import MultiRotationScan
15
+ from mx_bluesky.hyperion.parameters.rotation import RotationScan
16
16
 
17
17
  T = TypeVar("T", bound=BaseModel)
18
18
 
@@ -34,7 +34,7 @@ class LoadCentreCollect(
34
34
  pin-tip centre and rotation scan operations."""
35
35
 
36
36
  robot_load_then_centre: RobotLoadThenCentre
37
- multi_rotation_scan: MultiRotationScan
37
+ multi_rotation_scan: RotationScan
38
38
 
39
39
  @model_validator(mode="before")
40
40
  @classmethod
@@ -42,7 +42,7 @@ class LoadCentreCollect(
42
42
  allowed_keys = (
43
43
  LoadCentreCollect.model_fields.keys()
44
44
  | RobotLoadThenCentre.model_fields.keys()
45
- | MultiRotationScan.model_fields.keys()
45
+ | RotationScan.model_fields.keys()
46
46
  )
47
47
 
48
48
  disallowed_keys = values.keys() - allowed_keys
@@ -74,7 +74,7 @@ class LoadCentreCollect(
74
74
  values, values["robot_load_then_centre"], RobotLoadThenCentre
75
75
  )
76
76
  new_multi_rotation_scan_params = construct_from_values(
77
- values, values["multi_rotation_scan"], MultiRotationScan
77
+ values, values["multi_rotation_scan"], RotationScan
78
78
  )
79
79
  values["multi_rotation_scan"] = new_multi_rotation_scan_params
80
80
  values["robot_load_then_centre"] = new_robot_load_then_centre_params
@@ -42,7 +42,8 @@ class RotationScanPerSweep(OptionalGonioAngleStarts, OptionalXyzStarts):
42
42
  omega_start_deg: The initial angle of the rotation in degrees (default 0)
43
43
  scan_width_deg: The sweep of the rotation in degrees, this must be positive (default 360)
44
44
  rotation_direction: Indicates the direction of rotation, if RotationDirection.POSITIVE
45
- the final angle is obtained by adding scan_width_deg, otherwise by subtraction (default NEGATIVE)
45
+ the final angle is obtained by adding scan_width_deg, otherwise by subtraction (default NEGATIVE).
46
+ See "Hyperion Coordinate Systems" in the documentation.
46
47
  nexus_vds_start_img: The frame number of the first frame captured during the rotation
47
48
  """
48
49
 
@@ -104,7 +105,7 @@ class RotationExperiment(DiffractionExperimentWithSample, WithHyperionUDCFeature
104
105
  return aperture_position
105
106
 
106
107
 
107
- class RotationScan(WithScan, RotationScanPerSweep, RotationExperiment):
108
+ class SingleRotationScan(WithScan, RotationScanPerSweep, RotationExperiment):
108
109
  @property
109
110
  def detector_params(self):
110
111
  return self._detector_params(self.omega_start_deg)
@@ -129,12 +130,12 @@ class RotationScan(WithScan, RotationScanPerSweep, RotationExperiment):
129
130
  return int(self.scan_width_deg / self.rotation_increment_deg)
130
131
 
131
132
 
132
- class MultiRotationScan(RotationExperiment, SplitScan):
133
+ class RotationScan(RotationExperiment, SplitScan):
133
134
  rotation_scans: Annotated[list[RotationScanPerSweep], Len(min_length=1)]
134
135
 
135
- def _single_rotation_scan(self, scan: RotationScanPerSweep) -> RotationScan:
136
+ def _single_rotation_scan(self, scan: RotationScanPerSweep) -> SingleRotationScan:
136
137
  # self has everything from RotationExperiment
137
- allowed_keys = RotationScan.model_fields.keys() # type: ignore # mypy doesn't recognise this as a property...
138
+ allowed_keys = SingleRotationScan.model_fields.keys() # type: ignore # mypy doesn't recognise this as a property...
138
139
  params_dump = self.model_dump()
139
140
  # provided `scan` has everything from RotationScanPerSweep
140
141
  scan_dump = scan.model_dump()
@@ -142,13 +143,13 @@ class MultiRotationScan(RotationExperiment, SplitScan):
142
143
  k: v for k, v in (params_dump | scan_dump).items() if k in allowed_keys
143
144
  }
144
145
  # together they have everything for RotationScan
145
- rotation_scan = RotationScan(**rotation_scan_kv_pairs)
146
+ rotation_scan = SingleRotationScan(**rotation_scan_kv_pairs)
146
147
  return rotation_scan
147
148
 
148
149
  @model_validator(mode="after")
149
150
  @classmethod
150
151
  def correct_start_vds(cls, values: Any) -> Any:
151
- assert isinstance(values, MultiRotationScan)
152
+ assert isinstance(values, RotationScan)
152
153
  start_img = 0.0
153
154
  for scan in values.rotation_scans:
154
155
  scan.nexus_vds_start_img = int(start_img)
@@ -167,7 +168,7 @@ class MultiRotationScan(RotationExperiment, SplitScan):
167
168
  return self
168
169
 
169
170
  @property
170
- def single_rotation_scans(self) -> Iterator[RotationScan]:
171
+ def single_rotation_scans(self) -> Iterator[SingleRotationScan]:
171
172
  for scan in self.rotation_scans:
172
173
  yield self._single_rotation_scan(scan)
173
174
 
@@ -192,7 +193,3 @@ class MultiRotationScan(RotationExperiment, SplitScan):
192
193
  self._num_images_per_scan()[0],
193
194
  len(self._num_images_per_scan()),
194
195
  )
195
-
196
- @property
197
- def ispyb_params(self): # pyright: ignore
198
- raise ValueError("Please get ispyb params from one of the individual scans")
@@ -5,13 +5,13 @@ import mx_bluesky.hyperion.experiment_plans as hyperion_plans
5
5
  from mx_bluesky.common.utils.log import LOGGER
6
6
 
7
7
 
8
- def setup_context(wait_for_connection: bool = True) -> BlueskyContext:
8
+ def setup_context(dev_mode: bool = False) -> BlueskyContext:
9
9
  context = BlueskyContext()
10
10
  context.with_plan_module(hyperion_plans)
11
11
 
12
12
  context.with_dodal_module(
13
13
  get_beamline_based_on_environment_variable(),
14
- wait_for_connection=wait_for_connection,
14
+ mock=dev_mode,
15
15
  )
16
16
 
17
17
  LOGGER.info(f"Plans found in context: {context.plan_functions.keys()}")
@@ -3,12 +3,11 @@ import json
3
3
  import os
4
4
  import shutil
5
5
  from pathlib import Path
6
- from unittest.mock import patch
7
6
 
8
7
  import bluesky.preprocessors as bpp
9
8
  from bluesky.run_engine import RunEngine
10
9
  from dodal.beamlines import i03
11
- from dodal.devices.oav.oav_parameters import OAVConfig
10
+ from dodal.devices.oav.oav_detector import OAVConfigBeamCentre
12
11
  from ophyd_async.testing import set_mock_value
13
12
 
14
13
  from mx_bluesky.common.plans.read_hardware import (
@@ -38,16 +37,17 @@ def test_params(filename_stub, dir):
38
37
 
39
38
  params = RotationScan(
40
39
  **get_params(
41
- "tests/test_data/parameter_json_files/good_test_rotation_scan_parameters.json"
40
+ "tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters.json"
42
41
  )
43
42
  )
43
+ for scan_params in params.rotation_scans:
44
+ scan_params.x_start_um = 0
45
+ scan_params.y_start_um = 0
46
+ scan_params.z_start_um = 0
47
+ scan_params.scan_width_deg = 360
44
48
  params.file_name = filename_stub
45
- params.scan_width_deg = 360
46
49
  params.demand_energy_ev = 12700
47
50
  params.storage_directory = str(dir)
48
- params.x_start_um = 0
49
- params.y_start_um = 0
50
- params.z_start_um = 0
51
51
  params.exposure_time_s = 0.004
52
52
  return params
53
53
 
@@ -57,12 +57,14 @@ def fake_rotation_scan(
57
57
  subscription: RotationNexusFileCallback,
58
58
  rotation_devices: RotationScanComposite,
59
59
  ):
60
+ single_scan_parameters = next(parameters.single_rotation_scans)
61
+
60
62
  @bpp.subs_decorator(subscription)
61
63
  @bpp.set_run_key_decorator("rotation_scan_with_cleanup_and_subs")
62
64
  @bpp.run_decorator( # attach experiment metadata to the start document
63
65
  md={
64
66
  "subplan_name": CONST.PLAN.ROTATION_OUTER,
65
- "mx_bluesky_parameters": parameters.model_dump_json(),
67
+ "mx_bluesky_parameters": single_scan_parameters.model_dump_json(),
66
68
  "activate_callbacks": "RotationNexusFileCallback",
67
69
  }
68
70
  )
@@ -98,9 +100,7 @@ def fake_create_rotation_devices():
98
100
  oav = i03.oav(
99
101
  connect_immediately=True,
100
102
  mock=True,
101
- params=OAVConfig(
102
- zoom_params_file=ZOOM_LEVELS_XML, display_config_file=DISPLAY_CONFIGURATION
103
- ),
103
+ params=OAVConfigBeamCentre(ZOOM_LEVELS_XML, DISPLAY_CONFIGURATION),
104
104
  )
105
105
  xbpm_feedback = i03.xbpm_feedback(connect_immediately=True, mock=True)
106
106
 
@@ -139,15 +139,11 @@ def sim_rotation_scan_to_create_nexus(
139
139
 
140
140
  fake_create_rotation_devices.eiger.bit_depth.sim_put(32) # type: ignore
141
141
 
142
- with patch(
143
- "mx_bluesky.common.external_interaction.nexus.write_nexus.get_start_and_predicted_end_time",
144
- return_value=("test_time", "test_time"),
145
- ):
146
- RE(
147
- fake_rotation_scan(
148
- test_params, RotationNexusFileCallback(), fake_create_rotation_devices
149
- )
142
+ RE(
143
+ fake_rotation_scan(
144
+ test_params, RotationNexusFileCallback(), fake_create_rotation_devices
150
145
  )
146
+ )
151
147
 
152
148
  nexus_path = Path(test_params.storage_directory) / nexus_filename
153
149
  assert os.path.isfile(nexus_path)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mx-bluesky
3
- Version: 1.4.7
3
+ Version: 1.4.9
4
4
  Summary: Bluesky tools for MX Beamlines at DLS
5
5
  Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
6
6
  License: Apache License
@@ -220,7 +220,7 @@ Requires-Dist: flask-restful
220
220
  Requires-Dist: ispyb
221
221
  Requires-Dist: jupyterlab
222
222
  Requires-Dist: matplotlib
223
- Requires-Dist: nexgen
223
+ Requires-Dist: nexgen>=0.11.0
224
224
  Requires-Dist: numpy
225
225
  Requires-Dist: opencv-python
226
226
  Requires-Dist: opentelemetry-distro
@@ -235,11 +235,11 @@ Requires-Dist: scipy
235
235
  Requires-Dist: semver
236
236
  Requires-Dist: matplotlib
237
237
  Requires-Dist: blueapi>=0.5.0
238
- Requires-Dist: daq-config-server>=0.1.1
239
- Requires-Dist: ophyd==1.9.0
240
- Requires-Dist: ophyd-async>=0.9.0a2
238
+ Requires-Dist: daq-config-server==0.1.1
239
+ Requires-Dist: ophyd>=1.10.5
240
+ Requires-Dist: ophyd-async>=0.10.0a2
241
241
  Requires-Dist: bluesky>=1.13.1
242
- Requires-Dist: dls-dodal==1.44.0
242
+ Requires-Dist: dls-dodal==1.48.0
243
243
  Provides-Extra: dev
244
244
  Requires-Dist: black; extra == "dev"
245
245
  Requires-Dist: build; extra == "dev"
@@ -257,6 +257,7 @@ Requires-Dist: pyright; extra == "dev"
257
257
  Requires-Dist: pytest-asyncio; extra == "dev"
258
258
  Requires-Dist: pytest-cov; extra == "dev"
259
259
  Requires-Dist: pytest-random-order; extra == "dev"
260
+ Requires-Dist: pytest-timeout; extra == "dev"
260
261
  Requires-Dist: pytest; extra == "dev"
261
262
  Requires-Dist: ruff; extra == "dev"
262
263
  Requires-Dist: sphinx-autobuild; extra == "dev"
@@ -1,79 +1,86 @@
1
1
  mx_bluesky/__init__.py,sha256=Ksms_WJF8LTkbm38gEpm1jBpGqcQ8NGvmb2ZJlOE1j8,198
2
2
  mx_bluesky/__main__.py,sha256=RVqPnxDisFMIn_aoEi0drlThNHgKTJULnSrotouIKI0,480
3
- mx_bluesky/_version.py,sha256=s-Eu9jsJQLZM8_9AlFjyCzqOgTZ3BB_7dc7mXsC3CzU,511
3
+ mx_bluesky/_version.py,sha256=_khE0BvLLOXKCyxlHn8gjMAbG__XlngpoNyCPRZBxOQ,511
4
4
  mx_bluesky/definitions.py,sha256=ULpEYAUzdQiEbBoTgYTMxfUf3DDDjhYtvDxofs7Qxqw,168
5
5
  mx_bluesky/jupyter_example.ipynb,sha256=wpwvPrBvwtRMS5AIFk8F54cIlUoD0o4ji8tKK5cZHA4,1672
6
6
  mx_bluesky/beamlines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- mx_bluesky/beamlines/aithre_lasershaping/__init__.py,sha256=MGOtd-CsJYRfCVxbwwvRJSZcsqMU_uV3vsbmBd7pbHk,374
7
+ mx_bluesky/beamlines/aithre_lasershaping/__init__.py,sha256=A0dlifkBYPlCiMkTEovTcNVUCOzH5FhkUGK9y_u8lHo,603
8
+ mx_bluesky/beamlines/aithre_lasershaping/beamline_safe.py,sha256=-GTu2w7dIKtssZB8vXwE2f1zF-Pg1zC_jwBbB-r2Goo,1233
8
9
  mx_bluesky/beamlines/aithre_lasershaping/check_goniometer_performance.py,sha256=AqWAFey_Ih1JcRxVNiZDGFsVg4kvA9LH2p5SJeXfe2I,834
9
- mx_bluesky/beamlines/aithre_lasershaping/goniometer_controls.py,sha256=qYALVNt69e7mpEonTmHH4xY7ByKXi27BvCskkR8KN9I,633
10
+ mx_bluesky/beamlines/aithre_lasershaping/goniometer_controls.py,sha256=1La4vJmQdKp3_Ib1DMgavJBdYLTxp7S7dEr_lqNknV0,1828
10
11
  mx_bluesky/beamlines/i04/__init__.py,sha256=jZjAMN5_oOEjQoR3iTrnMFW3ElxlHhQ7pEQZIv21Y4I,129
11
- mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py,sha256=iYtsjr94TaYjZ0mKvL9kbs6a3ZfojuQHahfHZl1skG8,6593
12
- mx_bluesky/beamlines/i04/thawing_plan.py,sha256=95V-y9sjdXTRE7J9GU7YNARCqtWBOeYLUZ7K_2fg0b4,4999
12
+ mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py,sha256=T6K0LOwwGxB05YvS6FV-UU4O2N2GMQdEM2vj9BSow_U,6618
13
+ mx_bluesky/beamlines/i04/thawing_plan.py,sha256=uvm1wfp012GN5yE7TcURSQeDtC9nWnW5X__6UCXazjA,5085
13
14
  mx_bluesky/beamlines/i04/callbacks/murko_callback.py,sha256=ZIwkY6gdcmIE-aMBvehN8DVcjGRtb9wwzpgHJNMZ39Q,2125
15
+ mx_bluesky/beamlines/i23/__init__.py,sha256=7nwQiKBZAXLnvPhCqaI2VC1k4TOzQalOUvwF6SQ3Yd4,95
16
+ mx_bluesky/beamlines/i23/serial.py,sha256=XVbHM8NevnJMFAJD9jkxG-VnPaWX6t_k-wlipRw0pmY,2055
14
17
  mx_bluesky/beamlines/i24/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- mx_bluesky/beamlines/i24/serial/__init__.py,sha256=XnCeh2GahduKp7d9aFgNjm_SMgh6F0E5M2tk0bNFivY,1423
16
- mx_bluesky/beamlines/i24/serial/blueapi_config.yaml,sha256=gwOfjzZMbcvpVH71CCyHaxr8hgPYCJIWWWfg1zErtmM,245
17
- mx_bluesky/beamlines/i24/serial/dcid.py,sha256=Y2bL0AGPvBqQ4gbqbxjCMG2UJqqIY1B7YAW0C_UxS7Q,14530
18
- mx_bluesky/beamlines/i24/serial/log.py,sha256=oK7HHjIeuiWdy1vNZL6p-mU8Y3kzeCAgsifCxhAYqOQ,4799
18
+ mx_bluesky/beamlines/i24/serial/__init__.py,sha256=TInCdnrsp4FYLkwTZ8bzNpUrFuLrWzg9ugqwkplvPZg,1473
19
+ mx_bluesky/beamlines/i24/serial/blueapi_config.yaml,sha256=xT-czuatOKpt_a8onssDsVNx2ey-uZMoTJ4s7HPuDEU,261
20
+ mx_bluesky/beamlines/i24/serial/dcid.py,sha256=ab48UFmZT6Zuv9RNoqOLkmAgmaIr0G6UDjqr_bE0vF8,14564
21
+ mx_bluesky/beamlines/i24/serial/log.py,sha256=76-bKjjxLZEITTcALpvuwCy3KU5pTq0blnVFD9wT5cY,4798
19
22
  mx_bluesky/beamlines/i24/serial/run_extruder.sh,sha256=FXYsqdTpVgxB1-QrY4Tg5pl5Ex7PgUoXnuAcr9iDZTE,1078
20
23
  mx_bluesky/beamlines/i24/serial/run_fixed_target.sh,sha256=ZzxcVFoitBRvcqsJaBxjtepgkG-ZCGBW6X9xuV_Y478,1229
21
24
  mx_bluesky/beamlines/i24/serial/run_serial.py,sha256=Zrudosavh2HnnBXd2CLtOPs3lyQFxaN8YyO_sradRGs,1511
22
25
  mx_bluesky/beamlines/i24/serial/run_ssx.sh,sha256=0Ir5iQQ-xSN_5teHtxzht6G-mJ08mE1gxBS32vkh1eM,714
23
26
  mx_bluesky/beamlines/i24/serial/set_visit_directory.sh,sha256=heQWMqUHNERQurt2tRgU-kve2ov6L6gyNamjLTRpb48,1660
24
27
  mx_bluesky/beamlines/i24/serial/start_blueapi.sh,sha256=4iBzQljTLXQiVIF4UO7drc9qUkP7KSRC6Mjh8hcGxpI,608
25
- mx_bluesky/beamlines/i24/serial/write_nexus.py,sha256=mcW2y0syeIPjdyqDcaEasMrcbAzXFGws05ky2rCUa4c,4030
28
+ mx_bluesky/beamlines/i24/serial/write_nexus.py,sha256=3qSjvH2_0WYPuX8nUaOdsec7kIUSW0xBhCFec2tv3WM,4018
26
29
  mx_bluesky/beamlines/i24/serial/extruder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
- mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py,sha256=NK_9gzVQqm5JgmEbw-hb7DS9R3v43FPIdEt1eHm1GRY,18884
28
- mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DetStage.edl,sha256=9L1CgEdxZD4N3QvM5HLlAlJTcxpzd4ahB2nVJ9jHujw,2013
29
- mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl,sha256=JsvqKR_NPbnJsWhAeIhCIUFAZ_ZH2CAt8FCOoMrLH7o,31349
30
+ mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py,sha256=upg_8uQ-DMzQckjoDSt0VjoxxayfX09WvphCTVGBNM8,19462
31
+ mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DetStage.edl,sha256=Uqw7u7Lqn6SRZxOoo4E7XwEueTI0eXylXpgBL66DXrI,1974
32
+ mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl,sha256=lRFa3LEIqc6Yar2XjCT3T1KKG9cHBW0AK96nsfss0bE,30896
30
33
  mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/microdrop_alignment.edl,sha256=K79vmGAcf9qVEQLXTgr0g4bZDWaJ7nFoK4e0Ex7qAwM,14690
31
34
  mx_bluesky/beamlines/i24/serial/fixed_target/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
35
  mx_bluesky/beamlines/i24/serial/fixed_target/ft_utils.py,sha256=puO1vg0x-TPgv8FbEFg73ohJqbwDpcG50_2cLUTa2FA,1210
33
- mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py,sha256=Ncr008eHFlr-xaF7yK7MVc-NhmjQqBgK36udX8pp82Q,26384
34
- mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py,sha256=aQHcB0vVvbO9jWa3DKjYASl-CWd4gpBKRFK2xMJdZxA,32926
36
+ mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py,sha256=lMGbqiJPcn-V8l3t9_BZi3BBJi3aNNxyrQYFNvapIgs,24878
37
+ mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py,sha256=cuv37pLsyNgf7sAnGiHMt0Ql3bJM6RUZR2esGUZNfR4,33091
35
38
  mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py,sha256=Vokr_Gl_lpqcUwG18C2h8TYMmyTx1HmUSDd9zgR9-7M,3275
36
39
  mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_moveonclick.py,sha256=QLg4wryENBeFfOYFaIgE9R12r2KvUuKIP9ZY8iyYibY,6582
37
40
  mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl,sha256=H9BVU1S3oy8tAVHtKvJvp7YTHA-4X-jtOtiu3jJ7of4,10348
38
- mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DetStage.edl,sha256=WBji5SaRQ5e0KFRgrPuv6IgaFxkal1jh7MZW8SqQN88,2016
39
- mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl,sha256=-O_kRA5-m741Mja8OXQlGJWrRu9uBUkTvJ_uqUBjuFY,56616
41
+ mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DetStage.edl,sha256=EOhu9lhayhfElypEyVuH7VoNEB6rjSIk-9697A7DK1M,1977
42
+ mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl,sha256=hetE5eKgjdJbcaxaRDAfF_d3oPNMLKXMbVsjCztZs-4,55873
40
43
  mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl,sha256=cpKpXfU668mGjIz35jUMTF8KAi0RI7WlVO2AR-EnJ8U,60868
41
44
  mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl,sha256=LI6Z5J1ugny0hX3NrfKx0CC3QdfnohokxYwcyPW-6XU,38124
42
45
  mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/PMAC_Command.edl,sha256=2KUy2iEcX9AC07zSH3Sp97b5qauGIm8_HjvoQ4pkyCU,1417
43
46
  mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/Shutter_Control.edl,sha256=o2PDoIFzeErIUijDbGdfWdrh3wd5GFAqEsDD2at2a4k,1601
44
47
  mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl,sha256=8TWQTIBnX3OLa1kjsibsCnG5wCVotPYIOHwFam7rJe4,14679
45
48
  mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/nudgechip.edl,sha256=IgLLF7gcNoG8Z4t9FTA7_4ggUccNm6-ekK5bb0V4ekY,15711
46
- mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl,sha256=CrCo1nSIzT3OcSy4OXq1vu4lz5OvI4U8-yl-ruQ57m4,22665
47
- mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/short1-laser.png,sha256=wDNuKCa_8hUPy4W01vdIrfdZtCyQKT8qVS5AS6kOTmo,9740
48
- mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/short2-laser.png,sha256=MrdiCFX7j-ODkfSdzc4NQ_8hj2Gs8i9gQqWyNXvdM5s,10189
49
+ mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl,sha256=7K_yMC_52x6DVTgamkei1pSGSGp4t7bx3vUmEaQx-4I,22639
50
+ mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/s1l.png,sha256=wDNuKCa_8hUPy4W01vdIrfdZtCyQKT8qVS5AS6kOTmo,9740
51
+ mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/s2l.png,sha256=MrdiCFX7j-ODkfSdzc4NQ_8hj2Gs8i9gQqWyNXvdM5s,10189
49
52
  mx_bluesky/beamlines/i24/serial/parameters/__init__.py,sha256=fdXGnTxNRyWV1cqVv8lQmwhUpUWDoz_VIRlo6KGwvS4,615
50
53
  mx_bluesky/beamlines/i24/serial/parameters/constants.py,sha256=uJE3K7p1s8rXrgA0vH2JKrTaitH5ZDqLoSp_0ZmSCB4,1815
51
54
  mx_bluesky/beamlines/i24/serial/parameters/experiment_parameters.py,sha256=n6nRgycKMp5GuxwNoU30CP9enW7vTtTKHKIcIOH9ABY,4879
52
- mx_bluesky/beamlines/i24/serial/parameters/utils.py,sha256=VcCEBjC8WSrf85Q20A6dwnsy4IxvjcB4JSlbYKz_CVM,2673
55
+ mx_bluesky/beamlines/i24/serial/parameters/utils.py,sha256=ugRG7Es74NLXwaJtiCq850g-TK4N7u-qjiUdUVnZifg,4076
53
56
  mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/cs_maker.json,sha256=xT3y7SSWjVTAJ58dzwNnEgBdn10A6T8umR18n5xt508,142
54
57
  mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/motor_direction.txt,sha256=oIPpcQpqCrKz5dPZ-qQ5gQ2Sdqtj6nsnf66pN8PGU50,199
55
58
  mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar,sha256=SN4deU199dMcA1Bcx1BF6CBMvoSszxJWZC6vt7_5fHc,284
56
59
  mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/oxford.pvar,sha256=pZbFOEiN_S5yiTEtqdNHmTMtnQY-W2ImXVBYCovPCx0,1842
57
60
  mx_bluesky/beamlines/i24/serial/setup_beamline/__init__.py,sha256=UhBdMcPdJMzwV0d8DKOBzvYNd6TDSwcP9GJVqfGa7Jc,261
58
61
  mx_bluesky/beamlines/i24/serial/setup_beamline/ca.py,sha256=H2gPmsLheYReFlGPFa5zzWbnyqdWbCmgKiAwcpVoYfk,1516
59
- mx_bluesky/beamlines/i24/serial/setup_beamline/pv.py,sha256=YSJnx-o562Lh9zYkQfYCPL7cJxcc_7Ypp6XrFodoJqw,15639
60
- mx_bluesky/beamlines/i24/serial/setup_beamline/pv_abstract.py,sha256=WbD5ghgTG0F3-MR0XYm4nkiKYswVP5a2COYx_k_cngE,1806
61
- mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py,sha256=Yx99IzxIpm556GXei5IOWCeSSzD4oQK-G0_mvCTYjlI,21251
62
- mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py,sha256=l8GCfAQYs_sMeFYgBuT10f8WFuJVr8q8CTmONNDBrpY,3171
62
+ mx_bluesky/beamlines/i24/serial/setup_beamline/pv.py,sha256=9Up7ob1UMUG438SKjW7Ffn6OFiurC7Qpl0v19nwDjQQ,15601
63
+ mx_bluesky/beamlines/i24/serial/setup_beamline/pv_abstract.py,sha256=DVimjuvZYJoCaIswuO6YYVDtbLgZp33KQFmnlb9ngDY,1804
64
+ mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py,sha256=1JU9eEygAX1bYA-pMlLC4dPMnd2KdaMRVtEpEWX-JM8,20982
65
+ mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py,sha256=niJJjPkk1fSDr__Upf-9DbBkoPrFn8Gz_eTPgO0WpE8,3221
63
66
  mx_bluesky/beamlines/i24/serial/setup_beamline/setup_zebra_plans.py,sha256=oRNZLA2uxiRM5eheAuRMM5eT0Oxe1YHqg59BHys3sXY,17970
64
67
  mx_bluesky/beamlines/i24/serial/web_gui_plans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
- mx_bluesky/beamlines/i24/serial/web_gui_plans/general_plans.py,sha256=R1VwqqhPAfG0C8DtIu1ymPpWqJBxYdoWSc0lAdqi1Tk,3538
68
+ mx_bluesky/beamlines/i24/serial/web_gui_plans/general_plans.py,sha256=BtZaTZJGSv_Je2UleDJTsy8HLiuc_C5YP4c46K3UOgo,6609
66
69
  mx_bluesky/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
70
  mx_bluesky/common/xrc_result.py,sha256=J1uB9Bujz_Sq_MwvYdWOZL3c6kX09TSaZW3eetRXBpw,2351
71
+ mx_bluesky/common/device_setup_plans/manipulate_sample.py,sha256=6iE47tjD8M-MJiRv6HMfMH5XLTFKNUzrQhB2PQIxrLw,2998
72
+ mx_bluesky/common/device_setup_plans/position_detector.py,sha256=S49ml0KNZ6wXPQqOxNJ2whKTCyRTcKdBXBhyeEyFDQQ,635
73
+ mx_bluesky/common/device_setup_plans/setup_oav.py,sha256=7WLElZZU5mWq9g2WP86p3P81uiSPuj2V4kIkqXlap3o,2692
68
74
  mx_bluesky/common/device_setup_plans/setup_panda.py,sha256=OF-ZygZyAyQEUdrAWiIxWZ6QhAsVx4Mm9ngRYB1mzKI,433
69
75
  mx_bluesky/common/device_setup_plans/xbpm_feedback.py,sha256=WsUMdeOZBgbj-bFp7x66aHp2oWffQmjyp61-qmtQAmI,2153
76
+ mx_bluesky/common/experiment_plans/change_aperture_then_move_plan.py,sha256=IY5pq8ni_LKD4LTZG0bbKrC3fEXAnxiunIkp6Oray_c,2897
77
+ mx_bluesky/common/experiment_plans/oav_grid_detection_plan.py,sha256=BhwCm-uFQJjgtElfj1Q5DZpKFqRae5iU9Vm7ReX1M4c,6982
70
78
  mx_bluesky/common/external_interaction/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
79
  mx_bluesky/common/external_interaction/config_server.py,sha256=EmvLfOkvoJlnKa0sffAKNICkY26YsQQqY9sYHKmOGzw,2441
72
- mx_bluesky/common/external_interaction/test_config_server.py,sha256=4wdYsOpXJfc3yNBZvdcjZGSllOHzKBTB8oYFjjSOufU,960
73
80
  mx_bluesky/common/external_interaction/callbacks/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
81
  mx_bluesky/common/external_interaction/callbacks/common/abstract_event.py,sha256=iBj4WNK5ikieZzTePBZ9AEu6ehlnpew1nDK3ONJqibI,2093
75
82
  mx_bluesky/common/external_interaction/callbacks/common/grid_detection_callback.py,sha256=JmF5FssUqNPgsnxqrgxB9Pmw5Dd7W6GCPb9Mur8DHCo,4017
76
- mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py,sha256=8uvPwDNSk8gBQq0aRd5To0jFSyxeKkFhFbBjy_LBviE,9821
83
+ mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py,sha256=Bk5dpAUunuNbhor7MfOc7qRKhbIAhRbtfBKzSTUeUnE,9875
77
84
  mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py,sha256=bHtnDZfxIR5zzSRiBSehZ51y42wzkEcCJ7rFg93aONA,2578
78
85
  mx_bluesky/common/external_interaction/callbacks/common/log_uid_tag_callback.py,sha256=pfZxQfS9SnXep3F2YAPptDX5bjjWvbXtgy5fINfsoTU,626
79
86
  mx_bluesky/common/external_interaction/callbacks/common/logging_callback.py,sha256=NHb8Gp86TAk6PRTV3inWrlW-Lj96LmnZda7ZGewlrFA,712
@@ -82,88 +89,84 @@ mx_bluesky/common/external_interaction/callbacks/common/zocalo_callback.py,sha25
82
89
  mx_bluesky/common/external_interaction/callbacks/sample_handling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
90
  mx_bluesky/common/external_interaction/callbacks/sample_handling/sample_handling_callback.py,sha256=niZ7CG1vqbp0MUjRfchevmLwJMg-puMz4i_HDPQavI0,2880
84
91
  mx_bluesky/common/external_interaction/callbacks/xray_centre/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
- mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_callback.py,sha256=7GzE5u1dd5vhl_LS9ud5B7XapofIcf_yicb7vtZT1A0,13938
92
+ mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_callback.py,sha256=niNZLRO3iEFIM6PFnS5byl4n9X6GwZR0NRzDmy9IFyQ,12634
86
93
  mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_mapping.py,sha256=fOYJkqaXEfCdLGQwGhTrzfGOj6Ed3t2wcRgv68DOOHc,1790
87
94
  mx_bluesky/common/external_interaction/callbacks/xray_centre/nexus_callback.py,sha256=64ZA2ACcq8mI9tKG1MMTf46PYdb_B-sul8xQGM56_WA,4709
88
95
  mx_bluesky/common/external_interaction/ispyb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
96
  mx_bluesky/common/external_interaction/ispyb/data_model.py,sha256=HJZPT_j5EMK7-j-0tdaugiS3kDp44_jzvVoP-xcFCsA,2738
90
97
  mx_bluesky/common/external_interaction/ispyb/exp_eye_store.py,sha256=Y3nZV5NZ-XnYThettFMhZin4dQb5jAZfT2mGmtLlv74,6076
91
- mx_bluesky/common/external_interaction/ispyb/ispyb_store.py,sha256=7dQ7BVL_dwQ6UTRivBo9bzvziJeyNFzIIUatSsweres,11070
92
- mx_bluesky/common/external_interaction/ispyb/ispyb_utils.py,sha256=Kv0JQVaT8z9Qzt6L1NJEx0U7ZYD6NeyBGF1_wGcI1Dc,728
98
+ mx_bluesky/common/external_interaction/ispyb/ispyb_store.py,sha256=YMHENdmzzErRc4AxbpgMIGXmULrd6DmiqKfq8rP8fBc,11183
99
+ mx_bluesky/common/external_interaction/ispyb/ispyb_utils.py,sha256=5-8wHmY1KvMuRpXUxN5YBCQP3M-Jk-sTcfDm-CC84Mw,732
93
100
  mx_bluesky/common/external_interaction/nexus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
- mx_bluesky/common/external_interaction/nexus/nexus_utils.py,sha256=UmBlTi9zvSV_MxcDV74yJ5Y4oIDHDanCtBjX6_SEf94,5589
101
+ mx_bluesky/common/external_interaction/nexus/nexus_utils.py,sha256=n97KHJJd_C59SOVJHcJ3RbNkvxkoUrF6fIJx3jXBuI0,5580
95
102
  mx_bluesky/common/external_interaction/nexus/write_nexus.py,sha256=tIz9PFFSiaUs1olbMtLGHddTLj132rEuFSWBK9rOM6Y,4087
96
- mx_bluesky/common/parameters/components.py,sha256=Ru76EFT2wG4oPeJge6lVwq1vCHYd7T0EFuqp13EoJk4,7299
97
- mx_bluesky/common/parameters/constants.py,sha256=S3Y4uwOn18skz5y_WTI8naP-rE80CKG03aGZM2IC9js,4684
98
- mx_bluesky/common/parameters/gridscan.py,sha256=a-jR6EuxEOj9ddRv5NvPQvC5rwPpY3b3_T78d2NvVtI,6993
103
+ mx_bluesky/common/parameters/components.py,sha256=z4UD4GZF5dhn-8mMUCfX1nKfXgpricqdAVY6azNfRWM,8284
104
+ mx_bluesky/common/parameters/constants.py,sha256=yB-yV2RH8wBueEp6dAl87_JwssKgU8vxjwNbENjbjZA,4426
105
+ mx_bluesky/common/parameters/gridscan.py,sha256=XHlXi6zSJoag11hrS4_k44v_NZSIdCS-QBveben2nPw,7034
99
106
  mx_bluesky/common/plans/__init__.py,sha256=FMA-4VN1TJCPcyURKF0qPIQ8uo8YBbtHPRdJokVF4MA,129
100
- mx_bluesky/common/plans/do_fgs.py,sha256=6aFWvQAuDgBfySzKgt567U_aoDYhAxfUhEDpn3wMjSQ,4775
101
- mx_bluesky/common/plans/read_hardware.py,sha256=s3Mz11wQOnzO4i4BvV6yWzpDvtQtjZnY-clENH7CVQU,2332
107
+ mx_bluesky/common/plans/common_flyscan_xray_centre_plan.py,sha256=83qzhnuLOPZi6EVGMUHtjPNIg92PexHkY2JanesrWGU,12404
108
+ mx_bluesky/common/plans/read_hardware.py,sha256=Og7Uz8lAB1_Z6puN6ws_2kwOqCvgQMqfmyZPFZMRneY,2351
102
109
  mx_bluesky/common/plans/write_sample_status.py,sha256=pmS4Lsndp90CCIKzD_wssvbzt1qu7rEzfXgxvDwDrQ8,1313
110
+ mx_bluesky/common/plans/inner_plans/__init__ .py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
+ mx_bluesky/common/plans/inner_plans/do_fgs.py,sha256=6aFWvQAuDgBfySzKgt567U_aoDYhAxfUhEDpn3wMjSQ,4775
103
112
  mx_bluesky/common/preprocessors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
104
113
  mx_bluesky/common/preprocessors/preprocessors.py,sha256=BNpSM7S9gxhVbG39rjH14k89sOmKiII0cqApH3pF_H0,4476
105
114
  mx_bluesky/common/protocols/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
115
  mx_bluesky/common/protocols/protocols.py,sha256=I-Yd1AFDarfTe14fMgv0VONEJ-9K-5IwDAItNWZPZ90,298
107
116
  mx_bluesky/common/utils/context.py,sha256=Fe_YSNv3ZEIZvpdWs-9UqiG6-xEEdCpK6oMYYdCSYT8,2198
108
117
  mx_bluesky/common/utils/exceptions.py,sha256=aB_26oowu7gvoaWWKpiBEllrvtGG-Hd6HLsE86mQgKI,2153
109
- mx_bluesky/common/utils/log.py,sha256=ZgFZu6zSutGD5A0FDp_n9M0rJ6gU1FuZCmD-r5suchY,3913
118
+ mx_bluesky/common/utils/log.py,sha256=CepibF7U5GnN-ICl4bmhbEwqRzWsSFyfNtBDJejK0eo,4325
110
119
  mx_bluesky/common/utils/tracing.py,sha256=stnBZIvPuKiAm2wVc8lFr3ns7V5C52rUigULi9V-IFs,1171
111
120
  mx_bluesky/common/utils/utils.py,sha256=q2uCaK1E8zLVk1BFmj7qlTnQf3JRKjCjyadIVnL1-4M,1180
112
121
  mx_bluesky/hyperion/__init__.py,sha256=f4E8wInL1Ll4eeFtAiyKmipOBTPlUtKmVK-m_LOQG4M,35
113
- mx_bluesky/hyperion/__main__.py,sha256=3Gl9MGw4SW1Gaoz9ckhwk2Vv5xzDM142OGri1jA8l9E,12009
114
- mx_bluesky/hyperion/baton_handler.py,sha256=rYAizzWeO-OYlU5N1nE5tX5eZUhw83D7Mh2jC9DvSEU,3238
122
+ mx_bluesky/hyperion/__main__.py,sha256=2TEoxvKU3JaG74rW3VKCf-DQhl6CRl_eZNQ0u5dW6EA,11406
123
+ mx_bluesky/hyperion/baton_handler.py,sha256=AC3Qca5d3KdM5eN2nTqA2HmPkN4ZciOuCxtCKLfK0Uc,3276
115
124
  mx_bluesky/hyperion/device_setup_plans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
116
- mx_bluesky/hyperion/device_setup_plans/check_beamstop.py,sha256=PG2AXIB_z7U0glz9MTHkapaokMgrHyYSoKYSIGaRgLE,844
117
- mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py,sha256=68L4Fd8nvvH_VeQJfOYK_3WLrlKRt09TRsaA9T2uqU0,4703
118
- mx_bluesky/hyperion/device_setup_plans/manipulate_sample.py,sha256=fuNRH8slknuZ0iNVv2htiuDozc9LzvxUrWuwYQTtLt8,3293
119
- mx_bluesky/hyperion/device_setup_plans/position_detector.py,sha256=S49ml0KNZ6wXPQqOxNJ2whKTCyRTcKdBXBhyeEyFDQQ,635
120
- mx_bluesky/hyperion/device_setup_plans/setup_oav.py,sha256=jVbDCSKDXxJXPfr-dR6dQgKLPmh7pzewj8gH9y-psy8,2564
125
+ mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py,sha256=iQawC-nIOVSoMMSYl4mleIkVYs-BaKKMTgOWX4efHTg,4723
121
126
  mx_bluesky/hyperion/device_setup_plans/setup_panda.py,sha256=96eFp4acQLOthe1PA-S14uv635uGVP71DpP7qy_uo40,8509
122
- mx_bluesky/hyperion/device_setup_plans/setup_zebra.py,sha256=q4KRAufuUi-G6xGKYLhmxhLr8EcTu08HMBca5OpigxM,10177
123
- mx_bluesky/hyperion/device_setup_plans/smargon.py,sha256=Zzej-9uBVTzZuB4lv9QRiHeJKq_3-lnXOhCqZZIZV-o,789
124
- mx_bluesky/hyperion/device_setup_plans/utils.py,sha256=Hdw_tocY6scVaVc2jlsNG-W4vS0LCbEKF8g5kDRuAeQ,2216
125
- mx_bluesky/hyperion/experiment_plans/__init__.py,sha256=3fNT6-LpOen_sfYv95FkMiuHiCuVaSOBx7BMBHXkYoE,942
126
- mx_bluesky/hyperion/experiment_plans/change_aperture_then_move_plan.py,sha256=vWPhmm3p3jmVfkpasFQYZNYCgyyVYx5Xi-8aHn56w0c,3023
127
- mx_bluesky/hyperion/experiment_plans/experiment_registry.py,sha256=aSpo7pWQ1X_Y0a42TYv8LmJ8DNzvX5u5y0V2549MZCw,2096
128
- mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py,sha256=AuRn-ti0T5XNwHPDYzsiJBbLZutUvYDbiikwwY-ONNs,17278
129
- mx_bluesky/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py,sha256=MuYjeY0JVK6lE4w0b45tJthVi9_AkQDWFB0XfEu84Ps,8524
130
- mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py,sha256=VSTZZBw6Bo8nh4qEFknXYeKa11oHF0lUjcSIOY2196g,4793
131
- mx_bluesky/hyperion/experiment_plans/oav_grid_detection_plan.py,sha256=PRwV04KuvefTm4mV4iE-hB3lLb5LAmJshYKfMnLE-k0,6950
132
- mx_bluesky/hyperion/experiment_plans/oav_snapshot_plan.py,sha256=DAQZzyw8-yNsUpVWlXFFOtoyUVEh8EskmyBgdSTExqU,2748
127
+ mx_bluesky/hyperion/device_setup_plans/setup_zebra.py,sha256=_PnV4PyrcoN7_CBi-HLWWNMKMKarpFUTcNcXsEx3sZo,9076
128
+ mx_bluesky/hyperion/device_setup_plans/smargon.py,sha256=9znQLGF8Uqif1SZ_H4GyqcnhR3xCI1FIniCaGLRY3zM,758
129
+ mx_bluesky/hyperion/device_setup_plans/utils.py,sha256=z5ybrrbkcpoTXpEqufDdNqRi1zgcSyMZzVYdPm6xdmE,2246
130
+ mx_bluesky/hyperion/experiment_plans/__init__.py,sha256=JhJ9c2V1f1gwAVkuVBuvgBu7LKdgbrp9MBkh7JUefAY,760
131
+ mx_bluesky/hyperion/experiment_plans/experiment_registry.py,sha256=b9ROMppIQPxsR7IBMcBOHTVKB_Vrv5QSG7xqCc7_41g,1674
132
+ mx_bluesky/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py,sha256=o5l4pWCzGH-Z3PBy7Y9N_xMbfS_ZxRsw5t-OLt6ynCI,7994
133
+ mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py,sha256=5AK0-mY6e8-x6w_Uj41FnS4pvdbLniTdmznAUZPGbpg,6550
134
+ mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py,sha256=kdp1dWh4g-w9Bob3L7VoiTDAVNkxwrvKvSGcEMzZCBc,6177
135
+ mx_bluesky/hyperion/experiment_plans/oav_snapshot_plan.py,sha256=YU_lwG6rlPtrS0KfUxmJb9fgH8jCfpZQzpaBxFudadk,3595
133
136
  mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py,sha256=5ZAH17F5T1YyVgA2ML0NEf4ufrD1G0jPRU0_5pINdTg,16195
134
- mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py,sha256=MT1uuxF6g4BGrdKV3MAYO91VLaiBP7VMGdYtx1wyaJA,5006
135
- mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py,sha256=AF7B84s0QGUoSKxPvpU0pBW8xt30qg_LN9gWq3nE2J0,6249
136
- mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py,sha256=vHAm3AdDaTNeDZ3zc-z6pP1bYXl7c5WImsTI5hutofQ,7917
137
- mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py,sha256=fwaDoKvFN0gRIAiR1XxD0xqpHIVLAfoX561cEuBFiWk,6731
138
- mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py,sha256=y0HnhKRMweFwkt9wpJ4Dd4rMIqugAG_i-b_MShcQ6Dc,17260
139
- mx_bluesky/hyperion/experiment_plans/set_energy_plan.py,sha256=aYgutFhMQjcB_q02t-TXkWLkBCS8BeBIwqBdMNEHYVE,2635
137
+ mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py,sha256=DCD2oUx6n6VL6JaBQU779opOPxHr-UY0dQrSIW2hWus,5002
138
+ mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py,sha256=FP_tAhq7Txljbxvvr3eEMoapDtXj8siPyWd9qcYevBg,6247
139
+ mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py,sha256=imANEAVswFFaMqTISRXSe0BwcUkQ1sIT8O-WnKsxhqM,8082
140
+ mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py,sha256=I1kdngl_FwJN5GiWA9LYgp13VZ_EjWHsBCy2GmdeP2w,6841
141
+ mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py,sha256=az_LYhT7cKTM0z_Y8cdu2zMQKJ9m0ege-uARwmyjEqc,15855
142
+ mx_bluesky/hyperion/experiment_plans/set_energy_plan.py,sha256=8FAqN-aJgRwZSiCX-hNdeGmaijt0l8owdShVBwNchfE,2643
140
143
  mx_bluesky/hyperion/external_interaction/__init__.py,sha256=95DwXDmKsx36RgAL-AtLZl2LQoLPKbzeYdlkkP_4Coc,559
141
- mx_bluesky/hyperion/external_interaction/agamemnon.py,sha256=Y7v5MASzZ6pNgSVSfDzc_bl_ErmWQyFhQW6uEfO6YnU,9418
142
- mx_bluesky/hyperion/external_interaction/config_server.py,sha256=ZI9QCyWLPKzV3stEpXrg7T2IyRb8Y3dd6LWI30tYvqw,1825
144
+ mx_bluesky/hyperion/external_interaction/agamemnon.py,sha256=Bh6vIg3edjjKmWKZj_IDFYDmGN5pC_FeCCgSFJQiUKc,9984
145
+ mx_bluesky/hyperion/external_interaction/config_server.py,sha256=_nHoHcEXhKSFTszTu57Y5FSCP5Xogmyy8FVwYRraAy4,2146
143
146
  mx_bluesky/hyperion/external_interaction/callbacks/__init__.py,sha256=1XHaxDljMveu_DYIlk7n963gHffyC6r4C_RhF6HA-N8,283
144
- mx_bluesky/hyperion/external_interaction/callbacks/__main__.py,sha256=Xvhr_h8-net89376qZbHmonIOP_U6y7N_Aw7-srVScc,6106
145
- mx_bluesky/hyperion/external_interaction/callbacks/snapshot_callback.py,sha256=zJ13Clnvb4Ef-3qpg5U58tXpPc6oAmbC3hLWdrQhDPQ,4758
147
+ mx_bluesky/hyperion/external_interaction/callbacks/__main__.py,sha256=1Uu4oT-qnJb2LHQinHrLvN0zBTuz0EZ8HEmqfFrAJE4,6155
148
+ mx_bluesky/hyperion/external_interaction/callbacks/snapshot_callback.py,sha256=Yg9i9YNeQLll9KEtic5omAqZohrlQ4DXdhp0fjGNz5U,11581
146
149
  mx_bluesky/hyperion/external_interaction/callbacks/robot_load/ispyb_callback.py,sha256=7xSvCd95tXjvmsbFLecI1hEwJj_rm8yGuJJ1Pmg-RKU,4142
147
150
  mx_bluesky/hyperion/external_interaction/callbacks/rotation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
148
- mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py,sha256=eFKpDEJaH6zluhNZZkrWOW0BRIjj-Bs2xiGbun7pnSs,7442
149
- mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py,sha256=yz2Z_P6qH2DGlSXCi36E3Xwv7mVVcvYzqQc0NqwW4DI,716
150
- mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py,sha256=w86HvDMznS1wBH3mLYJMe2TgX8SghTYR4G6dajho3Pk,4724
151
+ mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py,sha256=KJ1lXurzvvy7eS0W3KDXfnsWzbftsjBUxR0SS0rC0Mg,7460
152
+ mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py,sha256=bba5ZHoOMqvSCUXJIxbx55HGhaoC_Jqhyxxb-ttqt5g,801
153
+ mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py,sha256=QxLjRqoKSmEC9TbTK6mufbWXRcmzLfe9xZclEhUbxIw,4736
151
154
  mx_bluesky/hyperion/parameters/__init__.py,sha256=kf2wfcILBUBpT0tJ8-W39BywQUkn67yxl9IVsfrr1LE,115
152
- mx_bluesky/hyperion/parameters/cli.py,sha256=tw8u-_THJ69_Rn8IzeEWjwfUJO8VsTKKqz9K0iZHls0,1796
155
+ mx_bluesky/hyperion/parameters/cli.py,sha256=zciAE1-7Ahx0B8-RNNk25hB40xBMrmrR7cK1GbEDgaM,1177
153
156
  mx_bluesky/hyperion/parameters/components.py,sha256=uXxdW6nIE1VZnh4ZXe5O-LOwsx4MbENEWfLGm2ACvsI,313
154
- mx_bluesky/hyperion/parameters/constants.py,sha256=9divI1XYUDsGq3HGm2ehq1yGGOD7tUf66xWvhVxEpB0,1982
155
- mx_bluesky/hyperion/parameters/device_composites.py,sha256=iBm3qNFBG8dmVW4BPAwnhdi-HvpJ-6AuM1ZZceUembE,1645
156
- mx_bluesky/hyperion/parameters/gridscan.py,sha256=G49cDDRRh9HWVY8N71K6GWjKkHU04hNse0Mhe-1vsSQ,6018
157
- mx_bluesky/hyperion/parameters/load_centre_collect.py,sha256=khLBCSeafuw0dNrvDTvKv4GrlBo1LXJZ87NTI1A92jw,3693
157
+ mx_bluesky/hyperion/parameters/constants.py,sha256=EbMhqD9VJTTMABqDgZAYcZdJ1M6IGvJerTZI-5lONYU,1891
158
+ mx_bluesky/hyperion/parameters/device_composites.py,sha256=zFN-Pog5jUewBygIFyTvxBXC6jo_Of_C3Qo5UGV5u0I,2802
159
+ mx_bluesky/hyperion/parameters/gridscan.py,sha256=LcKfL8LUrQlEeehxawL_GebUxVyKYCJuJysMp5W0t_s,3799
160
+ mx_bluesky/hyperion/parameters/load_centre_collect.py,sha256=1KsL9pk1iJAmCJIn6R560tkrh4hU2pp7dFKVbVb-zYU,3673
158
161
  mx_bluesky/hyperion/parameters/robot_load.py,sha256=DSOwIosO629WoXbVFokEjmgqKZz3xzv0feRQHC_ZgpI,1233
159
- mx_bluesky/hyperion/parameters/rotation.py,sha256=5OVstRvUMf4X9QqcyTZc5GaYNsaVuU1W3Y36uop38co,7520
162
+ mx_bluesky/hyperion/parameters/rotation.py,sha256=wziJtpx9bgBbNsqwVs8fVZlAOflOEoiRzSvgtmB_1b8,7462
160
163
  mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml,sha256=mhLBJTSjHCkM9F6mjtqbhNmmrV8qSctbCUfhb0q7pYo,28085
161
164
  mx_bluesky/hyperion/utils/__init__.py,sha256=f4E8wInL1Ll4eeFtAiyKmipOBTPlUtKmVK-m_LOQG4M,35
162
- mx_bluesky/hyperion/utils/context.py,sha256=JztC2qhd8ChAGYNUltJnuld_r2zYA37J3LiwxRE3dxQ,604
163
- mx_bluesky/hyperion/utils/validation.py,sha256=a23OeppZcEMWDffbCk8UFlOk26jS9i9IhTWPkQhP28s,6743
164
- mx_bluesky-1.4.7.dist-info/licenses/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
165
- mx_bluesky-1.4.7.dist-info/METADATA,sha256=h1Y0Q0e_XKcYDaeGkj6wzyspW4TnTd3lf188W2Ja-_g,17304
166
- mx_bluesky-1.4.7.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
167
- mx_bluesky-1.4.7.dist-info/entry_points.txt,sha256=-hM2jXf6TAwgqnUHaEVx02j7sdB0L_WaeHW_tIRuj6o,600
168
- mx_bluesky-1.4.7.dist-info/top_level.txt,sha256=S4rrzXIUef58ulf_04wn01XGZ3xeJjXs4LPEJ_xoF-I,11
169
- mx_bluesky-1.4.7.dist-info/RECORD,,
165
+ mx_bluesky/hyperion/utils/context.py,sha256=TXvARIUZNLcz-KY_-xPkQvK-tMe1sV_cjFDh6IqPgfo,568
166
+ mx_bluesky/hyperion/utils/validation.py,sha256=5rCvANMbgk1OC0X4bTZWoO-nRhBaM0S6sMvoSYdeR1c,6650
167
+ mx_bluesky-1.4.9.dist-info/licenses/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
168
+ mx_bluesky-1.4.9.dist-info/METADATA,sha256=RDKjEGQVuHICiWqUDHwvuQc1sfIcasJxeVMGJmWAjhY,17360
169
+ mx_bluesky-1.4.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
170
+ mx_bluesky-1.4.9.dist-info/entry_points.txt,sha256=-hM2jXf6TAwgqnUHaEVx02j7sdB0L_WaeHW_tIRuj6o,600
171
+ mx_bluesky-1.4.9.dist-info/top_level.txt,sha256=S4rrzXIUef58ulf_04wn01XGZ3xeJjXs4LPEJ_xoF-I,11
172
+ mx_bluesky-1.4.9.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (78.1.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,38 +0,0 @@
1
- from functools import cache
2
-
3
- import pytest
4
-
5
- from mx_bluesky.common.external_interaction.config_server import FeatureFlags
6
-
7
-
8
- class MockConfigServer:
9
- def best_effort_get_all_feature_flags(self):
10
- return {
11
- "feature_a": False,
12
- "feature_b": False,
13
- }
14
-
15
-
16
- class FakeFeatureFlags(FeatureFlags):
17
- @staticmethod
18
- @cache
19
- def get_config_server() -> MockConfigServer: # type: ignore
20
- return MockConfigServer()
21
-
22
- feature_a: bool = False
23
- feature_b: bool = False
24
-
25
-
26
- @pytest.fixture
27
- def fake_feature_flags():
28
- return FakeFeatureFlags(feature_a=False, feature_b=False)
29
-
30
-
31
- def test_valid_overridden_features(fake_feature_flags: FakeFeatureFlags):
32
- assert fake_feature_flags.feature_a is False
33
- assert fake_feature_flags.feature_b is False
34
-
35
-
36
- def test_invalid_overridden_features():
37
- with pytest.raises(ValueError, match="Invalid feature toggle"):
38
- FakeFeatureFlags(feature_x=True) # type: ignore
@@ -1,27 +0,0 @@
1
- import bluesky.plan_stubs as bps
2
- from dodal.devices.i03.beamstop import Beamstop, BeamstopPositions
3
-
4
- from mx_bluesky.common.utils.log import LOGGER
5
-
6
-
7
- class BeamstopException(Exception):
8
- pass
9
-
10
-
11
- def check_beamstop(beamstop: Beamstop):
12
- """
13
- Check the current position of the beamstop to ensure it is in position for data collection
14
- Args:
15
- beamstop: The beamstop device
16
-
17
- Raises:
18
- BeamstopException: If the beamstop is in any other position than DATA_COLLECTION
19
- """
20
- current_pos = yield from bps.rd(beamstop.selected_pos)
21
- if current_pos != BeamstopPositions.DATA_COLLECTION:
22
- LOGGER.info(f"Beamstop check failed: position {current_pos}")
23
- raise BeamstopException(
24
- f"Beamstop is not DATA_COLLECTION, current state is {current_pos}"
25
- )
26
-
27
- LOGGER.info("Beamstop check ok")