99from importlib .metadata import PackageNotFoundError
1010from importlib .metadata import version as importlib_version
1111from types import NoneType
12- from typing import Annotated , Any , ClassVar , Literal , Self , Union
12+ from typing import Annotated , Any , ClassVar , Literal , Self , TypeVar , Union
1313from uuid import uuid4
1414
1515import msgpack
2626)
2727from typing_extensions import TypeAliasType
2828
29+ from bec_lib .bec_serializable import BECSerializable
2930from bec_lib .metadata_schema import get_metadata_schema_for_scan
3031from bec_lib .one_way_registry import OneWaySerializationRegistry
3132
@@ -113,7 +114,7 @@ class BECStatus(Enum):
113114 ERROR = - 1
114115
115116
116- class BECMessage (BaseModel ):
117+ class BECMessage (BECSerializable ):
117118 """Base Model class for BEC Messages
118119
119120 Args:
@@ -122,7 +123,6 @@ class BECMessage(BaseModel):
122123
123124 """
124125
125- model_config = ConfigDict (arbitrary_types_allowed = True , extra = "forbid" )
126126 msg_type : ClassVar [str ]
127127 metadata : JsonableDict = Field (default_factory = dict )
128128
@@ -1307,16 +1307,19 @@ class DAPResponseMessage(BECMessage):
13071307 dap_request : BECMessage | None = Field (default = None )
13081308
13091309
1310+ MessageType = TypeVar ("MessageType" , bound = BECMessage )
1311+
1312+
13101313class AvailableResourceMessage (BECMessage ):
13111314 """Message for available resources such as scans, data processing plugins etc
13121315
13131316 Args:
1314- resource (dict, list[dict], BECMessage, list[BECMessage]): Resource description
1317+ resource (dict, list[dict], BECMessage, list[BECMessage]): Resource description - may contain only one type of BECMessage
13151318 metadata (dict, optional): Metadata. Defaults to None.
13161319 """
13171320
13181321 msg_type : ClassVar [str ] = "available_resource_message"
1319- resource : JsonableDict | list [JsonableDict ] | BECMessage | list [BECMessage ]
1322+ resource : JsonableDict | list [JsonableDict ] | MessageType | list [MessageType ]
13201323
13211324
13221325class ProgressMessage (BECMessage ):
0 commit comments