From 5b98fb06cec86ea2fe769b14807324e5b961e6af Mon Sep 17 00:00:00 2001 From: Zoheb Shaikh Date: Fri, 28 Feb 2025 23:36:37 +0000 Subject: [PATCH] Add comments and possible fix for bluesky.Movable change --- src/blueapi/config.py | 2 ++ tests/unit_tests/worker/devices.py | 6 +++++- tests/unit_tests/worker/test_task_worker.py | 9 +++++++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/blueapi/config.py b/src/blueapi/config.py index e9b2a9b49..e6ded6c9e 100644 --- a/src/blueapi/config.py +++ b/src/blueapi/config.py @@ -60,6 +60,8 @@ class EnvironmentConfig(BlueapiBaseModel): ), Source(kind=SourceKind.PLAN_FUNCTIONS, module="blueapi.startup.example_plans"), Source(kind=SourceKind.PLAN_FUNCTIONS, module="dodal.plans"), + # This plan is not JSON serializable specifically bluesky.Moveable + # https://github.com/DiamondLightSource/dodal/blob/a3b1b8c540cea6a4180471818c258e53577856af/src/dodal/plan_stubs/wrapped.py#L18 Source(kind=SourceKind.PLAN_FUNCTIONS, module="dodal.plan_stubs.wrapped"), ] events: WorkerEventConfig = Field(default_factory=WorkerEventConfig) diff --git a/tests/unit_tests/worker/devices.py b/tests/unit_tests/worker/devices.py index e6dadc53c..36dba470e 100644 --- a/tests/unit_tests/worker/devices.py +++ b/tests/unit_tests/worker/devices.py @@ -1,9 +1,13 @@ # Devices to use for worker tests +from typing import TypeVar + from bluesky.protocols import Movable from ophyd import Device, DeviceStatus from ophyd.status import Status +T = TypeVar("T") + class AdditionalUpdateStatus(DeviceStatus): """ @@ -39,7 +43,7 @@ def _run_callbacks(self) -> None: ) -class AdditionalStatusDevice(Device, Movable): +class AdditionalStatusDevice(Device, Movable[float]): def set(self, value: float) -> Status: # type: ignore status = AdditionalUpdateStatus(self) return status # type: ignore diff --git a/tests/unit_tests/worker/test_task_worker.py b/tests/unit_tests/worker/test_task_worker.py index 83d99ccdf..0ca28a694 100644 --- a/tests/unit_tests/worker/test_task_worker.py +++ b/tests/unit_tests/worker/test_task_worker.py @@ -8,11 +8,13 @@ from unittest.mock import ANY, MagicMock, patch import pytest +from bluesky.protocols import Movable from dodal.common.types import UpdatingPathProvider from observability_utils.tracing import ( JsonObjectSpanExporter, asserting_span_exporter, ) +from ophyd_async.core import AsyncStatus from blueapi.config import EnvironmentConfig, Source, SourceKind from blueapi.core import BlueskyContext, EventStream, MsgGenerator @@ -38,8 +40,10 @@ ) _FAILING_TASK = Task(name="failing_plan", params={}) +T = TypeVar("T") -class FakeDevice: + +class FakeDevice(Movable): event: threading.Event @property @@ -49,7 +53,8 @@ def name(self) -> str: def __init__(self) -> None: self.event = threading.Event() - def set(self, pos: float) -> None: + @AsyncStatus.wrap + async def set(self, pos: float) -> None: self.event.wait() self.event.clear()