mx-bluesky 1.5.2__py3-none-any.whl → 1.5.3__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.
- mx_bluesky/_version.py +16 -3
- mx_bluesky/beamlines/i04/__init__.py +7 -3
- mx_bluesky/beamlines/i04/experiment_plans/i04_grid_detect_then_xray_centre_plan.py +3 -0
- mx_bluesky/beamlines/i24/serial/blueapi_config.yaml +2 -2
- mx_bluesky/common/experiment_plans/oav_grid_detection_plan.py +12 -2
- mx_bluesky/common/external_interaction/alerting/__init__.py +13 -0
- mx_bluesky/common/external_interaction/alerting/_service.py +82 -0
- mx_bluesky/common/external_interaction/alerting/log_based_service.py +57 -0
- mx_bluesky/common/external_interaction/callbacks/sample_handling/sample_handling_callback.py +28 -4
- mx_bluesky/common/external_interaction/config_server.py +151 -54
- mx_bluesky/common/parameters/constants.py +26 -8
- mx_bluesky/common/parameters/gridscan.py +1 -1
- mx_bluesky/hyperion/__main__.py +50 -178
- mx_bluesky/hyperion/baton_handler.py +125 -69
- mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py +29 -24
- mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py +4 -1
- mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py +12 -4
- mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py +1 -1
- mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py +2 -3
- mx_bluesky/hyperion/external_interaction/agamemnon.py +128 -73
- mx_bluesky/hyperion/external_interaction/alerting/__init__.py +0 -0
- mx_bluesky/hyperion/external_interaction/alerting/constants.py +12 -0
- mx_bluesky/hyperion/external_interaction/callbacks/__main__.py +5 -0
- mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py +2 -2
- mx_bluesky/hyperion/external_interaction/config_server.py +12 -31
- mx_bluesky/hyperion/parameters/cli.py +15 -3
- mx_bluesky/hyperion/parameters/components.py +7 -5
- mx_bluesky/hyperion/parameters/constants.py +20 -4
- mx_bluesky/hyperion/parameters/gridscan.py +22 -14
- mx_bluesky/hyperion/parameters/load_centre_collect.py +1 -14
- mx_bluesky/hyperion/parameters/robot_load.py +1 -4
- mx_bluesky/hyperion/parameters/rotation.py +1 -2
- mx_bluesky/hyperion/plan_runner.py +78 -0
- mx_bluesky/hyperion/runner.py +189 -0
- {mx_bluesky-1.5.2.dist-info → mx_bluesky-1.5.3.dist-info}/METADATA +4 -3
- {mx_bluesky-1.5.2.dist-info → mx_bluesky-1.5.3.dist-info}/RECORD +40 -33
- {mx_bluesky-1.5.2.dist-info → mx_bluesky-1.5.3.dist-info}/entry_points.txt +0 -2
- {mx_bluesky-1.5.2.dist-info → mx_bluesky-1.5.3.dist-info}/WHEEL +0 -0
- {mx_bluesky-1.5.2.dist-info → mx_bluesky-1.5.3.dist-info}/licenses/LICENSE +0 -0
- {mx_bluesky-1.5.2.dist-info → mx_bluesky-1.5.3.dist-info}/top_level.txt +0 -0
|
@@ -8,7 +8,6 @@ from mx_bluesky.common.parameters.components import (
|
|
|
8
8
|
WithSample,
|
|
9
9
|
WithVisit,
|
|
10
10
|
)
|
|
11
|
-
from mx_bluesky.hyperion.parameters.components import WithHyperionUDCFeatures
|
|
12
11
|
from mx_bluesky.hyperion.parameters.robot_load import (
|
|
13
12
|
RobotLoadThenCentre,
|
|
14
13
|
)
|
|
@@ -28,7 +27,6 @@ class LoadCentreCollect(
|
|
|
28
27
|
WithVisit,
|
|
29
28
|
WithSample,
|
|
30
29
|
WithCentreSelection,
|
|
31
|
-
WithHyperionUDCFeatures,
|
|
32
30
|
):
|
|
33
31
|
"""Experiment parameters to perform the combined robot load,
|
|
34
32
|
pin-tip centre and rotation scan operations."""
|
|
@@ -39,6 +37,7 @@ class LoadCentreCollect(
|
|
|
39
37
|
@model_validator(mode="before")
|
|
40
38
|
@classmethod
|
|
41
39
|
def validate_model(cls, values):
|
|
40
|
+
values = values.copy()
|
|
42
41
|
allowed_keys = (
|
|
43
42
|
LoadCentreCollect.model_fields.keys()
|
|
44
43
|
| RobotLoadThenCentre.model_fields.keys()
|
|
@@ -50,12 +49,6 @@ class LoadCentreCollect(
|
|
|
50
49
|
f"Unexpected fields found in LoadCentreCollect {disallowed_keys}"
|
|
51
50
|
)
|
|
52
51
|
|
|
53
|
-
assert "features" not in values["robot_load_then_centre"], (
|
|
54
|
-
"Features flags must be specified at top-level in LoadCentreCollect"
|
|
55
|
-
)
|
|
56
|
-
assert "features" not in values["multi_rotation_scan"], (
|
|
57
|
-
"Features flags must be specified at top-level in LoadCentreCollect"
|
|
58
|
-
)
|
|
59
52
|
keys_from_outer_load_centre_collect = (
|
|
60
53
|
MxBlueskyParameters.model_fields.keys()
|
|
61
54
|
| WithSample.model_fields.keys()
|
|
@@ -89,12 +82,6 @@ class LoadCentreCollect(
|
|
|
89
82
|
values["robot_load_then_centre"] = new_robot_load_then_centre_params
|
|
90
83
|
return values
|
|
91
84
|
|
|
92
|
-
@model_validator(mode="after")
|
|
93
|
-
def _ensure_features_are_internally_consistent(self) -> Self:
|
|
94
|
-
self.robot_load_then_centre.features = self.features
|
|
95
|
-
self.multi_rotation_scan.features = self.features
|
|
96
|
-
return self
|
|
97
|
-
|
|
98
85
|
@model_validator(mode="after")
|
|
99
86
|
def _check_rotation_start_xyz_is_not_specified(self) -> Self:
|
|
100
87
|
for scan in self.multi_rotation_scan.single_rotation_scans:
|
|
@@ -10,7 +10,6 @@ from mx_bluesky.common.parameters.components import (
|
|
|
10
10
|
from mx_bluesky.common.parameters.constants import (
|
|
11
11
|
HardwareConstants,
|
|
12
12
|
)
|
|
13
|
-
from mx_bluesky.hyperion.parameters.components import WithHyperionUDCFeatures
|
|
14
13
|
from mx_bluesky.hyperion.parameters.gridscan import (
|
|
15
14
|
GridCommonWithHyperionDetectorParams,
|
|
16
15
|
PinTipCentreThenXrayCentre,
|
|
@@ -23,9 +22,7 @@ class RobotLoadAndEnergyChange(
|
|
|
23
22
|
thawing_time: float = Field(default=HardwareConstants.THAWING_TIME)
|
|
24
23
|
|
|
25
24
|
|
|
26
|
-
class RobotLoadThenCentre(
|
|
27
|
-
GridCommonWithHyperionDetectorParams, WithHyperionUDCFeatures
|
|
28
|
-
):
|
|
25
|
+
class RobotLoadThenCentre(GridCommonWithHyperionDetectorParams):
|
|
29
26
|
thawing_time: float = Field(default=HardwareConstants.THAWING_TIME)
|
|
30
27
|
|
|
31
28
|
@property
|
|
@@ -28,7 +28,6 @@ from mx_bluesky.common.parameters.components import (
|
|
|
28
28
|
WithSample,
|
|
29
29
|
WithScan,
|
|
30
30
|
)
|
|
31
|
-
from mx_bluesky.hyperion.parameters.components import WithHyperionUDCFeatures
|
|
32
31
|
from mx_bluesky.hyperion.parameters.constants import (
|
|
33
32
|
CONST,
|
|
34
33
|
I03Constants,
|
|
@@ -56,7 +55,7 @@ class RotationScanPerSweep(OptionalGonioAngleStarts, OptionalXyzStarts, WithSamp
|
|
|
56
55
|
nexus_vds_start_img: int = Field(default=0, ge=0)
|
|
57
56
|
|
|
58
57
|
|
|
59
|
-
class RotationExperiment(DiffractionExperiment
|
|
58
|
+
class RotationExperiment(DiffractionExperiment):
|
|
60
59
|
shutter_opening_time_s: float = Field(default=CONST.I03.SHUTTER_TIME_S)
|
|
61
60
|
rotation_increment_deg: float = Field(default=0.1, gt=0)
|
|
62
61
|
ispyb_experiment_type: IspybExperimentType = Field(
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import threading
|
|
2
|
+
from collections.abc import Callable
|
|
3
|
+
|
|
4
|
+
from blueapi.core import BlueskyContext
|
|
5
|
+
from bluesky.utils import MsgGenerator, RequestAbort
|
|
6
|
+
|
|
7
|
+
from mx_bluesky.common.parameters.constants import Status
|
|
8
|
+
from mx_bluesky.common.utils.exceptions import WarningException
|
|
9
|
+
from mx_bluesky.common.utils.log import LOGGER
|
|
10
|
+
from mx_bluesky.hyperion.runner import BaseRunner
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class PlanException(Exception):
|
|
14
|
+
"""Identifies an exception that was encountered during plan execution."""
|
|
15
|
+
|
|
16
|
+
pass
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class PlanRunner(BaseRunner):
|
|
20
|
+
"""Runner that executes experiments from inside a running Bluesky plan"""
|
|
21
|
+
|
|
22
|
+
def __init__(
|
|
23
|
+
self,
|
|
24
|
+
context: BlueskyContext,
|
|
25
|
+
) -> None:
|
|
26
|
+
super().__init__(context)
|
|
27
|
+
self.current_status: Status = Status.IDLE
|
|
28
|
+
|
|
29
|
+
def execute_plan(
|
|
30
|
+
self,
|
|
31
|
+
experiment: Callable[[], MsgGenerator],
|
|
32
|
+
) -> MsgGenerator:
|
|
33
|
+
"""Execute the specified experiment plan.
|
|
34
|
+
Args:
|
|
35
|
+
experiment: The experiment to run
|
|
36
|
+
Raises:
|
|
37
|
+
PlanException: If the plan raised an exception
|
|
38
|
+
RequestAbort: If the RunEngine aborted during execution"""
|
|
39
|
+
|
|
40
|
+
self.current_status = Status.BUSY
|
|
41
|
+
|
|
42
|
+
try:
|
|
43
|
+
yield from experiment()
|
|
44
|
+
self.current_status = Status.IDLE
|
|
45
|
+
except WarningException as e:
|
|
46
|
+
LOGGER.warning("Plan failed with warning", exc_info=e)
|
|
47
|
+
self.current_status = Status.FAILED
|
|
48
|
+
except RequestAbort:
|
|
49
|
+
# This will occur when the run engine processes an abort when we shut down
|
|
50
|
+
LOGGER.info("UDC Runner aborting")
|
|
51
|
+
raise
|
|
52
|
+
except Exception as e:
|
|
53
|
+
LOGGER.error("Plan failed with exception", exc_info=e)
|
|
54
|
+
self.current_status = Status.FAILED
|
|
55
|
+
raise PlanException("Exception thrown in plan execution") from e
|
|
56
|
+
|
|
57
|
+
def shutdown(self):
|
|
58
|
+
"""Performs a prompt shutdown. Aborts the run engine and terminates the loop
|
|
59
|
+
waiting for messages."""
|
|
60
|
+
|
|
61
|
+
def issue_abort():
|
|
62
|
+
try:
|
|
63
|
+
# abort() causes the run engine to throw a RequestAbort exception
|
|
64
|
+
# inside the plan, which will propagate through the contingency wrappers.
|
|
65
|
+
# When the plan returns, the run engine will raise RunEngineInterrupted
|
|
66
|
+
self.RE.abort()
|
|
67
|
+
except Exception as e:
|
|
68
|
+
LOGGER.warning(
|
|
69
|
+
"Exception encountered when issuing abort() to RunEngine:",
|
|
70
|
+
exc_info=e,
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
LOGGER.info("Shutting down: Stopping the run engine gracefully")
|
|
74
|
+
if self.current_status != Status.ABORTING:
|
|
75
|
+
self.current_status = Status.ABORTING
|
|
76
|
+
stopping_thread = threading.Thread(target=issue_abort)
|
|
77
|
+
stopping_thread.start()
|
|
78
|
+
return
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import threading
|
|
2
|
+
from abc import abstractmethod
|
|
3
|
+
from collections.abc import Callable
|
|
4
|
+
from dataclasses import dataclass
|
|
5
|
+
from queue import Empty, Queue
|
|
6
|
+
from typing import Any
|
|
7
|
+
|
|
8
|
+
from blueapi.core import BlueskyContext
|
|
9
|
+
from bluesky.callbacks.zmq import Publisher
|
|
10
|
+
from bluesky.utils import MsgGenerator
|
|
11
|
+
|
|
12
|
+
from mx_bluesky.common.external_interaction.callbacks.common.log_uid_tag_callback import (
|
|
13
|
+
LogUidTaggingCallback,
|
|
14
|
+
)
|
|
15
|
+
from mx_bluesky.common.parameters.components import MxBlueskyParameters
|
|
16
|
+
from mx_bluesky.common.parameters.constants import Actions, Status
|
|
17
|
+
from mx_bluesky.common.utils.exceptions import WarningException
|
|
18
|
+
from mx_bluesky.common.utils.log import LOGGER
|
|
19
|
+
from mx_bluesky.common.utils.tracing import TRACER
|
|
20
|
+
from mx_bluesky.hyperion.experiment_plans.experiment_registry import PLAN_REGISTRY
|
|
21
|
+
from mx_bluesky.hyperion.parameters.constants import CONST
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@dataclass
|
|
25
|
+
class Command:
|
|
26
|
+
action: Actions
|
|
27
|
+
devices: Any | None = None
|
|
28
|
+
experiment: Callable[[Any, Any], MsgGenerator] | None = None
|
|
29
|
+
|
|
30
|
+
def __str__(self):
|
|
31
|
+
return f"Command({self.action}, {self.parameters}"
|
|
32
|
+
|
|
33
|
+
parameters: MxBlueskyParameters | None = None
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@dataclass
|
|
37
|
+
class StatusAndMessage:
|
|
38
|
+
status: str
|
|
39
|
+
message: str = ""
|
|
40
|
+
|
|
41
|
+
def __init__(self, status: Status, message: str = "") -> None:
|
|
42
|
+
self.status = status.value
|
|
43
|
+
self.message = message
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
@dataclass
|
|
47
|
+
class ErrorStatusAndMessage(StatusAndMessage):
|
|
48
|
+
exception_type: str = ""
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def make_error_status_and_message(exception: Exception):
|
|
52
|
+
return ErrorStatusAndMessage(
|
|
53
|
+
status=Status.FAILED.value,
|
|
54
|
+
message=repr(exception),
|
|
55
|
+
exception_type=type(exception).__name__,
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
class BaseRunner:
|
|
60
|
+
@abstractmethod
|
|
61
|
+
def shutdown(self):
|
|
62
|
+
"""Performs orderly prompt shutdown.
|
|
63
|
+
Aborts the run engine and terminates the loop waiting for messages."""
|
|
64
|
+
pass
|
|
65
|
+
|
|
66
|
+
def __init__(self, context: BlueskyContext):
|
|
67
|
+
self.context: BlueskyContext = context
|
|
68
|
+
self.RE = context.run_engine
|
|
69
|
+
# These references are necessary to maintain liveness of callbacks because RE
|
|
70
|
+
# only keeps a weakref
|
|
71
|
+
self._logging_uid_tag_callback = LogUidTaggingCallback()
|
|
72
|
+
self._publisher = Publisher(f"localhost:{CONST.CALLBACK_0MQ_PROXY_PORTS[0]}")
|
|
73
|
+
|
|
74
|
+
self.RE.subscribe(self._logging_uid_tag_callback)
|
|
75
|
+
LOGGER.info("Connecting to external callback ZMQ proxy...")
|
|
76
|
+
self.RE.subscribe(self._publisher)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
class GDARunner(BaseRunner):
|
|
80
|
+
"""Runner that executes plans submitted by Flask requests from GDA."""
|
|
81
|
+
|
|
82
|
+
def __init__(
|
|
83
|
+
self,
|
|
84
|
+
context: BlueskyContext,
|
|
85
|
+
) -> None:
|
|
86
|
+
super().__init__(context)
|
|
87
|
+
self.current_status: StatusAndMessage = StatusAndMessage(Status.IDLE)
|
|
88
|
+
self._last_run_aborted: bool = False
|
|
89
|
+
self._command_queue: Queue[Command] = Queue()
|
|
90
|
+
|
|
91
|
+
def start(
|
|
92
|
+
self,
|
|
93
|
+
experiment: Callable,
|
|
94
|
+
parameters: MxBlueskyParameters,
|
|
95
|
+
plan_name: str | None = None,
|
|
96
|
+
) -> StatusAndMessage:
|
|
97
|
+
"""Start a new bluesky plan
|
|
98
|
+
Args:
|
|
99
|
+
experiment: A bluesky plan
|
|
100
|
+
parameters: The parameters to be submitted
|
|
101
|
+
plan_name: Name of the plan that will be used to resolve the composite factory
|
|
102
|
+
to supply devices for the plan, if any are needed"""
|
|
103
|
+
LOGGER.info(f"Started with parameters: {parameters.model_dump_json(indent=2)}")
|
|
104
|
+
|
|
105
|
+
devices: Any = (
|
|
106
|
+
PLAN_REGISTRY[plan_name]["setup"](self.context) if plan_name else None
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
if (
|
|
110
|
+
self.current_status.status == Status.BUSY.value
|
|
111
|
+
or self.current_status.status == Status.ABORTING.value
|
|
112
|
+
):
|
|
113
|
+
return StatusAndMessage(Status.FAILED, "Bluesky already running")
|
|
114
|
+
else:
|
|
115
|
+
self.current_status = StatusAndMessage(Status.BUSY)
|
|
116
|
+
self._command_queue.put(
|
|
117
|
+
Command(
|
|
118
|
+
action=Actions.START,
|
|
119
|
+
devices=devices,
|
|
120
|
+
experiment=experiment,
|
|
121
|
+
parameters=parameters,
|
|
122
|
+
)
|
|
123
|
+
)
|
|
124
|
+
return StatusAndMessage(Status.SUCCESS)
|
|
125
|
+
|
|
126
|
+
def stop(self) -> StatusAndMessage:
|
|
127
|
+
"""Stop the currently executing plan."""
|
|
128
|
+
if self.current_status.status == Status.ABORTING.value:
|
|
129
|
+
return StatusAndMessage(Status.FAILED, "Bluesky already stopping")
|
|
130
|
+
else:
|
|
131
|
+
self.current_status = StatusAndMessage(Status.ABORTING)
|
|
132
|
+
stopping_thread = threading.Thread(target=self._stopping_thread)
|
|
133
|
+
stopping_thread.start()
|
|
134
|
+
self._last_run_aborted = True
|
|
135
|
+
return StatusAndMessage(Status.ABORTING)
|
|
136
|
+
|
|
137
|
+
def shutdown(self):
|
|
138
|
+
"""Stops the run engine and the loop waiting for messages."""
|
|
139
|
+
print("Shutting down: Stopping the run engine gracefully")
|
|
140
|
+
self.stop()
|
|
141
|
+
self._command_queue.put(Command(action=Actions.SHUTDOWN))
|
|
142
|
+
|
|
143
|
+
def _stopping_thread(self):
|
|
144
|
+
try:
|
|
145
|
+
# abort() causes the run engine to throw a RequestAbort exception
|
|
146
|
+
# inside the plan, which will propagate through the contingency wrappers.
|
|
147
|
+
# When the plan returns, the run engine will raise RunEngineInterrupted
|
|
148
|
+
self.RE.abort()
|
|
149
|
+
self.current_status = StatusAndMessage(Status.IDLE)
|
|
150
|
+
except Exception as e:
|
|
151
|
+
self.current_status = make_error_status_and_message(e)
|
|
152
|
+
|
|
153
|
+
def fetch_next_command(self) -> Command:
|
|
154
|
+
"""Fetch the next command from the queue, blocks if queue is empty."""
|
|
155
|
+
return self._command_queue.get()
|
|
156
|
+
|
|
157
|
+
def try_fetch_next_command(self) -> Command | None:
|
|
158
|
+
"""Fetch the next command from the queue or return None if no command available."""
|
|
159
|
+
try:
|
|
160
|
+
return self._command_queue.get(block=False)
|
|
161
|
+
except Empty:
|
|
162
|
+
return None
|
|
163
|
+
|
|
164
|
+
def wait_on_queue(self):
|
|
165
|
+
while True:
|
|
166
|
+
command = self.fetch_next_command()
|
|
167
|
+
if command.action == Actions.SHUTDOWN:
|
|
168
|
+
return
|
|
169
|
+
elif command.action == Actions.START:
|
|
170
|
+
if command.experiment is None:
|
|
171
|
+
raise ValueError("No experiment provided for START")
|
|
172
|
+
try:
|
|
173
|
+
with TRACER.start_span("do_run"):
|
|
174
|
+
self.RE(command.experiment(command.devices, command.parameters))
|
|
175
|
+
|
|
176
|
+
self.current_status = StatusAndMessage(Status.IDLE)
|
|
177
|
+
|
|
178
|
+
self._last_run_aborted = False
|
|
179
|
+
except WarningException as exception:
|
|
180
|
+
LOGGER.warning("Warning Exception", exc_info=True)
|
|
181
|
+
self.current_status = make_error_status_and_message(exception)
|
|
182
|
+
except Exception as exception:
|
|
183
|
+
LOGGER.error("Exception on running plan", exc_info=True)
|
|
184
|
+
|
|
185
|
+
if self._last_run_aborted:
|
|
186
|
+
# Aborting will cause an exception here that we want to swallow
|
|
187
|
+
self._last_run_aborted = False
|
|
188
|
+
else:
|
|
189
|
+
self.current_status = make_error_status_and_message(exception)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mx-bluesky
|
|
3
|
-
Version: 1.5.
|
|
3
|
+
Version: 1.5.3
|
|
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
|
|
@@ -235,12 +235,13 @@ Requires-Dist: scipy
|
|
|
235
235
|
Requires-Dist: semver
|
|
236
236
|
Requires-Dist: deepdiff
|
|
237
237
|
Requires-Dist: matplotlib
|
|
238
|
+
Requires-Dist: cachetools
|
|
239
|
+
Requires-Dist: daq-config-server>=v1.0.0-rc.2
|
|
238
240
|
Requires-Dist: blueapi>=0.15.0
|
|
239
|
-
Requires-Dist: daq-config-server==0.1.1
|
|
240
241
|
Requires-Dist: ophyd>=1.10.5
|
|
241
242
|
Requires-Dist: ophyd-async>=0.10.0a2
|
|
242
243
|
Requires-Dist: bluesky>=1.13.1
|
|
243
|
-
Requires-Dist: dls-dodal
|
|
244
|
+
Requires-Dist: dls-dodal>=1.55.0
|
|
244
245
|
Provides-Extra: dev
|
|
245
246
|
Requires-Dist: black; extra == "dev"
|
|
246
247
|
Requires-Dist: build; extra == "dev"
|
|
@@ -1,6 +1,6 @@
|
|
|
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=
|
|
3
|
+
mx_bluesky/_version.py,sha256=YmPxci9z5OdhwvwXu2qOrZdFU4K4N2lTtMkI0KAJCh0,704
|
|
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
|
|
@@ -8,17 +8,17 @@ mx_bluesky/beamlines/aithre_lasershaping/__init__.py,sha256=A0dlifkBYPlCiMkTEovT
|
|
|
8
8
|
mx_bluesky/beamlines/aithre_lasershaping/beamline_safe.py,sha256=-GTu2w7dIKtssZB8vXwE2f1zF-Pg1zC_jwBbB-r2Goo,1233
|
|
9
9
|
mx_bluesky/beamlines/aithre_lasershaping/check_goniometer_performance.py,sha256=AqWAFey_Ih1JcRxVNiZDGFsVg4kvA9LH2p5SJeXfe2I,834
|
|
10
10
|
mx_bluesky/beamlines/aithre_lasershaping/goniometer_controls.py,sha256=1La4vJmQdKp3_Ib1DMgavJBdYLTxp7S7dEr_lqNknV0,1828
|
|
11
|
-
mx_bluesky/beamlines/i04/__init__.py,sha256
|
|
11
|
+
mx_bluesky/beamlines/i04/__init__.py,sha256=-BuArzFeDA4T3QsT6TWrGnHk6ICX8gOVk_q8whBUt6Y,314
|
|
12
12
|
mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py,sha256=T6K0LOwwGxB05YvS6FV-UU4O2N2GMQdEM2vj9BSow_U,6618
|
|
13
13
|
mx_bluesky/beamlines/i04/thawing_plan.py,sha256=uvm1wfp012GN5yE7TcURSQeDtC9nWnW5X__6UCXazjA,5085
|
|
14
14
|
mx_bluesky/beamlines/i04/callbacks/murko_callback.py,sha256=C2KoIxwMIWxD46utmq1-69SIc8MspocXJ1sccO1lwAY,4458
|
|
15
15
|
mx_bluesky/beamlines/i04/experiment_plans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
|
-
mx_bluesky/beamlines/i04/experiment_plans/i04_grid_detect_then_xray_centre_plan.py,sha256=
|
|
16
|
+
mx_bluesky/beamlines/i04/experiment_plans/i04_grid_detect_then_xray_centre_plan.py,sha256=SEQzhIInTpAYyag3ncPbaBj_M3AC0TzDNG_BbB31LQo,9401
|
|
17
17
|
mx_bluesky/beamlines/i23/__init__.py,sha256=7nwQiKBZAXLnvPhCqaI2VC1k4TOzQalOUvwF6SQ3Yd4,95
|
|
18
18
|
mx_bluesky/beamlines/i23/serial.py,sha256=XVbHM8NevnJMFAJD9jkxG-VnPaWX6t_k-wlipRw0pmY,2055
|
|
19
19
|
mx_bluesky/beamlines/i24/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
20
|
mx_bluesky/beamlines/i24/serial/__init__.py,sha256=r8v9V48TMrNxOcwBZ6lzeCCuPulq5rg8m-mwH_KkOnI,1533
|
|
21
|
-
mx_bluesky/beamlines/i24/serial/blueapi_config.yaml,sha256=
|
|
21
|
+
mx_bluesky/beamlines/i24/serial/blueapi_config.yaml,sha256=QqsOP_CfyIbf8HbGVdo2pYiVVVVgw5cFC3RFwsmT3t8,351
|
|
22
22
|
mx_bluesky/beamlines/i24/serial/dcid.py,sha256=ab48UFmZT6Zuv9RNoqOLkmAgmaIr0G6UDjqr_bE0vF8,14564
|
|
23
23
|
mx_bluesky/beamlines/i24/serial/log.py,sha256=76-bKjjxLZEITTcALpvuwCy3KU5pTq0blnVFD9wT5cY,4798
|
|
24
24
|
mx_bluesky/beamlines/i24/serial/run_extruder.sh,sha256=FXYsqdTpVgxB1-QrY4Tg5pl5Ex7PgUoXnuAcr9iDZTE,1078
|
|
@@ -81,14 +81,17 @@ mx_bluesky/common/experiment_plans/__init__.py,sha256=FMA-4VN1TJCPcyURKF0qPIQ8uo
|
|
|
81
81
|
mx_bluesky/common/experiment_plans/change_aperture_then_move_plan.py,sha256=407E9rp0yGWWIU1fJrgqK_hC19mVwRK-Und7fMlGNDc,3062
|
|
82
82
|
mx_bluesky/common/experiment_plans/common_flyscan_xray_centre_plan.py,sha256=jLo9nrd8CW85Px7t3I6QlnfD71VhApyVJMfWB6-gJgk,13245
|
|
83
83
|
mx_bluesky/common/experiment_plans/common_grid_detect_then_xray_centre_plan.py,sha256=BxBKc9cn843eoMlmlV7j0tqIG-DRPL6A0n-S6JLyDjg,7057
|
|
84
|
-
mx_bluesky/common/experiment_plans/oav_grid_detection_plan.py,sha256=
|
|
84
|
+
mx_bluesky/common/experiment_plans/oav_grid_detection_plan.py,sha256=gkRpRb3USUx7xDJk-1GghV-sxPp7wy5clubwhlx1v80,7162
|
|
85
85
|
mx_bluesky/common/experiment_plans/oav_snapshot_plan.py,sha256=Zvz8j9ZgK6hIYRTkSjYBr1ARLyMRixOsou_wSuR97U4,3647
|
|
86
86
|
mx_bluesky/common/experiment_plans/inner_plans/__init__ .py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
87
87
|
mx_bluesky/common/experiment_plans/inner_plans/do_fgs.py,sha256=WjtoyMxpTFSrfFzxxoYKRlRbwRHfEBeEItq82mad0Pw,4807
|
|
88
88
|
mx_bluesky/common/experiment_plans/inner_plans/read_hardware.py,sha256=Og7Uz8lAB1_Z6puN6ws_2kwOqCvgQMqfmyZPFZMRneY,2351
|
|
89
89
|
mx_bluesky/common/experiment_plans/inner_plans/write_sample_status.py,sha256=pmS4Lsndp90CCIKzD_wssvbzt1qu7rEzfXgxvDwDrQ8,1313
|
|
90
90
|
mx_bluesky/common/external_interaction/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
91
|
-
mx_bluesky/common/external_interaction/config_server.py,sha256=
|
|
91
|
+
mx_bluesky/common/external_interaction/config_server.py,sha256=FgQ0vnKVqX-MZRIKWcW7wAL_is63JvHQoazjxSJnf1o,6545
|
|
92
|
+
mx_bluesky/common/external_interaction/alerting/__init__.py,sha256=Di6vVslmB_3v5r7qsGezm7Iln4dA-T60_9USo_8y-P0,264
|
|
93
|
+
mx_bluesky/common/external_interaction/alerting/_service.py,sha256=5GLXKETg8o0d4coIv17hOoAI-rFGldIF2SIVmKW0QUQ,2632
|
|
94
|
+
mx_bluesky/common/external_interaction/alerting/log_based_service.py,sha256=KCTUcuk4lGzTOWaOUcUEXzTo5-vVAdRtMy0a5Kq2fso,2130
|
|
92
95
|
mx_bluesky/common/external_interaction/callbacks/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
93
96
|
mx_bluesky/common/external_interaction/callbacks/common/abstract_event.py,sha256=iBj4WNK5ikieZzTePBZ9AEu6ehlnpew1nDK3ONJqibI,2093
|
|
94
97
|
mx_bluesky/common/external_interaction/callbacks/common/grid_detection_callback.py,sha256=JmF5FssUqNPgsnxqrgxB9Pmw5Dd7W6GCPb9Mur8DHCo,4017
|
|
@@ -99,7 +102,7 @@ mx_bluesky/common/external_interaction/callbacks/common/logging_callback.py,sha2
|
|
|
99
102
|
mx_bluesky/common/external_interaction/callbacks/common/plan_reactive_callback.py,sha256=3TYQXibOWIKnvM2PMTIjE2IOoX2Jkt9b2KpDCytQtYE,4088
|
|
100
103
|
mx_bluesky/common/external_interaction/callbacks/common/zocalo_callback.py,sha256=5Sjl2VU57huKkNtEExvypoSVb0I8nVItIJ4vH1vrp48,3930
|
|
101
104
|
mx_bluesky/common/external_interaction/callbacks/sample_handling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
102
|
-
mx_bluesky/common/external_interaction/callbacks/sample_handling/sample_handling_callback.py,sha256=
|
|
105
|
+
mx_bluesky/common/external_interaction/callbacks/sample_handling/sample_handling_callback.py,sha256=v6FG7uOw62Vd6gKxGYdG-CBrrVDlxrCWGQETHtc4bCU,3832
|
|
103
106
|
mx_bluesky/common/external_interaction/callbacks/xray_centre/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
104
107
|
mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_callback.py,sha256=niNZLRO3iEFIM6PFnS5byl4n9X6GwZR0NRzDmy9IFyQ,12634
|
|
105
108
|
mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_mapping.py,sha256=fOYJkqaXEfCdLGQwGhTrzfGOj6Ed3t2wcRgv68DOOHc,1790
|
|
@@ -114,9 +117,9 @@ mx_bluesky/common/external_interaction/nexus/nexus_utils.py,sha256=n97KHJJd_C59S
|
|
|
114
117
|
mx_bluesky/common/external_interaction/nexus/write_nexus.py,sha256=s8xT05_Fn_s64KbPOnR5cm-AooklMKRj2cXxLstl7e0,4067
|
|
115
118
|
mx_bluesky/common/parameters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
116
119
|
mx_bluesky/common/parameters/components.py,sha256=LKkFiGWEzU3dPHGG_M9gzNu4XUA-0nc7Q3ceRiWJFTk,8536
|
|
117
|
-
mx_bluesky/common/parameters/constants.py,sha256=
|
|
120
|
+
mx_bluesky/common/parameters/constants.py,sha256=lBUJsS1UeaetuuwqjtXm1w2Q2zmgyfQyoDBtO5SJ0XM,5094
|
|
118
121
|
mx_bluesky/common/parameters/device_composites.py,sha256=F_msgzMTzwIYXufkBwRCg47f5-Z4sJlQVbsWnUqjXSw,2253
|
|
119
|
-
mx_bluesky/common/parameters/gridscan.py,sha256=
|
|
122
|
+
mx_bluesky/common/parameters/gridscan.py,sha256=zTSFnOI6skbj2aX8YnbcbEYk67MnOWIaaukIST5KkBk,7048
|
|
120
123
|
mx_bluesky/common/preprocessors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
121
124
|
mx_bluesky/common/preprocessors/preprocessors.py,sha256=BNpSM7S9gxhVbG39rjH14k89sOmKiII0cqApH3pF_H0,4476
|
|
122
125
|
mx_bluesky/common/protocols/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -128,55 +131,59 @@ mx_bluesky/common/utils/log.py,sha256=CepibF7U5GnN-ICl4bmhbEwqRzWsSFyfNtBDJejK0e
|
|
|
128
131
|
mx_bluesky/common/utils/tracing.py,sha256=stnBZIvPuKiAm2wVc8lFr3ns7V5C52rUigULi9V-IFs,1171
|
|
129
132
|
mx_bluesky/common/utils/utils.py,sha256=q2uCaK1E8zLVk1BFmj7qlTnQf3JRKjCjyadIVnL1-4M,1180
|
|
130
133
|
mx_bluesky/hyperion/__init__.py,sha256=f4E8wInL1Ll4eeFtAiyKmipOBTPlUtKmVK-m_LOQG4M,35
|
|
131
|
-
mx_bluesky/hyperion/__main__.py,sha256=
|
|
132
|
-
mx_bluesky/hyperion/baton_handler.py,sha256=
|
|
134
|
+
mx_bluesky/hyperion/__main__.py,sha256=Hyt3vdy2aC5lrikaptvKcMqK0P-bPV2h91fXb_CGpB8,6742
|
|
135
|
+
mx_bluesky/hyperion/baton_handler.py,sha256=T3LDXAJiObc_kO84flXa1sfAE6mDMK_8BP7H98rnWWQ,6801
|
|
136
|
+
mx_bluesky/hyperion/plan_runner.py,sha256=kQn93lBSxiWi4ZGLOCx5IfFTCYx_L6NsIXAT_7Phpk4,2799
|
|
137
|
+
mx_bluesky/hyperion/runner.py,sha256=x683wuzL-XO1Ws4N2fpPO__TLhlep0br_-8ubml1qG0,7073
|
|
133
138
|
mx_bluesky/hyperion/device_setup_plans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
134
|
-
mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py,sha256=
|
|
139
|
+
mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py,sha256=ciNdz_r9XGvghehpejdziL-aMw60oUsIJdVR3yz3nOo,5010
|
|
135
140
|
mx_bluesky/hyperion/device_setup_plans/setup_panda.py,sha256=96eFp4acQLOthe1PA-S14uv635uGVP71DpP7qy_uo40,8509
|
|
136
141
|
mx_bluesky/hyperion/device_setup_plans/setup_zebra.py,sha256=e3ocVsncImQIrfL6d0UoH5fCl8AR0pM_4AIXSxc8dgQ,5749
|
|
137
142
|
mx_bluesky/hyperion/device_setup_plans/smargon.py,sha256=9znQLGF8Uqif1SZ_H4GyqcnhR3xCI1FIniCaGLRY3zM,758
|
|
138
143
|
mx_bluesky/hyperion/device_setup_plans/utils.py,sha256=96JlzyikMhWN7LzdiMx8URZInXoGR3OjoxYmCIp9tts,425
|
|
139
144
|
mx_bluesky/hyperion/experiment_plans/__init__.py,sha256=dJjwLk0EQP-1hKhbs8aRxTF_LxUXgB7kcgDlaP-tMnk,787
|
|
140
145
|
mx_bluesky/hyperion/experiment_plans/experiment_registry.py,sha256=bGp2c3nKutqHMnDxuqjp6yCF-JKykSzX-IUfxk3oVlM,1701
|
|
141
|
-
mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py,sha256=
|
|
146
|
+
mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py,sha256=aaDnO_fWOesB7IUMtedinBaJUdliWZe47wxq9ECFoFY,6036
|
|
142
147
|
mx_bluesky/hyperion/experiment_plans/hyperion_grid_detect_then_xray_centre_plan.py,sha256=e4w4226ONSGQF2dnXzxOfcJ9i57CZIJrqQ1YCLlaBNo,2153
|
|
143
|
-
mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py,sha256=
|
|
148
|
+
mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py,sha256=adXdbKxrLw8lSaFIeBwWj4LdmyIYObnqmOCU_IOSX0c,7114
|
|
144
149
|
mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py,sha256=5ZAH17F5T1YyVgA2ML0NEf4ufrD1G0jPRU0_5pINdTg,16195
|
|
145
150
|
mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py,sha256=oErbq4ffTZVNR_LeiSJP8_q4cwdZWB-bdbrO3ZwKg20,5397
|
|
146
|
-
mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py,sha256=
|
|
151
|
+
mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py,sha256=1g3vs2hSgEYGhwDoqB8VsWTZ4q_Hd37493n_csoLnI8,6248
|
|
147
152
|
mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py,sha256=AFQtQ-goN7cbMXiYaxd3-PSDKG2llnMr0dKkYdbCIB4,5942
|
|
148
153
|
mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py,sha256=II-4v2AOyC7QbCqLZFSq1fT1OjWSg8P5MmSQFzQI0D0,6892
|
|
149
|
-
mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py,sha256=
|
|
154
|
+
mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py,sha256=jyJMN9atG99hmYG0i3lgrBK9Jx1SR4QVPFhZgA6Dl8s,15886
|
|
150
155
|
mx_bluesky/hyperion/experiment_plans/set_energy_plan.py,sha256=8FAqN-aJgRwZSiCX-hNdeGmaijt0l8owdShVBwNchfE,2643
|
|
151
156
|
mx_bluesky/hyperion/external_interaction/__init__.py,sha256=95DwXDmKsx36RgAL-AtLZl2LQoLPKbzeYdlkkP_4Coc,559
|
|
152
|
-
mx_bluesky/hyperion/external_interaction/agamemnon.py,sha256=
|
|
153
|
-
mx_bluesky/hyperion/external_interaction/config_server.py,sha256=
|
|
157
|
+
mx_bluesky/hyperion/external_interaction/agamemnon.py,sha256=oZzkoLi_b-278asr_f-vMvZxPFKfEUYrTvhFqfMIu6A,11942
|
|
158
|
+
mx_bluesky/hyperion/external_interaction/config_server.py,sha256=UpxjOH0U3vm0R_RTPt00uYfQ2HiALGWRZgs8EHJO2os,491
|
|
159
|
+
mx_bluesky/hyperion/external_interaction/alerting/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
160
|
+
mx_bluesky/hyperion/external_interaction/alerting/constants.py,sha256=0lrZbr8qsbTpF74pSOvPCCWIz07GLEKxl8Dw0OuiYNM,475
|
|
154
161
|
mx_bluesky/hyperion/external_interaction/callbacks/__init__.py,sha256=1XHaxDljMveu_DYIlk7n963gHffyC6r4C_RhF6HA-N8,283
|
|
155
|
-
mx_bluesky/hyperion/external_interaction/callbacks/__main__.py,sha256=
|
|
162
|
+
mx_bluesky/hyperion/external_interaction/callbacks/__main__.py,sha256=AjuzycdV7rMvlDBVY73aYB1TaLUCivLL6s23z2xWYok,6421
|
|
156
163
|
mx_bluesky/hyperion/external_interaction/callbacks/snapshot_callback.py,sha256=ee1ZIJGp8RQakMDYRfflXjSwi-UgxqdZNkZ1azBIDGQ,11705
|
|
157
164
|
mx_bluesky/hyperion/external_interaction/callbacks/robot_actions/ispyb_callback.py,sha256=Ta8w0W_3LI0PGpwxKlQsS7X0B_hsfJoZdzR2K3J0KHo,4467
|
|
158
165
|
mx_bluesky/hyperion/external_interaction/callbacks/rotation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
159
166
|
mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py,sha256=-0fz1Fw2zm8JXvZWkHTNRPirO2q3Ha0rb3Ug7eJ-xI4,7456
|
|
160
167
|
mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py,sha256=bba5ZHoOMqvSCUXJIxbx55HGhaoC_Jqhyxxb-ttqt5g,801
|
|
161
|
-
mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py,sha256=
|
|
168
|
+
mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py,sha256=0aG1Kakyxyz6PE3fxDNKRARRG4xwej486PfmphvWwtM,4743
|
|
162
169
|
mx_bluesky/hyperion/parameters/__init__.py,sha256=kf2wfcILBUBpT0tJ8-W39BywQUkn67yxl9IVsfrr1LE,115
|
|
163
|
-
mx_bluesky/hyperion/parameters/cli.py,sha256=
|
|
164
|
-
mx_bluesky/hyperion/parameters/components.py,sha256=
|
|
165
|
-
mx_bluesky/hyperion/parameters/constants.py,sha256=
|
|
170
|
+
mx_bluesky/hyperion/parameters/cli.py,sha256=I-NY3Kt3la5HNUB4qRA6NtuxbJSr78yx-sM_cRx_pY4,1514
|
|
171
|
+
mx_bluesky/hyperion/parameters/components.py,sha256=eIUEcFNqcEad21IThSDatoX-NRa9GdfBOwt6ZUwb88U,292
|
|
172
|
+
mx_bluesky/hyperion/parameters/constants.py,sha256=O9SWJwZLIj1IUap-6uuahCaQFvHYVEAzwloerSelumg,2240
|
|
166
173
|
mx_bluesky/hyperion/parameters/device_composites.py,sha256=wXr0VH66Qm5xT0WBBy4hmXjONrAxieP3aAFdt0rM6kY,2139
|
|
167
|
-
mx_bluesky/hyperion/parameters/gridscan.py,sha256=
|
|
168
|
-
mx_bluesky/hyperion/parameters/load_centre_collect.py,sha256=
|
|
169
|
-
mx_bluesky/hyperion/parameters/robot_load.py,sha256=
|
|
170
|
-
mx_bluesky/hyperion/parameters/rotation.py,sha256=
|
|
174
|
+
mx_bluesky/hyperion/parameters/gridscan.py,sha256=DTHIo75xE2vU4iP0eXymGKoQARA1fd9fp2apKFU4C_I,3886
|
|
175
|
+
mx_bluesky/hyperion/parameters/load_centre_collect.py,sha256=8dlKwb7WmgDeohQ9QsdMWQMMM73EaC2cZ0wKg6vOP60,3727
|
|
176
|
+
mx_bluesky/hyperion/parameters/robot_load.py,sha256=Iktni3r6LFRnlM51hpdpv3QrD6QPhx2rAeyB8Gv6ML4,1124
|
|
177
|
+
mx_bluesky/hyperion/parameters/rotation.py,sha256=OwZFvoswCFn4Y3lB-JVYP_5fvuAZB5yrtKUiCYAzQRQ,7443
|
|
171
178
|
mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml,sha256=mhLBJTSjHCkM9F6mjtqbhNmmrV8qSctbCUfhb0q7pYo,28085
|
|
172
179
|
mx_bluesky/hyperion/utils/__init__.py,sha256=f4E8wInL1Ll4eeFtAiyKmipOBTPlUtKmVK-m_LOQG4M,35
|
|
173
180
|
mx_bluesky/hyperion/utils/context.py,sha256=yxMYn3YFET6SanFZ4YWXDmZDdp3WkaXhDc3ySxHYpAE,1033
|
|
174
181
|
mx_bluesky/phase1_zebra/__init__.py,sha256=Edhhn2L9MVXnjJhyD5_yKQVUDo7XW98rvuT7dlzIn58,132
|
|
175
182
|
mx_bluesky/phase1_zebra/device_setup_plans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
176
183
|
mx_bluesky/phase1_zebra/device_setup_plans/setup_zebra.py,sha256=zfEnDvh5Rh9cPmg_Q_0EnJOZNIwIGmHeIDiJ9kg9Z4c,4129
|
|
177
|
-
mx_bluesky-1.5.
|
|
178
|
-
mx_bluesky-1.5.
|
|
179
|
-
mx_bluesky-1.5.
|
|
180
|
-
mx_bluesky-1.5.
|
|
181
|
-
mx_bluesky-1.5.
|
|
182
|
-
mx_bluesky-1.5.
|
|
184
|
+
mx_bluesky-1.5.3.dist-info/licenses/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
|
185
|
+
mx_bluesky-1.5.3.dist-info/METADATA,sha256=36t0IAie1aZHxkEOcfdOJPttxsvNwU0NRtNGY19wmBY,17424
|
|
186
|
+
mx_bluesky-1.5.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
187
|
+
mx_bluesky-1.5.3.dist-info/entry_points.txt,sha256=HgVtwgWoMRn9-X6rxCcSY3Jz_paspJTIlc-t2NFzWpo,409
|
|
188
|
+
mx_bluesky-1.5.3.dist-info/top_level.txt,sha256=S4rrzXIUef58ulf_04wn01XGZ3xeJjXs4LPEJ_xoF-I,11
|
|
189
|
+
mx_bluesky-1.5.3.dist-info/RECORD,,
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
[console_scripts]
|
|
2
2
|
hyperion = mx_bluesky.hyperion.__main__:main
|
|
3
3
|
hyperion-callbacks = mx_bluesky.hyperion.external_interaction.callbacks.__main__:main
|
|
4
|
-
hyperion-generate-test-nexus = mx_bluesky.hyperion.utils.validation:generate_test_nexus
|
|
5
|
-
hyperion-populate-test-and-meta-files = mx_bluesky.hyperion.utils.validation:copy_test_meta_data_files
|
|
6
4
|
mx-bluesky = mx_bluesky.__main__:main
|
|
7
5
|
redis_to_murko = mx_bluesky.beamlines.i04.redis_to_murko_forwarder:main
|
|
8
6
|
run_extruder = mx_bluesky.beamlines.i24.serial.run_serial:run_extruder
|
|
File without changes
|
|
File without changes
|
|
File without changes
|