python-roborock 5.3.0__tar.gz → 5.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. {python_roborock-5.3.0 → python_roborock-5.4.0}/PKG-INFO +1 -1
  2. {python_roborock-5.3.0 → python_roborock-5.4.0}/pyproject.toml +1 -1
  3. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/data/v1/v1_containers.py +35 -18
  4. {python_roborock-5.3.0 → python_roborock-5.4.0}/.gitignore +0 -0
  5. {python_roborock-5.3.0 → python_roborock-5.4.0}/LICENSE +0 -0
  6. {python_roborock-5.3.0 → python_roborock-5.4.0}/README.md +0 -0
  7. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/__init__.py +0 -0
  8. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/broadcast_protocol.py +0 -0
  9. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/callbacks.py +0 -0
  10. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/cli.py +0 -0
  11. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/const.py +0 -0
  12. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/data/__init__.py +0 -0
  13. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/data/b01_q10/__init__.py +0 -0
  14. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/data/b01_q10/b01_q10_code_mappings.py +0 -0
  15. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/data/b01_q10/b01_q10_containers.py +0 -0
  16. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/data/b01_q7/__init__.py +0 -0
  17. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/data/b01_q7/b01_q7_code_mappings.py +0 -0
  18. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/data/b01_q7/b01_q7_containers.py +0 -0
  19. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/data/code_mappings.py +0 -0
  20. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/data/containers.py +0 -0
  21. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/data/dyad/__init__.py +0 -0
  22. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/data/dyad/dyad_code_mappings.py +0 -0
  23. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/data/dyad/dyad_containers.py +0 -0
  24. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/data/v1/__init__.py +0 -0
  25. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/data/v1/v1_clean_modes.py +0 -0
  26. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/data/v1/v1_code_mappings.py +0 -0
  27. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/data/zeo/__init__.py +0 -0
  28. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/data/zeo/zeo_code_mappings.py +0 -0
  29. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/data/zeo/zeo_containers.py +0 -0
  30. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/device_features.py +0 -0
  31. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/README.md +0 -0
  32. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/__init__.py +0 -0
  33. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/cache.py +0 -0
  34. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/device.py +0 -0
  35. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/device_manager.py +0 -0
  36. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/file_cache.py +0 -0
  37. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/rpc/__init__.py +0 -0
  38. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/rpc/a01_channel.py +0 -0
  39. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/rpc/b01_q10_channel.py +0 -0
  40. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/rpc/b01_q7_channel.py +0 -0
  41. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/rpc/v1_channel.py +0 -0
  42. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/__init__.py +0 -0
  43. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/a01/__init__.py +0 -0
  44. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/b01/__init__.py +0 -0
  45. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/b01/q10/__init__.py +0 -0
  46. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/b01/q10/command.py +0 -0
  47. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/b01/q10/common.py +0 -0
  48. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/b01/q10/status.py +0 -0
  49. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/b01/q10/vacuum.py +0 -0
  50. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/b01/q7/__init__.py +0 -0
  51. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/b01/q7/clean_summary.py +0 -0
  52. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/b01/q7/map.py +0 -0
  53. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/b01/q7/map_content.py +0 -0
  54. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/traits_mixin.py +0 -0
  55. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/v1/__init__.py +0 -0
  56. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/v1/child_lock.py +0 -0
  57. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/v1/clean_summary.py +0 -0
  58. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/v1/command.py +0 -0
  59. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/v1/common.py +0 -0
  60. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/v1/consumeable.py +0 -0
  61. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/v1/device_features.py +0 -0
  62. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/v1/do_not_disturb.py +0 -0
  63. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/v1/dust_collection_mode.py +0 -0
  64. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/v1/flow_led_status.py +0 -0
  65. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/v1/home.py +0 -0
  66. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/v1/led_status.py +0 -0
  67. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/v1/map_content.py +0 -0
  68. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/v1/maps.py +0 -0
  69. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/v1/network_info.py +0 -0
  70. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/v1/rooms.py +0 -0
  71. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/v1/routines.py +0 -0
  72. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/v1/smart_wash_params.py +0 -0
  73. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/v1/status.py +0 -0
  74. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/v1/valley_electricity_timer.py +0 -0
  75. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/v1/volume.py +0 -0
  76. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/traits/v1/wash_towel_mode.py +0 -0
  77. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/transport/__init__.py +0 -0
  78. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/transport/channel.py +0 -0
  79. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/transport/local_channel.py +0 -0
  80. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/devices/transport/mqtt_channel.py +0 -0
  81. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/diagnostics.py +0 -0
  82. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/exceptions.py +0 -0
  83. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/map/__init__.py +0 -0
  84. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/map/b01_map_parser.py +0 -0
  85. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/map/map_parser.py +0 -0
  86. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/map/proto/__init__.py +0 -0
  87. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/map/proto/b01_scmap.proto +0 -0
  88. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/map/proto/b01_scmap_pb2.py +0 -0
  89. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/mqtt/__init__.py +0 -0
  90. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/mqtt/health_manager.py +0 -0
  91. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/mqtt/roborock_session.py +0 -0
  92. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/mqtt/session.py +0 -0
  93. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/protocol.py +0 -0
  94. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/protocols/__init__.py +0 -0
  95. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/protocols/a01_protocol.py +0 -0
  96. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/protocols/b01_q10_protocol.py +0 -0
  97. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/protocols/b01_q7_protocol.py +0 -0
  98. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/protocols/v1_protocol.py +0 -0
  99. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/py.typed +0 -0
  100. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/roborock_message.py +0 -0
  101. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/roborock_typing.py +0 -0
  102. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/util.py +0 -0
  103. {python_roborock-5.3.0 → python_roborock-5.4.0}/roborock/web_api.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-roborock
