Skip to content

Commit 6d62edd

Browse files
committed
Use match-case construct in get_state()
1 parent f03c30b commit 6d62edd

File tree

6 files changed

+85
-67
lines changed

6 files changed

+85
-67
lines changed

plugwise_usb/nodes/circle.py

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1143,34 +1143,35 @@ async def get_state(self, features: tuple[NodeFeature]) -> dict[NodeFeature, Any
11431143
f"Update of feature '{feature}' is not supported for {self.name}"
11441144
)
11451145

1146-
if feature == NodeFeature.ENERGY:
1147-
states[feature] = await self.energy_update()
1148-
_LOGGER.debug(
1149-
"async_get_state %s - energy: %s",
1150-
self._mac_in_str,
1151-
states[feature],
1152-
)
1153-
elif feature == NodeFeature.RELAY:
1154-
states[feature] = self._relay_state
1155-
_LOGGER.debug(
1156-
"async_get_state %s - relay: %s",
1157-
self._mac_in_str,
1158-
states[feature],
1159-
)
1160-
elif feature == NodeFeature.RELAY_LOCK:
1161-
states[feature] = self._relay_lock
1162-
elif feature == NodeFeature.RELAY_INIT:
1163-
states[feature] = self._relay_config
1164-
elif feature == NodeFeature.POWER:
1165-
states[feature] = await self.power_update()
1166-
_LOGGER.debug(
1167-
"async_get_state %s - power: %s",
1168-
self._mac_in_str,
1169-
states[feature],
1170-
)
1171-
else:
1172-
state_result = await super().get_state((feature,))
1173-
states[feature] = state_result[feature]
1146+
match feature:
1147+
case NodeFeature.ENERGY:
1148+
states[feature] = await self.energy_update()
1149+
_LOGGER.debug(
1150+
"async_get_state %s - energy: %s",
1151+
self._mac_in_str,
1152+
states[feature],
1153+
)
1154+
case NodeFeature.RELAY:
1155+
states[feature] = self._relay_state
1156+
_LOGGER.debug(
1157+
"async_get_state %s - relay: %s",
1158+
self._mac_in_str,
1159+
states[feature],
1160+
)
1161+
case NodeFeature.RELAY_LOCK:
1162+
states[feature] = self._relay_lock
1163+
case NodeFeature.RELAY_INIT:
1164+
states[feature] = self._relay_config
1165+
case NodeFeature.POWER:
1166+
states[feature] = await self.power_update()
1167+
_LOGGER.debug(
1168+
"async_get_state %s - power: %s",
1169+
self._mac_in_str,
1170+
states[feature],
1171+
)
1172+
case _:
1173+
state_result = await super().get_state((feature,))
1174+
states[feature] = state_result[feature]
11741175

11751176
if NodeFeature.AVAILABLE not in states:
11761177
states[NodeFeature.AVAILABLE] = self.available_state

plugwise_usb/nodes/node.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -613,17 +613,20 @@ async def get_state(self, features: tuple[NodeFeature]) -> dict[NodeFeature, Any
613613
f"Update of feature '{feature.name}' is "
614614
+ f"not supported for {self.mac}"
615615
)
616-
if feature == NodeFeature.INFO:
617-
states[NodeFeature.INFO] = await self.node_info_update()
618-
elif feature == NodeFeature.AVAILABLE:
619-
states[NodeFeature.AVAILABLE] = self.available_state
620-
elif feature == NodeFeature.PING:
621-
states[NodeFeature.PING] = await self.ping_update()
622-
else:
623-
raise NodeError(
624-
f"Update of feature '{feature.name}' is "
625-
+ f"not supported for {self.mac}"
626-
)
616+
617+
match feature:
618+
case NodeFeature.INFO:
619+
states[NodeFeature.INFO] = await self.node_info_update()
620+
case NodeFeature.AVAILABLE:
621+
states[NodeFeature.AVAILABLE] = self.available_state
622+
case NodeFeature.PING:
623+
states[NodeFeature.PING] = await self.ping_update()
624+
case _:
625+
raise NodeError(
626+
f"Update of feature '{feature.name}' is "
627+
+ f"not supported for {self.mac}"
628+
)
629+
627630
return states
628631

629632
async def unload(self) -> None:

