From 45f92dd98147419a625ad84f6c51f77129e88186 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Thu, 26 Sep 2024 15:05:46 +0200 Subject: [PATCH] Improve type hints in template (#126802) --- homeassistant/components/template/__init__.py | 14 ++++++++++---- homeassistant/components/template/coordinator.py | 8 ++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/template/__init__.py b/homeassistant/components/template/__init__.py index d3cfda2d4eb..5cd5b90e34f 100644 --- a/homeassistant/components/template/__init__.py +++ b/homeassistant/components/template/__init__.py @@ -3,7 +3,9 @@ from __future__ import annotations import asyncio +from collections.abc import Coroutine import logging +from typing import Any from homeassistant import config as conf_util from homeassistant.config_entries import ConfigEntry @@ -23,11 +25,13 @@ from homeassistant.helpers.reload import async_reload_integration_platforms from homeassistant.helpers.service import async_register_admin_service from homeassistant.helpers.typing import ConfigType from homeassistant.loader import async_get_integration +from homeassistant.util.hass_dict import HassKey from .const import CONF_MAX, CONF_MIN, CONF_STEP, CONF_TRIGGER, DOMAIN, PLATFORMS from .coordinator import TriggerUpdateCoordinator _LOGGER = logging.getLogger(__name__) +DATA_COORDINATORS: HassKey[list[TriggerUpdateCoordinator]] = HassKey(DOMAIN) async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: @@ -102,19 +106,21 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: async def _process_config(hass: HomeAssistant, hass_config: ConfigType) -> None: """Process config.""" - coordinators: list[TriggerUpdateCoordinator] | None = hass.data.pop(DOMAIN, None) + coordinators = hass.data.pop(DATA_COORDINATORS, None) # Remove old ones if coordinators: for coordinator in coordinators: coordinator.async_remove() - async def init_coordinator(hass, conf_section): + async def init_coordinator( + hass: HomeAssistant, conf_section: dict[str, Any] + ) -> TriggerUpdateCoordinator: coordinator = TriggerUpdateCoordinator(hass, conf_section) await coordinator.async_setup(hass_config) return coordinator - coordinator_tasks = [] + coordinator_tasks: list[Coroutine[Any, Any, TriggerUpdateCoordinator]] = [] for conf_section in hass_config[DOMAIN]: if CONF_TRIGGER in conf_section: @@ -138,4 +144,4 @@ async def _process_config(hass: HomeAssistant, hass_config: ConfigType) -> None: ) if coordinator_tasks: - hass.data[DOMAIN] = await asyncio.gather(*coordinator_tasks) + hass.data[DATA_COORDINATORS] = await asyncio.gather(*coordinator_tasks) diff --git a/homeassistant/components/template/coordinator.py b/homeassistant/components/template/coordinator.py index 50481d79d5b..b9bbd3625af 100644 --- a/homeassistant/components/template/coordinator.py +++ b/homeassistant/components/template/coordinator.py @@ -5,7 +5,7 @@ import logging from typing import TYPE_CHECKING, Any from homeassistant.const import EVENT_HOMEASSISTANT_START -from homeassistant.core import Context, CoreState, callback +from homeassistant.core import Context, CoreState, Event, HomeAssistant, callback from homeassistant.helpers import condition, discovery, trigger as trigger_helper from homeassistant.helpers.script import Script from homeassistant.helpers.trace import trace_get @@ -22,7 +22,7 @@ class TriggerUpdateCoordinator(DataUpdateCoordinator): REMOVE_TRIGGER = object() - def __init__(self, hass, config): + def __init__(self, hass: HomeAssistant, config: dict[str, Any]) -> None: """Instantiate trigger data.""" super().__init__(hass, _LOGGER, name="Trigger Update Coordinator") self.config = config @@ -37,7 +37,7 @@ class TriggerUpdateCoordinator(DataUpdateCoordinator): return self.config.get("unique_id") @callback - def async_remove(self): + def async_remove(self) -> None: """Signal that the entities need to remove themselves.""" if self._unsub_start: self._unsub_start() @@ -66,7 +66,7 @@ class TriggerUpdateCoordinator(DataUpdateCoordinator): eager_start=True, ) - async def _attach_triggers(self, start_event=None) -> None: + async def _attach_triggers(self, start_event: Event | None = None) -> None: """Attach the triggers.""" if CONF_ACTION in self.config: self._script = Script(