diff --git a/docs/resources/config_pre_made.yaml b/docs/resources/config_pre_made.yaml index b902011ac..9e2a2c756 100644 --- a/docs/resources/config_pre_made.yaml +++ b/docs/resources/config_pre_made.yaml @@ -6,8 +6,6 @@ env: module: blueapi.tutorial.devices - kind: planFunctions module: dodal.plans - - kind: planFunctions - module: dodal.plan_stubs.wrapped stomp: enabled: true url: tcp://localhost:61613/ diff --git a/docs/tutorials/4. config-add-plans.md b/docs/tutorials/4. config-add-plans.md index e7e1707cc..ef27937ed 100644 --- a/docs/tutorials/4. config-add-plans.md +++ b/docs/tutorials/4. config-add-plans.md @@ -5,10 +5,8 @@ As well as adding devices to the `config.yaml`, you can add plans. Under the cod ``` yaml - kind: planFunctions module: dodal.plans - - kind: planFunctions - module: dodal.plan_stubs.wrapped ``` -These plans that will be used in this tutorial can be found in the [dodal repository](https://github.com/DiamondLightSource/dodal/tree/b4b38f1e0cf480faeb29d67695440c45a148f169). Specifically, in `dodal/src/dodal/plans/wrapped.py` and `dodal/src/dodal/plan_stubs/wrapped.py`. +These plans that will be used in this tutorial can be found in the [dodal repository](https://github.com/DiamondLightSource/dodal/tree/b4b38f1e0cf480faeb29d67695440c45a148f169). Specifically, in `dodal/src/dodal/plans/wrapped.py` and [bluesky repository](https://github.com/bluesky/bluesky/blob/1fb2f4e13437edf4a72372dacd455cfaf905f09e/src/bluesky/plan_stubs.py#L321). Save the changes you've made to the `config.yaml` file. Navigate back to the terminal where the blueapi worker is running. Restart the server to use this updated `config.yaml` file. diff --git a/docs/tutorials/5. config-add-rabbitmq-and-run-plan-cli.md b/docs/tutorials/5. config-add-rabbitmq-and-run-plan-cli.md index 1822819db..4630267d5 100644 --- a/docs/tutorials/5. config-add-rabbitmq-and-run-plan-cli.md +++ b/docs/tutorials/5. config-add-rabbitmq-and-run-plan-cli.md @@ -48,8 +48,6 @@ env: module: blueapi.tutorial.devices - kind: planFunctions module: dodal.plans - - kind: planFunctions - module: dodal.plan_stubs.wrapped stomp: enabled: true url: tcp://localhost:61613/ diff --git a/helm/blueapi/README.md b/helm/blueapi/README.md index 8e347d594..81ebef06e 100644 --- a/helm/blueapi/README.md +++ b/helm/blueapi/README.md @@ -49,9 +49,9 @@ A Helm chart deploying a worker pod that runs Bluesky plans | tracing | object | `{"fastapi":{"excludedURLs":"/healthz"},"otlp":{"enabled":false,"protocol":"http/protobuf","server":{"host":"http://opentelemetry-collector.tracing","port":4318}}}` | Exclude health probe requests from tracing by default to prevent spamming | | volumeMounts | list | `[]` | Additional volumeMounts on the output StatefulSet definition. Define how volumes are mounted to the container referenced by using the same name. | | volumes | list | `[]` | Additional volumes on the output StatefulSet definition. Define volumes from e.g. Secrets, ConfigMaps or the Filesystem | -| worker | object | `{"api":{"url":"http://0.0.0.0:8000/"},"env":{"sources":[{"kind":"planFunctions","module":"dodal.plans"},{"kind":"planFunctions","module":"dodal.plan_stubs.wrapped"}]},"logging":{"graylog":{"enabled":false,"url":"tcp://graylog-log-target.diamond.ac.uk:12231/"},"level":"INFO"},"scratch":{"repositories":[],"root":"/workspace"},"stomp":{"auth":{"password":"guest","username":"guest"},"enabled":false,"url":"tcp://rabbitmq:61613/"}}` | Config for the worker goes here, will be mounted into a config file | +| worker | object | `{"api":{"url":"http://0.0.0.0:8000/"},"env":{"sources":[{"kind":"planFunctions","module":"dodal.plans"}]},"logging":{"graylog":{"enabled":false,"url":"tcp://graylog-log-target.diamond.ac.uk:12231/"},"level":"INFO"},"scratch":{"repositories":[],"root":"/workspace"},"stomp":{"auth":{"password":"guest","username":"guest"},"enabled":false,"url":"tcp://rabbitmq:61613/"}}` | Config for the worker goes here, will be mounted into a config file | | worker.api.url | string | `"http://0.0.0.0:8000/"` | 0.0.0.0 required to allow non-loopback traffic If using hostNetwork, the port must be free on the host | -| worker.env.sources | list | `[{"kind":"planFunctions","module":"dodal.plans"},{"kind":"planFunctions","module":"dodal.plan_stubs.wrapped"}]` | modules (must be installed in the venv) to fetch devices/plans from | +| worker.env.sources | list | `[{"kind":"planFunctions","module":"dodal.plans"}]` | modules (must be installed in the venv) to fetch devices/plans from | | worker.logging | object | `{"graylog":{"enabled":false,"url":"tcp://graylog-log-target.diamond.ac.uk:12231/"},"level":"INFO"}` | Configures logging. Port 12231 is the `dodal` input on graylog which will be renamed `blueapi` | | worker.scratch | object | `{"repositories":[],"root":"/workspace"}` | If initContainer is enabled the default branch of python projects in this section are installed into the venv *without their dependencies* | | worker.stomp | object | `{"auth":{"password":"guest","username":"guest"},"enabled":false,"url":"tcp://rabbitmq:61613/"}` | Message bus configuration for returning status to GDA/forwarding documents downstream Password may be in the form ${ENV_VAR} to be fetched from an environment variable e.g. mounted from a SealedSecret | diff --git a/helm/blueapi/values.yaml b/helm/blueapi/values.yaml index f62ee9b65..838dec1d5 100644 --- a/helm/blueapi/values.yaml +++ b/helm/blueapi/values.yaml @@ -192,8 +192,6 @@ worker: # module: dodal.beamlines.adsim - kind: planFunctions module: dodal.plans - - kind: planFunctions - module: dodal.plan_stubs.wrapped # -- Message bus configuration for returning status to GDA/forwarding documents downstream # Password may be in the form ${ENV_VAR} to be fetched from an environment variable e.g. mounted from a SealedSecret stomp: diff --git a/pyproject.toml b/pyproject.toml index fe2f73838..52e3f8276 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,7 @@ classifiers = [ ] description = "Lightweight bluesky-as-a-service wrapper application. Also usable as a library." dependencies = [ - "bluesky[plotting]>=1.14.0", # plotting includes matplotlib, required for BestEffortCallback in run plans + "bluesky[plotting]>=1.16.0", # plotting includes matplotlib, required for BestEffortCallback in run plans "ophyd-async>=0.13.5", "pydantic>=2.0", "pydantic-settings", @@ -22,8 +22,8 @@ dependencies = [ "PyYAML>=6.0.2", "click>=8.2.0", "requests", - "GitPython>=3.1.58", #security base min https://github.com/advisories/GHSA-4gmw-gg2m-w46p - used by the server's /python_environment endpoint and the CLI's scratch setup - "event-model==1.24.0", # https://github.com/DiamondLightSource/blueapi/issues/684 + "GitPython>=3.1.58", #security base min https://github.com/advisories/GHSA-4gmw-gg2m-w46p - used by the server's /python_environment endpoint and the CLI's scratch setup + "event-model==1.24.0", # https://github.com/DiamondLightSource/blueapi/issues/684 "bluesky-stomp>=0.1.6", "opentelemetry-distro>=0.48b0", "observability-utils>=0.1.4", @@ -31,6 +31,7 @@ dependencies = [ "websockets", "tqdm", "packaging", + "bluesky-tiled-plugins>=2.0.11", ] dynamic = ["version"] license.file = "LICENSE" @@ -62,7 +63,7 @@ dev = [ "prek", "pydata-sphinx-theme>=0.15.4", "pytest", - "pyright!=1.1.407", # https://github.com/bluesky/scanspec/issues/190 + "pyright!=1.1.407", # https://github.com/bluesky/scanspec/issues/190 "pytest-cov", "pytest-asyncio", "pytest-httpx>=0.35.0", diff --git a/src/blueapi/core/context.py b/src/blueapi/core/context.py index af3fcc631..d4beead80 100644 --- a/src/blueapi/core/context.py +++ b/src/blueapi/core/context.py @@ -5,15 +5,9 @@ from importlib import import_module, metadata from inspect import Parameter, isclass, signature from types import ModuleType, NoneType, UnionType -from typing import ( - Any, - TypeVar, - Union, - get_args, - get_origin, - get_type_hints, -) +from typing import Any, TypeVar, Union, get_args, get_origin, get_type_hints +import bluesky.plan_stubs as bps from bluesky.protocols import HasName from bluesky.run_engine import RunEngine from ophyd_async.core import NotConnectedError, PathProvider @@ -58,6 +52,19 @@ LOGGER = logging.getLogger(__name__) +DEFAULT_PLAN_STUBS = [ + bps.abs_set, + bps.rel_set, + bps.mv, + bps.mvr, + bps.rd, + bps.read, + bps.stop, + bps.sleep, + bps.wait, + bps.locate, + bps.loc, +] if "ophyd" in sys.modules: # This is an awful hack/workaround to avoid blueapi hanging on shutdown when @@ -142,6 +149,9 @@ def __post_init__(self, configuration: ApplicationConfig | None): if not configuration: return + for plan_stub in DEFAULT_PLAN_STUBS: + self.register_plan(plan_stub) + if configuration.numtracker is not None: # The numtracker client itself is wired up by the service, see # blueapi.service.interface.context @@ -196,7 +206,7 @@ def find_device(self, addr: str | list[str]) -> Device | None: def with_config(self, config: EnvironmentConfig) -> None: if config.metadata is not None: - self.run_engine.md |= config.metadata.model_dump() + self.run_engine.md.update(config.metadata.model_dump()) package_map = metadata.packages_distributions() packages = {src.module.split(".")[0] for src in config.sources} diff --git a/src/blueapi/service/interface.py b/src/blueapi/service/interface.py index 3c67a8dd4..f064476ab 100644 --- a/src/blueapi/service/interface.py +++ b/src/blueapi/service/interface.py @@ -6,9 +6,10 @@ from multiprocessing.connection import Connection from typing import Any -from bluesky.callbacks.tiled_writer import TiledWriter +from bluesky.run_engine import RunEngineMetadata from bluesky_stomp.messaging import StompClient from bluesky_stomp.models import Broker, DestinationBase, MessageTopic +from bluesky_tiled_plugins import TiledWriter from fastapi import status from tiled.client import from_uri from tiled.client.utils import ClientError @@ -63,7 +64,7 @@ def context() -> BlueskyContext: ctx = BlueskyContext(config()) if (nt_conf := config().numtracker) is not None and (nt := numtracker()): - async def _update_scan_num(md: dict[str, Any]) -> int: + async def _update_scan_num(md: RunEngineMetadata) -> int: scan = await nt.create_scan(md["instrument_session"], md["instrument"]) md["data_session_directory"] = str(scan.scan.directory.path) md["detector_file_template"] = nt_conf.detector_file_template diff --git a/tests/system_tests/config.yaml b/tests/system_tests/config.yaml index 89f94e533..1245eed48 100644 --- a/tests/system_tests/config.yaml +++ b/tests/system_tests/config.yaml @@ -8,8 +8,6 @@ env: module: dodal.beamlines.adsim - kind: planFunctions module: dodal.plans - - kind: planFunctions - module: dodal.plan_stubs.wrapped stomp: enabled: true url: tcp://localhost:61613/ diff --git a/tests/system_tests/plans.json b/tests/system_tests/plans.json index 7432b78f6..37c21c2d5 100644 --- a/tests/system_tests/plans.json +++ b/tests/system_tests/plans.json @@ -1,6219 +1,6685 @@ { - "plans": [ - { - "name": "count", - "description": "Reads from a number of devices.\n\nWraps bluesky.plans.count(det, num, delay, md=metadata) exposing only serializable\nparameters and metadata.\n", - "schema": { - "additionalProperties": false, - "properties": { - "detectors": { - "items": { - "anyOf": [ - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Readable" - }, - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "ophyd_async.core._protocol.AsyncReadable" - } - ] - }, - "title": "Detectors", - "type": "array" - }, - "num": { - "default": 1, - "title": "Num", - "type": "integer" - }, - "delay": { - "anyOf": [ - { - "type": "number" - }, - { - "items": { - "type": "number" - }, - "type": "array" - } - ], - "default": 0, - "title": "Delay" - }, - "metadata": { - "additionalProperties": true, - "title": "Metadata", - "type": "object" - } - }, - "required": [ - "detectors" - ], - "title": "count", - "type": "object" - } + "plans": [ + { + "name": "abs_set", + "description": "\nSet a value. Optionally, wait for it to complete before continuing.\n\nParameters\n----------\nobj : Device\nargs :\n passed to obj.set()\ngroup : string (or any hashable object), optional\n identifier used by 'wait'\nwait : boolean, optional\n If True, wait for completion before processing any more messages.\n False by default.\nkwargs :\n passed to obj.set()\n\nYields\n------\nmsg : Msg\n\nReturns\n-------\nstatus :\n Status that completes when the value is set. If `wait` is True,\n this will always be complete by the time it is returned.\n\nSee Also\n--------\n:func:`bluesky.plan_stubs.rel_set`\n:func:`bluesky.plan_stubs.wait`\n:func:`bluesky.plan_stubs.mv`\n", + "parameter_schema": { + "additionalProperties": false, + "properties": { + "obj": { + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "title": "Obj", + "type": "bluesky.protocols.Movable", + "types": [ + "typing.Any" + ] + }, + "args": { + "items": {}, + "title": "Args", + "type": "array" + }, + "group": { + "title": "Group" + }, + "wait": { + "default": false, + "title": "Wait", + "type": "boolean" + }, + "kwargs": { + "additionalProperties": true, + "title": "Kwargs", + "type": "object" + } }, - { - "name": "list_grid_rscan", - "description": "Scan independent trajectories, relative to current positions.\n\nThe scan is defined by providing a list of points for each scan trajectory. Snakes\nall fast axes by default (all axes but the first axis provided). Wraps\nbluesky.plans.rel_list_grid_scan(det, *args, md=metadata).\n", - "schema": { - "additionalProperties": false, - "properties": { - "detectors": { - "items": { - "anyOf": [ - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Readable" - }, - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "ophyd_async.core._protocol.AsyncReadable" - } - ] - }, - "title": "Detectors", - "type": "array" - }, - "params": { - "items": { - "maxItems": 2, - "minItems": 2, - "prefixItems": [ - { - "enum": [ - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-array_counter", - "det-driver-image_mode", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-wait_for_plugins", - "det-hdf-array_counter", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-xml_file_name", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_travel", - "stage-theta-motor_stop", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-set_use_switch", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-high_limit_travel", - "stage-x-low_limit_travel", - "stage-x-motor_stop", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-set_use_switch", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Movable" - }, - { - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "integer" - } - ] - }, - "type": "array" - } - ], - "type": "array" - }, - "title": "Params", - "type": "array" - }, - "snake_axes": { - "default": true, - "title": "Snake Axes", - "type": "boolean" - }, - "metadata": { - "additionalProperties": true, - "title": "Metadata", - "type": "object" - } + "required": [ + "obj" + ], + "title": "abs_set", + "type": "object" + } + }, + { + "name": "count", + "description": "Reads from a number of devices.\n\nWraps bluesky.plans.count(det, num, delay, md=metadata) exposing only serializable\nparameters and metadata.\n", + "parameter_schema": { + "additionalProperties": false, + "properties": { + "detectors": { + "items": { + "anyOf": [ + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Readable" }, - "required": [ - "detectors", - "params" - ], - "title": "list_grid_rscan", - "type": "object" - } - }, - { - "name": "list_grid_scan", - "description": "Scan independent trajectories.\n\nThe scan is defined by providing a list of points for each scan trajectory. Snakes\nall fast axes by default (all axes but the first axis provided). Wraps\nbluesky.plans.list_grid_scan(det, *args, md=metadata).\n", - "schema": { - "additionalProperties": false, - "properties": { - "detectors": { - "items": { - "anyOf": [ - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Readable" - }, - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "ophyd_async.core._protocol.AsyncReadable" - } - ] - }, - "title": "Detectors", - "type": "array" - }, - "params": { - "items": { - "maxItems": 2, - "minItems": 2, - "prefixItems": [ - { - "enum": [ - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-array_counter", - "det-driver-image_mode", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-wait_for_plugins", - "det-hdf-array_counter", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-xml_file_name", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_travel", - "stage-theta-motor_stop", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-set_use_switch", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-high_limit_travel", - "stage-x-low_limit_travel", - "stage-x-motor_stop", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-set_use_switch", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Movable" - }, - { - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "integer" - } - ] - }, - "type": "array" - } - ], - "type": "array" - }, - "title": "Params", - "type": "array" - }, - "snake_axes": { - "default": true, - "title": "Snake Axes", - "type": "boolean" - }, - "metadata": { - "additionalProperties": true, - "title": "Metadata", - "type": "object" - } + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "ophyd_async.core._protocol.AsyncReadable" + } + ] + }, + "title": "Detectors", + "type": "array" + }, + "num": { + "default": 1, + "title": "Num", + "type": "integer" + }, + "delay": { + "anyOf": [ + { + "type": "number" + }, + { + "items": { + "type": "number" }, - "required": [ - "detectors", - "params" - ], - "title": "list_grid_scan", - "type": "object" - } + "type": "array" + } + ], + "default": 0.0, + "title": "Delay" + }, + "metadata": { + "additionalProperties": true, + "title": "Metadata", + "type": "object" + } }, - { - "name": "list_rscan", - "description": "Scan concurrent trajector(y/ies), relative to current position.\n\nThe scan is defined by providing a list of points for each scan trajectory.\nWraps bluesky.plans.rel_list_scan(det, *args, md=metadata).\n", - "schema": { - "additionalProperties": false, - "properties": { - "detectors": { - "items": { - "anyOf": [ - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Readable" - }, - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "ophyd_async.core._protocol.AsyncReadable" - } - ] - }, - "title": "Detectors", - "type": "array" - }, - "params": { - "items": { - "maxItems": 2, - "minItems": 2, - "prefixItems": [ - { - "enum": [ - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-array_counter", - "det-driver-image_mode", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-wait_for_plugins", - "det-hdf-array_counter", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-xml_file_name", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_travel", - "stage-theta-motor_stop", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-set_use_switch", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-high_limit_travel", - "stage-x-low_limit_travel", - "stage-x-motor_stop", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-set_use_switch", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Movable" - }, - { - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "integer" - } - ] - }, - "type": "array" - } - ], - "type": "array" - }, - "title": "Params", - "type": "array" - }, - "metadata": { - "additionalProperties": true, - "title": "Metadata", - "type": "object" - } + "required": [ + "detectors" + ], + "title": "count", + "type": "object" + } + }, + { + "name": "list_grid_rscan", + "description": "Scan independent trajectories, relative to current positions.\n\nThe scan is defined by providing a list of points for each scan trajectory. Snakes\nall fast axes by default (all axes but the first axis provided). Wraps\nbluesky.plans.rel_list_grid_scan(det, *args, md=metadata).\n", + "parameter_schema": { + "additionalProperties": false, + "properties": { + "detectors": { + "items": { + "anyOf": [ + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Readable" }, - "required": [ - "detectors", - "params" - ], - "title": "list_rscan", - "type": "object" - } - }, - { - "name": "list_scan", - "description": "Scan concurrent single or multi-motor trajector(y/ies).\n\nThe scan is defined by providing a list of points for each scan trajectory.\nWraps bluesky.plans.list_scan(det, *args, md=metadata).\n", - "schema": { - "additionalProperties": false, - "properties": { - "detectors": { - "items": { - "anyOf": [ - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Readable" - }, - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "ophyd_async.core._protocol.AsyncReadable" - } - ] - }, - "title": "Detectors", - "type": "array" - }, - "params": { - "items": { - "maxItems": 2, - "minItems": 2, - "prefixItems": [ - { - "enum": [ - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-array_counter", - "det-driver-image_mode", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-wait_for_plugins", - "det-hdf-array_counter", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-xml_file_name", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_travel", - "stage-theta-motor_stop", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-set_use_switch", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-high_limit_travel", - "stage-x-low_limit_travel", - "stage-x-motor_stop", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-set_use_switch", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Movable" - }, - { - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "integer" - } - ] - }, - "type": "array" - } - ], - "type": "array" - }, - "title": "Params", - "type": "array" - }, - "metadata": { - "additionalProperties": true, - "title": "Metadata", - "type": "object" - } + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "ophyd_async.core._protocol.AsyncReadable" + } + ] + }, + "title": "Detectors", + "type": "array" + }, + "params": { + "items": { + "maxItems": 2, + "minItems": 2, + "prefixItems": [ + { + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Movable" }, - "required": [ - "detectors", - "params" - ], - "title": "list_scan", - "type": "object" - } + { + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "integer" + } + ] + }, + "type": "array" + } + ], + "type": "array" + }, + "title": "Params", + "type": "array" + }, + "snake_axes": { + "default": true, + "title": "Snake Axes", + "type": "boolean" + }, + "metadata": { + "additionalProperties": true, + "title": "Metadata", + "type": "object" + } }, - { - "name": "num_grid_rscan", - "description": "Scan independent trajectories, relative to current positions.\n\nThe scan is defined by number of points along scan trajectories. Snakes all fast\naxes by default (all axes but the first axis provided). Wraps\nbluesky.plans.rel_grid_scan(det, *args, snake_axes, md=metadata).\n", - "schema": { - "additionalProperties": false, - "properties": { - "detectors": { - "items": { - "anyOf": [ - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Readable" - }, - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "ophyd_async.core._protocol.AsyncReadable" - } - ] - }, - "title": "Detectors", - "type": "array" - }, - "params": { - "items": { - "maxItems": 2, - "minItems": 2, - "prefixItems": [ - { - "enum": [ - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-array_counter", - "det-driver-image_mode", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-wait_for_plugins", - "det-hdf-array_counter", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-xml_file_name", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_travel", - "stage-theta-motor_stop", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-set_use_switch", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-high_limit_travel", - "stage-x-low_limit_travel", - "stage-x-motor_stop", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-set_use_switch", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Movable" - }, - { - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "integer" - } - ] - }, - "type": "array" - } - ], - "type": "array" - }, - "title": "Params", - "type": "array" - }, - "snake_axes": { - "anyOf": [ - { - "items": {}, - "type": "array" - }, - { - "type": "boolean" - } - ], - "default": true, - "title": "Snake Axes" - }, - "metadata": { - "additionalProperties": true, - "title": "Metadata", - "type": "object" - } + "required": [ + "detectors", + "params" + ], + "title": "list_grid_rscan", + "type": "object" + } + }, + { + "name": "list_grid_scan", + "description": "Scan independent trajectories.\n\nThe scan is defined by providing a list of points for each scan trajectory. Snakes\nall fast axes by default (all axes but the first axis provided). Wraps\nbluesky.plans.list_grid_scan(det, *args, md=metadata).\n", + "parameter_schema": { + "additionalProperties": false, + "properties": { + "detectors": { + "items": { + "anyOf": [ + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Readable" }, - "required": [ - "detectors", - "params" - ], - "title": "num_grid_rscan", - "type": "object" - } - }, - { - "name": "num_grid_scan", - "description": "Scan independent multi-motor trajectories.\n\nThe scan is defined by number of points along scan trajectories. Snakes all fast\naxes by default (all axes but the first axis provided). Wraps\nbluesky.plans.grid_scan(det, *args, snake_axes, md=metadata).\n", - "schema": { - "additionalProperties": false, - "properties": { - "detectors": { - "items": { - "anyOf": [ - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Readable" - }, - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "ophyd_async.core._protocol.AsyncReadable" - } - ] - }, - "title": "Detectors", - "type": "array" - }, - "params": { - "items": { - "maxItems": 2, - "minItems": 2, - "prefixItems": [ - { - "enum": [ - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-array_counter", - "det-driver-image_mode", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-wait_for_plugins", - "det-hdf-array_counter", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-xml_file_name", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_travel", - "stage-theta-motor_stop", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-set_use_switch", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-high_limit_travel", - "stage-x-low_limit_travel", - "stage-x-motor_stop", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-set_use_switch", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Movable" - }, - { - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "integer" - } - ] - }, - "type": "array" - } - ], - "type": "array" - }, - "title": "Params", - "type": "array" - }, - "snake_axes": { - "anyOf": [ - { - "items": {}, - "type": "array" - }, - { - "type": "boolean" - } - ], - "default": true, - "title": "Snake Axes" - }, - "metadata": { - "additionalProperties": true, - "title": "Metadata", - "type": "object" - } + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "ophyd_async.core._protocol.AsyncReadable" + } + ] + }, + "title": "Detectors", + "type": "array" + }, + "params": { + "items": { + "maxItems": 2, + "minItems": 2, + "prefixItems": [ + { + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Movable" }, - "required": [ - "detectors", - "params" - ], - "title": "num_grid_scan", - "type": "object" - } - }, - { - "name": "num_rscan", - "description": "Scan concurrent trajector(y/ies), relative to current position(s).\n\nThe scan is defined by number of points along scan trajector(y/ies). Wraps\nbluesky.plans.rel_scan(det, *args, num, md=metadata).\n", - "schema": { - "additionalProperties": false, - "properties": { - "detectors": { - "items": { - "anyOf": [ - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Readable" - }, - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "ophyd_async.core._protocol.AsyncReadable" - } - ] - }, - "title": "Detectors", - "type": "array" - }, - "params": { - "items": { - "maxItems": 2, - "minItems": 2, - "prefixItems": [ - { - "enum": [ - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-array_counter", - "det-driver-image_mode", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-wait_for_plugins", - "det-hdf-array_counter", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-xml_file_name", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_travel", - "stage-theta-motor_stop", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-set_use_switch", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-high_limit_travel", - "stage-x-low_limit_travel", - "stage-x-motor_stop", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-set_use_switch", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Movable" - }, - { - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "integer" - } - ] - }, - "type": "array" - } - ], - "type": "array" - }, - "title": "Params", - "type": "array" - }, - "num": { - "title": "Num", + { + "items": { + "anyOf": [ + { + "type": "number" + }, + { "type": "integer" - }, - "metadata": { - "additionalProperties": true, - "title": "Metadata", - "type": "object" - } - }, - "required": [ - "detectors", - "params" - ], - "title": "num_rscan", - "type": "object" - } + } + ] + }, + "type": "array" + } + ], + "type": "array" + }, + "title": "Params", + "type": "array" + }, + "snake_axes": { + "default": true, + "title": "Snake Axes", + "type": "boolean" + }, + "metadata": { + "additionalProperties": true, + "title": "Metadata", + "type": "object" + } }, - { - "name": "num_scan", - "description": "Scan concurrent single or multi-motor trajector(y/ies).\n\nThe scan is defined by number of points along scan trajector(y/ies). Wraps\nbluesky.plans.scan(det, *args, num, md=metadata).\n", - "schema": { - "additionalProperties": false, - "properties": { - "detectors": { - "items": { - "anyOf": [ - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Readable" - }, - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "ophyd_async.core._protocol.AsyncReadable" - } - ] - }, - "title": "Detectors", - "type": "array" - }, - "params": { - "items": { - "maxItems": 2, - "minItems": 2, - "prefixItems": [ - { - "enum": [ - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-array_counter", - "det-driver-image_mode", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-wait_for_plugins", - "det-hdf-array_counter", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-xml_file_name", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_travel", - "stage-theta-motor_stop", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-set_use_switch", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-high_limit_travel", - "stage-x-low_limit_travel", - "stage-x-motor_stop", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-set_use_switch", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Movable" - }, - { - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "integer" - } - ] - }, - "type": "array" - } - ], - "type": "array" - }, - "title": "Params", - "type": "array" - }, - "num": { - "title": "Num", - "type": "integer" - }, - "metadata": { - "additionalProperties": true, - "title": "Metadata", - "type": "object" - } + "required": [ + "detectors", + "params" + ], + "title": "list_grid_scan", + "type": "object" + } + }, + { + "name": "list_rscan", + "description": "Scan concurrent trajector(y/ies), relative to current position.\n\nThe scan is defined by providing a list of points for each scan trajectory.\nWraps bluesky.plans.rel_list_scan(det, *args, md=metadata).\n", + "parameter_schema": { + "additionalProperties": false, + "properties": { + "detectors": { + "items": { + "anyOf": [ + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Readable" }, - "required": [ - "detectors", - "params", - "num" - ], - "title": "num_scan", - "type": "object" - } + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "ophyd_async.core._protocol.AsyncReadable" + } + ] + }, + "title": "Detectors", + "type": "array" + }, + "params": { + "items": { + "maxItems": 2, + "minItems": 2, + "prefixItems": [ + { + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Movable" + }, + { + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "integer" + } + ] + }, + "type": "array" + } + ], + "type": "array" + }, + "title": "Params", + "type": "array" + }, + "metadata": { + "additionalProperties": true, + "title": "Metadata", + "type": "object" + } }, - { - "name": "spec_scan", - "description": "Generic plan for reading `detectors` at every point of a ScanSpec `Spec`.\nA `Spec` is an N-dimensional path.\n", - "schema": { - "$defs": { - "Concat_Reference_": { - "additionalProperties": false, - "description": "Concatenate two Specs together, running one after the other.\n\nEach Dimension of left and right must contain the same axes. Typically\nformed using `Spec.concat`.\n\n.. example_spec::\n\n from scanspec.specs import Fly, Linspace\n\n spec = Fly(Linspace(\"x\", 1, 3, 3).concat(Linspace(\"x\", 4, 5, 5)))", - "properties": { - "left": { - "$ref": "#/$defs/Spec", - "description": "The left-hand Spec to Concat, midpoints will appear earlier" - }, - "right": { - "$ref": "#/$defs/Spec", - "description": "The right-hand Spec to Concat, midpoints will appear later" - }, - "gap": { - "default": false, - "description": "If True, force a gap in the output at the join", - "title": "Gap", - "type": "boolean" - }, - "check_path_changes": { - "default": true, - "description": "If True path through scan will not be modified by squash", - "title": "Check Path Changes", - "type": "boolean" - }, - "type": { - "const": "Concat", - "default": "Concat", - "title": "Type", - "type": "string" - } - }, - "required": [ - "left", - "right" - ], - "title": "Concat", - "type": "object" - }, - "ConstantDuration_Reference_": { - "additionalProperties": false, - "description": "Apply a constant duration to every point in a Spec.\n\nTypically applied with the ``@`` modifier.\n\n.. example_spec::\n\n from scanspec.specs import Linspace\n\n spec = 0.1 @ Linspace(\"x\", 1, 2, 3)", - "properties": { - "constant_duration": { - "description": "The value at each point", - "title": "Constant Duration", - "type": "number" - }, - "spec": { - "anyOf": [ - { - "$ref": "#/$defs/Spec" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Spec contaning the path to be followed" - }, - "type": { - "const": "ConstantDuration", - "default": "ConstantDuration", - "title": "Type", - "type": "string" - } - }, - "required": [ - "constant_duration" - ], - "title": "ConstantDuration", - "type": "object" - }, - "Ellipse_Reference_": { - "additionalProperties": false, - "description": "Grid of points masked to an elliptical footprint.\n\nConstructs a 2-D scan over an axis-aligned ellipse defined by\n``(x_axis, y_axis)``, centred at (``x_centre``, ``y_centre``), with\ndiameters ``x_diameter`` and ``y_diameter``. Grid spacing along each axis is\ncontrolled by ``x_step`` and ``y_step``. If ``snake`` is True, the fast\naxis will zigzag like a snake. If ``vertical`` is True, the y axis will be\nthe fast axis.\n\nStarts from one of the four extremes of the ellipse identified by the signs of\n``x_step`` and ``y_step``.\n\n.. example_spec::\n\n from scanspec.specs import Ellipse, Fly\n\n # An elliptical region centred at (0, 0) on axes \"x\" and \"y\",\n # with 10x6 diameters and steps of 0.5 in both directions.\n spec = Fly(\n Ellipse(\n \"x\", 0, 10, 0.5,\n \"y\", 0, 6,\n snake=True,\n vertical=False,\n )\n )", - "properties": { - "x_axis": { - "description": "An identifier for what to move for x", - "enum": [ - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-array_counter", - "det-driver-image_mode", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-wait_for_plugins", - "det-hdf-array_counter", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-xml_file_name", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_travel", - "stage-theta-motor_stop", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-set_use_switch", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-high_limit_travel", - "stage-x-low_limit_travel", - "stage-x-motor_stop", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-set_use_switch", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "title": "X Axis", - "type": "bluesky.protocols.Movable" - }, - "x_centre": { - "description": "x centre of the spiral", - "title": "X Centre", - "type": "number" - }, - "x_diameter": { - "description": "x width of the spiral", - "title": "X Diameter", - "type": "number" - }, - "x_step": { - "description": "Spacing along x", - "exclusiveMinimum": 0, - "title": "X Step", - "type": "number" - }, - "y_axis": { - "description": "An identifier for what to move for y", - "enum": [ - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-array_counter", - "det-driver-image_mode", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-wait_for_plugins", - "det-hdf-array_counter", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-xml_file_name", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_travel", - "stage-theta-motor_stop", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-set_use_switch", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-high_limit_travel", - "stage-x-low_limit_travel", - "stage-x-motor_stop", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-set_use_switch", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "title": "Y Axis", - "type": "bluesky.protocols.Movable" - }, - "y_centre": { - "description": "y centre of the spiral", - "title": "Y Centre", - "type": "number" - }, - "y_diameter": { - "description": "y width of the spiral (defaults to x_diameter)", - "title": "Y Diameter", - "type": "number" - }, - "y_step": { - "description": "Spacing along y (defaults to x_step)", - "exclusiveMinimum": 0, - "title": "Y Step", - "type": "number" - }, - "snake": { - "default": false, - "description": "If True, path zigzag like a snake (defaults to False)", - "title": "Snake", - "type": "boolean" - }, - "vertical": { - "default": false, - "description": "If True, y axis is the fast axis (defaults to False)", - "title": "Vertical", - "type": "boolean" - }, - "type": { - "const": "Ellipse", - "default": "Ellipse", - "title": "Type", - "type": "string" - } - }, - "required": [ - "x_axis", - "x_centre", - "x_diameter", - "x_step", - "y_axis", - "y_centre" - ], - "title": "Ellipse", - "type": "object" - }, - "Fly_Reference_": { - "additionalProperties": false, - "description": "Move through lower to upper bounds of the Spec rather than stopping.\n\nThis is commonly termed a \"fly scan\" rather than a \"step scan\"\n\n.. example_spec::\n\n from scanspec.specs import Fly, Linspace\n\n spec = Fly(Linspace(\"x\", 1, 2, 3))", - "properties": { - "spec": { - "$ref": "#/$defs/Spec", - "description": "Spec contaning the path to be followed" - }, - "type": { - "const": "Fly", - "default": "Fly", - "title": "Type", - "type": "string" - } - }, - "required": [ - "spec" - ], - "title": "Fly", - "type": "object" - }, - "Linspace_Reference_": { - "additionalProperties": false, - "description": "Linearly spaced frames with start and stop as first and last midpoints.\n\nThis class is intended to handle linearly spaced frames defined with a\nspecific number of frames.\n\n.. seealso::\n `Range`: For linearly spaced frames defined with a step size.\n\n.. example_spec::\n\n from scanspec.specs import Fly, Linspace\n\n spec = Fly(Linspace(\"x\", 1, 2, 5))", - "properties": { - "axis": { - "description": "An identifier for what to move", - "enum": [ - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-array_counter", - "det-driver-image_mode", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-wait_for_plugins", - "det-hdf-array_counter", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-xml_file_name", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_travel", - "stage-theta-motor_stop", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-set_use_switch", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-high_limit_travel", - "stage-x-low_limit_travel", - "stage-x-motor_stop", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-set_use_switch", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "title": "Axis", - "type": "bluesky.protocols.Movable" - }, - "start": { - "description": "Midpoint of the first point of the line", - "title": "Start", - "type": "number" - }, - "stop": { - "description": "Midpoint of the last point of the line", - "title": "Stop", - "type": "number" - }, - "num": { - "default": 1, - "description": "Number of frames to produce (defaults to 1)", - "minimum": 1, - "title": "Num", - "type": "integer" - }, - "type": { - "const": "Linspace", - "default": "Linspace", - "title": "Type", - "type": "string" - } - }, - "required": [ - "axis", - "start", - "stop" - ], - "title": "Linspace", - "type": "object" - }, - "Polygon_Reference_": { - "additionalProperties": false, - "description": "Grid of points masked to a polygonal footprint.\n\nConstructs a 2-D scan over an axis-aligned polygon defined by an ordered\nlist of vertices \"(x, y)\" given in ``vertices``. The polygon may be convex\nor concave, and the interior is determined using an even-odd ray-casting\nrule. Grid spacing along each axis is controlled by ``x_step`` and ``y_step``,\nIf ``snake`` is True, the fast axis will zigzag like a snake. If ``vertical`` is\nTrue, the y axis will be the fast axis.\n\n.. example_spec::\n\n from scanspec.specs import Polygon, Fly\n\n # A triangular region on axes \"x\" and \"y\", stepped by 0.2 units\n # in both directions.\n spec = Fly(\n Polygon(\n x_axis=\"x\",\n y_axis=\"y\",\n vertices=[(0, 0), (5, 0), (2.5, 4)],\n x_step=0.2,\n y_step=0.2,\n snake=True,\n vertical=False,\n )\n )", - "properties": { - "x_axis": { - "description": "An identifier for what to move for x", - "enum": [ - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-array_counter", - "det-driver-image_mode", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-wait_for_plugins", - "det-hdf-array_counter", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-xml_file_name", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_travel", - "stage-theta-motor_stop", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-set_use_switch", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-high_limit_travel", - "stage-x-low_limit_travel", - "stage-x-motor_stop", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-set_use_switch", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "title": "X Axis", - "type": "bluesky.protocols.Movable" - }, - "y_axis": { - "description": "An identifier for what to move for y", - "enum": [ - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-array_counter", - "det-driver-image_mode", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-wait_for_plugins", - "det-hdf-array_counter", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-xml_file_name", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_travel", - "stage-theta-motor_stop", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-set_use_switch", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-high_limit_travel", - "stage-x-low_limit_travel", - "stage-x-motor_stop", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-set_use_switch", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "title": "Y Axis", - "type": "bluesky.protocols.Movable" - }, - "vertices": { - "description": "List of (x, y) vertices defining the polygon", - "items": { - "maxItems": 2, - "minItems": 2, - "prefixItems": [ - { - "type": "number" - }, - { - "type": "number" - } - ], - "type": "array" - }, - "title": "Vertices", - "type": "array" - }, - "x_step": { - "description": "Spacing along x", - "exclusiveMinimum": 0, - "title": "X Step", - "type": "number" - }, - "y_step": { - "description": "Spacing along y (defaults to x_step)", - "exclusiveMinimum": 0, - "title": "Y Step", - "type": "number" - }, - "snake": { - "default": false, - "description": "If True, path zigzag like a snake (defaults to False)", - "title": "Snake", - "type": "boolean" - }, - "vertical": { - "default": false, - "description": "If True, y axis is the fast axis (defaults to False)", - "title": "Vertical", - "type": "boolean" - }, - "type": { - "const": "Polygon", - "default": "Polygon", - "title": "Type", - "type": "string" - } - }, - "required": [ - "x_axis", - "y_axis", - "vertices", - "x_step" - ], - "title": "Polygon", - "type": "object" - }, - "Product_Reference_": { - "additionalProperties": false, - "description": "Outer product of two Specs, nesting inner within outer.\n\nThis means that inner will run in its entirety at each point in outer.\n\n.. example_spec::\n\n from scanspec.specs import Fly, Linspace\n\n spec = Fly(Linspace(\"y\", 1, 2, 3) * Linspace(\"x\", 3, 4, 12))\n\nAn inner integer can be used to repeat the same point many times.\n\n.. example_spec::\n\n from scanspec.specs import Fly, Linspace\n\n spec = Fly(Linspace(\"y\", 1, 2, 3) * 2)\n\nAn outer integer can be used to repeat the same scan many times.\n\n.. example_spec::\n\n from scanspec.specs import Fly, Linspace\n\n spec = Fly(2 * ~Linspace.bounded(\"x\", 3, 4, 1))\n\nIf you want snaked axes to have no gap between iterations you can do:\n\n.. example_spec::\n\n from scanspec.specs import Fly, Linspace, Product\n\n spec = Fly(Product(2, ~Linspace.bounded(\"x\", 3, 4, 1), gap=False))\n\n.. note:: There is no turnaround arrow at x=4", - "properties": { - "outer": { - "anyOf": [ - { - "$ref": "#/$defs/Spec" - }, - { - "type": "integer" - } - ], - "description": "Will be executed once", - "title": "Outer" - }, - "inner": { - "anyOf": [ - { - "$ref": "#/$defs/Spec" - }, - { - "type": "integer" - } - ], - "description": "Will be executed len(outer) times", - "title": "Inner" - }, - "gap": { - "default": true, - "description": "If False and the outer spec is an integer and the inner spec is snaked then the end and start of consecutive iterations of inner will have no gap", - "title": "Gap", - "type": "boolean" - }, - "type": { - "const": "Product", - "default": "Product", - "title": "Type", - "type": "string" - } - }, - "required": [ - "outer", - "inner" - ], - "title": "Product", - "type": "object" - }, - "Range_Reference_": { - "additionalProperties": false, - "description": "Linearly spaced frames with start and stop as the bounding midpoints.\n\n``step`` defines the distance between midpoints.\n\n.. seealso::\n `Linspace`: For linearly spaced frames defined with a number of frames.\n\n.. example_spec::\n\n from scanspec.specs import Fly, Range\n\n spec = Fly(Range(\"x\", 1, 2, 0.25))", - "properties": { - "axis": { - "description": "An identifier for what to move", - "enum": [ - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-array_counter", - "det-driver-image_mode", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-wait_for_plugins", - "det-hdf-array_counter", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-xml_file_name", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_travel", - "stage-theta-motor_stop", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-set_use_switch", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-high_limit_travel", - "stage-x-low_limit_travel", - "stage-x-motor_stop", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-set_use_switch", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "title": "Axis", - "type": "bluesky.protocols.Movable" - }, - "start": { - "description": "Midpoint of the first point of the line", - "title": "Start", - "type": "number" - }, - "stop": { - "description": "Midpoint of the last point of the line", - "title": "Stop", - "type": "number" - }, - "step": { - "description": "Step size (defaults to stop - start)", - "exclusiveMinimum": 0, - "title": "Step", - "type": "number" - }, - "type": { - "const": "Range", - "default": "Range", - "title": "Type", - "type": "string" - } - }, - "required": [ - "axis", - "start", - "stop" - ], - "title": "Range", - "type": "object" - }, - "Snake_Reference_": { - "additionalProperties": false, - "description": "Run the Spec in reverse on every other iteration when nested.\n\nTypically created with the ``~`` operator.\n\n.. example_spec::\n\n from scanspec.specs import Fly, Linspace\n\n spec = Fly(Linspace(\"y\", 1, 3, 3) * ~Linspace(\"x\", 3, 5, 5))", - "properties": { - "spec": { - "$ref": "#/$defs/Spec", - "description": "The Spec to run in reverse every other iteration" - }, - "type": { - "const": "Snake", - "default": "Snake", - "title": "Type", - "type": "string" - } - }, - "required": [ - "spec" - ], - "title": "Snake", - "type": "object" - }, - "Spec": { - "discriminator": { - "mapping": { - "Concat": "#/$defs/Concat_Reference_", - "ConstantDuration": "#/$defs/ConstantDuration_Reference_", - "Ellipse": "#/$defs/Ellipse_Reference_", - "Fly": "#/$defs/Fly_Reference_", - "Linspace": "#/$defs/Linspace_Reference_", - "Polygon": "#/$defs/Polygon_Reference_", - "Product": "#/$defs/Product_Reference_", - "Range": "#/$defs/Range_Reference_", - "Snake": "#/$defs/Snake_Reference_", - "Spiral": "#/$defs/Spiral_Reference_", - "Squash": "#/$defs/Squash_Reference_", - "Static": "#/$defs/Static_Reference_", - "Zip": "#/$defs/Zip_Reference_" - }, - "propertyName": "type" - }, - "oneOf": [ - { - "$ref": "#/$defs/Product_Reference_" - }, - { - "$ref": "#/$defs/Zip_Reference_" - }, - { - "$ref": "#/$defs/Snake_Reference_" - }, - { - "$ref": "#/$defs/Concat_Reference_" - }, - { - "$ref": "#/$defs/Squash_Reference_" - }, - { - "$ref": "#/$defs/Linspace_Reference_" - }, - { - "$ref": "#/$defs/Range_Reference_" - }, - { - "$ref": "#/$defs/Fly_Reference_" - }, - { - "$ref": "#/$defs/ConstantDuration_Reference_" - }, - { - "$ref": "#/$defs/Static_Reference_" - }, - { - "$ref": "#/$defs/Spiral_Reference_" - }, - { - "$ref": "#/$defs/Ellipse_Reference_" - }, - { - "$ref": "#/$defs/Polygon_Reference_" - } - ] - }, - "Spiral_Reference_": { - "additionalProperties": false, - "description": "Archimedean spiral of \"x_axis\" and \"y_axis\".\n\nStarts at centre point (\"x_start\", \"y_start\")\". Produces \"num\" points in a\nspiral spanning width of \"x_range\" and height of \"y_range\"\n\n.. example_spec::\n\n from scanspec.specs import Fly, Spiral\n\n spec = Fly(Spiral(\"x\", 1, 10, 2.5, \"y\", 5, 50))", - "properties": { - "x_axis": { - "description": "An identifier for what to move for x", - "enum": [ - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-array_counter", - "det-driver-image_mode", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-wait_for_plugins", - "det-hdf-array_counter", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-xml_file_name", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_travel", - "stage-theta-motor_stop", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-set_use_switch", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-high_limit_travel", - "stage-x-low_limit_travel", - "stage-x-motor_stop", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-set_use_switch", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "title": "X Axis", - "type": "bluesky.protocols.Movable" - }, - "x_centre": { - "description": "x centre of the spiral", - "title": "X Centre", - "type": "number" - }, - "x_diameter": { - "description": "x width of the spiral", - "title": "X Diameter", - "type": "number" - }, - "x_step": { - "description": "Radial spacing along x", - "title": "X Step", - "type": "number" - }, - "y_axis": { - "description": "An identifier for what to move for y", - "enum": [ - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-array_counter", - "det-driver-image_mode", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-wait_for_plugins", - "det-hdf-array_counter", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-xml_file_name", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_travel", - "stage-theta-motor_stop", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-set_use_switch", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-high_limit_travel", - "stage-x-low_limit_travel", - "stage-x-motor_stop", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-set_use_switch", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "title": "Y Axis", - "type": "bluesky.protocols.Movable" - }, - "y_centre": { - "description": "y centre of the spiral", - "title": "Y Centre", - "type": "number" - }, - "y_diameter": { - "description": "y width of the spiral (defaults to x_diameter)", - "title": "Y Diameter", - "type": "number" - }, - "type": { - "const": "Spiral", - "default": "Spiral", - "title": "Type", - "type": "string" - } - }, - "required": [ - "x_axis", - "x_centre", - "x_diameter", - "x_step", - "y_axis", - "y_centre" - ], - "title": "Spiral", - "type": "object" - }, - "Squash_Reference_": { - "additionalProperties": false, - "description": "Squash a stack of Dimension together into a single expanded Dimension object.\n\nSee Also:\n `why-squash-can-change-path`\n\n.. example_spec::\n\n from scanspec.specs import Fly, Linspace, Squash\n\n spec = Fly(Squash(Linspace(\"y\", 1, 2, 3) * Linspace(\"x\", 0, 1, 4)))", - "properties": { - "spec": { - "$ref": "#/$defs/Spec", - "description": "The Spec to squash the dimensions of" - }, - "check_path_changes": { - "default": true, - "description": "If True path through scan will not be modified by squash", - "title": "Check Path Changes", - "type": "boolean" - }, - "type": { - "const": "Squash", - "default": "Squash", - "title": "Type", - "type": "string" - } - }, - "required": [ - "spec" - ], - "title": "Squash", - "type": "object" - }, - "Static_Reference_": { - "additionalProperties": false, - "description": "A static frame, repeated num times, with axis at value.\n\nCan be used to set axis=value at every point in a scan.\n\n.. example_spec::\n\n from scanspec.specs import Fly, Linspace, Static\n\n spec = Fly(Linspace(\"y\", 1, 2, 3).zip(Static(\"x\", 3)))", - "properties": { - "axis": { - "description": "An identifier for what to move", - "enum": [ - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-array_counter", - "det-driver-image_mode", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-wait_for_plugins", - "det-hdf-array_counter", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-xml_file_name", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_travel", - "stage-theta-motor_stop", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-set_use_switch", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-high_limit_travel", - "stage-x-low_limit_travel", - "stage-x-motor_stop", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-set_use_switch", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "title": "Axis", - "type": "bluesky.protocols.Movable" - }, - "value": { - "description": "The value at each point", - "title": "Value", - "type": "number" - }, - "num": { - "default": 1, - "description": "Number of frames to produce", - "minimum": 1, - "title": "Num", - "type": "integer" - }, - "type": { - "const": "Static", - "default": "Static", - "title": "Type", - "type": "string" - } - }, - "required": [ - "axis", - "value" - ], - "title": "Static", - "type": "object" - }, - "Zip_Reference_": { - "additionalProperties": false, - "description": "Run two Specs in parallel, merging their midpoints together.\n\nTypically formed using `Spec.zip`.\n\nStacks of Dimension are merged by:\n\n- If right creates a stack of a single Dimension object of size 1, expand it to\n the size of the fastest Dimension object created by left\n- Merge individual Dimension objects together from fastest to slowest\n\nThis means that Zipping a Spec producing stack [l2, l1] with a Spec\nproducing stack [r1] will assert len(l1)==len(r1), and produce\nstack [l2, l1.zip(r1)].\n\n.. example_spec::\n\n from scanspec.specs import Fly, Linspace\n\n spec = Fly(\n Linspace(\"z\", 1, 2, 3) * Linspace(\"y\", 3, 4, 5).zip(Linspace(\"x\", 4, 5, 5))\n )", - "properties": { - "left": { - "$ref": "#/$defs/Spec", - "description": "The left-hand Spec to Zip, will appear earlier in axes" - }, - "right": { - "$ref": "#/$defs/Spec", - "description": "The right-hand Spec to Zip, will appear later in axes" - }, - "type": { - "const": "Zip", - "default": "Zip", - "title": "Type", - "type": "string" - } - }, - "required": [ - "left", - "right" - ], - "title": "Zip", - "type": "object" - } + "required": [ + "detectors", + "params" + ], + "title": "list_rscan", + "type": "object" + } + }, + { + "name": "list_scan", + "description": "Scan concurrent single or multi-motor trajector(y/ies).\n\nThe scan is defined by providing a list of points for each scan trajectory.\nWraps bluesky.plans.list_scan(det, *args, md=metadata).\n", + "parameter_schema": { + "additionalProperties": false, + "properties": { + "detectors": { + "items": { + "anyOf": [ + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Readable" }, - "additionalProperties": false, - "properties": { - "detectors": { - "items": { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Readable" - }, - "title": "Detectors", - "type": "array", - "uniqueItems": true - }, - "spec": { - "$ref": "#/$defs/Spec" - }, - "metadata": { - "additionalProperties": true, - "title": "Metadata", - "type": "object" - } + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "ophyd_async.core._protocol.AsyncReadable" + } + ] + }, + "title": "Detectors", + "type": "array" + }, + "params": { + "items": { + "maxItems": 2, + "minItems": 2, + "prefixItems": [ + { + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Movable" }, - "required": [ - "detectors", - "spec" - ], - "title": "spec_scan", - "type": "object" - } + { + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "integer" + } + ] + }, + "type": "array" + } + ], + "type": "array" + }, + "title": "Params", + "type": "array" + }, + "metadata": { + "additionalProperties": true, + "title": "Metadata", + "type": "object" + } }, - { - "name": "step_grid_rscan", - "description": "Scan independent trajectories with specified step size, relative to position.\n\nGenerates list(s) of points for each trajectory, used with\nbluesky.plans.list_grid_scan(det, *args, md=metadata). Snakes all fast axes by\ndefault (all axes but the first axis provided).\n", - "schema": { - "additionalProperties": false, - "properties": { - "detectors": { - "items": { - "anyOf": [ - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Readable" - }, - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "ophyd_async.core._protocol.AsyncReadable" - } - ] - }, - "title": "Detectors", - "type": "array" - }, - "params": { - "items": { - "maxItems": 2, - "minItems": 2, - "prefixItems": [ - { - "enum": [ - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-array_counter", - "det-driver-image_mode", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-wait_for_plugins", - "det-hdf-array_counter", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-xml_file_name", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_travel", - "stage-theta-motor_stop", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-set_use_switch", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-high_limit_travel", - "stage-x-low_limit_travel", - "stage-x-motor_stop", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-set_use_switch", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Movable" - }, - { - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "integer" - } - ] - }, - "type": "array" - } - ], - "type": "array" - }, - "title": "Params", - "type": "array" - }, - "snake_axes": { - "default": true, - "title": "Snake Axes", - "type": "boolean" - }, - "metadata": { - "additionalProperties": true, - "title": "Metadata", - "type": "object" - } - }, - "required": [ - "detectors", - "params" - ], - "title": "step_grid_rscan", - "type": "object" - } + "required": [ + "detectors", + "params" + ], + "title": "list_scan", + "type": "object" + } + }, + { + "name": "loc", + "description": "\nLocate a Movable and return its location.\n\nYields\n------\nmsg : Msg\n ``Msg('locate', obj)``\n\nReturns\n-------\nlocation : Location\n Where the Movable was asked to move to and where it is now.\n", + "parameter_schema": { + "additionalProperties": false, + "properties": { + "obj": { + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "title": "Obj", + "type": "bluesky.protocols.Locatable", + "types": [ + "Any" + ] + } }, - { - "name": "step_grid_scan", - "description": "Scan independent trajectories with specified step size.\n\nGenerates list(s) of points for each trajectory, used with\nbluesky.plans.list_grid_scan(det, *args, md=metadata). Snakes all fast axes by\ndefault (all axes but the first axis provided).\n", - "schema": { - "additionalProperties": false, - "properties": { - "detectors": { - "items": { - "anyOf": [ - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Readable" - }, - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "ophyd_async.core._protocol.AsyncReadable" - } - ] - }, - "title": "Detectors", - "type": "array" - }, - "params": { - "items": { - "maxItems": 2, - "minItems": 2, - "prefixItems": [ - { - "enum": [ - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-array_counter", - "det-driver-image_mode", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-wait_for_plugins", - "det-hdf-array_counter", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-xml_file_name", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_travel", - "stage-theta-motor_stop", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-set_use_switch", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-high_limit_travel", - "stage-x-low_limit_travel", - "stage-x-motor_stop", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-set_use_switch", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Movable" - }, - { - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "integer" - } - ] - }, - "type": "array" - } - ], - "type": "array" - }, - "title": "Params", - "type": "array" - }, - "snake_axes": { - "default": true, - "title": "Snake Axes", - "type": "boolean" - }, - "metadata": { - "additionalProperties": true, - "title": "Metadata", - "type": "object" - } + "required": [ + "obj" + ], + "title": "loc", + "type": "object" + } + }, + { + "name": "locate", + "description": "\nLocate some Movables in parallel and return their locations by name.\n\nParameters\n----------\n*objs : Locatable[Any]\n One or more objects implementing the locate() method.\n They must also have a ``name`` property.\nsqueeze : bool, optional\n Ignored, with a warning. Use ``loc`` to get a single location.\n\nYields\n------\nmsg : Msg\n ``Msg('locate', obj1, ..., objn)``\n\nReturns\n-------\nlocations : Mapping[str, Location]\n The location of each object, keyed by its name.\n\nRaises\n------\nTypeError\n If an object has no ``name``.\nValueError\n If two objects have the same name.\n", + "parameter_schema": { + "additionalProperties": false, + "properties": { + "objs": { + "items": { + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Locatable", + "types": [ + "typing.Any" + ] + }, + "title": "Objs", + "type": "array" + }, + "squeeze": { + "title": "Squeeze", + "type": "boolean" + } + }, + "title": "locate", + "type": "object" + } + }, + { + "name": "mv", + "description": "\nMove one or more devices to a setpoint. Wait for all to complete.\n\nIf more than one device is specified, the movements are done in parallel.\n\nParameters\n----------\nargs :\n device1, value1, device2, value2, ...\ngroup : string, optional\n Used to mark these as a unit to be waited on.\ntimeout : float, optional\n Specify a maximum time that the move(s) can be waited for.\nkwargs :\n passed to obj.set()\n\nYields\n------\nmsg : Msg\n\nReturns\n-------\nstatuses :\n Tuple of n statuses, one for each move operation\n\nSee Also\n--------\n:func:`bluesky.plan_stubs.abs_set`\n:func:`bluesky.plan_stubs.mvr`\n", + "parameter_schema": { + "additionalProperties": false, + "properties": { + "args": { + "items": { + "anyOf": [ + { + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Movable", + "types": [ + "typing.Any" + ] }, - "required": [ - "detectors", - "params" - ], - "title": "step_grid_scan", - "type": "object" - } + {} + ] + }, + "title": "Args", + "type": "array" + }, + "group": { + "title": "Group" + }, + "timeout": { + "title": "Timeout", + "type": "number" + }, + "kwargs": { + "additionalProperties": true, + "title": "Kwargs", + "type": "object" + } }, - { - "name": "step_rscan", - "description": "Scan concurrent trajectories with specified step size, relative to position.\n\nGenerates list(s) of points for each trajectory, used with\nbluesky.plans.rel_list_scan(det, *args, md=metadata).\n", - "schema": { - "additionalProperties": false, - "properties": { - "detectors": { - "items": { - "anyOf": [ - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Readable" - }, - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "ophyd_async.core._protocol.AsyncReadable" - } - ] - }, - "title": "Detectors", - "type": "array" - }, - "params": { - "items": { - "maxItems": 2, - "minItems": 2, - "prefixItems": [ - { - "enum": [ - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-array_counter", - "det-driver-image_mode", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-wait_for_plugins", - "det-hdf-array_counter", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-xml_file_name", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_travel", - "stage-theta-motor_stop", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-set_use_switch", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-high_limit_travel", - "stage-x-low_limit_travel", - "stage-x-motor_stop", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-set_use_switch", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Movable" - }, - { - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "integer" - } - ] - }, - "type": "array" - } - ], - "type": "array" - }, - "title": "Params", - "type": "array" - }, - "metadata": { - "additionalProperties": true, - "title": "Metadata", - "type": "object" - } + "title": "mv", + "type": "object" + } + }, + { + "name": "mvr", + "description": "\nMove one or more devices to a relative setpoint. Wait for all to complete.\n\nIf more than one device is specified, the movements are done in parallel.\n\nParameters\n----------\nargs :\n device1, value1, device2, value2, ...\ngroup : string, optional\n Used to mark these as a unit to be waited on.\ntimeout : float, optional\n Specify a maximum time that the move(s) can be waited for.\nkwargs :\n passed to obj.set()\n\nYields\n------\nmsg : Msg\n\nReturns\n-------\nstatuses :\n Tuple of n statuses, one for each move operation\n\nSee Also\n--------\n:func:`bluesky.plan_stubs.rel_set`\n:func:`bluesky.plan_stubs.mv`\n", + "parameter_schema": { + "additionalProperties": false, + "properties": { + "args": { + "items": { + "anyOf": [ + { + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Movable", + "types": [ + "typing.Any" + ] }, - "required": [ - "detectors", - "params" - ], - "title": "step_rscan", - "type": "object" - } + {} + ] + }, + "title": "Args", + "type": "array" + }, + "group": { + "title": "Group" + }, + "timeout": { + "title": "Timeout", + "type": "number" + }, + "kwargs": { + "additionalProperties": true, + "title": "Kwargs", + "type": "object" + } }, - { - "name": "step_scan", - "description": "Scan concurrent trajectories with specified step size.\n\nGenerates list(s) of points for each trajectory, used with\nbluesky.plans.list_scan(det, *args, md=metadata).\n", - "schema": { - "additionalProperties": false, - "properties": { - "detectors": { - "items": { - "anyOf": [ - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Readable" - }, - { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "ophyd_async.core._protocol.AsyncReadable" - } - ] - }, - "title": "Detectors", - "type": "array" - }, - "params": { - "items": { - "maxItems": 2, - "minItems": 2, - "prefixItems": [ - { - "enum": [ - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-array_counter", - "det-driver-image_mode", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-wait_for_plugins", - "det-hdf-array_counter", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-xml_file_name", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_travel", - "stage-theta-motor_stop", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-set_use_switch", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-high_limit_travel", - "stage-x-low_limit_travel", - "stage-x-motor_stop", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-set_use_switch", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "type": "bluesky.protocols.Movable" - }, - { - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "integer" - } - ] - }, - "type": "array" - } - ], - "type": "array" - }, - "title": "Params", - "type": "array" - }, - "metadata": { - "additionalProperties": true, - "title": "Metadata", - "type": "object" - } + "title": "mvr", + "type": "object" + } + }, + { + "name": "num_grid_rscan", + "description": "Scan independent trajectories, relative to current positions.\n\nThe scan is defined by number of points along scan trajectories. Snakes all fast\naxes by default (all axes but the first axis provided). Wraps\nbluesky.plans.rel_grid_scan(det, *args, snake_axes, md=metadata).\n", + "parameter_schema": { + "additionalProperties": false, + "properties": { + "detectors": { + "items": { + "anyOf": [ + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Readable" }, - "required": [ - "detectors", - "params" - ], - "title": "step_scan", - "type": "object" - } + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "ophyd_async.core._protocol.AsyncReadable" + } + ] + }, + "title": "Detectors", + "type": "array" + }, + "params": { + "items": { + "maxItems": 2, + "minItems": 2, + "prefixItems": [ + { + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Movable" + }, + { + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "integer" + } + ] + }, + "type": "array" + } + ], + "type": "array" + }, + "title": "Params", + "type": "array" + }, + "snake_axes": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "boolean" + } + ], + "default": true, + "title": "Snake Axes" + }, + "metadata": { + "additionalProperties": true, + "title": "Metadata", + "type": "object" + } }, - { - "name": "set_absolute", - "description": "Set a device, wrapper for `bp.abs_set`.\n\nArgs:\n movable (Movable[T]): The device to set.\n value (T): The new value.\n group (Group | None, optional): The message group to associate with the setting,\n for sequencing. Defaults to None.\n wait (bool, optional): The group should wait until all setting is complete (e.g.\n a motor has finished moving). Defaults to False.\n\nReturns:\n MsgGenerator: Plan.\n\nYields:\n Iterator[MsgGenerator]: Bluesky messages.\n", - "schema": { - "additionalProperties": false, - "properties": { - "movable": { - "enum": [ - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-array_counter", - "det-driver-image_mode", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-wait_for_plugins", - "det-hdf-array_counter", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-xml_file_name", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_travel", - "stage-theta-motor_stop", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-set_use_switch", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-high_limit_travel", - "stage-x-low_limit_travel", - "stage-x-motor_stop", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-set_use_switch", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "title": "Movable", - "type": "bluesky.protocols.Movable", - "types": [ - "Any" - ] - }, - "value": { - "title": "Value" - }, - "group": { - "title": "Group", - "type": "string" - }, - "wait": { - "default": true, - "title": "Wait", - "type": "boolean" - } + "required": [ + "detectors", + "params" + ], + "title": "num_grid_rscan", + "type": "object" + } + }, + { + "name": "num_grid_scan", + "description": "Scan independent multi-motor trajectories.\n\nThe scan is defined by number of points along scan trajectories. Snakes all fast\naxes by default (all axes but the first axis provided). Wraps\nbluesky.plans.grid_scan(det, *args, snake_axes, md=metadata).\n", + "parameter_schema": { + "additionalProperties": false, + "properties": { + "detectors": { + "items": { + "anyOf": [ + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Readable" }, - "required": [ - "movable", - "value" - ], - "title": "set_absolute", - "type": "object" - } + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "ophyd_async.core._protocol.AsyncReadable" + } + ] + }, + "title": "Detectors", + "type": "array" + }, + "params": { + "items": { + "maxItems": 2, + "minItems": 2, + "prefixItems": [ + { + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Movable" + }, + { + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "integer" + } + ] + }, + "type": "array" + } + ], + "type": "array" + }, + "title": "Params", + "type": "array" + }, + "snake_axes": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "boolean" + } + ], + "default": true, + "title": "Snake Axes" + }, + "metadata": { + "additionalProperties": true, + "title": "Metadata", + "type": "object" + } }, - { - "name": "set_relative", - "description": "Change a device, wrapper for `bp.rel_set`.\n\nArgs:\n movable (Movable): The device to set.\n value (T): The new value.\n group (Group | None, optional): The message group to associate with the setting,\n for sequencing. Defaults to None.\n wait (bool, optional): The group should wait until all setting is complete (e.g.\n a motor has finished moving). Defaults to False.\n\nReturns:\n MsgGenerator: Plan.\n\nYields:\n Iterator[MsgGenerator]: Bluesky messages.\n", - "schema": { - "additionalProperties": false, - "properties": { - "movable": { - "enum": [ - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-array_counter", - "det-driver-image_mode", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-wait_for_plugins", - "det-hdf-array_counter", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-xml_file_name", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_travel", - "stage-theta-motor_stop", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-set_use_switch", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-high_limit_travel", - "stage-x-low_limit_travel", - "stage-x-motor_stop", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-set_use_switch", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "title": "Movable", - "type": "bluesky.protocols.Movable", - "types": [ - "Any" - ] - }, - "value": { - "title": "Value" - }, - "group": { - "title": "Group", - "type": "string" - }, - "wait": { - "default": true, - "title": "Wait", - "type": "boolean" - } + "required": [ + "detectors", + "params" + ], + "title": "num_grid_scan", + "type": "object" + } + }, + { + "name": "num_rscan", + "description": "Scan concurrent trajector(y/ies), relative to current position(s).\n\nThe scan is defined by number of points along scan trajector(y/ies). Wraps\nbluesky.plans.rel_scan(det, *args, num, md=metadata).\n", + "parameter_schema": { + "additionalProperties": false, + "properties": { + "detectors": { + "items": { + "anyOf": [ + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Readable" }, - "required": [ - "movable", - "value" - ], - "title": "set_relative", - "type": "object" - } + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "ophyd_async.core._protocol.AsyncReadable" + } + ] + }, + "title": "Detectors", + "type": "array" + }, + "params": { + "items": { + "maxItems": 2, + "minItems": 2, + "prefixItems": [ + { + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Movable" + }, + { + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "integer" + } + ] + }, + "type": "array" + } + ], + "type": "array" + }, + "title": "Params", + "type": "array" + }, + "num": { + "title": "Num", + "type": "integer" + }, + "metadata": { + "additionalProperties": true, + "title": "Metadata", + "type": "object" + } }, - { - "name": "move", - "description": "Move a device, wrapper for `bp.mv`.\n\nArgs:\n moves (Mapping[Movable, T]): Mapping of Movables to target positions.\n group (Group | None, optional): The message group to associate with the setting,\n for sequencing. Defaults to None.\n\nReturns:\n MsgGenerator: Plan.\n\nYields:\n Iterator[MsgGenerator]: Bluesky messages.\n", - "schema": { - "additionalProperties": false, - "properties": { - "moves": { - "additionalProperties": true, - "title": "Moves", - "type": "object" - }, - "group": { - "title": "Group", - "type": "string" - } + "required": [ + "detectors", + "params" + ], + "title": "num_rscan", + "type": "object" + } + }, + { + "name": "num_scan", + "description": "Scan concurrent single or multi-motor trajector(y/ies).\n\nThe scan is defined by number of points along scan trajector(y/ies). Wraps\nbluesky.plans.scan(det, *args, num, md=metadata).\n", + "parameter_schema": { + "additionalProperties": false, + "properties": { + "detectors": { + "items": { + "anyOf": [ + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Readable" }, - "required": [ - "moves" - ], - "title": "move", - "type": "object" - } + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "ophyd_async.core._protocol.AsyncReadable" + } + ] + }, + "title": "Detectors", + "type": "array" + }, + "params": { + "items": { + "maxItems": 2, + "minItems": 2, + "prefixItems": [ + { + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Movable" + }, + { + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "integer" + } + ] + }, + "type": "array" + } + ], + "type": "array" + }, + "title": "Params", + "type": "array" + }, + "num": { + "title": "Num", + "type": "integer" + }, + "metadata": { + "additionalProperties": true, + "title": "Metadata", + "type": "object" + } + }, + "required": [ + "detectors", + "params", + "num" + ], + "title": "num_scan", + "type": "object" + } + }, + { + "name": "rd", + "description": "Reads a single-value non-triggered object\n\nThis is a helper plan to get the scalar value out of a Device\n(such as an EpicsMotor or a single EpicsSignal).\n\nFor devices that implement the Locatable protocol, the location is canonical\nand is returned without parsing the read keys.\n\nFor devices that have more than one read key the following rules are used:\n\n- if exactly 1 field is hinted that value is used\n- if no fields are hinted and there is exactly 1 value in the\n reading that value is used\n- if more than one field is hinted an Exception is raised\n- if no fields are hinted and there is more than one key in the reading an\n Exception is raised\n\nThe devices is not triggered and this plan does not create any Events\n\nParameters\n----------\nobj : Device\n The device to be read\n\ndefault_value : Any\n The value to return when not running in a \"live\" RunEngine.\n This come ups when ::\n\n ret = yield Msg('read', obj)\n assert ret is None\n\n the plan is passed to `list` or some other iterator that\n repeatedly sends `None` into the plan to advance the\n generator.\n\nReturns\n-------\nval : Any or None\n The \"single\" value of the device\n\n", + "parameter_schema": { + "additionalProperties": false, + "properties": { + "obj": { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "title": "Obj", + "type": "bluesky.protocols.Readable" + }, + "default_value": { + "default": 0, + "title": "Default Value" + } }, - { - "name": "move_relative", - "description": "Move a device relative to its current position, wrapper for `bp.mvr`.\n\nArgs:\n moves (Mapping[Movable, T]): Mapping of Movables to target deltas.\n group (Group | None, optional): The message group to associate with the\n setting, for sequencing. Defaults to None.\n\nReturns:\n MsgGenerator: Plan.\n\nYields:\n Iterator[MsgGenerator]: Bluesky messages.\n", - "schema": { - "additionalProperties": false, - "properties": { - "moves": { - "additionalProperties": true, - "title": "Moves", - "type": "object" + "required": [ + "obj" + ], + "title": "rd", + "type": "object" + } + }, + { + "name": "read", + "description": "\nRead from devices and add to the current bundle of readings.\n\nParameters\n----------\n*objs : Readable[Any]\n Objects to read.\n\nYields\n------\nmsg : Msg\n ``Msg('read', *objs)``\n\nReturns\n-------\nreading : Mapping[str, Reading[Any]]\n The reading of each data key, keyed by its name.\n", + "parameter_schema": { + "additionalProperties": false, + "properties": { + "objs": { + "items": { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Readable", + "types": [ + "typing.Any" + ] + }, + "title": "Objs", + "type": "array" + } + }, + "title": "read", + "type": "object" + } + }, + { + "name": "rel_set", + "description": "\nSet a value relative to current value. Optionally, wait before continuing.\n\nParameters\n----------\nobj : Device\nargs :\n passed to obj.set()\ngroup : string (or any hashable object), optional\n identifier used by 'wait'; None by default\nwait : boolean, optional\n If True, wait for completion before processing any more messages.\n False by default.\nkwargs :\n passed to obj.set()\n\nYields\n------\nmsg : Msg\n\nReturns\n-------\nstatus :\n Status that completes when the value is set. If `wait` is True,\n this will always be complete by the time it is returned.\n\nSee Also\n--------\n:func:`bluesky.plan_stubs.abs_set`\n:func:`bluesky.plan_stubs.wait`\n", + "parameter_schema": { + "additionalProperties": false, + "properties": { + "obj": { + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "title": "Obj", + "type": "bluesky.protocols.Movable", + "types": [ + "typing.Any" + ] + }, + "args": { + "items": {}, + "title": "Args", + "type": "array" + }, + "group": { + "title": "Group" + }, + "wait": { + "default": false, + "title": "Wait", + "type": "boolean" + }, + "kwargs": { + "additionalProperties": true, + "title": "Kwargs", + "type": "object" + } + }, + "required": [ + "obj" + ], + "title": "rel_set", + "type": "object" + } + }, + { + "name": "sleep", + "description": "\nTell the RunEngine to sleep, while asynchronously doing other processing.\n\nThis is not the same as ``import time; time.sleep()`` because it allows\nother actions, like interruptions, to be processed during the sleep.\n\nParameters\n----------\ntime : float\n seconds\n\nYields\n------\nmsg : Msg\n Msg('sleep', None, time)\n", + "parameter_schema": { + "additionalProperties": false, + "properties": { + "time": { + "title": "Time", + "type": "number" + } + }, + "required": [ + "time" + ], + "title": "sleep", + "type": "object" + } + }, + { + "name": "spec_scan", + "description": "Generic plan for reading `detectors` at every point of a ScanSpec `Spec`.\nA `Spec` is an N-dimensional path.\n", + "parameter_schema": { + "$defs": { + "Concat_Reference_": { + "additionalProperties": false, + "description": "Concatenate two Specs together, running one after the other.\n\nEach Dimension of left and right must contain the same axes. Typically\nformed using `Spec.concat`.\n\n.. example_spec::\n\n from scanspec.specs import Fly, Linspace\n\n spec = Fly(Linspace(\"x\", 1, 3, 3).concat(Linspace(\"x\", 4, 5, 5)))", + "properties": { + "left": { + "$ref": "#/$defs/Spec", + "description": "The left-hand Spec to Concat, midpoints will appear earlier" + }, + "right": { + "$ref": "#/$defs/Spec", + "description": "The right-hand Spec to Concat, midpoints will appear later" + }, + "gap": { + "default": false, + "description": "If True, force a gap in the output at the join", + "title": "Gap", + "type": "boolean" + }, + "check_path_changes": { + "default": true, + "description": "If True path through scan will not be modified by squash", + "title": "Check Path Changes", + "type": "boolean" + }, + "type": { + "const": "Concat", + "default": "Concat", + "title": "Type", + "type": "string" + } + }, + "required": [ + "left", + "right" + ], + "title": "Concat", + "type": "object" + }, + "ConstantDuration_Reference_": { + "additionalProperties": false, + "description": "Apply a constant duration to every point in a Spec.\n\nTypically applied with the ``@`` modifier.\n\n.. example_spec::\n\n from scanspec.specs import Linspace\n\n spec = 0.1 @ Linspace(\"x\", 1, 2, 3)", + "properties": { + "constant_duration": { + "description": "The value at each point", + "title": "Constant Duration", + "type": "number" + }, + "spec": { + "anyOf": [ + { + "$ref": "#/$defs/Spec" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Spec contaning the path to be followed" + }, + "type": { + "const": "ConstantDuration", + "default": "ConstantDuration", + "title": "Type", + "type": "string" + } + }, + "required": [ + "constant_duration" + ], + "title": "ConstantDuration", + "type": "object" + }, + "Ellipse_Reference_": { + "additionalProperties": false, + "description": "Grid of points masked to an elliptical footprint.\n\nConstructs a 2-D scan over an axis-aligned ellipse defined by\n``(x_axis, y_axis)``, centred at (``x_centre``, ``y_centre``), with\ndiameters ``x_diameter`` and ``y_diameter``. Grid spacing along each axis is\ncontrolled by ``x_step`` and ``y_step``. If ``snake`` is True, the fast\naxis will zigzag like a snake. If ``vertical`` is True, the y axis will be\nthe fast axis.\n\nStarts from one of the four extremes of the ellipse identified by the signs of\n``x_step`` and ``y_step``.\n\n.. example_spec::\n\n from scanspec.specs import Ellipse, Fly\n\n # An elliptical region centred at (0, 0) on axes \"x\" and \"y\",\n # with 10x6 diameters and steps of 0.5 in both directions.\n spec = Fly(\n Ellipse(\n \"x\", 0, 10, 0.5,\n \"y\", 0, 6,\n snake=True,\n vertical=False,\n )\n )", + "properties": { + "x_axis": { + "description": "An identifier for what to move for x", + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "title": "X Axis", + "type": "bluesky.protocols.Movable" + }, + "x_centre": { + "description": "x centre of the spiral", + "title": "X Centre", + "type": "number" + }, + "x_diameter": { + "description": "x width of the spiral", + "title": "X Diameter", + "type": "number" + }, + "x_step": { + "description": "Spacing along x", + "exclusiveMinimum": 0, + "title": "X Step", + "type": "number" + }, + "y_axis": { + "description": "An identifier for what to move for y", + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "title": "Y Axis", + "type": "bluesky.protocols.Movable" + }, + "y_centre": { + "description": "y centre of the spiral", + "title": "Y Centre", + "type": "number" + }, + "y_diameter": { + "description": "y width of the spiral (defaults to x_diameter)", + "title": "Y Diameter", + "type": "number" + }, + "y_step": { + "description": "Spacing along y (defaults to x_step)", + "exclusiveMinimum": 0, + "title": "Y Step", + "type": "number" + }, + "snake": { + "default": false, + "description": "If True, path zigzag like a snake (defaults to False)", + "title": "Snake", + "type": "boolean" + }, + "vertical": { + "default": false, + "description": "If True, y axis is the fast axis (defaults to False)", + "title": "Vertical", + "type": "boolean" + }, + "type": { + "const": "Ellipse", + "default": "Ellipse", + "title": "Type", + "type": "string" + } + }, + "required": [ + "x_axis", + "x_centre", + "x_diameter", + "x_step", + "y_axis", + "y_centre" + ], + "title": "Ellipse", + "type": "object" + }, + "Fly_Reference_": { + "additionalProperties": false, + "description": "Move through lower to upper bounds of the Spec rather than stopping.\n\nThis is commonly termed a \"fly scan\" rather than a \"step scan\"\n\n.. example_spec::\n\n from scanspec.specs import Fly, Linspace\n\n spec = Fly(Linspace(\"x\", 1, 2, 3))", + "properties": { + "spec": { + "$ref": "#/$defs/Spec", + "description": "Spec contaning the path to be followed" + }, + "type": { + "const": "Fly", + "default": "Fly", + "title": "Type", + "type": "string" + } + }, + "required": [ + "spec" + ], + "title": "Fly", + "type": "object" + }, + "Linspace_Reference_": { + "additionalProperties": false, + "description": "Linearly spaced frames with start and stop as first and last midpoints.\n\nThis class is intended to handle linearly spaced frames defined with a\nspecific number of frames.\n\n.. seealso::\n `Range`: For linearly spaced frames defined with a step size.\n\n.. example_spec::\n\n from scanspec.specs import Fly, Linspace\n\n spec = Fly(Linspace(\"x\", 1, 2, 5))", + "properties": { + "axis": { + "description": "An identifier for what to move", + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "title": "Axis", + "type": "bluesky.protocols.Movable" + }, + "start": { + "description": "Midpoint of the first point of the line", + "title": "Start", + "type": "number" + }, + "stop": { + "description": "Midpoint of the last point of the line", + "title": "Stop", + "type": "number" + }, + "num": { + "default": 1, + "description": "Number of frames to produce (defaults to 1)", + "minimum": 1, + "title": "Num", + "type": "integer" + }, + "type": { + "const": "Linspace", + "default": "Linspace", + "title": "Type", + "type": "string" + } + }, + "required": [ + "axis", + "start", + "stop" + ], + "title": "Linspace", + "type": "object" + }, + "Polygon_Reference_": { + "additionalProperties": false, + "description": "Grid of points masked to a polygonal footprint.\n\nConstructs a 2-D scan over an axis-aligned polygon defined by an ordered\nlist of vertices \"(x, y)\" given in ``vertices``. The polygon may be convex\nor concave, and the interior is determined using an even-odd ray-casting\nrule. Grid spacing along each axis is controlled by ``x_step`` and ``y_step``,\nIf ``snake`` is True, the fast axis will zigzag like a snake. If ``vertical`` is\nTrue, the y axis will be the fast axis.\n\n.. example_spec::\n\n from scanspec.specs import Polygon, Fly\n\n # A triangular region on axes \"x\" and \"y\", stepped by 0.2 units\n # in both directions.\n spec = Fly(\n Polygon(\n x_axis=\"x\",\n y_axis=\"y\",\n vertices=[(0, 0), (5, 0), (2.5, 4)],\n x_step=0.2,\n y_step=0.2,\n snake=True,\n vertical=False,\n )\n )", + "properties": { + "x_axis": { + "description": "An identifier for what to move for x", + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "title": "X Axis", + "type": "bluesky.protocols.Movable" + }, + "y_axis": { + "description": "An identifier for what to move for y", + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "title": "Y Axis", + "type": "bluesky.protocols.Movable" + }, + "vertices": { + "description": "List of (x, y) vertices defining the polygon", + "items": { + "maxItems": 2, + "minItems": 2, + "prefixItems": [ + { + "type": "number" }, - "group": { - "title": "Group", - "type": "string" + { + "type": "number" } + ], + "type": "array" }, - "required": [ - "moves" + "title": "Vertices", + "type": "array" + }, + "x_step": { + "description": "Spacing along x", + "exclusiveMinimum": 0, + "title": "X Step", + "type": "number" + }, + "y_step": { + "description": "Spacing along y (defaults to x_step)", + "exclusiveMinimum": 0, + "title": "Y Step", + "type": "number" + }, + "snake": { + "default": false, + "description": "If True, path zigzag like a snake (defaults to False)", + "title": "Snake", + "type": "boolean" + }, + "vertical": { + "default": false, + "description": "If True, y axis is the fast axis (defaults to False)", + "title": "Vertical", + "type": "boolean" + }, + "type": { + "const": "Polygon", + "default": "Polygon", + "title": "Type", + "type": "string" + } + }, + "required": [ + "x_axis", + "y_axis", + "vertices", + "x_step" + ], + "title": "Polygon", + "type": "object" + }, + "Product_Reference_": { + "additionalProperties": false, + "description": "Outer product of two Specs, nesting inner within outer.\n\nThis means that inner will run in its entirety at each point in outer.\n\n.. example_spec::\n\n from scanspec.specs import Fly, Linspace\n\n spec = Fly(Linspace(\"y\", 1, 2, 3) * Linspace(\"x\", 3, 4, 12))\n\nAn inner integer can be used to repeat the same point many times.\n\n.. example_spec::\n\n from scanspec.specs import Fly, Linspace\n\n spec = Fly(Linspace(\"y\", 1, 2, 3) * 2)\n\nAn outer integer can be used to repeat the same scan many times.\n\n.. example_spec::\n\n from scanspec.specs import Fly, Linspace\n\n spec = Fly(2 * ~Linspace.bounded(\"x\", 3, 4, 1))\n\nIf you want snaked axes to have no gap between iterations you can do:\n\n.. example_spec::\n\n from scanspec.specs import Fly, Linspace, Product\n\n spec = Fly(Product(2, ~Linspace.bounded(\"x\", 3, 4, 1), gap=False))\n\n.. note:: There is no turnaround arrow at x=4", + "properties": { + "outer": { + "anyOf": [ + { + "$ref": "#/$defs/Spec" + }, + { + "type": "integer" + } ], - "title": "move_relative", - "type": "object" - } - }, - { - "name": "sleep", - "description": "Suspend all action for a given time, wrapper for `bp.sleep`.\n\nArgs:\n time (float): Time to wait in seconds.\n\nReturns:\n MsgGenerator: Plan.\n\nYields:\n Iterator[MsgGenerator]: Bluesky messages.\n", - "schema": { - "additionalProperties": false, - "properties": { - "time": { - "title": "Time", - "type": "number" - } - }, - "required": [ - "time" + "description": "Will be executed once", + "title": "Outer" + }, + "inner": { + "anyOf": [ + { + "$ref": "#/$defs/Spec" + }, + { + "type": "integer" + } + ], + "description": "Will be executed len(outer) times", + "title": "Inner" + }, + "gap": { + "default": true, + "description": "If False and the outer spec is an integer and the inner spec is snaked then the end and start of consecutive iterations of inner will have no gap", + "title": "Gap", + "type": "boolean" + }, + "type": { + "const": "Product", + "default": "Product", + "title": "Type", + "type": "string" + } + }, + "required": [ + "outer", + "inner" + ], + "title": "Product", + "type": "object" + }, + "Range_Reference_": { + "additionalProperties": false, + "description": "Linearly spaced frames with start and stop as the bounding midpoints.\n\n``step`` defines the distance between midpoints.\n\n.. seealso::\n `Linspace`: For linearly spaced frames defined with a number of frames.\n\n.. example_spec::\n\n from scanspec.specs import Fly, Range\n\n spec = Fly(Range(\"x\", 1, 2, 0.25))", + "properties": { + "axis": { + "description": "An identifier for what to move", + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "title": "Axis", + "type": "bluesky.protocols.Movable" + }, + "start": { + "description": "Midpoint of the first point of the line", + "title": "Start", + "type": "number" + }, + "stop": { + "description": "Midpoint of the last point of the line", + "title": "Stop", + "type": "number" + }, + "step": { + "description": "Step size (defaults to stop - start)", + "exclusiveMinimum": 0, + "title": "Step", + "type": "number" + }, + "type": { + "const": "Range", + "default": "Range", + "title": "Type", + "type": "string" + } + }, + "required": [ + "axis", + "start", + "stop" + ], + "title": "Range", + "type": "object" + }, + "Snake_Reference_": { + "additionalProperties": false, + "description": "Run the Spec in reverse on every other iteration when nested.\n\nTypically created with the ``~`` operator.\n\n.. example_spec::\n\n from scanspec.specs import Fly, Linspace\n\n spec = Fly(Linspace(\"y\", 1, 3, 3) * ~Linspace(\"x\", 3, 5, 5))", + "properties": { + "spec": { + "$ref": "#/$defs/Spec", + "description": "The Spec to run in reverse every other iteration" + }, + "type": { + "const": "Snake", + "default": "Snake", + "title": "Type", + "type": "string" + } + }, + "required": [ + "spec" + ], + "title": "Snake", + "type": "object" + }, + "Spec": { + "discriminator": { + "mapping": { + "Concat": "#/$defs/Concat_Reference_", + "ConstantDuration": "#/$defs/ConstantDuration_Reference_", + "Ellipse": "#/$defs/Ellipse_Reference_", + "Fly": "#/$defs/Fly_Reference_", + "Linspace": "#/$defs/Linspace_Reference_", + "Polygon": "#/$defs/Polygon_Reference_", + "Product": "#/$defs/Product_Reference_", + "Range": "#/$defs/Range_Reference_", + "Snake": "#/$defs/Snake_Reference_", + "Spiral": "#/$defs/Spiral_Reference_", + "Squash": "#/$defs/Squash_Reference_", + "Static": "#/$defs/Static_Reference_", + "Zip": "#/$defs/Zip_Reference_" + }, + "propertyName": "type" + }, + "oneOf": [ + { + "$ref": "#/$defs/Product_Reference_" + }, + { + "$ref": "#/$defs/Zip_Reference_" + }, + { + "$ref": "#/$defs/Snake_Reference_" + }, + { + "$ref": "#/$defs/Concat_Reference_" + }, + { + "$ref": "#/$defs/Squash_Reference_" + }, + { + "$ref": "#/$defs/Linspace_Reference_" + }, + { + "$ref": "#/$defs/Range_Reference_" + }, + { + "$ref": "#/$defs/Fly_Reference_" + }, + { + "$ref": "#/$defs/ConstantDuration_Reference_" + }, + { + "$ref": "#/$defs/Static_Reference_" + }, + { + "$ref": "#/$defs/Spiral_Reference_" + }, + { + "$ref": "#/$defs/Ellipse_Reference_" + }, + { + "$ref": "#/$defs/Polygon_Reference_" + } + ] + }, + "Spiral_Reference_": { + "additionalProperties": false, + "description": "Archimedean spiral of \"x_axis\" and \"y_axis\".\n\nStarts at centre point (\"x_start\", \"y_start\")\". Produces \"num\" points in a\nspiral spanning width of \"x_range\" and height of \"y_range\"\n\n.. example_spec::\n\n from scanspec.specs import Fly, Spiral\n\n spec = Fly(Spiral(\"x\", 1, 10, 2.5, \"y\", 5, 50))", + "properties": { + "x_axis": { + "description": "An identifier for what to move for x", + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" ], - "title": "sleep", - "type": "object" - } + "title": "X Axis", + "type": "bluesky.protocols.Movable" + }, + "x_centre": { + "description": "x centre of the spiral", + "title": "X Centre", + "type": "number" + }, + "x_diameter": { + "description": "x width of the spiral", + "title": "X Diameter", + "type": "number" + }, + "x_step": { + "description": "Radial spacing along x", + "title": "X Step", + "type": "number" + }, + "y_axis": { + "description": "An identifier for what to move for y", + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "title": "Y Axis", + "type": "bluesky.protocols.Movable" + }, + "y_centre": { + "description": "y centre of the spiral", + "title": "Y Centre", + "type": "number" + }, + "y_diameter": { + "description": "y width of the spiral (defaults to x_diameter)", + "title": "Y Diameter", + "type": "number" + }, + "type": { + "const": "Spiral", + "default": "Spiral", + "title": "Type", + "type": "string" + } + }, + "required": [ + "x_axis", + "x_centre", + "x_diameter", + "x_step", + "y_axis", + "y_centre" + ], + "title": "Spiral", + "type": "object" + }, + "Squash_Reference_": { + "additionalProperties": false, + "description": "Squash a stack of Dimension together into a single expanded Dimension object.\n\nSee Also:\n `why-squash-can-change-path`\n\n.. example_spec::\n\n from scanspec.specs import Fly, Linspace, Squash\n\n spec = Fly(Squash(Linspace(\"y\", 1, 2, 3) * Linspace(\"x\", 0, 1, 4)))", + "properties": { + "spec": { + "$ref": "#/$defs/Spec", + "description": "The Spec to squash the dimensions of" + }, + "check_path_changes": { + "default": true, + "description": "If True path through scan will not be modified by squash", + "title": "Check Path Changes", + "type": "boolean" + }, + "type": { + "const": "Squash", + "default": "Squash", + "title": "Type", + "type": "string" + } + }, + "required": [ + "spec" + ], + "title": "Squash", + "type": "object" + }, + "Static_Reference_": { + "additionalProperties": false, + "description": "A static frame, repeated num times, with axis at value.\n\nCan be used to set axis=value at every point in a scan.\n\n.. example_spec::\n\n from scanspec.specs import Fly, Linspace, Static\n\n spec = Fly(Linspace(\"y\", 1, 2, 3).zip(Static(\"x\", 3)))", + "properties": { + "axis": { + "description": "An identifier for what to move", + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "title": "Axis", + "type": "bluesky.protocols.Movable" + }, + "value": { + "description": "The value at each point", + "title": "Value", + "type": "number" + }, + "num": { + "default": 1, + "description": "Number of frames to produce", + "minimum": 1, + "title": "Num", + "type": "integer" + }, + "type": { + "const": "Static", + "default": "Static", + "title": "Type", + "type": "string" + } + }, + "required": [ + "axis", + "value" + ], + "title": "Static", + "type": "object" + }, + "Zip_Reference_": { + "additionalProperties": false, + "description": "Run two Specs in parallel, merging their midpoints together.\n\nTypically formed using `Spec.zip`.\n\nStacks of Dimension are merged by:\n\n- If right creates a stack of a single Dimension object of size 1, expand it to\n the size of the fastest Dimension object created by left\n- Merge individual Dimension objects together from fastest to slowest\n\nThis means that Zipping a Spec producing stack [l2, l1] with a Spec\nproducing stack [r1] will assert len(l1)==len(r1), and produce\nstack [l2, l1.zip(r1)].\n\n.. example_spec::\n\n from scanspec.specs import Fly, Linspace\n\n spec = Fly(\n Linspace(\"z\", 1, 2, 3) * Linspace(\"y\", 3, 4, 5).zip(Linspace(\"x\", 4, 5, 5))\n )", + "properties": { + "left": { + "$ref": "#/$defs/Spec", + "description": "The left-hand Spec to Zip, will appear earlier in axes" + }, + "right": { + "$ref": "#/$defs/Spec", + "description": "The right-hand Spec to Zip, will appear later in axes" + }, + "type": { + "const": "Zip", + "default": "Zip", + "title": "Type", + "type": "string" + } + }, + "required": [ + "left", + "right" + ], + "title": "Zip", + "type": "object" + } }, - { - "name": "wait", - "description": "Wait for a group status to complete, wrapper for `bp.wait`.\nDoes not expose move_on, as when used as a stub will not fail on Timeout.\n\nArgs:\n group (Group | None, optional): The name of the group to wait for, defaults to\n None, in which case waits for all groups that have not yet been awaited.\n timeout (float | None, default=None): a timeout in seconds.\n\nReturns:\n MsgGenerator: Plan.\n\nYields:\n Iterator[MsgGenerator]: Bluesky messages.\n", - "schema": { - "additionalProperties": false, - "properties": { - "group": { - "title": "Group", - "type": "string" - }, - "timeout": { - "title": "Timeout", + "additionalProperties": false, + "properties": { + "detectors": { + "items": { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Readable" + }, + "title": "Detectors", + "type": "array", + "uniqueItems": true + }, + "spec": { + "$ref": "#/$defs/Spec" + }, + "metadata": { + "additionalProperties": true, + "title": "Metadata", + "type": "object" + } + }, + "required": [ + "detectors", + "spec" + ], + "title": "spec_scan", + "type": "object" + } + }, + { + "name": "step_grid_rscan", + "description": "Scan independent trajectories with specified step size, relative to position.\n\nGenerates list(s) of points for each trajectory, used with\nbluesky.plans.list_grid_scan(det, *args, md=metadata). Snakes all fast axes by\ndefault (all axes but the first axis provided).\n", + "parameter_schema": { + "additionalProperties": false, + "properties": { + "detectors": { + "items": { + "anyOf": [ + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Readable" + }, + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "ophyd_async.core._protocol.AsyncReadable" + } + ] + }, + "title": "Detectors", + "type": "array" + }, + "params": { + "items": { + "maxItems": 2, + "minItems": 2, + "prefixItems": [ + { + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Movable" + }, + { + "items": { + "anyOf": [ + { "type": "number" - } + }, + { + "type": "integer" + } + ] + }, + "type": "array" + } + ], + "type": "array" + }, + "title": "Params", + "type": "array" + }, + "snake_axes": { + "default": true, + "title": "Snake Axes", + "type": "boolean" + }, + "metadata": { + "additionalProperties": true, + "title": "Metadata", + "type": "object" + } + }, + "required": [ + "detectors", + "params" + ], + "title": "step_grid_rscan", + "type": "object" + } + }, + { + "name": "step_grid_scan", + "description": "Scan independent trajectories with specified step size.\n\nGenerates list(s) of points for each trajectory, used with\nbluesky.plans.list_grid_scan(det, *args, md=metadata). Snakes all fast axes by\ndefault (all axes but the first axis provided).\n", + "parameter_schema": { + "additionalProperties": false, + "properties": { + "detectors": { + "items": { + "anyOf": [ + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Readable" + }, + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "ophyd_async.core._protocol.AsyncReadable" + } + ] + }, + "title": "Detectors", + "type": "array" + }, + "params": { + "items": { + "maxItems": 2, + "minItems": 2, + "prefixItems": [ + { + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Movable" }, - "title": "wait", - "type": "object" - } + { + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "integer" + } + ] + }, + "type": "array" + } + ], + "type": "array" + }, + "title": "Params", + "type": "array" + }, + "snake_axes": { + "default": true, + "title": "Snake Axes", + "type": "boolean" + }, + "metadata": { + "additionalProperties": true, + "title": "Metadata", + "type": "object" + } }, - { - "name": "rd", - "description": "Reads a single-value non-triggered object, wrapper for `bps.rd`.\n\nArgs:\n readable (Readable): The device to be read\n\nReturns:\n MsgGenerator: Plan.\n\nYields:\n Iterator[MsgGenerator]: Bluesky messages.\n", - "schema": { - "additionalProperties": false, - "properties": { - "readable": { - "enum": [ - "det", - "det-driver-acquire", - "det-driver-acquire_period", - "det-driver-acquire_time", - "det-driver-ad_core_version", - "det-driver-array_counter", - "det-driver-array_size0", - "det-driver-array_size1", - "det-driver-array_size2", - "det-driver-array_size_x", - "det-driver-array_size_y", - "det-driver-array_size_z", - "det-driver-color_mode", - "det-driver-data_type", - "det-driver-detector_state", - "det-driver-driver_version", - "det-driver-firmware_version", - "det-driver-image_mode", - "det-driver-manufacturer", - "det-driver-model", - "det-driver-nd_attributes_file", - "det-driver-num_images", - "det-driver-port_name", - "det-driver-sdk_version", - "det-driver-serial_number", - "det-driver-unique_id", - "det-driver-wait_for_plugins", - "det-hdf-ad_core_version", - "det-hdf-array_counter", - "det-hdf-array_size0", - "det-hdf-array_size1", - "det-hdf-array_size2", - "det-hdf-array_size_x", - "det-hdf-array_size_y", - "det-hdf-array_size_z", - "det-hdf-auto_increment", - "det-hdf-capture", - "det-hdf-chunk_size_auto", - "det-hdf-color_mode", - "det-hdf-compression", - "det-hdf-create_directory", - "det-hdf-data_type", - "det-hdf-driver_version", - "det-hdf-enable_callbacks", - "det-hdf-file_name", - "det-hdf-file_number", - "det-hdf-file_path", - "det-hdf-file_path_exists", - "det-hdf-file_template", - "det-hdf-file_write_mode", - "det-hdf-flush_now", - "det-hdf-full_file_name", - "det-hdf-lazy_open", - "det-hdf-nd_array_address", - "det-hdf-nd_array_port", - "det-hdf-nd_attributes_file", - "det-hdf-num_capture", - "det-hdf-num_captured", - "det-hdf-num_extra_dims", - "det-hdf-num_frames_chunks", - "det-hdf-port_name", - "det-hdf-position_mode", - "det-hdf-queue_size", - "det-hdf-swmr_mode", - "det-hdf-unique_id", - "det-hdf-xml_file_name", - "stage", - "stage-theta", - "stage-theta-acceleration_time", - "stage-theta-deadband", - "stage-theta-dial_high_limit_travel", - "stage-theta-dial_low_limit_travel", - "stage-theta-encoder_resolution", - "stage-theta-high_limit_switch", - "stage-theta-high_limit_travel", - "stage-theta-low_limit_switch", - "stage-theta-low_limit_travel", - "stage-theta-max_velocity", - "stage-theta-motor_done_move", - "stage-theta-motor_egu", - "stage-theta-motor_resolution", - "stage-theta-offset", - "stage-theta-offset_freeze_switch", - "stage-theta-output_link", - "stage-theta-precision", - "stage-theta-set_use_switch", - "stage-theta-steps_per_revolution", - "stage-theta-units_per_revolution", - "stage-theta-user_setpoint", - "stage-theta-velocity", - "stage-x", - "stage-x-acceleration_time", - "stage-x-deadband", - "stage-x-dial_high_limit_travel", - "stage-x-dial_low_limit_travel", - "stage-x-encoder_resolution", - "stage-x-high_limit_switch", - "stage-x-high_limit_travel", - "stage-x-low_limit_switch", - "stage-x-low_limit_travel", - "stage-x-max_velocity", - "stage-x-motor_done_move", - "stage-x-motor_egu", - "stage-x-motor_resolution", - "stage-x-offset", - "stage-x-offset_freeze_switch", - "stage-x-output_link", - "stage-x-precision", - "stage-x-set_use_switch", - "stage-x-steps_per_revolution", - "stage-x-units_per_revolution", - "stage-x-user_setpoint", - "stage-x-velocity" - ], - "title": "Readable", - "type": "bluesky.protocols.Readable" - } + "required": [ + "detectors", + "params" + ], + "title": "step_grid_scan", + "type": "object" + } + }, + { + "name": "step_rscan", + "description": "Scan concurrent trajectories with specified step size, relative to position.\n\nGenerates list(s) of points for each trajectory, used with\nbluesky.plans.rel_list_scan(det, *args, md=metadata).\n", + "parameter_schema": { + "additionalProperties": false, + "properties": { + "detectors": { + "items": { + "anyOf": [ + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Readable" }, - "required": [ - "readable" - ], - "title": "rd", - "type": "object" - } + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "ophyd_async.core._protocol.AsyncReadable" + } + ] + }, + "title": "Detectors", + "type": "array" + }, + "params": { + "items": { + "maxItems": 2, + "minItems": 2, + "prefixItems": [ + { + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Movable" + }, + { + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "integer" + } + ] + }, + "type": "array" + } + ], + "type": "array" + }, + "title": "Params", + "type": "array" + }, + "metadata": { + "additionalProperties": true, + "title": "Metadata", + "type": "object" + } }, - { - "name": "stop", - "description": "Stop a device, wrapper for `bps.stop`.\n\nArgs:\n stoppable (Stoppable): Device to be stopped\n\nReturns:\n MsgGenerator: Plan.\n\nYields:\n Iterator[MsgGenerator]: Bluesky messages.\n", - "schema": { - "additionalProperties": false, - "properties": { - "stoppable": { - "enum": [ - "stage-theta", - "stage-x" - ], - "title": "Stoppable", - "type": "bluesky.protocols.Stoppable" - } + "required": [ + "detectors", + "params" + ], + "title": "step_rscan", + "type": "object" + } + }, + { + "name": "step_scan", + "description": "Scan concurrent trajectories with specified step size.\n\nGenerates list(s) of points for each trajectory, used with\nbluesky.plans.list_scan(det, *args, md=metadata).\n", + "parameter_schema": { + "additionalProperties": false, + "properties": { + "detectors": { + "items": { + "anyOf": [ + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Readable" }, - "required": [ - "stoppable" - ], - "title": "stop", - "type": "object" - } - } - ] + { + "enum": [ + "det", + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-ad_core_version", + "det-driver-array_counter", + "det-driver-array_size0", + "det-driver-array_size1", + "det-driver-array_size2", + "det-driver-array_size_x", + "det-driver-array_size_y", + "det-driver-array_size_z", + "det-driver-color_mode", + "det-driver-data_type", + "det-driver-detector_state", + "det-driver-driver_version", + "det-driver-firmware_version", + "det-driver-image_mode", + "det-driver-manufacturer", + "det-driver-model", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-port_name", + "det-driver-sdk_version", + "det-driver-serial_number", + "det-driver-unique_id", + "det-driver-wait_for_plugins", + "det-hdf-ad_core_version", + "det-hdf-array_counter", + "det-hdf-array_size0", + "det-hdf-array_size1", + "det-hdf-array_size2", + "det-hdf-array_size_x", + "det-hdf-array_size_y", + "det-hdf-array_size_z", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-color_mode", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-data_type", + "det-hdf-driver_version", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_path_exists", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-full_file_name", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_captured", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-port_name", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-unique_id", + "det-hdf-xml_file_name", + "stage", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-deadband", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-encoder_resolution", + "stage-theta-high_limit_switch", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_switch", + "stage-theta-low_limit_travel", + "stage-theta-max_velocity", + "stage-theta-motor_done_move", + "stage-theta-motor_egu", + "stage-theta-motor_resolution", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-output_link", + "stage-theta-precision", + "stage-theta-set_use_switch", + "stage-theta-steps_per_revolution", + "stage-theta-units_per_revolution", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-deadband", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-encoder_resolution", + "stage-x-high_limit_switch", + "stage-x-high_limit_travel", + "stage-x-low_limit_switch", + "stage-x-low_limit_travel", + "stage-x-max_velocity", + "stage-x-motor_done_move", + "stage-x-motor_egu", + "stage-x-motor_resolution", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-output_link", + "stage-x-precision", + "stage-x-set_use_switch", + "stage-x-steps_per_revolution", + "stage-x-units_per_revolution", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "ophyd_async.core._protocol.AsyncReadable" + } + ] + }, + "title": "Detectors", + "type": "array" + }, + "params": { + "items": { + "maxItems": 2, + "minItems": 2, + "prefixItems": [ + { + "enum": [ + "det-driver-acquire", + "det-driver-acquire_period", + "det-driver-acquire_time", + "det-driver-array_counter", + "det-driver-image_mode", + "det-driver-nd_attributes_file", + "det-driver-num_images", + "det-driver-wait_for_plugins", + "det-hdf-array_counter", + "det-hdf-auto_increment", + "det-hdf-capture", + "det-hdf-chunk_size_auto", + "det-hdf-compression", + "det-hdf-create_directory", + "det-hdf-enable_callbacks", + "det-hdf-file_name", + "det-hdf-file_number", + "det-hdf-file_path", + "det-hdf-file_template", + "det-hdf-file_write_mode", + "det-hdf-flush_now", + "det-hdf-lazy_open", + "det-hdf-nd_array_address", + "det-hdf-nd_array_port", + "det-hdf-nd_attributes_file", + "det-hdf-num_capture", + "det-hdf-num_extra_dims", + "det-hdf-num_frames_chunks", + "det-hdf-position_mode", + "det-hdf-queue_size", + "det-hdf-swmr_mode", + "det-hdf-xml_file_name", + "stage-theta", + "stage-theta-acceleration_time", + "stage-theta-dial_high_limit_travel", + "stage-theta-dial_low_limit_travel", + "stage-theta-high_limit_travel", + "stage-theta-low_limit_travel", + "stage-theta-motor_stop", + "stage-theta-offset", + "stage-theta-offset_freeze_switch", + "stage-theta-set_use_switch", + "stage-theta-user_setpoint", + "stage-theta-velocity", + "stage-x", + "stage-x-acceleration_time", + "stage-x-dial_high_limit_travel", + "stage-x-dial_low_limit_travel", + "stage-x-high_limit_travel", + "stage-x-low_limit_travel", + "stage-x-motor_stop", + "stage-x-offset", + "stage-x-offset_freeze_switch", + "stage-x-set_use_switch", + "stage-x-user_setpoint", + "stage-x-velocity" + ], + "type": "bluesky.protocols.Movable" + }, + { + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "integer" + } + ] + }, + "type": "array" + } + ], + "type": "array" + }, + "title": "Params", + "type": "array" + }, + "metadata": { + "additionalProperties": true, + "title": "Metadata", + "type": "object" + } + }, + "required": [ + "detectors", + "params" + ], + "title": "step_scan", + "type": "object" + } + }, + { + "name": "stop", + "description": "\nStop a device.\n\nParameters\n----------\nobj : Device\n\nYields\n------\nmsg : Msg\n", + "parameter_schema": { + "additionalProperties": false, + "properties": { + "obj": { + "enum": [ + "stage-theta", + "stage-x" + ], + "title": "Obj", + "type": "bluesky.protocols.Stoppable" + } + }, + "required": [ + "obj" + ], + "title": "stop", + "type": "object" + } + }, + { + "name": "wait", + "description": "\nWait for all statuses in a group to report being finished.\n\nParameters\n----------\ngroup : string (or any hashable object), optional\n Identifier given to `abs_set`, `rel_set`, `trigger`; None by default\ntimeout : float, optional\n The maximum duration, in seconds, to wait for all objects in the group to complete.\n If the timeout expires and `error_on_timeout` is set to True, a TimeoutError is raised.\n\nerror_on_timeout : bool, Defaults to True\n Specifies the behavior when the timeout is reached:\n - If True, a TimeoutError is raised if the operations do not complete within the specified timeout.\n - If False, the method returns once all objects are done.\nwatch : set of watch groups, optional\n Additional groups to monitor while waiting for the primary group. Raises an exception if any watched group\n fails.\nYields\n------\nmsg : Msg\n Msg('wait', None, group=group, error_on_timeout=error_on_timeout, timeout=timeout)\n", + "parameter_schema": { + "additionalProperties": false, + "properties": { + "group": { + "title": "Group" + }, + "timeout": { + "title": "Timeout", + "type": "number" + }, + "error_on_timeout": { + "default": true, + "title": "Error On Timeout", + "type": "boolean" + }, + "watch": { + "default": [], + "items": { + "type": "string" + }, + "title": "Watch", + "type": "array" + } + }, + "title": "wait", + "type": "object" + } + } + ] } diff --git a/tests/system_tests/test_blueapi_client.py b/tests/system_tests/test_blueapi_client.py index 32bbe484a..e99a0e9aa 100644 --- a/tests/system_tests/test_blueapi_client.py +++ b/tests/system_tests/test_blueapi_client.py @@ -21,6 +21,7 @@ from blueapi.client.rest import ServiceUnavailableError, UnauthorisedAccessError from blueapi.config import ApplicationConfig from blueapi.core.bluesky_types import DataEvent +from blueapi.core.context import DEFAULT_PLAN_STUBS from blueapi.service.model import TaskRequest from blueapi.worker.event import WorkerEvent, WorkerState @@ -169,7 +170,8 @@ def test_missing_sub_device(bc: BlueapiClient): def test_plans_iterable(bc: BlueapiClient): names = {plan.name for plan in bc.plans} - assert {"count", "sleep", "set_absolute"} <= names + assert {"count", "sleep", "abs_set"} <= names + assert {stub.__name__ for stub in DEFAULT_PLAN_STUBS} <= names assert all(isinstance(plan, Plan) for plan in bc.plans) @@ -236,7 +238,7 @@ def test_run_plan_keyword_args(bc: BlueapiClient): def test_run_stub_with_device(bc: BlueapiClient): - bc.plans.set_absolute(bc.devices.stage.x, 1.0) + bc.plans.abs_set(bc.devices.stage.x, 1.0) def test_removed_callback_not_called(bc: BlueapiClient): diff --git a/tests/system_tests/test_blueapi_system.py b/tests/system_tests/test_blueapi_system.py index f393c7ab8..f528b5dad 100644 --- a/tests/system_tests/test_blueapi_system.py +++ b/tests/system_tests/test_blueapi_system.py @@ -659,11 +659,9 @@ def on_event(event: AnyEvent) -> None: "task", [ TaskRequest( - name="set_absolute", - params={ - "movable": "stage.x", - "value": 1.0, - }, + name="abs_set", + args=["stage.x", 1.0], + params={"wait": True}, instrument_session=VALID_INSTRUMENT_SESSION[User.alice], ), ], diff --git a/tests/unit_tests/core/test_context.py b/tests/unit_tests/core/test_context.py index 883d7ac7e..ac3247698 100644 --- a/tests/unit_tests/core/test_context.py +++ b/tests/unit_tests/core/test_context.py @@ -8,6 +8,7 @@ from typing import Any, Generic, TypeVar, Union, get_args, get_type_hints from unittest.mock import MagicMock, Mock, patch +import bluesky.plan_stubs as bps import pytest import responses from bluesky.protocols import ( @@ -660,7 +661,7 @@ class ConcreteStoppable(Stoppable): def name(self) -> str: return "Concrete" - def stop(self, success: bool = True): + def stop(self, *, success: bool = True): pass @@ -1051,3 +1052,15 @@ def test_token_url_set_for_tiled( ) ) assert context.tiled_conf.authentication.token_url == oidc_config.token_endpoint # type:ignore + + +def test_registering_plan_with_stub_name_overrides_existing_stub(): + ctx = BlueskyContext(ApplicationConfig()) + assert ctx.plans["mv"].plan_function is bps.mv + + def mv(custom: int) -> MsgGenerator: + yield from () + + ctx.register_plan(mv) + assert ctx.plans["mv"].plan_function is mv + assert ctx.plans["mv"].plan_function is not bps.mv diff --git a/tests/unit_tests/service/test_interface.py b/tests/unit_tests/service/test_interface.py index e56e98c2e..e3c767944 100644 --- a/tests/unit_tests/service/test_interface.py +++ b/tests/unit_tests/service/test_interface.py @@ -146,7 +146,7 @@ def test_get_plan(context_mock: MagicMock): class MyDevice(Stoppable): name: str - def stop(self, success: bool = True) -> None: + def stop(self, *, success: bool = True) -> None: pass diff --git a/tests/unit_tests/service/test_rest_api.py b/tests/unit_tests/service/test_rest_api.py index 4315eecf6..58270f778 100644 --- a/tests/unit_tests/service/test_rest_api.py +++ b/tests/unit_tests/service/test_rest_api.py @@ -145,7 +145,7 @@ def client_with_cors( class MinimalDevice(Stoppable): name: str - def stop(self, success: bool = True): + def stop(self, *, success: bool = True): pass diff --git a/tests/unit_tests/test_config.py b/tests/unit_tests/test_config.py index a335434df..e09b476da 100644 --- a/tests/unit_tests/test_config.py +++ b/tests/unit_tests/test_config.py @@ -230,7 +230,6 @@ def temp_yaml_config_file( {"kind": "deviceManager", "module": "dodal.adsim"}, {"kind": "deviceManager", "module": "dodal.ixx", "name": "manager"}, {"kind": "planFunctions", "module": "dodal.plans"}, - {"kind": "planFunctions", "module": "dodal.plan_stubs.wrapped"}, ], }, "api": {"url": "http://0.0.0.0:8000/"}, @@ -241,7 +240,6 @@ def temp_yaml_config_file( "sources": [ {"kind": "deviceManager", "module": "dodal.adsim"}, {"kind": "planFunctions", "module": "dodal.plans"}, - {"kind": "planFunctions", "module": "dodal.plan_stubs.wrapped"}, ], "events": {"broadcast_status_events": True}, }, @@ -301,10 +299,6 @@ def test_config_yaml_parsed(temp_yaml_config_file): "sources": [ {"kind": "deviceManager", "module": "dodal.adsim", "mock": True}, {"kind": "planFunctions", "module": "dodal.plans"}, - { - "kind": "planFunctions", - "module": "dodal.plan_stubs.wrapped", - }, ], }, "api": { @@ -360,10 +354,6 @@ def test_config_yaml_parsed(temp_yaml_config_file): "sources": [ {"kind": "deviceManager", "module": "dodal.adsim", "mock": False}, {"kind": "planFunctions", "module": "dodal.plans"}, - { - "kind": "planFunctions", - "module": "dodal.plan_stubs.wrapped", - }, ], "events": {"broadcast_status_events": True}, "metadata": { @@ -443,7 +433,6 @@ def test_config_yaml_parsed_complete(temp_yaml_config_file: dict): "sources": [ {"kind": "deviceManager", "module": "dodal.adsim"}, {"kind": "planFunctions", "module": "dodal.plans"}, - {"kind": "planFunctions", "module": "dodal.plan_stubs.wrapped"}, ], "events": {"broadcast_status_events": True}, "metadata": { diff --git a/tests/unit_tests/worker/test_task_worker.py b/tests/unit_tests/worker/test_task_worker.py index 044668d93..50350da8f 100644 --- a/tests/unit_tests/worker/test_task_worker.py +++ b/tests/unit_tests/worker/test_task_worker.py @@ -21,6 +21,7 @@ from blueapi.config import DeviceManagerSource, EnvironmentConfig, PlanSource from blueapi.core import BlueskyContext, EventStream from blueapi.core.bluesky_types import DataEvent +from blueapi.core.context import DEFAULT_PLAN_STUBS from blueapi.service.model import PlanModel from blueapi.utils.base_model import BlueapiBaseModel from blueapi.worker import ( @@ -39,8 +40,8 @@ _SIMPLE_TASK = Task(name="sleep", params={"time": 0.0}) _LONG_TASK = Task(name="sleep", params={"time": 1.0}) _INDEFINITE_TASK = Task( - name="set_absolute", - params={"movable": "fake_device", "value": 4.0}, + name="abs_set", + args=["fake_device", 4.0], ) _FAILING_TASK = Task(name="failing_plan", params={}) _TASK_WITH_METADATA = Task( @@ -53,7 +54,7 @@ ) -class FakeDevice(Movable[float]): +class FakeDevice(Movable[Any]): event: threading.Event def __init__(self, name: str = "fake_device") -> None: @@ -111,9 +112,10 @@ def context(fake_device: FakeDevice, second_fake_device: FakeDevice) -> BlueskyC ctx_config = EnvironmentConfig( sources=[ PlanSource(module="dodal.plans"), - PlanSource(module="dodal.plan_stubs.wrapped"), ] ) + for stub in DEFAULT_PLAN_STUBS: + ctx.register_plan(stub) ctx_config.sources.append(DeviceManagerSource(module="devices")) ctx.register_plan(failing_plan) ctx.register_device(fake_device) @@ -128,7 +130,6 @@ def context_without_devices() -> BlueskyContext: ctx_config = EnvironmentConfig( sources=[ PlanSource(module="dodal.plans"), - PlanSource(module="dodal.plan_stubs.wrapped"), ] ) ctx_config.sources.append(DeviceManagerSource(module="devices")) diff --git a/uv.lock b/uv.lock index 6ddebe63f..c5a2fbd27 100644 --- a/uv.lock +++ b/uv.lock @@ -483,6 +483,7 @@ source = { editable = "." } dependencies = [ { name = "bluesky", extra = ["plotting"] }, { name = "bluesky-stomp" }, + { name = "bluesky-tiled-plugins" }, { name = "click" }, { name = "event-model" }, { name = "gitpython" }, @@ -563,8 +564,9 @@ dev = [ requires-dist = [ { name = "aioca", marker = "extra == 'server'" }, { name = "aiohttp", marker = "extra == 'server'", specifier = ">=3.13.5" }, - { name = "bluesky", extras = ["plotting"], specifier = ">=1.14.0" }, + { name = "bluesky", extras = ["plotting"], specifier = ">=1.16.0" }, { name = "bluesky-stomp", specifier = ">=0.1.6" }, + { name = "bluesky-tiled-plugins", specifier = ">=2.0.11" }, { name = "click", specifier = ">=8.2.0" }, { name = "dls-dodal", marker = "extra == 'demo'", specifier = ">=3.0.2" }, { name = "event-model", specifier = "==1.24.0" }, @@ -636,7 +638,7 @@ dev = [ [[package]] name = "bluesky" -version = "1.15.1" +version = "1.16.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cycler" }, @@ -651,9 +653,9 @@ dependencies = [ { name = "tqdm" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e4/83/2e5d1956a1c4cd3d4f0bb34605cc2b11f2ce33e48249773292b27e6bba88/bluesky-1.15.1.tar.gz", hash = "sha256:956e161a8f34f698af28edcd501db118fa793a6c43241001e30ed8c6aaabd95c", size = 513978, upload-time = "2026-05-06T14:06:40.116Z" } +sdist = { url = "https://files.pythonhosted.org/packages/24/fb/9d72f62bb19fa10fad013a6039e51162ebaac84713a06a167083c4b68775/bluesky-1.16.0.tar.gz", hash = "sha256:e89884e5eb4e4e502d4f1e929f6862ed6827ad48272a928583bf67d2f1745261", size = 516370, upload-time = "2026-10-29T17:13:07.145Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8e/99/cc217b2a727fdf730d0c0064bc8c03473dfe5d0528f2bd0c4f59fdab4179/bluesky-1.15.1-py3-none-any.whl", hash = "sha256:7b3a0f04cf2bb0a7907771e014e59fe6fced777347df8df84adec7239f6c3d2a", size = 372701, upload-time = "2026-05-06T14:06:38.618Z" }, + { url = "https://files.pythonhosted.org/packages/da/ca/ad113309c25d01d2166a0ed17fcdcfa453dbf267147d9e9530928dda82a6/bluesky-1.16.0-py3-none-any.whl", hash = "sha256:674b6547bcab7f4dcaf5d403ce2225d52711cbfa363853ce5e2cf5119b802d60", size = 369254, upload-time = "2026-10-29T17:13:05.466Z" }, ] [package.optional-dependencies] @@ -677,6 +679,23 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/39/4d/d3069d2e0675ad5037c583b8819e5df6fa07ac1814930ed18644191fa232/bluesky_stomp-0.2.0-py3-none-any.whl", hash = "sha256:b6c01504839717c2953b9efdc714f63db3cd1f2e0b2d0221f0b4f51415d7a0f2", size = 19255, upload-time = "2025-10-14T13:15:56.524Z" }, ] +[[package]] +name = "bluesky-tiled-plugins" +version = "2.0.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dask" }, + { name = "event-model" }, + { name = "mongoquery" }, + { name = "pytz" }, + { name = "tiled", extra = ["client"] }, + { name = "tzlocal" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d3/74/09a8e31991eeb72d369142a7e02f8947ba182321e70b1cf9f8ca0de4289a/bluesky_tiled_plugins-2.0.11.tar.gz", hash = "sha256:1a9acac4c40fa9d2740a1f1cdf63a98cc598a6208267a71b9ab428927403d24d", size = 105156, upload-time = "2026-09-09T17:09:09.003Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1f/12/3c5928bd530b339f73e670ec41a80dcfe76b3d531b3a3cbe74e18e9de1ba/bluesky_tiled_plugins-2.0.11-py3-none-any.whl", hash = "sha256:a40f850e7ae7bec8a28b99e3bf260f6e9bedae04c109285bcd10b6acb579af4a", size = 65758, upload-time = "2026-09-09T17:09:07.746Z" }, +] + [[package]] name = "cachebox" version = "5.2.3" @@ -3365,6 +3384,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/bd/d9/617e6af809bf3a1d468e0d58c3997b1dc219a9a9202e650d30c2fc85d481/mock-5.2.0-py3-none-any.whl", hash = "sha256:7ba87f72ca0e915175596069dbbcc7c75af7b5e9b9bc107ad6349ede0819982f", size = 31617, upload-time = "2025-03-03T12:31:41.518Z" }, ] +[[package]] +name = "mongoquery" +version = "1.4.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f1/ec/8e0ddb347c6c5b94e0147b2b9ea1fd9dbfda5d222d0e529996445c30faaa/mongoquery-1.4.3.tar.gz", hash = "sha256:e901f86ee5af7ef6eda2f2c26f4bd2cfe8380d81f178b7e3607dbbcdcee97239", size = 8199, upload-time = "2025-09-16T10:56:06.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/33/7ce3f09d91a0ca5db7cca67671d865b7c8310b8b59eff287a711919641f0/mongoquery-1.4.3-py3-none-any.whl", hash = "sha256:8be47635c5e361c9f363b7a901a2b86649687491b7aaca2d12601eff41cb6128", size = 6421, upload-time = "2025-09-16T10:56:05.412Z" }, +] + [[package]] name = "msgpack" version = "1.2.4" @@ -5503,6 +5534,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e1/04/e8135ebd1ad02c56ec633277529b2602ff99ff634be76cdba5744cf554fd/python_multipart-0.0.32-py3-none-any.whl", hash = "sha256:ff6d3f776f16878c894e52e107296ffc890e913c611b1a4ec6c44e2821fe2e23", size = 30042, upload-time = "2026-06-04T16:18:57.319Z" }, ] +[[package]] +name = "pytz" +version = "2026.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f5/b0/168030b0bfcc334cf09fa3313afdb888d892c8a0027324683d1de0ec277e/pytz-2026.6.tar.gz", hash = "sha256:3b0fc2727707663d6e517936f444fd8a8b240f1fc32f4bf7ee03274245945284", size = 318520, upload-time = "2026-10-29T09:05:47.011Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b6/25/564f3fc5b70c1398d706c51f2b1470d0ea0b1b2f96fee67877b6f5bdf3b6/pytz-2026.6-py2.py3-none-any.whl", hash = "sha256:7fed3fee8fd6bd4a2b7b75a8d56021d0624127bf69bd5691f115db929ac570b3", size = 506321, upload-time = "2026-10-29T09:05:45.14Z" }, +] + [[package]] name = "pyyaml" version = "6.0.3" @@ -6781,6 +6821,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/94/21/1e5995a1c920cce14e4bffae20c665ec10e7ed03ab25e006cd741092b718/tzdata-2026.5-py2.py3-none-any.whl", hash = "sha256:b683bd1b6659ddcd810ff02ad09ba821d4bf1065072805063eb35c49617905ac", size = 347996, upload-time = "2026-10-03T09:23:12.535Z" }, ] +[[package]] +name = "tzlocal" +version = "5.4.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "tzdata", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d8/89/2bd035df331499589fc92e59375c17c6cea6a500453b2c5f6a6ec9572825/tzlocal-5.4.5.tar.gz", hash = "sha256:ba976898bad27945178c9ca25c222c19e322b30c10342b9f40b46714f70d2d5f", size = 31483, upload-time = "2026-10-22T09:09:26.38Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/c1/9be4e1a8a30db8729a86628073910e56f85aaf8a659e053f376a2e6ea5a8/tzlocal-5.4.5-py3-none-any.whl", hash = "sha256:ecab534f6d65d9deb4c4ea52c121ab6dd5958e9b878e71dcb102578269752454", size = 18215, upload-time = "2026-10-22T09:09:24.447Z" }, +] + [[package]] name = "urllib3" version = "2.8.0"