mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 21:27:38 +00:00
Improve CoordinatorWeatherEntity generic typing (#116760)
This commit is contained in:
parent
8238cd9f22
commit
f9d95efac0
@ -31,7 +31,6 @@ from homeassistant.const import (
|
||||
)
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
from homeassistant.helpers.update_coordinator import TimestampDataUpdateCoordinator
|
||||
from homeassistant.util.dt import utc_from_timestamp
|
||||
|
||||
from . import AccuWeatherData
|
||||
@ -65,8 +64,6 @@ class AccuWeatherEntity(
|
||||
CoordinatorWeatherEntity[
|
||||
AccuWeatherObservationDataUpdateCoordinator,
|
||||
AccuWeatherDailyForecastDataUpdateCoordinator,
|
||||
TimestampDataUpdateCoordinator,
|
||||
TimestampDataUpdateCoordinator,
|
||||
]
|
||||
):
|
||||
"""Define an AccuWeather entity."""
|
||||
|
@ -91,8 +91,6 @@ class MetOfficeWeather(
|
||||
CoordinatorWeatherEntity[
|
||||
TimestampDataUpdateCoordinator[MetOfficeData],
|
||||
TimestampDataUpdateCoordinator[MetOfficeData],
|
||||
TimestampDataUpdateCoordinator[MetOfficeData],
|
||||
TimestampDataUpdateCoordinator[MetOfficeData], # Can be removed in Python 3.12
|
||||
]
|
||||
):
|
||||
"""Implementation of a Met Office weather condition."""
|
||||
|
@ -35,6 +35,7 @@ from homeassistant.const import (
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers import entity_registry as er
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
from homeassistant.helpers.update_coordinator import TimestampDataUpdateCoordinator
|
||||
from homeassistant.util.unit_conversion import SpeedConverter, TemperatureConverter
|
||||
|
||||
from . import NWSData, base_unique_id, device_info
|
||||
@ -110,7 +111,7 @@ def _calculate_unique_id(entry_data: MappingProxyType[str, Any], mode: str) -> s
|
||||
return f"{base_unique_id(latitude, longitude)}_{mode}"
|
||||
|
||||
|
||||
class NWSWeather(CoordinatorWeatherEntity):
|
||||
class NWSWeather(CoordinatorWeatherEntity[TimestampDataUpdateCoordinator[None]]):
|
||||
"""Representation of a weather condition."""
|
||||
|
||||
_attr_attribution = ATTRIBUTION
|
||||
|
@ -8,18 +8,9 @@ from contextlib import suppress
|
||||
from datetime import timedelta
|
||||
from functools import cached_property, partial
|
||||
import logging
|
||||
from typing import (
|
||||
Any,
|
||||
Final,
|
||||
Generic,
|
||||
Literal,
|
||||
Required,
|
||||
TypedDict,
|
||||
TypeVar,
|
||||
cast,
|
||||
final,
|
||||
)
|
||||
from typing import Any, Final, Generic, Literal, Required, TypedDict, cast, final
|
||||
|
||||
from typing_extensions import TypeVar
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
@ -137,21 +128,25 @@ LEGACY_SERVICE_GET_FORECAST: Final = "get_forecast"
|
||||
SERVICE_GET_FORECASTS: Final = "get_forecasts"
|
||||
|
||||
_ObservationUpdateCoordinatorT = TypeVar(
|
||||
"_ObservationUpdateCoordinatorT", bound="DataUpdateCoordinator[Any]"
|
||||
"_ObservationUpdateCoordinatorT",
|
||||
bound=DataUpdateCoordinator[Any],
|
||||
default=DataUpdateCoordinator[dict[str, Any]],
|
||||
)
|
||||
|
||||
# Note:
|
||||
# Mypy bug https://github.com/python/mypy/issues/9424 prevents us from making the
|
||||
# forecast cooordinators optional, bound=TimestampDataUpdateCoordinator[Any] | None
|
||||
|
||||
_DailyForecastUpdateCoordinatorT = TypeVar(
|
||||
"_DailyForecastUpdateCoordinatorT", bound="TimestampDataUpdateCoordinator[Any]"
|
||||
"_DailyForecastUpdateCoordinatorT",
|
||||
bound=TimestampDataUpdateCoordinator[Any],
|
||||
default=TimestampDataUpdateCoordinator[None],
|
||||
)
|
||||
_HourlyForecastUpdateCoordinatorT = TypeVar(
|
||||
"_HourlyForecastUpdateCoordinatorT", bound="TimestampDataUpdateCoordinator[Any]"
|
||||
"_HourlyForecastUpdateCoordinatorT",
|
||||
bound=TimestampDataUpdateCoordinator[Any],
|
||||
default=_DailyForecastUpdateCoordinatorT,
|
||||
)
|
||||
_TwiceDailyForecastUpdateCoordinatorT = TypeVar(
|
||||
"_TwiceDailyForecastUpdateCoordinatorT", bound="TimestampDataUpdateCoordinator[Any]"
|
||||
"_TwiceDailyForecastUpdateCoordinatorT",
|
||||
bound=TimestampDataUpdateCoordinator[Any],
|
||||
default=_DailyForecastUpdateCoordinatorT,
|
||||
)
|
||||
|
||||
# mypy: disallow-any-generics
|
||||
@ -1244,19 +1239,12 @@ class CoordinatorWeatherEntity(
|
||||
|
||||
class SingleCoordinatorWeatherEntity(
|
||||
CoordinatorWeatherEntity[
|
||||
_ObservationUpdateCoordinatorT,
|
||||
TimestampDataUpdateCoordinator[None],
|
||||
TimestampDataUpdateCoordinator[None],
|
||||
TimestampDataUpdateCoordinator[None],
|
||||
_ObservationUpdateCoordinatorT, TimestampDataUpdateCoordinator[None]
|
||||
],
|
||||
):
|
||||
"""A class for weather entities using a single DataUpdateCoordinators.
|
||||
|
||||
This class is added as a convenience because:
|
||||
- Deriving from CoordinatorWeatherEntity requires specifying all type parameters
|
||||
until we upgrade to Python 3.12 which supports defaults
|
||||
- Mypy bug https://github.com/python/mypy/issues/9424 prevents us from making the
|
||||
forecast cooordinator type vars optional
|
||||
This class is added as a convenience.
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
|
Loading…
x
Reference in New Issue
Block a user