Skip to content

Commit b8dfb2c

Browse files
authored
Use PEP 695 TypeVar syntax for eheimdigital (home-assistant#147154)
1 parent cf67a68 commit b8dfb2c

File tree

4 files changed

+46
-48
lines changed

4 files changed

+46
-48
lines changed

homeassistant/components/eheimdigital/number.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from collections.abc import Awaitable, Callable
44
from dataclasses import dataclass
5-
from typing import Generic, TypeVar, override
5+
from typing import Any, override
66

77
from eheimdigital.classic_vario import EheimDigitalClassicVario
88
from eheimdigital.device import EheimDigitalDevice
@@ -30,16 +30,16 @@
3030

3131
PARALLEL_UPDATES = 0
3232

33-
_DeviceT_co = TypeVar("_DeviceT_co", bound=EheimDigitalDevice, covariant=True)
34-
3533

3634
@dataclass(frozen=True, kw_only=True)
37-
class EheimDigitalNumberDescription(NumberEntityDescription, Generic[_DeviceT_co]):
35+
class EheimDigitalNumberDescription[_DeviceT: EheimDigitalDevice](
36+
NumberEntityDescription
37+
):
3838
"""Class describing EHEIM Digital sensor entities."""
3939

40-
value_fn: Callable[[_DeviceT_co], float | None]
41-
set_value_fn: Callable[[_DeviceT_co, float], Awaitable[None]]
42-
uom_fn: Callable[[_DeviceT_co], str] | None = None
40+
value_fn: Callable[[_DeviceT], float | None]
41+
set_value_fn: Callable[[_DeviceT, float], Awaitable[None]]
42+
uom_fn: Callable[[_DeviceT], str] | None = None
4343

4444

4545
CLASSICVARIO_DESCRIPTIONS: tuple[
@@ -136,7 +136,7 @@ def async_setup_device_entities(
136136
device_address: dict[str, EheimDigitalDevice],
137137
) -> None:
138138
"""Set up the number entities for one or multiple devices."""
139-
entities: list[EheimDigitalNumber[EheimDigitalDevice]] = []
139+
entities: list[EheimDigitalNumber[Any]] = []
140140
for device in device_address.values():
141141
if isinstance(device, EheimDigitalClassicVario):
142142
entities.extend(
@@ -163,18 +163,18 @@ def async_setup_device_entities(
163163
async_setup_device_entities(coordinator.hub.devices)
164164

165165

166-
class EheimDigitalNumber(
167-
EheimDigitalEntity[_DeviceT_co], NumberEntity, Generic[_DeviceT_co]
166+
class EheimDigitalNumber[_DeviceT: EheimDigitalDevice](
167+
EheimDigitalEntity[_DeviceT], NumberEntity
168168
):
169169
"""Represent a EHEIM Digital number entity."""
170170

171-
entity_description: EheimDigitalNumberDescription[_DeviceT_co]
171+
entity_description: EheimDigitalNumberDescription[_DeviceT]
172172

173173
def __init__(
174174
self,
175175
coordinator: EheimDigitalUpdateCoordinator,
176-
device: _DeviceT_co,
177-
description: EheimDigitalNumberDescription[_DeviceT_co],
176+
device: _DeviceT,
177+
description: EheimDigitalNumberDescription[_DeviceT],
178178
) -> None:
179179
"""Initialize an EHEIM Digital number entity."""
180180
super().__init__(coordinator, device)

homeassistant/components/eheimdigital/select.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from collections.abc import Awaitable, Callable
44
from dataclasses import dataclass
5-
from typing import Generic, TypeVar, override
5+
from typing import Any, override
66

77
from eheimdigital.classic_vario import EheimDigitalClassicVario
88
from eheimdigital.device import EheimDigitalDevice
@@ -17,15 +17,15 @@
1717

1818
PARALLEL_UPDATES = 0
1919

20-
_DeviceT_co = TypeVar("_DeviceT_co", bound=EheimDigitalDevice, covariant=True)
21-
2220

2321
@dataclass(frozen=True, kw_only=True)
24-
class EheimDigitalSelectDescription(SelectEntityDescription, Generic[_DeviceT_co]):
22+
class EheimDigitalSelectDescription[_DeviceT: EheimDigitalDevice](
23+
SelectEntityDescription
24+
):
2525
"""Class describing EHEIM Digital select entities."""
2626

27-
value_fn: Callable[[_DeviceT_co], str | None]
28-
set_value_fn: Callable[[_DeviceT_co, str], Awaitable[None]]
27+
value_fn: Callable[[_DeviceT], str | None]
28+
set_value_fn: Callable[[_DeviceT, str], Awaitable[None]]
2929

3030

3131
CLASSICVARIO_DESCRIPTIONS: tuple[
@@ -59,7 +59,7 @@ def async_setup_device_entities(
5959
device_address: dict[str, EheimDigitalDevice],
6060
) -> None:
6161
"""Set up the number entities for one or multiple devices."""
62-
entities: list[EheimDigitalSelect[EheimDigitalDevice]] = []
62+
entities: list[EheimDigitalSelect[Any]] = []
6363
for device in device_address.values():
6464
if isinstance(device, EheimDigitalClassicVario):
6565
entities.extend(
@@ -75,18 +75,18 @@ def async_setup_device_entities(
7575
async_setup_device_entities(coordinator.hub.devices)
7676

7777

78-
class EheimDigitalSelect(
79-
EheimDigitalEntity[_DeviceT_co], SelectEntity, Generic[_DeviceT_co]
78+
class EheimDigitalSelect[_DeviceT: EheimDigitalDevice](
79+
EheimDigitalEntity[_DeviceT], SelectEntity
8080
):
8181
"""Represent an EHEIM Digital select entity."""
8282

83-
entity_description: EheimDigitalSelectDescription[_DeviceT_co]
83+
entity_description: EheimDigitalSelectDescription[_DeviceT]
8484

8585
def __init__(
8686
self,
8787
coordinator: EheimDigitalUpdateCoordinator,
88-
device: _DeviceT_co,
89-
description: EheimDigitalSelectDescription[_DeviceT_co],
88+
device: _DeviceT,
89+
description: EheimDigitalSelectDescription[_DeviceT],
9090
) -> None:
9191
"""Initialize an EHEIM Digital select entity."""
9292
super().__init__(coordinator, device)

homeassistant/components/eheimdigital/sensor.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from collections.abc import Callable
44
from dataclasses import dataclass
5-
from typing import Generic, TypeVar, override
5+
from typing import Any, override
66

77
from eheimdigital.classic_vario import EheimDigitalClassicVario
88
from eheimdigital.device import EheimDigitalDevice
@@ -20,14 +20,14 @@
2020
# Coordinator is used to centralize the data updates
2121
PARALLEL_UPDATES = 0
2222

23-
_DeviceT_co = TypeVar("_DeviceT_co", bound=EheimDigitalDevice, covariant=True)
24-
2523

2624
@dataclass(frozen=True, kw_only=True)
27-
class EheimDigitalSensorDescription(SensorEntityDescription, Generic[_DeviceT_co]):
25+
class EheimDigitalSensorDescription[_DeviceT: EheimDigitalDevice](
26+
SensorEntityDescription
27+
):
2828
"""Class describing EHEIM Digital sensor entities."""
2929

30-
value_fn: Callable[[_DeviceT_co], float | str | None]
30+
value_fn: Callable[[_DeviceT], float | str | None]
3131

3232

3333
CLASSICVARIO_DESCRIPTIONS: tuple[
@@ -75,7 +75,7 @@ def async_setup_device_entities(
7575
device_address: dict[str, EheimDigitalDevice],
7676
) -> None:
7777
"""Set up the light entities for one or multiple devices."""
78-
entities: list[EheimDigitalSensor[EheimDigitalDevice]] = []
78+
entities: list[EheimDigitalSensor[Any]] = []
7979
for device in device_address.values():
8080
if isinstance(device, EheimDigitalClassicVario):
8181
entities += [
@@ -91,18 +91,18 @@ def async_setup_device_entities(
9191
async_setup_device_entities(coordinator.hub.devices)
9292

9393

94-
class EheimDigitalSensor(
95-
EheimDigitalEntity[_DeviceT_co], SensorEntity, Generic[_DeviceT_co]
94+
class EheimDigitalSensor[_DeviceT: EheimDigitalDevice](
95+
EheimDigitalEntity[_DeviceT], SensorEntity
9696
):
9797
"""Represent a EHEIM Digital sensor entity."""
9898

99-
entity_description: EheimDigitalSensorDescription[_DeviceT_co]
99+
entity_description: EheimDigitalSensorDescription[_DeviceT]
100100

101101
def __init__(
102102
self,
103103
coordinator: EheimDigitalUpdateCoordinator,
104-
device: _DeviceT_co,
105-
description: EheimDigitalSensorDescription[_DeviceT_co],
104+
device: _DeviceT,
105+
description: EheimDigitalSensorDescription[_DeviceT],
106106
) -> None:
107107
"""Initialize an EHEIM Digital number entity."""
108108
super().__init__(coordinator, device)

homeassistant/components/eheimdigital/time.py

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from collections.abc import Awaitable, Callable
44
from dataclasses import dataclass
55
from datetime import time
6-
from typing import Generic, TypeVar, final, override
6+
from typing import Any, final, override
77

88
from eheimdigital.classic_vario import EheimDigitalClassicVario
99
from eheimdigital.device import EheimDigitalDevice
@@ -19,15 +19,13 @@
1919

2020
PARALLEL_UPDATES = 0
2121

22-
_DeviceT_co = TypeVar("_DeviceT_co", bound=EheimDigitalDevice, covariant=True)
23-
2422

2523
@dataclass(frozen=True, kw_only=True)
26-
class EheimDigitalTimeDescription(TimeEntityDescription, Generic[_DeviceT_co]):
24+
class EheimDigitalTimeDescription[_DeviceT: EheimDigitalDevice](TimeEntityDescription):
2725
"""Class describing EHEIM Digital time entities."""
2826

29-
value_fn: Callable[[_DeviceT_co], time | None]
30-
set_value_fn: Callable[[_DeviceT_co, time], Awaitable[None]]
27+
value_fn: Callable[[_DeviceT], time | None]
28+
set_value_fn: Callable[[_DeviceT, time], Awaitable[None]]
3129

3230

3331
CLASSICVARIO_DESCRIPTIONS: tuple[
@@ -79,7 +77,7 @@ def async_setup_device_entities(
7977
device_address: dict[str, EheimDigitalDevice],
8078
) -> None:
8179
"""Set up the time entities for one or multiple devices."""
82-
entities: list[EheimDigitalTime[EheimDigitalDevice]] = []
80+
entities: list[EheimDigitalTime[Any]] = []
8381
for device in device_address.values():
8482
if isinstance(device, EheimDigitalClassicVario):
8583
entities.extend(
@@ -103,18 +101,18 @@ def async_setup_device_entities(
103101

104102

105103
@final
106-
class EheimDigitalTime(
107-
EheimDigitalEntity[_DeviceT_co], TimeEntity, Generic[_DeviceT_co]
104+
class EheimDigitalTime[_DeviceT: EheimDigitalDevice](
105+
EheimDigitalEntity[_DeviceT], TimeEntity
108106
):
109107
"""Represent an EHEIM Digital time entity."""
110108

111-
entity_description: EheimDigitalTimeDescription[_DeviceT_co]
109+
entity_description: EheimDigitalTimeDescription[_DeviceT]
112110

113111
def __init__(
114112
self,
115113
coordinator: EheimDigitalUpdateCoordinator,
116-
device: _DeviceT_co,
117-
description: EheimDigitalTimeDescription[_DeviceT_co],
114+
device: _DeviceT,
115+
description: EheimDigitalTimeDescription[_DeviceT],
118116
) -> None:
119117
"""Initialize an EHEIM Digital time entity."""
120118
super().__init__(coordinator, device)

0 commit comments

Comments
 (0)