From c8667addd87da9184348746822bd8b664f482cbf Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Wed, 1 Apr 2026 11:04:22 +0200 Subject: [PATCH] Use runtime_data in opensky integration (#167041) Co-authored-by: Claude Opus 4.6 (1M context) --- homeassistant/components/opensky/__init__.py | 14 ++++++-------- homeassistant/components/opensky/config_flow.py | 10 +++------- homeassistant/components/opensky/coordinator.py | 6 ++++-- homeassistant/components/opensky/sensor.py | 6 +++--- 4 files changed, 16 insertions(+), 20 deletions(-) diff --git a/homeassistant/components/opensky/__init__.py b/homeassistant/components/opensky/__init__.py index c69cade5842..7cead9fa56d 100644 --- a/homeassistant/components/opensky/__init__.py +++ b/homeassistant/components/opensky/__init__.py @@ -6,17 +6,16 @@ from aiohttp import BasicAuth from python_opensky import OpenSky from python_opensky.exceptions import OpenSkyError -from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_PASSWORD, CONF_USERNAME from homeassistant.core import HomeAssistant from homeassistant.exceptions import ConfigEntryNotReady from homeassistant.helpers.aiohttp_client import async_get_clientsession -from .const import CONF_CONTRIBUTING_USER, DOMAIN, PLATFORMS -from .coordinator import OpenSkyDataUpdateCoordinator +from .const import CONF_CONTRIBUTING_USER, PLATFORMS +from .coordinator import OpenSkyConfigEntry, OpenSkyDataUpdateCoordinator -async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: +async def async_setup_entry(hass: HomeAssistant, entry: OpenSkyConfigEntry) -> bool: """Set up opensky from a config entry.""" client = OpenSky(session=async_get_clientsession(hass)) @@ -34,7 +33,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: coordinator = OpenSkyDataUpdateCoordinator(hass, entry, client) await coordinator.async_config_entry_first_refresh() - hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinator + entry.runtime_data = coordinator await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) entry.async_on_unload(entry.add_update_listener(update_listener)) @@ -42,12 +41,11 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: return True -async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: +async def async_unload_entry(hass: HomeAssistant, entry: OpenSkyConfigEntry) -> bool: """Unload opensky config entry.""" - return await hass.config_entries.async_unload_platforms(entry, PLATFORMS) -async def update_listener(hass: HomeAssistant, entry: ConfigEntry) -> None: +async def update_listener(hass: HomeAssistant, entry: OpenSkyConfigEntry) -> None: """Handle options update.""" await hass.config_entries.async_reload(entry.entry_id) diff --git a/homeassistant/components/opensky/config_flow.py b/homeassistant/components/opensky/config_flow.py index 5e53a805753..0aeed008608 100644 --- a/homeassistant/components/opensky/config_flow.py +++ b/homeassistant/components/opensky/config_flow.py @@ -9,12 +9,7 @@ from python_opensky import OpenSky from python_opensky.exceptions import OpenSkyUnauthenticatedError import voluptuous as vol -from homeassistant.config_entries import ( - ConfigEntry, - ConfigFlow, - ConfigFlowResult, - OptionsFlow, -) +from homeassistant.config_entries import ConfigFlow, ConfigFlowResult, OptionsFlow from homeassistant.const import ( CONF_LATITUDE, CONF_LONGITUDE, @@ -33,6 +28,7 @@ from .const import ( DEFAULT_NAME, DOMAIN, ) +from .coordinator import OpenSkyConfigEntry class OpenSkyConfigFlowHandler(ConfigFlow, domain=DOMAIN): @@ -41,7 +37,7 @@ class OpenSkyConfigFlowHandler(ConfigFlow, domain=DOMAIN): @staticmethod @callback def async_get_options_flow( - config_entry: ConfigEntry, + config_entry: OpenSkyConfigEntry, ) -> OpenSkyOptionsFlowHandler: """Get the options flow for this handler.""" return OpenSkyOptionsFlowHandler() diff --git a/homeassistant/components/opensky/coordinator.py b/homeassistant/components/opensky/coordinator.py index f9aab88c904..3e0ccbe380e 100644 --- a/homeassistant/components/opensky/coordinator.py +++ b/homeassistant/components/opensky/coordinator.py @@ -30,14 +30,16 @@ from .const import ( LOGGER, ) +type OpenSkyConfigEntry = ConfigEntry[OpenSkyDataUpdateCoordinator] + class OpenSkyDataUpdateCoordinator(DataUpdateCoordinator[int]): """An OpenSky Data Update Coordinator.""" - config_entry: ConfigEntry + config_entry: OpenSkyConfigEntry def __init__( - self, hass: HomeAssistant, config_entry: ConfigEntry, opensky: OpenSky + self, hass: HomeAssistant, config_entry: OpenSkyConfigEntry, opensky: OpenSky ) -> None: """Initialize the OpenSky data coordinator.""" super().__init__( diff --git a/homeassistant/components/opensky/sensor.py b/homeassistant/components/opensky/sensor.py index 0ab5b49f086..8e34e6581a0 100644 --- a/homeassistant/components/opensky/sensor.py +++ b/homeassistant/components/opensky/sensor.py @@ -10,17 +10,17 @@ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback from homeassistant.helpers.update_coordinator import CoordinatorEntity from .const import DOMAIN, MANUFACTURER -from .coordinator import OpenSkyDataUpdateCoordinator +from .coordinator import OpenSkyConfigEntry, OpenSkyDataUpdateCoordinator async def async_setup_entry( hass: HomeAssistant, - entry: ConfigEntry, + entry: OpenSkyConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback, ) -> None: """Initialize the entries.""" - coordinator = hass.data[DOMAIN][entry.entry_id] + coordinator = entry.runtime_data async_add_entities( [ OpenSkySensor(