Improve here_travel_time generic typing (#84631)

This commit is contained in:
Marc Mueller 2022-12-29 11:01:21 +01:00 committed by GitHub
parent 2049993941
commit b90a51490f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 14 deletions

View File

@ -1,4 +1,6 @@
"""Constants for the HERE Travel Time integration."""
from typing import Final
DOMAIN = "here_travel_time"
DEFAULT_SCAN_INTERVAL = 300
@ -51,11 +53,11 @@ ICONS = {
TRAVEL_MODE_TRUCK: ICON_TRUCK,
}
ATTR_DURATION = "duration"
ATTR_DISTANCE = "distance"
ATTR_ORIGIN = "origin"
ATTR_DESTINATION = "destination"
ATTR_DURATION: Final = "duration"
ATTR_DISTANCE: Final = "distance"
ATTR_ORIGIN: Final = "origin"
ATTR_DESTINATION: Final = "destination"
ATTR_DURATION_IN_TRAFFIC = "duration_in_traffic"
ATTR_ORIGIN_NAME = "origin_name"
ATTR_DESTINATION_NAME = "destination_name"
ATTR_DURATION_IN_TRAFFIC: Final = "duration_in_traffic"
ATTR_ORIGIN_NAME: Final = "origin_name"
ATTR_DESTINATION_NAME: Final = "destination_name"

View File

@ -3,7 +3,7 @@ from __future__ import annotations
from datetime import datetime, time, timedelta
import logging
from typing import Any
from typing import Any, Optional
import here_routing
from here_routing import (
@ -40,7 +40,7 @@ BACKOFF_MULTIPLIER = 1.1
_LOGGER = logging.getLogger(__name__)
class HERERoutingDataUpdateCoordinator(DataUpdateCoordinator):
class HERERoutingDataUpdateCoordinator(DataUpdateCoordinator[HERETravelTimeData]):
"""here_routing DataUpdateCoordinator."""
def __init__(
@ -59,7 +59,7 @@ class HERERoutingDataUpdateCoordinator(DataUpdateCoordinator):
self._api = HERERoutingApi(api_key)
self.config = config
async def _async_update_data(self) -> HERETravelTimeData | None:
async def _async_update_data(self) -> HERETravelTimeData:
"""Get the latest data from the HERE Routing API."""
origin, destination, arrival, departure = prepare_parameters(
self.hass, self.config
@ -144,7 +144,9 @@ class HERERoutingDataUpdateCoordinator(DataUpdateCoordinator):
)
class HERETransitDataUpdateCoordinator(DataUpdateCoordinator):
class HERETransitDataUpdateCoordinator(
DataUpdateCoordinator[Optional[HERETravelTimeData]]
):
"""HERETravelTime DataUpdateCoordinator."""
def __init__(

View File

@ -3,7 +3,7 @@ from __future__ import annotations
from collections.abc import Mapping
from datetime import timedelta
from typing import Any
from typing import Any, Union
from homeassistant.components.sensor import (
RestoreSensor,
@ -102,7 +102,12 @@ async def async_setup_entry(
async_add_entities(sensors)
class HERETravelTimeSensor(CoordinatorEntity, RestoreSensor):
class HERETravelTimeSensor(
CoordinatorEntity[
Union[HERERoutingDataUpdateCoordinator, HERETransitDataUpdateCoordinator]
],
RestoreSensor,
):
"""Representation of a HERE travel time sensor."""
def __init__(
@ -144,7 +149,7 @@ class HERETravelTimeSensor(CoordinatorEntity, RestoreSensor):
def _handle_coordinator_update(self) -> None:
"""Handle updated data from the coordinator."""
if self.coordinator.data is not None:
self._attr_native_value = self.coordinator.data.get(
self._attr_native_value = self.coordinator.data.get( # type: ignore[assignment]
self.entity_description.key
)
self.async_write_ha_state()