Skip to content

Commit 9653c50

Browse files
fix: dict with enum instead of value
1 parent cd18585 commit 9653c50

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

roborock/containers.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,11 @@ def from_dict(cls, data: dict[str, Any]):
8686
def as_dict(self) -> dict:
8787
return asdict(
8888
self,
89-
dict_factory=lambda _fields: {camelize(key): value for (key, value) in _fields if value is not None},
89+
dict_factory=lambda _fields: {
90+
camelize(key): value.value if isinstance(value, Enum) else value
91+
for (key, value) in _fields
92+
if value is not None
93+
},
9094
)
9195

9296

tests/test_containers.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from roborock.code_mappings import (
33
RoborockDockErrorCode,
44
RoborockDockTypeCode,
5+
RoborockEnum,
56
RoborockErrorCode,
67
RoborockFanSpeedS7MaxV,
78
RoborockMopIntensityS7,
@@ -93,6 +94,11 @@ def test_serialize_and_unserialize():
9394
ud = UserData.from_dict(USER_DATA)
9495
ud_dict = ud.as_dict()
9596
assert ud_dict == USER_DATA
97+
s7_maxv_status = S7MaxVStatus.from_dict(STATUS)
98+
s7_maxv_status_dict = s7_maxv_status.as_dict()
99+
assert not isinstance(s7_maxv_status_dict.get("fanPower"), RoborockEnum)
100+
s7_maxv_status = S7MaxVStatus.from_dict(s7_maxv_status_dict)
101+
assert s7_maxv_status.__dict__ == STATUS
96102

97103

98104
def test_consumable():

0 commit comments

Comments
 (0)