Skip to content

Commit ecda868

Browse files
authored
Improve typing by proving a bound ConfigEntry called MySkodaConfigEntry (#670)
1 parent 9993be9 commit ecda868

14 files changed

+34
-41
lines changed

custom_components/myskoda/__init__.py

+6-7
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
from aiohttp import ClientResponseError, InvalidUrlClientError
88

9-
from homeassistant.config_entries import ConfigEntry
109
from homeassistant.const import Platform
1110
from homeassistant.core import HomeAssistant
1211
from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady
@@ -25,7 +24,7 @@
2524

2625

2726
from .const import COORDINATORS, DOMAIN, VINLIST
28-
from .coordinator import MySkodaDataUpdateCoordinator
27+
from .coordinator import MySkodaConfigEntry, MySkodaDataUpdateCoordinator
2928
from .error_handlers import handle_aiohttp_error
3029
from .issues import (
3130
async_create_tnc_issue,
@@ -49,7 +48,7 @@
4948

5049

5150
def myskoda_instantiate(
52-
hass: HomeAssistant, entry: ConfigEntry, mqtt_enabled: bool = True
51+
hass: HomeAssistant, entry: MySkodaConfigEntry, mqtt_enabled: bool = True
5352
) -> MySkoda:
5453
"""Generic connector to MySkoda REST API."""
5554

@@ -63,7 +62,7 @@ def myskoda_instantiate(
6362
return MySkoda(session, get_default_context(), mqtt_enabled=mqtt_enabled)
6463

6564

66-
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
65+
async def async_setup_entry(hass: HomeAssistant, entry: MySkodaConfigEntry) -> bool:
6766
"""Set up MySkoda integration from a config entry."""
6867

6968
myskoda = myskoda_instantiate(hass, entry, mqtt_enabled=False)
@@ -125,7 +124,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
125124
return True
126125

127126

128-
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
127+
async def async_unload_entry(hass: HomeAssistant, entry: MySkodaConfigEntry) -> bool:
129128
"""Unload a config entry."""
130129
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
131130
if unload_ok:
@@ -134,13 +133,13 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
134133
return unload_ok
135134

136135

137-
async def _async_update_listener(hass: HomeAssistant, entry: ConfigEntry):
136+
async def _async_update_listener(hass: HomeAssistant, entry: MySkodaConfigEntry):
138137
"""Handle options update."""
139138
# Do a lazy reload of integration when configuration changed
140139
await hass.config_entries.async_reload(entry.entry_id)
141140

142141

143-
async def async_migrate_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
142+
async def async_migrate_entry(hass: HomeAssistant, entry: MySkodaConfigEntry) -> bool:
144143
"""Handle MySkoda config-entry schema migrations."""
145144

146145
_LOGGER.debug(

custom_components/myskoda/binary_sensor.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
BinarySensorEntity,
66
BinarySensorEntityDescription,
77
)
8-
from homeassistant.config_entries import ConfigEntry
98
from homeassistant.core import HomeAssistant
109
from homeassistant.helpers.entity_platform import AddEntitiesCallback
1110
from homeassistant.helpers.typing import DiscoveryInfoType # pyright: ignore [reportAttributeAccessIssue]
@@ -22,13 +21,14 @@
2221
from myskoda.models.status import DoorWindowState, Status
2322

2423
from .const import COORDINATORS, DOMAIN
24+
from .coordinator import MySkodaConfigEntry
2525
from .entity import MySkodaEntity
2626
from .utils import add_supported_entities
2727

2828

2929
async def async_setup_entry(
3030
hass: HomeAssistant,
31-
config: ConfigEntry,
31+
config: MySkodaConfigEntry,
3232
async_add_entities: AddEntitiesCallback,
3333
discovery_info: DiscoveryInfoType | None = None,
3434
) -> None:

custom_components/myskoda/button.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
from homeassistant.components.persistent_notification import (
1212
async_create as async_create_persistent_notification,
1313
)
14-
from homeassistant.config_entries import ConfigEntry
1514
from homeassistant.const import EntityCategory
1615
from homeassistant.core import HomeAssistant
1716
from homeassistant.helpers.entity_platform import AddEntitiesCallback
@@ -23,7 +22,7 @@
2322
from myskoda.mqtt import OperationFailedError
2423

2524
from .const import API_COOLDOWN_IN_SECONDS, CONF_READONLY, COORDINATORS, DOMAIN
26-
from .coordinator import MySkodaDataUpdateCoordinator
25+
from .coordinator import MySkodaConfigEntry, MySkodaDataUpdateCoordinator
2726
from .entity import MySkodaEntity
2827
from .utils import add_supported_entities
2928

@@ -32,7 +31,7 @@
3231

3332
async def async_setup_entry(
3433
hass: HomeAssistant,
35-
config: ConfigEntry,
34+
config: MySkodaConfigEntry,
3635
async_add_entities: AddEntitiesCallback,
3736
discovery_info: DiscoveryInfoType | None = None,
3837
) -> None:

custom_components/myskoda/climate.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
HVACAction,
1111
HVACMode,
1212
)
13-
from homeassistant.config_entries import ConfigEntry
1413
from homeassistant.const import ATTR_TEMPERATURE, UnitOfTemperature
1514
from homeassistant.core import HomeAssistant
1615
from homeassistant.helpers.entity_platform import AddEntitiesCallback
@@ -39,7 +38,7 @@
3938
COORDINATORS,
4039
DOMAIN,
4140
)
42-
from .coordinator import MySkodaDataUpdateCoordinator
41+
from .coordinator import MySkodaConfigEntry, MySkodaDataUpdateCoordinator
4342
from .entity import MySkodaEntity
4443
from .utils import add_supported_entities
4544

@@ -48,7 +47,7 @@
4847

4948
async def async_setup_entry(
5049
hass: HomeAssistant,
51-
entry: ConfigEntry,
50+
entry: MySkodaConfigEntry,
5251
async_add_entities: AddEntitiesCallback,
5352
discovery_info: DiscoveryInfoType | None = None,
5453
) -> None:

custom_components/myskoda/config_flow.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
from aiohttp.client_exceptions import ClientResponseError
1111

1212
from homeassistant.config_entries import (
13-
ConfigEntry,
1413
ConfigFlow as BaseConfigFlow,
1514
ConfigFlowResult,
1615
OptionsFlow,
@@ -46,6 +45,7 @@
4645
CONF_USERNAME,
4746
CONF_READONLY,
4847
)
48+
from .coordinator import MySkodaConfigEntry
4949

5050
_LOGGER = logging.getLogger(__name__)
5151

@@ -196,7 +196,7 @@ async def async_step_reauth_confirm(
196196
@staticmethod
197197
@callback
198198
def async_get_options_flow(
199-
config_entry: ConfigEntry,
199+
config_entry: MySkodaConfigEntry,
200200
) -> OptionsFlow:
201201
"""Create the options flow."""
202202
return SchemaOptionsFlowHandler(config_entry, OPTIONS_FLOW)

custom_components/myskoda/coordinator.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
_LOGGER = logging.getLogger(__name__)
4848

4949
type RefreshFunction = Callable[[], Coroutine[None, None, None]]
50+
type MySkodaConfigEntry = ConfigEntry[MySkodaDataUpdateCoordinator]
5051

5152

5253
class MySkodaDebouncer(Debouncer):
@@ -99,7 +100,7 @@ class MySkodaDataUpdateCoordinator(DataUpdateCoordinator[State]):
99100
data: State
100101

101102
def __init__(
102-
self, hass: HomeAssistant, entry: ConfigEntry, myskoda: MySkoda, vin: str
103+
self, hass: HomeAssistant, entry: MySkodaConfigEntry, myskoda: MySkoda, vin: str
103104
) -> None:
104105
"""Create a new coordinator."""
105106

@@ -119,7 +120,7 @@ def __init__(
119120
self.myskoda: MySkoda = myskoda
120121
self.operations: OrderedDict = OrderedDict()
121122
self.service_events: deque = deque(maxlen=MAX_STORED_SERVICE_EVENTS)
122-
self.entry: ConfigEntry = entry
123+
self.entry: MySkodaConfigEntry = entry
123124
self.update_driving_range = self._debounce(self._update_driving_range)
124125
self.update_charging = self._debounce(self._update_charging)
125126
self.update_air_conditioning = self._debounce(self._update_air_conditioning)

custom_components/myskoda/device_tracker.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
TrackerEntityDescription,
88
)
99
from homeassistant.components.device_tracker.const import SourceType
10-
from homeassistant.config_entries import ConfigEntry
1110
from homeassistant.core import HomeAssistant
1211
from homeassistant.helpers.entity_platform import AddEntitiesCallback
1312
from homeassistant.helpers.typing import DiscoveryInfoType # pyright: ignore [reportAttributeAccessIssue]
@@ -16,7 +15,7 @@
1615
from myskoda.models.position import Error, ErrorType, Position, Positions, PositionType
1716

1817
from .const import COORDINATORS, DOMAIN
19-
from .coordinator import MySkodaDataUpdateCoordinator
18+
from .coordinator import MySkodaConfigEntry, MySkodaDataUpdateCoordinator
2019
from .entity import MySkodaEntity
2120
from .utils import add_supported_entities
2221

@@ -25,7 +24,7 @@
2524

2625
async def async_setup_entry(
2726
hass: HomeAssistant,
28-
config: ConfigEntry,
27+
config: MySkodaConfigEntry,
2928
async_add_entities: AddEntitiesCallback,
3029
discovery_info: DiscoveryInfoType | None = None,
3130
) -> None:

custom_components/myskoda/diagnostics.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,19 @@
33
import logging
44
import json
55
from homeassistant.core import HomeAssistant
6-
from homeassistant.config_entries import ConfigEntry
76
from homeassistant.helpers.device_registry import DeviceEntry
87
from myskoda.models.fixtures import Endpoint
98
from typing import Any
109

1110

1211
from .const import DOMAIN, COORDINATORS
13-
from .coordinator import MySkodaDataUpdateCoordinator
12+
from .coordinator import MySkodaConfigEntry, MySkodaDataUpdateCoordinator
1413

1514
_LOGGER = logging.getLogger(__name__)
1615

1716

1817
async def async_get_device_diagnostics(
19-
hass: HomeAssistant, config_entry: ConfigEntry, device: DeviceEntry
18+
hass: HomeAssistant, config_entry: MySkodaConfigEntry, device: DeviceEntry
2019
) -> dict[str, Any]:
2120
"""Return diagnostics for selected vehicle."""
2221
if not (vin := device.serial_number):
@@ -64,7 +63,7 @@ async def async_get_device_diagnostics(
6463

6564

6665
async def async_get_config_entry_diagnostics(
67-
hass: HomeAssistant, config_entry: ConfigEntry
66+
hass: HomeAssistant, config_entry: MySkodaConfigEntry
6867
) -> dict[str, Any]:
6968
"""Return diagnostics for all vehicles in the config entry."""
7069
coordinators = hass.data[DOMAIN][config_entry.entry_id][COORDINATORS]

custom_components/myskoda/error_handlers.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
import logging
44

55
from aiohttp import ClientResponseError
6-
from homeassistant.config_entries import ConfigEntry
76
from homeassistant.core import HomeAssistant
87
from homeassistant.helpers.update_coordinator import UpdateFailed
98

9+
from .coordinator import MySkodaConfigEntry
1010
from .issues import (
1111
async_create_spin_issue,
1212
)
@@ -19,7 +19,7 @@ def handle_aiohttp_error(
1919
poll_type: str,
2020
e: ClientResponseError,
2121
hass: HomeAssistant,
22-
config: ConfigEntry,
22+
config: MySkodaConfigEntry,
2323
) -> None:
2424
_LOGGER.debug("Received error %d with content %s", e.status, e.message)
2525

custom_components/myskoda/image.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
ImageEntityDescription,
99
GET_IMAGE_TIMEOUT,
1010
)
11-
from homeassistant.config_entries import ConfigEntry
1211
from homeassistant.const import (
1312
EntityCategory,
1413
)
@@ -17,15 +16,15 @@
1716
from homeassistant.helpers.typing import DiscoveryInfoType # pyright: ignore [reportAttributeAccessIssue]
1817

1918
from .const import COORDINATORS, DOMAIN
20-
from .coordinator import MySkodaDataUpdateCoordinator
19+
from .coordinator import MySkodaConfigEntry, MySkodaDataUpdateCoordinator
2120
from .entity import MySkodaEntity
2221

2322
_LOGGER = logging.getLogger(__name__)
2423

2524

2625
async def async_setup_entry(
2726
hass: HomeAssistant,
28-
config: ConfigEntry,
27+
config: MySkodaConfigEntry,
2928
async_add_entities: AddEntitiesCallback,
3029
discovery_info: DiscoveryInfoType | None = None,
3130
) -> None:

custom_components/myskoda/lock.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
LockEntity,
88
LockEntityDescription,
99
)
10-
from homeassistant.config_entries import ConfigEntry
1110
from homeassistant.core import HomeAssistant
1211
from homeassistant.helpers.entity_platform import AddEntitiesCallback
1312
from homeassistant.helpers.typing import DiscoveryInfoType # pyright: ignore [reportAttributeAccessIssue]
@@ -18,6 +17,7 @@
1817
from myskoda.mqtt import OperationFailedError
1918

2019
from .const import API_COOLDOWN_IN_SECONDS, COORDINATORS, CONF_SPIN, DOMAIN
20+
from .coordinator import MySkodaConfigEntry
2121
from .entity import MySkodaEntity
2222
from .utils import add_supported_entities
2323

@@ -26,7 +26,7 @@
2626

2727
async def async_setup_entry(
2828
hass: HomeAssistant,
29-
config: ConfigEntry,
29+
config: MySkodaConfigEntry,
3030
async_add_entities: AddEntitiesCallback,
3131
discovery_info: DiscoveryInfoType | None = None,
3232
) -> None:

custom_components/myskoda/number.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
NumberEntityDescription,
1010
NumberMode,
1111
)
12-
from homeassistant.config_entries import ConfigEntry
1312
from homeassistant.const import EntityCategory, PERCENTAGE, UnitOfTime
1413
from homeassistant.core import HomeAssistant
1514
from homeassistant.helpers.entity_platform import AddEntitiesCallback
@@ -21,7 +20,7 @@
2120
from myskoda.mqtt import OperationFailedError
2221

