File tree Expand file tree Collapse file tree 4 files changed +32
-31
lines changed
tests/devices/traits/b01/q7 Expand file tree Collapse file tree 4 files changed +32
-31
lines changed Original file line number Diff line number Diff line change @@ -75,6 +75,33 @@ class Recommend(RoborockBase):
7575 room_id : list [int ] = field (default_factory = list )
7676
7777
78+ @dataclass
79+ class Q7MapListEntry (RoborockBase ):
80+ """Single map list entry returned by `service.get_map_list`."""
81+
82+ id : int | None = None
83+ cur : bool | None = None
84+
85+
86+ @dataclass
87+ class Q7MapList (RoborockBase ):
88+ """Map list response returned by `service.get_map_list`."""
89+
90+ map_list : list [Q7MapListEntry ] = field (default_factory = list )
91+
92+ @property
93+ def current_map_id (self ) -> int | None :
94+ """Current map id, preferring the entry marked current."""
95+ if not self .map_list :
96+ return None
97+
98+ ordered = sorted (self .map_list , key = lambda entry : entry .cur or False , reverse = True )
99+ first = next (iter (ordered ), None )
100+ if first is None or not isinstance (first .id , int ):
101+ return None
102+ return first .id
103+
104+
78105@dataclass
79106class B01Props (RoborockBase ):
80107 """
Original file line number Diff line number Diff line change 44from typing import Any
55
66from roborock import B01Props
7+ from roborock .data import Q7MapList , Q7MapListEntry
78from roborock .data .b01_q7 .b01_q7_code_mappings import (
89 CleanPathPreferenceMapping ,
910 CleanRepeatMapping ,
2122from roborock .roborock_typing import RoborockB01Q7Methods
2223
2324from .clean_summary import CleanSummaryTrait
24- from .map import MapTrait , Q7MapList , Q7MapListEntry
25+ from .map import MapTrait
2526
2627__all__ = [
2728 "Q7PropertiesApi" ,
Original file line number Diff line number Diff line change 11"""Map trait for B01 Q7 devices."""
22
33import asyncio
4- from dataclasses import dataclass , field
54
6- from roborock .data import RoborockBase
5+ from roborock .data import Q7MapList
76from roborock .devices .rpc .b01_q7_channel import send_decoded_command , send_map_command
87from roborock .devices .traits import Trait
98from roborock .devices .transport .mqtt_channel import MqttChannel
1211from roborock .roborock_typing import RoborockB01Q7Methods
1312
1413
15- @dataclass
16- class Q7MapListEntry (RoborockBase ):
17- """Single map list entry returned by `service.get_map_list`."""
18-
19- id : int | None = None
20- cur : bool | None = None
21-
22-
23- @dataclass
24- class Q7MapList (RoborockBase ):
25- """Map list response returned by `service.get_map_list`."""
26-
27- map_list : list [Q7MapListEntry ] = field (default_factory = list )
28-
29- @property
30- def current_map_id (self ) -> int | None :
31- """Current map id, preferring the entry marked current."""
32- if not self .map_list :
33- return None
34-
35- ordered = sorted (self .map_list , key = lambda entry : entry .cur or False , reverse = True )
36- first = next (iter (ordered ), None )
37- if first is None or not isinstance (first .id , int ):
38- return None
39- return first .id
40-
41-
4214class MapTrait (Q7MapList , Trait ):
4315 """Map retrieval + map metadata helpers for Q7 devices."""
4416
Original file line number Diff line number Diff line change 44from Crypto .Cipher import AES
55from Crypto .Util .Padding import unpad
66
7- from roborock .devices .traits .b01 .q7 import Q7MapList , Q7MapListEntry , Q7PropertiesApi
7+ from roborock .data import Q7MapList , Q7MapListEntry
8+ from roborock .devices .traits .b01 .q7 import Q7PropertiesApi
89from roborock .exceptions import RoborockException
910from roborock .roborock_message import RoborockMessage , RoborockMessageProtocol
1011from tests .fixtures .channel_fixtures import FakeChannel
You can’t perform that action at this time.
0 commit comments