diff --git a/src/blueapi/cli/cli.py b/src/blueapi/cli/cli.py index 9a86b9a92..504bbf2ce 100644 --- a/src/blueapi/cli/cli.py +++ b/src/blueapi/cli/cli.py @@ -17,7 +17,12 @@ from blueapi.client.client import BlueapiClient from blueapi.client.event_bus import AnyEvent, BlueskyStreamingError, EventBusClient from blueapi.client.rest import BlueskyRemoteControlError -from blueapi.config import ApplicationConfig, ConfigLoader +from blueapi.config import ( + ApplicationConfig, + BasicAuthentication, + ConfigLoader, + StompConfig, +) from blueapi.core import DataEvent from blueapi.service.main import start from blueapi.service.openapi import ( @@ -146,19 +151,17 @@ def get_devices(obj: dict) -> None: def listen_to_events(obj: dict) -> None: """Listen to events output by blueapi""" config: ApplicationConfig = obj["config"] - if config.stomp is not None: - event_bus_client = EventBusClient( - MessagingTemplate.for_broker( - broker=Broker( - host=config.stomp.host, - port=config.stomp.port, - auth=config.stomp.auth, - ) + assert config is ApplicationConfig, "config is not ApplicationConfig" + assert config.stomp is StompConfig, "stomp is not StompConfig" + event_bus_client = EventBusClient( + MessagingTemplate.for_broker( + broker=Broker( + host=config.stomp.host, + port=config.stomp.port, + auth=config.stomp.auth, ) ) - else: - raise RuntimeError("Message bus needs to be configured") - + ) fmt = obj["fmt"] def on_event( diff --git a/src/blueapi/client/client.py b/src/blueapi/client/client.py index 97dbf35a5..76abcbd7a 100644 --- a/src/blueapi/client/client.py +++ b/src/blueapi/client/client.py @@ -4,7 +4,7 @@ from bluesky_stomp.messaging import MessageContext, MessagingTemplate from bluesky_stomp.models import Broker -from blueapi.config import ApplicationConfig +from blueapi.config import ApplicationConfig, StompConfig from blueapi.core.bluesky_types import DataEvent from blueapi.service.model import ( DeviceModel, @@ -40,17 +40,16 @@ def __init__( @classmethod def from_config(cls, config: ApplicationConfig) -> "BlueapiClient": rest = BlueapiRestClient(config.api) - if config.stomp is not None: - template = MessagingTemplate.for_broker( - broker=Broker( - host=config.stomp.host, - port=config.stomp.port, - auth=config.stomp.auth, - ) + events = None + assert config.stomp is StompConfig, "StompConfig is wrong" + template = MessagingTemplate.for_broker( + broker=Broker( + host=config.stomp.host, + port=config.stomp.port, + auth=config.stomp.auth, ) - events = EventBusClient(template) - else: - events = None + ) + events = EventBusClient(template) return cls(rest, events) def get_plans(self) -> PlanResponse: diff --git a/src/blueapi/core/context.py b/src/blueapi/core/context.py index 429ef4d77..7db7370ca 100644 --- a/src/blueapi/core/context.py +++ b/src/blueapi/core/context.py @@ -143,7 +143,7 @@ def my_plan(a: int, b: str): if not is_bluesky_plan_generator(plan): raise TypeError(f"{plan} is not a valid plan generator function") - model = create_model( # type: ignore + model = create_model( plan.__name__, __config__=BlueapiPlanModelConfig, **self._type_spec_for_function(plan),