Source code for ophyd_async.plan_stubs._ensure_connected
from bluesky.utils import plan
from ophyd_async.core import DEFAULT_TIMEOUT, Device, LazyMock, wait_for_connection
from ._wait_for_awaitable import wait_for_awaitable
[docs]
@plan
def ensure_connected(
*devices: Device,
mock: bool | LazyMock = False,
timeout: float = DEFAULT_TIMEOUT,
force_reconnect=False,
):
"""Plan stub to ensure devices are connected with a given timeout."""
device_names = [device.name for device in devices]
non_unique = {
device: device.name for device in devices if device_names.count(device.name) > 1
}
if non_unique:
raise ValueError(f"Devices do not have unique names {non_unique}")
coros = {
device.name: device.connect(
mock=mock, timeout=timeout, force_reconnect=force_reconnect
)
for device in devices
}
yield from wait_for_awaitable(wait_for_connection(**coros))