3
- Version: 5.3.0
3
+ Version: 5.4.0
4
4
  Summary: A package to control Roborock vacuums.
5
5
  Project-URL: Repository, https://github.com/python-roborock/python-roborock
6
6
  Project-URL: Documentation, https://python-roborock.readthedocs.io/
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "python-roborock"
3
- version = "5.3.0"
3
+ version = "5.4.0"
4
4
  description = "A package to control Roborock vacuums."
5
5
  authors = [{ name = "humbertogontijo", email = "humbertogontijo@users.noreply.github.com" }, {name="Lash-L"}, {name="allenporter"}]
6
6
  requires-python = ">=3.11, <4"
@@ -113,6 +113,7 @@ class StatusField(FieldNameBase):
113
113
  WATER_BOX_MODE = "water_box_mode"
114
114
  CHARGE_STATUS = "charge_status"
115
115
  DRY_STATUS = "dry_status"
116
+ ERROR_CODE = "error_code"
116
117
 
117
118
 
118
119
  def _requires_schema_code(requires_schema_code: str, default=None) -> Any:
@@ -125,11 +126,11 @@ class Status(RoborockBase):
125
126
 
126
127
  msg_ver: int | None = None
127
128
  msg_seq: int | None = None
128
- state: RoborockStateCode | None = _requires_schema_code("state", default=None)
129
- battery: int | None = _requires_schema_code("battery", default=None)
129
+ state: RoborockStateCode | None = _requires_schema_code("state")
130
+ battery: int | None = _requires_schema_code("battery")
130
131
  clean_time: int | None = None
131
132
  clean_area: int | None = None
132
- error_code: RoborockErrorCode | None = None
133
+ error_code: RoborockErrorCode | None = _requires_schema_code("error_code")
133
134
  map_present: int | None = None
134
135
  in_cleaning: RoborockInCleaning | None = None
135
136
  in_returning: int | None = None
@@ -139,12 +140,12 @@ class Status(RoborockBase):
139
140
  back_type: int | None = None
140
141
  wash_phase: int | None = None
141
142
  wash_ready: int | None = None
142
- fan_power: RoborockFanPowerCode | None = _requires_schema_code("fan_power", default=None)
143
+ fan_power: RoborockFanPowerCode | None = _requires_schema_code("fan_power")
143
144
  dnd_enabled: int | None = None
144
145
  map_status: int | None = None
145
146
  is_locating: int | None = None
146
147
  lock_status: int | None = None
147
- water_box_mode: RoborockMopIntensityCode | None = _requires_schema_code("water_box_mode", default=None)
148
+ water_box_mode: RoborockMopIntensityCode | None = _requires_schema_code("water_box_mode")
148
149
  water_box_carriage_status: int | None = None
149
150
  mop_forbidden_enable: int | None = None
150
151
  camera_status: int | None = None
@@ -162,13 +163,13 @@ class Status(RoborockBase):
162
163
  collision_avoid_status: int | None = None
163
164
  switch_map_mode: int | None = None
164
165
  dock_error_status: RoborockDockErrorCode | None = None
165
- charge_status: int | None = _requires_schema_code("charge_status", default=None)
166
+ charge_status: int | None = _requires_schema_code("charge_status")
166
167
  unsave_map_reason: int | None = None
167
168
  unsave_map_flag: int | None = None
