python-roborock 3.12.1__tar.gz → 3.12.2__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.
- {python_roborock-3.12.1 → python_roborock-3.12.2}/PKG-INFO +1 -1
- {python_roborock-3.12.1 → python_roborock-3.12.2}/pyproject.toml +1 -1
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/protocol.py +31 -3
- {python_roborock-3.12.1 → python_roborock-3.12.2}/.gitignore +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/LICENSE +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/README.md +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/__init__.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/api.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/broadcast_protocol.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/callbacks.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/cli.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/cloud_api.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/command_cache.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/const.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/data/__init__.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/data/b01_q10/__init__.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/data/b01_q10/b01_q10_code_mappings.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/data/b01_q10/b01_q10_containers.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/data/b01_q7/__init__.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/data/b01_q7/b01_q7_code_mappings.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/data/b01_q7/b01_q7_containers.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/data/code_mappings.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/data/containers.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/data/dyad/__init__.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/data/dyad/dyad_code_mappings.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/data/dyad/dyad_containers.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/data/v1/__init__.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/data/v1/v1_clean_modes.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/data/v1/v1_code_mappings.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/data/v1/v1_containers.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/data/zeo/__init__.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/data/zeo/zeo_code_mappings.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/data/zeo/zeo_containers.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/device_features.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/README.md +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/__init__.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/a01_channel.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/b01_channel.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/cache.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/channel.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/device.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/device_manager.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/file_cache.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/local_channel.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/mqtt_channel.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/__init__.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/a01/__init__.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/b01/__init__.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/traits_mixin.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/__init__.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/child_lock.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/clean_summary.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/command.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/common.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/consumeable.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/device_features.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/do_not_disturb.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/dust_collection_mode.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/flow_led_status.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/home.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/led_status.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/map_content.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/maps.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/network_info.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/rooms.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/routines.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/smart_wash_params.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/status.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/valley_electricity_timer.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/volume.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/wash_towel_mode.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/v1_channel.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/exceptions.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/map/__init__.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/map/map_parser.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/mqtt/__init__.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/mqtt/health_manager.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/mqtt/roborock_session.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/mqtt/session.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/protocols/__init__.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/protocols/a01_protocol.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/protocols/b01_protocol.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/protocols/v1_protocol.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/py.typed +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/roborock_future.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/roborock_message.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/roborock_typing.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/util.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/version_1_apis/__init__.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/version_1_apis/roborock_client_v1.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/version_1_apis/roborock_local_client_v1.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/version_1_apis/roborock_mqtt_client_v1.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/version_a01_apis/__init__.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/version_a01_apis/roborock_client_a01.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/version_a01_apis/roborock_mqtt_client_a01.py +0 -0
- {python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/web_api.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-roborock
|
|
3
|
-
Version: 3.12.
|
|
3
|
+
Version: 3.12.2
|
|
4
4
|
Summary: A package to control Roborock vacuums.
|
|
5
5
|
Project-URL: Repository, https://github.com/humbertogontijo/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 = "3.12.
|
|
3
|
+
version = "3.12.2"
|
|
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"
|
|
@@ -341,9 +341,35 @@ class PrefixedStruct(Struct):
|
|
|
341
341
|
def _parse(self, stream, context, path):
|
|
342
342
|
subcon1 = Peek(Optional(Bytes(3)))
|
|
343
343
|
peek_version = subcon1.parse_stream(stream, **context)
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
344
|
+
|
|
345
|
+
valid_versions = (b"1.0", b"A01", b"B01", b"L01")
|
|
346
|
+
if peek_version not in valid_versions:
|
|
347
|
+
# Current stream position does not start with a valid version.
|
|
348
|
+
# Scan forward to find one.
|
|
349
|
+
current_pos = stream_tell(stream, path)
|
|
350
|
+
# Read remaining data to find a valid header
|
|
351
|
+
data = stream.read()
|
|
352
|
+
|
|
353
|
+
start_index = -1
|
|
354
|
+
# Find the earliest occurrence of any valid version in a single pass
|
|
355
|
+
for i in range(len(data) - 2):
|
|
356
|
+
if data[i : i + 3] in valid_versions:
|
|
357
|
+
start_index = i
|
|
358
|
+
break
|
|
359
|
+
|
|
360
|
+
if start_index != -1:
|
|
361
|
+
# Found a valid version header at `start_index`.
|
|
362
|
+
# Seek to that position (original_pos + index).
|
|
363
|
+
if start_index != 4:
|
|
364
|
+
# 4 is the typical/expected amount we prune off,
|
|
365
|
+
# therefore, we only want a debug if we have a different length.
|
|
366
|
+
_LOGGER.debug("Stripping %d bytes of invalid data from stream", start_index)
|
|
367
|
+
stream_seek(stream, current_pos + start_index, 0, path)
|
|
368
|
+
else:
|
|
369
|
+
_LOGGER.debug("No valid version header found in stream, continuing anyways...")
|
|
370
|
+
# Seek back to the original position to avoid parsing at EOF
|
|
371
|
+
stream_seek(stream, current_pos, 0, path)
|
|
372
|
+
|
|
347
373
|
return super()._parse(stream, context, path)
|
|
348
374
|
|
|
349
375
|
def _build(self, obj, stream, context, path):
|
|
@@ -511,6 +537,8 @@ def create_local_decoder(local_key: str, connect_nonce: int | None = None, ack_n
|
|
|
511
537
|
parsed_messages, remaining = MessageParser.parse(
|
|
512
538
|
buffer, local_key=local_key, connect_nonce=connect_nonce, ack_nonce=ack_nonce
|
|
513
539
|
)
|
|
540
|
+
if remaining:
|
|
541
|
+
_LOGGER.debug("Found %d extra bytes: %s", len(remaining), remaining)
|
|
514
542
|
buffer = remaining
|
|
515
543
|
return parsed_messages
|
|
516
544
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/data/b01_q10/b01_q10_code_mappings.py
RENAMED
|
File without changes
|
{python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/data/b01_q10/b01_q10_containers.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/data/b01_q7/b01_q7_code_mappings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/clean_summary.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/device_features.py
RENAMED
|
File without changes
|
{python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/do_not_disturb.py
RENAMED
|
File without changes
|
{python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/dust_collection_mode.py
RENAMED
|
File without changes
|
{python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/flow_led_status.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/network_info.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/smart_wash_params.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/devices/traits/v1/wash_towel_mode.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/version_1_apis/roborock_client_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/version_1_apis/roborock_mqtt_client_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_roborock-3.12.1 → python_roborock-3.12.2}/roborock/version_a01_apis/roborock_client_a01.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|