Skip to content

Commit 6f23c02

Browse files
authored
Bump pytradfri to 14.0.0 (home-assistant#182250)
1 parent ec2a00d commit 6f23c02

15 files changed

Lines changed: 160 additions & 116 deletions

File tree

‎homeassistant/components/tradfri/__init__.py‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from datetime import datetime, timedelta
44

55
from pytradfri import Gateway, RequestError
6-
from pytradfri.api.aiocoap_api import APIFactory
6+
from pytradfri.api.aiocoap_api import APIFactory, APIRequestProtocol
77
from pytradfri.command import Command
88
from pytradfri.device import Device
99

@@ -56,12 +56,12 @@ async def on_hass_stop(event: Event) -> None:
5656
hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, on_hass_stop)
5757
)
5858

59-
api = factory.request
59+
api: APIRequestProtocol = factory.request
6060
gateway = Gateway()
6161

6262
try:
6363
gateway_info = await api(gateway.get_gateway_info(), timeout=TIMEOUT_API)
64-
devices_commands: Command = await api(
64+
devices_commands: list[Command[Device]] = await api(
6565
gateway.get_devices(), timeout=TIMEOUT_API
6666
)
6767
devices: list[Device] = await api(devices_commands, timeout=TIMEOUT_API)

‎homeassistant/components/tradfri/coordinator.py‎

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
"""Tradfri DataUpdateCoordinator."""
22

3-
from collections.abc import Callable
43
from dataclasses import dataclass, field
54
from datetime import timedelta
6-
from typing import Any, override
5+
from typing import cast, override
76

87
from pytradfri import Gateway
9-
from pytradfri.api.aiocoap_api import APIFactory
10-
from pytradfri.command import Command
8+
from pytradfri.api.aiocoap_api import APIFactory, APIRequestProtocol
119
from pytradfri.device import Device
1210
from pytradfri.error import RequestError
11+
from pytradfri.resource import ApiResource
1312

1413
from homeassistant.config_entries import ConfigEntry
1514
from homeassistant.core import HomeAssistant, callback
@@ -28,7 +27,7 @@ class TradfriData:
2827

2928
factory: APIFactory
3029
gateway: Gateway
31-
api: Callable[[Command | list[Command]], Any]
30+
api: APIRequestProtocol
3231
coordinator_list: list[TradfriDeviceDataUpdateCoordinator] = field(
3332
default_factory=list
3433
)
@@ -43,7 +42,7 @@ def __init__(
4342
self,
4443
hass: HomeAssistant,
4544
config_entry: TradfriConfigEntry,
46-
api: Callable[[Command | list[Command]], Any],
45+
api: APIRequestProtocol,
4746
device: Device,
4847
) -> None:
4948
"""Initialize device coordinator."""
@@ -67,9 +66,9 @@ async def set_hub_available(self, available: bool) -> None:
6766
await self.async_request_refresh()
6867

6968
@callback
70-
def _observe_update(self, device: Device) -> None:
69+
def _observe_update(self, device: ApiResource) -> None:
7170
"""Update the coordinator for a device when a change is detected."""
72-
self.async_set_updated_data(data=device)
71+
self.async_set_updated_data(data=cast(Device, device))
7372

7473
@callback
7574
def _exception_callback(self, exc: Exception) -> None:

‎homeassistant/components/tradfri/cover.py‎

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
"""Support for IKEA Tradfri covers."""
22

3-
from collections.abc import Callable
4-
from typing import Any, cast, override
3+
from typing import TYPE_CHECKING, Any, override
54

6-
from pytradfri.command import Command
5+
from pytradfri.api.aiocoap_api import APIRequestProtocol
76

87
from homeassistant.components.cover import ATTR_POSITION, CoverEntity
98
from homeassistant.core import HomeAssistant
@@ -42,7 +41,7 @@ class TradfriCover(TradfriBaseEntity, CoverEntity):
4241
def __init__(
4342
self,
4443
device_coordinator: TradfriDeviceDataUpdateCoordinator,
45-
api: Callable[[Command | list[Command]], Any],
44+
api: APIRequestProtocol,
4645
gateway_id: str,
4746
) -> None:
4847
"""Initialize a switch."""
@@ -52,13 +51,15 @@ def __init__(
5251
gateway_id=gateway_id,
5352
)
5453

54+
if TYPE_CHECKING:
55+
assert self._device.blind_control is not None
5556
self._device_control = self._device.blind_control
5657
self._device_data = self._device_control.blinds[0]
5758

5859
@override
5960
def _refresh(self) -> None:
6061
"""Refresh the device."""
61-
self._device_data = self.coordinator.data.blind_control.blinds[0]
62+
self._device_data = self._device_control.blinds[0]
6263

6364
@property
6465
@override
@@ -75,7 +76,7 @@ def current_cover_position(self) -> int | None:
7576
"""
7677
if not self._device_data:
7778
return None
78-
return 100 - cast(int, self._device_data.current_cover_position)
79+
return 100 - self._device_data.current_cover_position
7980

8081
@override
8182
async def async_set_cover_position(self, **kwargs: Any) -> None:

‎homeassistant/components/tradfri/entity.py‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
from abc import abstractmethod
44
from collections.abc import Callable, Coroutine
55
from functools import wraps
6-
from typing import Any, cast, override
6+
from typing import Any, override
77

8+
from pytradfri.api.aiocoap_api import APIRequestProtocol
89
from pytradfri.command import Command
9-
from pytradfri.const import ATTR_DEVICE_FIRMWARE_VERSION
1010
from pytradfri.device import Device
1111
from pytradfri.error import RequestError
1212

@@ -20,7 +20,7 @@
2020

2121

2222
def handle_error(
23-
func: Callable[[Command | list[Command]], Any],
23+
func: APIRequestProtocol,
2424
) -> Callable[[Command | list[Command]], Coroutine[Any, Any, None]]:
2525
"""Handle tradfri api call error."""
2626

@@ -44,7 +44,7 @@ def __init__(
4444
self,
4545
device_coordinator: TradfriDeviceDataUpdateCoordinator,
4646
gateway_id: str,
47-
api: Callable[[Command | list[Command]], Any],
47+
api: APIRequestProtocol,
4848
) -> None:
4949
"""Initialize a device."""
5050
super().__init__(device_coordinator)
@@ -62,7 +62,7 @@ def __init__(
6262
manufacturer=info.manufacturer,
6363
model=info.model_number,
6464
name=self._device.name,
65-
sw_version=info.raw.get(ATTR_DEVICE_FIRMWARE_VERSION),
65+
sw_version=info.firmware_version,
6666
via_device_id=dr.async_get_device_id_by_identifier(
6767
device_coordinator.hass,
6868
(DOMAIN, gateway_id),
@@ -90,4 +90,4 @@ def _handle_coordinator_update(self) -> None:
9090
@override
9191
def available(self) -> bool:
9292
"""Return if entity is available."""
93-
return cast(bool, self._device.reachable) and super().available
93+
return self._device.reachable and super().available

‎homeassistant/components/tradfri/fan.py‎

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
"""Represent an air purifier."""
22

3-
from collections.abc import Callable
4-
from typing import Any, cast, override
3+
from typing import TYPE_CHECKING, Any, override
54

6-
from pytradfri.command import Command
5+
from pytradfri.api.aiocoap_api import APIRequestProtocol
76

87
from homeassistant.components.fan import FanEntity, FanEntityFeature
98
from homeassistant.core import HomeAssistant
@@ -69,7 +68,7 @@ class TradfriAirPurifierFan(TradfriBaseEntity, FanEntity):
6968
def __init__(
7069
self,
7170
device_coordinator: TradfriDeviceDataUpdateCoordinator,
72-
api: Callable[[Command | list[Command]], Any],
71+
api: APIRequestProtocol,
7372
gateway_id: str,
7473
) -> None:
7574
"""Initialize a switch."""
@@ -79,21 +78,23 @@ def __init__(
7978
gateway_id=gateway_id,
8079
)
8180

81+
if TYPE_CHECKING:
82+
assert self._device.air_purifier_control is not None
8283
self._device_control = self._device.air_purifier_control
8384
self._device_data = self._device_control.air_purifiers[0]
8485

8586
@override
8687
def _refresh(self) -> None:
8788
"""Refresh the device."""
88-
self._device_data = self.coordinator.data.air_purifier_control.air_purifiers[0]
89+
self._device_data = self._device_control.air_purifiers[0]
8990

9091
@property
9192
@override
9293
def is_on(self) -> bool:
9394
"""Return true if switch is on."""
9495
if not self._device_data:
9596
return False
96-
return cast(bool, self._device_data.state)
97+
return self._device_data.state
9798

9899
@property
99100
@override

0 commit comments

Comments
 (0)