From a6cc6518f9e0ccc580f3f28f57b6a761e1b9ed6d Mon Sep 17 00:00:00 2001 From: Luke Date: Thu, 4 Dec 2025 20:33:47 -0500 Subject: [PATCH 1/2] fix: ensure keys are valid type when serializing from data --- roborock/data/containers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roborock/data/containers.py b/roborock/data/containers.py index 4f6f45ae..eda3b279 100644 --- a/roborock/data/containers.py +++ b/roborock/data/containers.py @@ -67,8 +67,8 @@ def _convert_to_class_obj(class_type: type, value): sub_type = get_args(class_type)[0] return [RoborockBase._convert_to_class_obj(sub_type, obj) for obj in value] if get_origin(class_type) is dict: - _, value_type = get_args(class_type) # assume keys are only basic types - return {k: RoborockBase._convert_to_class_obj(value_type, v) for k, v in value.items()} + key_type, value_type = get_args(class_type) + return {key_type(k): RoborockBase._convert_to_class_obj(value_type, v) for k, v in value.items()} if inspect.isclass(class_type): if issubclass(class_type, RoborockBase): return class_type.from_dict(value) From 57db55670140bd7804d55ca365c4a38b67e051d8 Mon Sep 17 00:00:00 2001 From: Luke Date: Thu, 4 Dec 2025 20:54:13 -0500 Subject: [PATCH 2/2] fix: add fallback --- roborock/data/containers.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/roborock/data/containers.py b/roborock/data/containers.py index eda3b279..76ff117e 100644 --- a/roborock/data/containers.py +++ b/roborock/data/containers.py @@ -68,7 +68,9 @@ def _convert_to_class_obj(class_type: type, value): return [RoborockBase._convert_to_class_obj(sub_type, obj) for obj in value] if get_origin(class_type) is dict: key_type, value_type = get_args(class_type) - return {key_type(k): RoborockBase._convert_to_class_obj(value_type, v) for k, v in value.items()} + if key_type is not None: + return {key_type(k): RoborockBase._convert_to_class_obj(value_type, v) for k, v in value.items()} + return {k: RoborockBase._convert_to_class_obj(value_type, v) for k, v in value.items()} if inspect.isclass(class_type): if issubclass(class_type, RoborockBase): return class_type.from_dict(value)