Skip to content

Commit 82a22b8

Browse files
committed
fix: issues from rebase
1 parent fd01f74 commit 82a22b8

10 files changed

Lines changed: 119 additions & 274 deletions

File tree

bec_lib/bec_lib/config_helper.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
from bec_lib.endpoints import MessageEndpoints
3030
from bec_lib.file_utils import DeviceConfigWriter
3131
from bec_lib.logger import bec_logger
32-
from bec_lib.messages import ConfigAction
32+
from bec_lib.messages import ConfigAction, sanitize_one_way_encodable
3333
from bec_lib.utils.import_utils import lazy_import_from
3434
from bec_lib.utils.json_extended import ExtendedEncoder
3535

@@ -617,7 +617,11 @@ def send_config_request(
617617
request_id = str(uuid.uuid4())
618618
self._connector.send(
619619
MessageEndpoints.device_config_request(),
620-
DeviceConfigMessage(action=action, config=config, metadata={"RID": request_id}),
620+
DeviceConfigMessage(
621+
action=action,
622+
config=sanitize_one_way_encodable(config),
623+
metadata={"RID": request_id},
624+
),
621625
)
622626

623627
if wait_for_response:

bec_lib/bec_lib/device.py

Lines changed: 35 additions & 105 deletions
Large diffs are not rendered by default.

bec_lib/bec_lib/messages.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343

4444
def sanitize_one_way_encodable(data: Any) -> Any:
4545
"""Sanitize any data which can be serialized in a json-compatible format and is not supposed to be decoded,
46-
for example, a parameter dict containing devices"""
46+
# for example, a parameter dict containing devices"""
4747
if isinstance(data, (list, tuple, set)):
4848
return [sanitize_one_way_encodable(x) for x in data]
4949
if isinstance(data, Mapping):
@@ -63,7 +63,7 @@ def _try_dump(v):
6363
try:
6464
msgpack.dumps(v)
6565
except TypeError as e:
66-
raise ValueError("Non-JSONable/msgpackable data in " + str(v)) from e
66+
raise ValueError(f"Non-JSONable/msgpackable data in {str(v)}\n {e}") from e
6767
return v
6868

6969

@@ -1279,6 +1279,12 @@ def from_dict(cls, metrics: dict[str, str | int | float | bool]):
12791279
)
12801280

12811281

1282+
DictPossibleNumpy = TypeAliasType(
1283+
"DictPossibleNumpy",
1284+
dict[str, list[int] | list[float] | int | bool | float | str | np.ndarray | None],
1285+
)
1286+
1287+
12821288
class ProcessedDataMessage(BECMessage):
12831289
"""Message for processed data
12841290
@@ -1288,7 +1294,7 @@ class ProcessedDataMessage(BECMessage):
12881294
"""
12891295

12901296
msg_type: ClassVar[str] = "processed_data_message"
1291-
data: JsonableDict | list[JsonableDict]
1297+
data: DictPossibleNumpy | list[DictPossibleNumpy] | JsonableDict | list[JsonableDict]
12921298

12931299

12941300
class DAPConfigMessage(BECMessage):

bec_lib/bec_lib/scans.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -202,9 +202,7 @@ def _import_scans(self):
202202
setattr(
203203
getattr(self, scan_name),
204204
"__signature__",
205-
dict_to_signature(
206-
self._strip_scan_signature_annotations(scan_info.get("signature"))
207-
),
205+
dict_to_signature(self._strip_scan_signature_annotations(scan_info.signature)),
208206
)
209207

210208
@staticmethod
@@ -341,7 +339,7 @@ def prepare_scan_request(
341339
if not isinstance(arg, Scans.get_arg_type(arg_input[ii % len(arg_input)])):
342340
raise TypeError(
343341
f"{scan_info.doc}\n Argument {ii} must be of type"
344-
f" {arg_input[ii%len(arg_input)]}, not {type(arg).__name__}."
342+
f" {arg_input[ii % len(arg_input)]}, not {type(arg).__name__}."
345343
)
346344

347345
metadata = {}

bec_lib/bec_lib/serialization.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
from bec_lib import messages as messages_module
1616
from bec_lib.logger import bec_logger
17-
from bec_lib.messages import BECMessage
17+
from bec_lib.messages import BECMessage, sanitize_one_way_encodable
1818
from bec_lib.serialization_registry import SerializationRegistry
1919

2020
logger = bec_logger.logger
@@ -39,6 +39,7 @@ def dumps(self, obj):
3939
"""Pack object `obj` and return packed bytes."""
4040
if isinstance(obj, (BECMessage, BaseModel)):
4141
obj = obj.model_dump(mode="python", fallback=self.encode)
42+
obj = sanitize_one_way_encodable(obj)
4243
return msgpack_module.packb(obj, default=self.encode)
4344

4445
def loads(self, raw_bytes):
@@ -56,6 +57,9 @@ class BECJson(SerializationRegistry):
5657

5758
def dumps(self, obj, indent: int | None = None) -> str:
5859
"""Pack object `obj` and return packed bytes."""
60+
if isinstance(obj, (BECMessage, BaseModel)):
61+
obj = obj.model_dump(mode="python", fallback=self.encode)
62+
obj = sanitize_one_way_encodable(obj)
5963
return json.dumps(obj, default=self.encode, indent=indent)
6064

6165
def loads(self, raw_bytes):

0 commit comments

Comments
 (0)