Improve DataUpdateCoordinator typing in integrations (9) (#85332)

This commit is contained in:
Marc Mueller 2023-01-07 14:52:06 +01:00 committed by GitHub
parent a2ef0caa07
commit 2e989b16ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 26 additions and 16 deletions

View File

@ -33,7 +33,7 @@ CONF_SHOW_INACTIVE = "show_inactive"
class TileData:
"""Define an object to be stored in `hass.data`."""
coordinators: dict[str, DataUpdateCoordinator]
coordinators: dict[str, DataUpdateCoordinator[None]]
tiles: dict[str, Tile]
@ -94,7 +94,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
except TileError as err:
raise UpdateFailed(f"Error while retrieving data: {err}") from err
coordinators = {}
coordinators: dict[str, DataUpdateCoordinator[None]] = {}
coordinator_init_tasks = []
for tile_uuid, tile in tiles.items():

View File

@ -78,13 +78,13 @@ async def async_setup_scanner(
return True
class TileDeviceTracker(CoordinatorEntity, TrackerEntity):
class TileDeviceTracker(CoordinatorEntity[DataUpdateCoordinator[None]], TrackerEntity):
"""Representation of a network infrastructure device."""
_attr_icon = DEFAULT_ICON
def __init__(
self, entry: ConfigEntry, coordinator: DataUpdateCoordinator, tile: Tile
self, entry: ConfigEntry, coordinator: DataUpdateCoordinator[None], tile: Tile
) -> None:
"""Initialize."""
super().__init__(coordinator)

View File

@ -1,7 +1,9 @@
"""Support for Twente Milieu Calendar."""
from __future__ import annotations
from datetime import datetime
from datetime import date, datetime
from twentemilieu import WasteType
from homeassistant.components.calendar import CalendarEntity, CalendarEvent
from homeassistant.config_entries import ConfigEntry
@ -33,7 +35,7 @@ class TwenteMilieuCalendar(TwenteMilieuEntity, CalendarEntity):
def __init__(
self,
coordinator: DataUpdateCoordinator,
coordinator: DataUpdateCoordinator[dict[WasteType, list[date]]],
entry: ConfigEntry,
) -> None:
"""Initialize the Twente Milieu entity."""

View File

@ -1,8 +1,11 @@
"""Diagnostics support for TwenteMilieu."""
from __future__ import annotations
from datetime import date
from typing import Any
from twentemilieu import WasteType
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_ID
from homeassistant.core import HomeAssistant
@ -15,8 +18,10 @@ async def async_get_config_entry_diagnostics(
hass: HomeAssistant, entry: ConfigEntry
) -> dict[str, Any]:
"""Return diagnostics for a config entry."""
coordinator: DataUpdateCoordinator = hass.data[DOMAIN][entry.data[CONF_ID]]
coordinator: DataUpdateCoordinator[dict[WasteType, list[date]]] = hass.data[DOMAIN][
entry.data[CONF_ID]
]
return {
waste_type: [waste_date.isoformat() for waste_date in waste_dates]
str(waste_type): [waste_date.isoformat() for waste_date in waste_dates]
for waste_type, waste_dates in coordinator.data.items()
}

View File

@ -93,7 +93,7 @@ class TwenteMilieuSensor(TwenteMilieuEntity, SensorEntity):
def __init__(
self,
coordinator: DataUpdateCoordinator,
coordinator: DataUpdateCoordinator[dict[WasteType, list[date]]],
description: TwenteMilieuSensorDescription,
entry: ConfigEntry,
) -> None:

View File

@ -1,4 +1,6 @@
"""WiZ integration models."""
from __future__ import annotations
from dataclasses import dataclass
from pywizlight import wizlight
@ -10,6 +12,6 @@ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
class WizData:
"""Data for the wiz integration."""
coordinator: DataUpdateCoordinator
coordinator: DataUpdateCoordinator[float | None]
bulb: wizlight
scenes: list

View File

@ -4,6 +4,7 @@ from __future__ import annotations
from dataclasses import dataclass
from datetime import timedelta
import logging
from typing import Any
import async_timeout
from miio import (
@ -289,7 +290,7 @@ async def async_create_miio_device_and_coordinator(
device: MiioDevice | None = None
migrate = False
update_method = _async_update_data_default
coordinator_class: type[DataUpdateCoordinator] = DataUpdateCoordinator
coordinator_class: type[DataUpdateCoordinator[Any]] = DataUpdateCoordinator
if (
model not in MODELS_HUMIDIFIER

View File

@ -16,9 +16,9 @@ async def test_diagnostics(
assert await get_diagnostics_for_config_entry(
hass, hass_client, init_integration
) == {
"0": ["2021-11-01", "2021-12-01"],
"1": ["2021-11-02"],
"2": [],
"6": ["2022-01-06"],
"10": ["2021-11-03"],
"WasteType.NON_RECYCLABLE": ["2021-11-01", "2021-12-01"],
"WasteType.ORGANIC": ["2021-11-02"],
"WasteType.PAPER": [],
"WasteType.TREE": ["2022-01-06"],
"WasteType.PACKAGES": ["2021-11-03"],
}