2322
from .const import API_COOLDOWN_IN_SECONDS, CONF_READONLY, COORDINATORS, DOMAIN
24-
from .coordinator import MySkodaDataUpdateCoordinator
23+
from .coordinator import MySkodaConfigEntry, MySkodaDataUpdateCoordinator
2524
from .entity import MySkodaEntity
2625
from .utils import add_supported_entities
2726

@@ -30,7 +29,7 @@
3029

3130
async def async_setup_entry(
3231
hass: HomeAssistant,
33-
config: ConfigEntry,
32+
config: MySkodaConfigEntry,
3433
async_add_entities: AddEntitiesCallback,
3534
discovery_info: DiscoveryInfoType | None = None,
3635
) -> None:

custom_components/myskoda/sensor.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
SensorEntityDescription,
99
SensorStateClass,
1010
)
11-
from homeassistant.config_entries import ConfigEntry
1211
from homeassistant.const import (
1312
PERCENTAGE,
1413
EntityCategory,
@@ -31,13 +30,14 @@
3130
from myskoda.models.operation_request import OperationStatus
3231

3332
from .const import COORDINATORS, DOMAIN, OUTSIDE_TEMP_MIN_BOUND, OUTSIDE_TEMP_MAX_BOUND
33+
from .coordinator import MySkodaConfigEntry
3434
from .entity import MySkodaEntity
3535
from .utils import add_supported_entities
3636

3737

3838
async def async_setup_entry(
3939
hass: HomeAssistant,
40-
config: ConfigEntry,
40+
config: MySkodaConfigEntry,
4141
async_add_entities: AddEntitiesCallback,
4242
_discovery_info: DiscoveryInfoType | None = None,
4343
) -> None:

custom_components/myskoda/switch.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
SwitchEntity,
1010
SwitchEntityDescription,
1111
)
12-
from homeassistant.config_entries import ConfigEntry
1312
from homeassistant.const import EntityCategory
1413
from homeassistant.core import HomeAssistant
1514
from homeassistant.helpers.entity_platform import AddEntitiesCallback
@@ -37,7 +36,7 @@
3736
from myskoda.mqtt import OperationFailedError
3837

3938
from .const import API_COOLDOWN_IN_SECONDS, CONF_READONLY, COORDINATORS, DOMAIN
40-
from .coordinator import MySkodaDataUpdateCoordinator
39+
from .coordinator import MySkodaConfigEntry, MySkodaDataUpdateCoordinator
4140
from .entity import MySkodaEntity
4241
from .utils import add_supported_entities
4342

@@ -46,7 +45,7 @@
4645

4746
async def async_setup_entry(
4847
hass: HomeAssistant,
49-
config: ConfigEntry,
48+
config: MySkodaConfigEntry,
5049
async_add_entities: AddEntitiesCallback,
5150
discovery_info: DiscoveryInfoType | None = None,
5251
) -> None:

0 commit comments

Comments
 (0)