168
169
  wash_status: int | None = None
169
170
  distance_off: int | None = None
170
171
  in_warmup: int | None = None
171
- dry_status: int | None = _requires_schema_code("drying_status", default=None)
172
+ dry_status: int | None = _requires_schema_code("drying_status")
172
173
  rdt: int | None = None
173
174
  clean_percent: int | None = None
174
175
  rss: int | None = None
@@ -293,11 +294,11 @@ class StatusV2(RoborockBase):
293
294
 
294
295
  msg_ver: int | None = None
295
296
  msg_seq: int | None = None
296
- state: RoborockStateCode | None = None
297
- battery: int | None = None
297
+ state: RoborockStateCode | None = _requires_schema_code("state")
298
+ battery: int | None = _requires_schema_code("battery")
298
299
  clean_time: int | None = None
299
300
  clean_area: int | None = None
300
- error_code: RoborockErrorCode | None = None
301
+ error_code: RoborockErrorCode | None = _requires_schema_code("error_code")
301
302
  map_present: int | None = None
302
303
  in_cleaning: RoborockInCleaning | None = None
303
304
  in_returning: int | None = None
@@ -307,12 +308,12 @@ class StatusV2(RoborockBase):
307
308
  back_type: int | None = None
308
309
  wash_phase: int | None = None
309
310
  wash_ready: int | None = None
310
- fan_power: int | None = None
311
+ fan_power: int | None = _requires_schema_code("fan_power")
311
312
  dnd_enabled: int | None = None
312
313
  map_status: int | None = None
313
314
  is_locating: int | None = None
314
315
  lock_status: int | None = None
315
- water_box_mode: int | None = None
316
+ water_box_mode: int | None = _requires_schema_code("water_box_mode")
316
317
  water_box_carriage_status: int | None = None
317
318
  mop_forbidden_enable: int | None = None
318
319
  camera_status: int | None = None
@@ -329,14 +330,14 @@ class StatusV2(RoborockBase):
329
330
  debug_mode: int | None = None
330
331
  collision_avoid_status: int | None = None
331
332
  switch_map_mode: int | None = None
332
- dock_error_status: RoborockDockErrorCode | None = None
333
- charge_status: int | None = None
333
+ dock_error_status: RoborockDockErrorCode | None = _requires_schema_code("dock_error_status")
334
+ charge_status: int | None = _requires_schema_code("charge_status")
334
335
  unsave_map_reason: int | None = None
335
336
  unsave_map_flag: int | None = None
336
337
  wash_status: int | None = None
337
338
  distance_off: int | None = None
338
339
  in_warmup: int | None = None
339
- dry_status: int | None = None
340
+ dry_status: int | None = _requires_schema_code("drying_status")
340
341
  rdt: int | None = None
341
342
  clean_percent: int | None = None
342
343
  rss: int | None = None
@@ -624,11 +625,27 @@ class CleanSummaryWithDetail(CleanSummary):
624
625
  last_clean_record: CleanRecord | None = None
625
626
 
626
627
 
628
+ class ConsumableField(FieldNameBase):
629
+ """An enum that represents a field in the `Consumable` class.
630
+
631
+ This is used with `roborock.devices.traits.v1.status.DeviceFeaturesTrait`
632
+ to understand if a feature is supported by the device using `is_field_supported`.
633
+
634
+ The enum values are names of fields in the `Consumable` class. Each field is
635
+ annotated with `requires_schema_code` metadata to map the field to a schema
636
+ code in the product schema, which may have a different name than the field/attribute name.
637
+ """
638
+
639
+ MAIN_BRUSH_WORK_TIME = "main_brush_work_time"
640
+ SIDE_BRUSH_WORK_TIME = "side_brush_work_time"
641
+ FILTER_WORK_TIME = "filter_work_time"
642
+
643
+
627
644
  @dataclass
628
645
  class Consumable(RoborockBase):
629
- main_brush_work_time: int | None = None
630
- side_brush_work_time: int | None = None
631
- filter_work_time: int | None = None
646
+ main_brush_work_time: int | None = field(metadata={"requires_schema_code": "main_brush_life"}, default=None)
647
+ side_brush_work_time: int | None = field(metadata={"requires_schema_code": "side_brush_life"}, default=None)
648
+ filter_work_time: int | None = field(metadata={"requires_schema_code": "filter_life"}, default=None)
632
649
  filter_element_work_time: int | None = None
633
650
  sensor_dirty_time: int | None = None
634
651
  strainer_work_times: int | None = None
File without changes