Skip to content

Commit c8043cb

Browse files
committed
chore: update to the version from the other PR
1 parent 9b41365 commit c8043cb

File tree

2 files changed

+208
-384
lines changed

2 files changed

+208
-384
lines changed

roborock/code_mappings.py

Lines changed: 59 additions & 134 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
from __future__ import annotations
22

33
import logging
4-
from enum import Enum, IntEnum, StrEnum
4+
from collections import namedtuple
5+
from enum import Enum, IntEnum
56

67
_LOGGER = logging.getLogger(__name__)
78
completed_warnings = set()
@@ -50,142 +51,66 @@ def items(cls: type[RoborockEnum]):
5051
return cls.as_dict().items()
5152

5253

53-
class RoborockProductNickname(StrEnum):
54-
"""Enumeration of product nicknames."""
55-
56-
CORAL = "Coral"
57-
CORALPRO = "CoralPro"
58-
PEARL = "Pearl"
59-
PEARLC = "PearlC"
60-
PEARLE = "PearlE"
61-
PEARLELITE = "PearlELite"
62-
PEARLPLUS = "PearlPlus"
63-
PEARLPLUSS = "PearlPlusS"
64-
PEARLS = "PearlS"
65-
PEARLSLITE = "PearlSLite"
66-
RUBYPLUS = "RubyPlus"
67-
RUBYSC = "RubySC"
68-
RUBYSE = "RubySE"
69-
RUBYSLITE = "RubySLite"
70-
TANOS = "Tanos"
71-
TANOSE = "TanosE"
72-
TANOSS = "TanosS"
73-
TANOSSC = "TanosSC"
74-
TANOSSE = "TanosSE"
75-
TANOSSMAX = "TanosSMax"
76-
TANOSSLITE = "TanosSLite"
77-
TANOSSPLUS = "TanosSPlus"
78-
TANOSV = "TanosV"
79-
TOPAZS = "TopazS"
80-
TOPAZSC = "TopazSC"
81-
TOPAZSPLUS = "TopazSPlus"
82-
TOPAZSPOWER = "TopazSPower"
83-
TOPAZSV = "TopazSV"
84-
ULTRON = "Ultron"
85-
ULTRONE = "UltronE"
86-
ULTRONLITE = "UltronLite"
87-
ULTRONSC = "UltronSC"
88-
ULTRONSE = "UltronSE"
89-
ULTRONSPLUS = "UltronSPlus"
90-
ULTRONSV = "UltronSV"
91-
VERDELITE = "Verdelite"
92-
VIVIAN = "Vivian"
93-
VIVIANC = "VivianC"
94-
95-
96-
short_model_to_enum = {
97-
# Pearl Series
98-
"a103": RoborockProductNickname.PEARLC,
99-
"a104": RoborockProductNickname.PEARLC,
100-
"a116": RoborockProductNickname.PEARLPLUSS,
101-
"a117": RoborockProductNickname.PEARLPLUSS,
102-
"a136": RoborockProductNickname.PEARLPLUSS,
103-
"a122": RoborockProductNickname.PEARLSLITE,
104-
"a123": RoborockProductNickname.PEARLSLITE,
105-
"a167": RoborockProductNickname.PEARLE,
106-
"a168": RoborockProductNickname.PEARLE,
107-
"a169": RoborockProductNickname.PEARLELITE,
108-
"a170": RoborockProductNickname.PEARLELITE,
109-
"a74": RoborockProductNickname.PEARL,
110-
"a75": RoborockProductNickname.PEARL,
111-
"a100": RoborockProductNickname.PEARLS,
112-
"a101": RoborockProductNickname.PEARLS,
113-
"a86": RoborockProductNickname.PEARLPLUS,
114-
"a87": RoborockProductNickname.PEARLPLUS,
115-
# Vivian Series
116-
"a158": RoborockProductNickname.VIVIANC,
117-
"a159": RoborockProductNickname.VIVIANC,
118-
"a134": RoborockProductNickname.VIVIAN,
119-
"a135": RoborockProductNickname.VIVIAN,
120-
"a155": RoborockProductNickname.VIVIAN,
121-
"a156": RoborockProductNickname.VIVIAN,
54+
ProductInfo = namedtuple("ProductInfo", ["nickname", "short_models"])
55+
56+
57+
class RoborockProductNickname(Enum):
12258
# Coral Series
123-
"a143": RoborockProductNickname.CORALPRO,
124-
"a144": RoborockProductNickname.CORALPRO,
125-
"a20": RoborockProductNickname.CORAL,
126-
"a21": RoborockProductNickname.CORAL,
59+
CORAL = ProductInfo(nickname="Coral", short_models=("a20", "a21"))
60+
CORALPRO = ProductInfo(nickname="CoralPro", short_models=("a143", "a144"))
61+
62+
# Pearl Series
63+
PEARL = ProductInfo(nickname="Pearl", short_models=("a74", "a75"))
64+
PEARLC = ProductInfo(nickname="PearlC", short_models=("a103", "a104"))
65+
PEARLE = ProductInfo(nickname="PearlE", short_models=("a167", "a168"))
66+
PEARLELITE = ProductInfo(nickname="PearlELite", short_models=("a169", "a170"))
67+
PEARLPLUS = ProductInfo(nickname="PearlPlus", short_models=("a86", "a87"))
68+
PEARLPLUSS = ProductInfo(nickname="PearlPlusS", short_models=("a116", "a117", "a136"))
69+
PEARLS = ProductInfo(nickname="PearlS", short_models=("a100", "a101"))
70+
PEARLSLITE = ProductInfo(nickname="PearlSLite", short_models=("a122", "a123"))
71+
72+
# Ruby Series
73+
RUBYPLUS = ProductInfo(nickname="RubyPlus", short_models=("t4", "s4"))
74+
RUBYSC = ProductInfo(nickname="RubySC", short_models=("p5", "a08"))
75+
RUBYSE = ProductInfo(nickname="RubySE", short_models=("a19",))
76+
RUBYSLITE = ProductInfo(nickname="RubySLite", short_models=("p6", "s5e", "a05"))
77+
78+
# Tanos Series
79+
TANOS = ProductInfo(nickname="Tanos", short_models=("t6", "s6"))
80+
TANOSE = ProductInfo(nickname="TanosE", short_models=("t7", "a11"))
81+
TANOSS = ProductInfo(nickname="TanosS", short_models=("a14", "a15"))
82+
TANOSSC = ProductInfo(nickname="TanosSC", short_models=("a39", "a40"))
83+
TANOSSE = ProductInfo(nickname="TanosSE", short_models=("a33", "a34"))
84+
TANOSSMAX = ProductInfo(nickname="TanosSMax", short_models=("a52",))
85+
TANOSSLITE = ProductInfo(nickname="TanosSLite", short_models=("a37", "a38"))
86+
TANOSSPLUS = ProductInfo(nickname="TanosSPlus", short_models=("a23", "a24"))
87+
TANOSV = ProductInfo(nickname="TanosV", short_models=("t7p", "a09", "a10"))
88+
89+
# Topaz Series
90+
TOPAZS = ProductInfo(nickname="TopazS", short_models=("a29", "a30", "a76"))
91+
TOPAZSC = ProductInfo(nickname="TopazSC", short_models=("a64", "a65"))
92+
TOPAZSPLUS = ProductInfo(nickname="TopazSPlus", short_models=("a46", "a47", "a66"))
93+
TOPAZSPOWER = ProductInfo(nickname="TopazSPower", short_models=("a62",))
94+
TOPAZSV = ProductInfo(nickname="TopazSV", short_models=("a26", "a27"))
95+
12796
# Ultron Series
128-
"a73": RoborockProductNickname.ULTRONLITE,
129-
"a85": RoborockProductNickname.ULTRONLITE,
130-
"a94": RoborockProductNickname.ULTRONSC,
131-
"a95": RoborockProductNickname.ULTRONSC,
132-
"a124": RoborockProductNickname.ULTRONSE,
133-
"a125": RoborockProductNickname.ULTRONSE,
134-
"a139": RoborockProductNickname.ULTRONSE,
135-
"a140": RoborockProductNickname.ULTRONSE,
136-
"a68": RoborockProductNickname.ULTRONSPLUS,
137-
"a69": RoborockProductNickname.ULTRONSPLUS,
138-
"a70": RoborockProductNickname.ULTRONSPLUS,
139-
"a50": RoborockProductNickname.ULTRON,
140-
"a51": RoborockProductNickname.ULTRON,
141-
"a72": RoborockProductNickname.ULTRONE,
142-
"a84": RoborockProductNickname.ULTRONE,
143-
"a96": RoborockProductNickname.ULTRONSV,
144-
"a97": RoborockProductNickname.ULTRONSV,
97+
ULTRON = ProductInfo(nickname="Ultron", short_models=("a50", "a51"))
98+
ULTRONE = ProductInfo(nickname="UltronE", short_models=("a72", "a84"))
99+
ULTRONLITE = ProductInfo(nickname="UltronLite", short_models=("a73", "a85"))
100+
ULTRONSC = ProductInfo(nickname="UltronSC", short_models=("a94", "a95"))
101+
ULTRONSE = ProductInfo(nickname="UltronSE", short_models=("a124", "a125", "a139", "a140"))
102+
ULTRONSPLUS = ProductInfo(nickname="UltronSPlus", short_models=("a68", "a69", "a70"))
103+
ULTRONSV = ProductInfo(nickname="UltronSV", short_models=("a96", "a97"))
104+
145105
# Verdelite Series
146-
"a146": RoborockProductNickname.VERDELITE,
147-
"a147": RoborockProductNickname.VERDELITE,
148-
# Topaz Series
149-
"a29": RoborockProductNickname.TOPAZS,
150-
"a30": RoborockProductNickname.TOPAZS,
151-
"a76": RoborockProductNickname.TOPAZS,
152-
"a46": RoborockProductNickname.TOPAZSPLUS,
153-
"a47": RoborockProductNickname.TOPAZSPLUS,
154-
"a66": RoborockProductNickname.TOPAZSPLUS,
155-
"a64": RoborockProductNickname.TOPAZSC,
156-
"a65": RoborockProductNickname.TOPAZSC,
157-
"a26": RoborockProductNickname.TOPAZSV,
158-
"a27": RoborockProductNickname.TOPAZSV,
159-
"a62": RoborockProductNickname.TOPAZSPOWER,
160-
# Tanos Series
161-
"a23": RoborockProductNickname.TANOSSPLUS,
162-
"a24": RoborockProductNickname.TANOSSPLUS,
163-
"a37": RoborockProductNickname.TANOSSLITE,
164-
"a38": RoborockProductNickname.TANOSSLITE,
165-
"a39": RoborockProductNickname.TANOSSC,
166-
"a40": RoborockProductNickname.TANOSSC,
167-
"a33": RoborockProductNickname.TANOSSE,
168-
"a34": RoborockProductNickname.TANOSSE,
169-
"a52": RoborockProductNickname.TANOSSMAX,
170-
"t6": RoborockProductNickname.TANOS,
171-
"s6": RoborockProductNickname.TANOS,
172-
"t7": RoborockProductNickname.TANOSE,
173-
"a11": RoborockProductNickname.TANOSE,
174-
"t7p": RoborockProductNickname.TANOSV,
175-
"a09": RoborockProductNickname.TANOSV,
176-
"a10": RoborockProductNickname.TANOSV,
177-
"a14": RoborockProductNickname.TANOSS,
178-
"a15": RoborockProductNickname.TANOSS,
179-
# Ruby Series
180-
"t4": RoborockProductNickname.RUBYPLUS,
181-
"s4": RoborockProductNickname.RUBYPLUS,
182-
"p5": RoborockProductNickname.RUBYSC,
183-
"a08": RoborockProductNickname.RUBYSC,
184-
"a19": RoborockProductNickname.RUBYSE,
185-
"p6": RoborockProductNickname.RUBYSLITE,
186-
"s5e": RoborockProductNickname.RUBYSLITE,
187-
"a05": RoborockProductNickname.RUBYSLITE,
188-
}
106+
VERDELITE = ProductInfo(nickname="Verdelite", short_models=("a146", "a147"))
107+
108+
# Vivian Series
109+
VIVIAN = ProductInfo(nickname="Vivian", short_models=("a134", "a135", "a155", "a156"))
110+
VIVIANC = ProductInfo(nickname="VivianC", short_models=("a158", "a159"))
111+
112+
113+
short_model_to_enum = {model: product for product in RoborockProductNickname for model in product.value.short_models}
189114

190115

191116
class RoborockStateCode(RoborockEnum):

0 commit comments

Comments
 (0)