Skip to content

Commit 284d69b

Browse files
committed
Typing corrections
1 parent 286058f commit 284d69b

File tree

6 files changed

+44
-14
lines changed

6 files changed

+44
-14
lines changed

plugwise/constants.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -500,9 +500,9 @@ class ThermoLoc(TypedDict, total=False):
500500
"""Thermo Location class."""
501501

502502
name: str
503-
primary: set[str]
503+
primary: list[str]
504504
primary_prio: int
505-
secondary: set[str]
505+
secondary: list[str]
506506

507507

508508
class ActuatorData(TypedDict, total=False):
@@ -516,12 +516,19 @@ class ActuatorData(TypedDict, total=False):
516516
upper_bound: float
517517

518518

519+
class MemberData:
520+
"""ZoneData Member data class."""
521+
522+
primary: list[str]
523+
secondary: list[str]
524+
525+
519526
class ZoneData(TypedDict, total=False):
520527
"""The Climate Data class, covering the collected and ordered output-data per location."""
521528

522529
dev_class: str
523530
name: str
524-
members: dict[str, set[str]]
531+
members: dict[MemberData]
525532
climate_mode: str
526533
# Extra for Adam Master Thermostats
527534
control_state: str | bool
@@ -572,13 +579,26 @@ class DeviceData(TypedDict, total=False):
572579
select_gateway_mode: str
573580
select_regulation_mode: str
574581

582+
# Single thermostat (Anna)
583+
# Presets:
584+
active_preset: str | None
585+
preset_modes: list[str] | None
586+
# Schedules:
587+
available_schedules: list[str]
588+
select_schedule: str
589+
590+
climate_mode: str
591+
# Extra for Adam Master Thermostats
592+
control_state: str | bool
593+
575594
# Dict-types
576595
binary_sensors: SmileBinarySensors
577596
max_dhw_temperature: ActuatorData
578597
maximum_boiler_temperature: ActuatorData
579598
sensors: SmileSensors
580599
switches: SmileSwitches
581600
temperature_offset: ActuatorData
601+
thermostat: ActuatorData
582602

583603

584604
@dataclass

plugwise/data.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
OFF,
1616
ActuatorData,
1717
DeviceData,
18+
ZoneData,
1819
)
1920
from plugwise.helper import SmileHelper
2021
from plugwise.util import remove_empty_platform_dicts
@@ -151,7 +152,7 @@ def _update_for_cooling(self, device: DeviceData) -> None:
151152
self._count += 2 # add 4, remove 2
152153

153154

154-
def _get_location_data(self, loc_id: str) -> DeviceData:
155+
def _get_location_data(self, loc_id: str) -> ZoneData:
155156
"""Helper-function for _all_device_data() and async_update().
156157
157158
Provide device-data, based on Location ID (= loc_id).
@@ -237,14 +238,19 @@ def _device_data_adam(self, device: DeviceData, data: DeviceData) -> None:
237238
self._count += 1
238239

239240

240-
def _device_data_climate(self, location_id: str, device: DeviceData, data: DeviceData) -> None:
241+
def _device_data_climate(
242+
self,
243+
location_id: str,
244+
device: DeviceData | ZoneData,
245+
data: DeviceData | ZoneData
246+
) -> None:
241247
"""Helper-function for _get_device_data().
242248
243249
Determine climate-control device data.
244250
"""
245251
loc_id = location_id
246-
if (dev_loc := device.get("location")) is not None:
247-
loc_id = dev_loc
252+
if device.get("location") is not None:
253+
loc_id = device["location"]
248254

249255
# Presets
250256
data["preset_modes"] = None
@@ -285,7 +291,7 @@ def check_reg_mode(self, mode: str) -> bool:
285291
)
286292

287293
def _get_schedule_states_with_off(
288-
self, location: str, schedules: list[str], selected: str, data: DeviceData
294+
self, location: str, schedules: list[str], selected: str, data: DeviceData | ZoneData
289295
) -> None:
290296
"""Collect schedules with states for each thermostat.
291297

plugwise/helper.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ def __init__(self) -> None:
262262
self.smile_type: str
263263
self.smile_zigbee_mac_address: str | None
264264
self.therms_with_offset_func: list[str] = []
265-
self.zone_data: ZoneData = {}
265+
self.zone_data: dict[str, ZoneData] = {}
266266
SmileCommon.__init__(self)
267267

268268
def _all_appliances(self) -> None:

plugwise/legacy/helper.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ def __init__(self) -> None:
9090
self.smile_name: str
9191
self.smile_type: str
9292
self.smile_zigbee_mac_address: str | None
93-
self.zone_data: ZoneData = {}
93+
self.zone_data: dict[str, ZoneData] = {}
9494
SmileCommon.__init__(self)
9595

9696
def _all_appliances(self) -> None:
@@ -336,7 +336,7 @@ def _power_data_from_modules(self) -> DeviceData:
336336
def _appliance_measurements(
337337
self,
338338
appliance: etree,
339-
data: DeviceData,
339+
data: DeviceData | ZoneData,
340340
measurements: dict[str, DATA | UOM],
341341
) -> None:
342342
"""Helper-function for _get_measurement_data() - collect appliance measurement data."""
@@ -368,7 +368,10 @@ def _appliance_measurements(
368368
self._count += len(data) - 3
369369

370370
def _get_actuator_functionalities(
371-
self, xml: etree, device: DeviceData, data: DeviceData
371+
self,
372+
xml: etree,
373+
device: DeviceData | ZoneData,
374+
data: DeviceData | ZoneData
372375
) -> None:
373376
"""Helper-function for _get_measurement_data()."""
374377
for item in ACTIVE_ACTUATORS:

plugwise/smile.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ async def async_update(self) -> PlugwiseData:
127127
"""Perform an incremental update for updating the various device states."""
128128
self.gw_data: GatewayData = {}
129129
self.gw_devices: dict[str, DeviceData] = {}
130-
self.zone_data: ZoneData = {}
130+
self.zone_data: dict[str, ZoneData] = {}
131131
try:
132132
await self.full_update_device()
133133
self.get_all_devices()

plugwise/util.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
SensorType,
2828
SpecialType,
2929
SwitchType,
30+
ZoneData,
3031
)
3132

3233
from defusedxml import ElementTree as etree
@@ -122,7 +123,7 @@ def common_match_cases(
122123
measurement: str,
123124
attrs: DATA | UOM,
124125
location: etree,
125-
data: DeviceData,
126+
data: DeviceData | ZoneData,
126127
) -> None:
127128
"""Helper-function for common match-case execution."""
128129
value = location.text in ("on", "true")

0 commit comments

Comments
 (0)