Fix met TypeVar usage (#68152)

* Fix met TypeVar usage

* Change format_condition
This commit is contained in:
Marc Mueller 2022-03-15 15:53:40 +01:00 committed by GitHub
parent 1a27025793
commit db4b69663f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 12 deletions

View File

@ -82,12 +82,12 @@ async def async_unload_entry(hass: HomeAssistant, config_entry: ConfigEntry) ->
return unload_ok return unload_ok
class MetDataUpdateCoordinator(DataUpdateCoordinator): class MetDataUpdateCoordinator(DataUpdateCoordinator["MetWeatherData"]):
"""Class to manage fetching Met data.""" """Class to manage fetching Met data."""
def __init__(self, hass: HomeAssistant, config_entry: ConfigEntry) -> None: def __init__(self, hass: HomeAssistant, config_entry: ConfigEntry) -> None:
"""Initialize global Met data updater.""" """Initialize global Met data updater."""
self._unsub_track_home: Callable | None = None self._unsub_track_home: Callable[[], None] | None = None
self.weather = MetWeatherData( self.weather = MetWeatherData(
hass, config_entry.data, hass.config.units.is_metric hass, config_entry.data, hass.config.units.is_metric
) )
@ -137,8 +137,8 @@ class MetWeatherData:
self._is_metric = is_metric self._is_metric = is_metric
self._weather_data: metno.MetWeatherData self._weather_data: metno.MetWeatherData
self.current_weather_data: dict = {} self.current_weather_data: dict = {}
self.daily_forecast = None self.daily_forecast: list[dict] = []
self.hourly_forecast = None self.hourly_forecast: list[dict] = []
self._coordinates: dict[str, str] | None = None self._coordinates: dict[str, str] | None = None
def set_coordinates(self) -> bool: def set_coordinates(self) -> bool:

View File

@ -40,15 +40,12 @@ from homeassistant.helpers.device_registry import DeviceEntryType
from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.entity import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
from homeassistant.helpers.update_coordinator import ( from homeassistant.helpers.update_coordinator import CoordinatorEntity
CoordinatorEntity,
DataUpdateCoordinator,
T,
)
from homeassistant.util.distance import convert as convert_distance from homeassistant.util.distance import convert as convert_distance
from homeassistant.util.pressure import convert as convert_pressure from homeassistant.util.pressure import convert as convert_pressure
from homeassistant.util.speed import convert as convert_speed from homeassistant.util.speed import convert as convert_speed
from . import MetDataUpdateCoordinator, MetWeatherData
from .const import ( from .const import (
ATTR_FORECAST_PRECIPITATION, ATTR_FORECAST_PRECIPITATION,
ATTR_MAP, ATTR_MAP,
@ -109,7 +106,7 @@ async def async_setup_entry(
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Add a weather entity from a config_entry.""" """Add a weather entity from a config_entry."""
coordinator = hass.data[DOMAIN][config_entry.entry_id] coordinator: MetDataUpdateCoordinator = hass.data[DOMAIN][config_entry.entry_id]
async_add_entities( async_add_entities(
[ [
MetWeather( MetWeather(
@ -130,12 +127,14 @@ def format_condition(condition: str) -> str:
return condition return condition
class MetWeather(CoordinatorEntity, WeatherEntity): class MetWeather(CoordinatorEntity[MetWeatherData], WeatherEntity):
"""Implementation of a Met.no weather condition.""" """Implementation of a Met.no weather condition."""
coordinator: MetDataUpdateCoordinator
def __init__( def __init__(
self, self,
coordinator: DataUpdateCoordinator[T], coordinator: MetDataUpdateCoordinator,
config: MappingProxyType[str, Any], config: MappingProxyType[str, Any],
is_metric: bool, is_metric: bool,
hourly: bool, hourly: bool,
@ -187,6 +186,8 @@ class MetWeather(CoordinatorEntity, WeatherEntity):
def condition(self) -> str | None: def condition(self) -> str | None:
"""Return the current condition.""" """Return the current condition."""
condition = self.coordinator.data.current_weather_data.get("condition") condition = self.coordinator.data.current_weather_data.get("condition")
if condition is None:
return None
return format_condition(condition) return format_condition(condition)
@property @property