plugwise_usb/nodes/scan.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -566,13 +566,16 @@ async def get_state(self, features: tuple[NodeFeature]) -> dict[NodeFeature, Any
566566
f"Update of feature '{feature.name}' is "
567567
+ f"not supported for {self.mac}"
568568
)
569-
if feature == NodeFeature.MOTION:
570-
states[NodeFeature.MOTION] = self._motion_state
571-
elif feature == NodeFeature.MOTION_CONFIG:
572-
states[NodeFeature.MOTION_CONFIG] = self._motion_config
573-
else:
574-
state_result = await super().get_state((feature,))
575-
states[feature] = state_result[feature]
569+
570+
match feature:
571+
case NodeFeature.MOTION:
572+
states[NodeFeature.MOTION] = self._motion_state
573+
case NodeFeature.MOTION_CONFIG:
574+
states[NodeFeature.MOTION_CONFIG] = self._motion_config
575+
case _:
576+
state_result = await super().get_state((feature,))
577+
states[feature] = state_result[feature]
578+
576579
if NodeFeature.AVAILABLE not in states:
577580
states[NodeFeature.AVAILABLE] = self.available_state
578581
return states

plugwise_usb/nodes/sed.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -756,11 +756,14 @@ async def get_state(self, features: tuple[NodeFeature]) -> dict[NodeFeature, Any
756756
f"Update of feature '{feature.name}' is "
757757
+ f"not supported for {self.mac}"
758758
)
759-
if feature == NodeFeature.INFO:
760-
states[NodeFeature.INFO] = await self.node_info_update()
761-
elif feature == NodeFeature.BATTERY:
762-
states[NodeFeature.BATTERY] = self._battery_config
763-
else:
764-
state_result = await super().get_state((feature,))
765-
states[feature] = state_result[feature]
759+
760+
match feature:
761+
case NodeFeature.INFO:
762+
states[NodeFeature.INFO] = await self.node_info_update()
763+
case NodeFeature.BATTERY:
764+
states[NodeFeature.BATTERY] = self._battery_config
765+
case _:
766+
state_result = await super().get_state((feature,))
767+
states[feature] = state_result[feature]
768+
766769
return states

plugwise_usb/nodes/sense.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -134,15 +134,19 @@ async def get_state(self, features: tuple[NodeFeature]) -> dict[NodeFeature, Any
134134
raise NodeError(
135135
f"Update of feature '{feature.name}' is not supported for {self.mac}"
136136
)
137-
if feature == NodeFeature.TEMPERATURE:
138-
states[NodeFeature.TEMPERATURE] = self._temperature
139-
elif feature == NodeFeature.HUMIDITY:
140-
states[NodeFeature.HUMIDITY] = self._humidity
141-
elif feature == NodeFeature.PING:
142-
states[NodeFeature.PING] = await self.ping_update()
143-
else:
144-
state_result = await super().get_state((feature,))
145-
states[feature] = state_result[feature]
137+
138+
match feature:
139+
case NodeFeature.TEMPERATURE:
140+
states[NodeFeature.TEMPERATURE] = self._temperature
141+
case NodeFeature.HUMIDITY:
142+
states[NodeFeature.HUMIDITY] = self._humidity
143+
case NodeFeature.PING:
144+
states[NodeFeature.PING] = await self.ping_update()
145+
case _:
146+
state_result = await super().get_state((feature,))
147+
states[feature] = state_result[feature]
148+
146149
if NodeFeature.AVAILABLE not in states:
147150
states[NodeFeature.AVAILABLE] = self.available_state
151+
148152
return states

plugwise_usb/nodes/switch.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -147,11 +147,15 @@ async def get_state(self, features: tuple[NodeFeature]) -> dict[NodeFeature, Any
147147
f"Update of feature '{feature.name}' is "
148148
+ f"not supported for {self.mac}"
149149
)
150-
if feature == NodeFeature.SWITCH:
151-
states[NodeFeature.SWITCH] = self._switch_state
152-
else:
153-
state_result = await super().get_state((feature,))
154-
states[feature] = state_result[feature]
150+
151+
match feature:
152+
case NodeFeature.SWITCH:
153+
states[NodeFeature.SWITCH] = self._switch_state
154+
case _:
155+
state_result = await super().get_state((feature,))
156+
states[feature] = state_result[feature]
157+
155158
if NodeFeature.AVAILABLE not in states:
156159
states[NodeFeature.AVAILABLE] = self.available_state
160+
157161
return states

0 commit comments

Comments
 (0)