From 69a2284a0094f83cadce0958bc23a3bcf35f0e23 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Tue, 31 Mar 2026 22:48:29 +0200 Subject: [PATCH] Migrate nightscout to use runtime_data (#166927) Co-authored-by: Claude Opus 4.6 (1M context) --- homeassistant/components/nightscout/__init__.py | 15 ++++++--------- homeassistant/components/nightscout/sensor.py | 8 ++++---- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/homeassistant/components/nightscout/__init__.py b/homeassistant/components/nightscout/__init__.py index 798fcf1ec9d..9e01a2712ab 100644 --- a/homeassistant/components/nightscout/__init__.py +++ b/homeassistant/components/nightscout/__init__.py @@ -16,8 +16,10 @@ from .const import DOMAIN PLATFORMS = [Platform.SENSOR] _API_TIMEOUT = SLOW_UPDATE_WARNING - 1 +type NightscoutConfigEntry = ConfigEntry[NightscoutAPI] -async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: + +async def async_setup_entry(hass: HomeAssistant, entry: NightscoutConfigEntry) -> bool: """Set up Nightscout from a config entry.""" server_url = entry.data[CONF_URL] api_key = entry.data.get(CONF_API_KEY) @@ -28,8 +30,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: except (ClientError, TimeoutError, OSError) as error: raise ConfigEntryNotReady from error - hass.data.setdefault(DOMAIN, {}) - hass.data[DOMAIN][entry.entry_id] = api + entry.runtime_data = api device_registry = dr.async_get(hass) device_registry.async_get_or_create( @@ -46,10 +47,6 @@ 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: NightscoutConfigEntry) -> bool: """Unload a config entry.""" - unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS) - if unload_ok: - hass.data[DOMAIN].pop(entry.entry_id) - - return unload_ok + return await hass.config_entries.async_unload_platforms(entry, PLATFORMS) diff --git a/homeassistant/components/nightscout/sensor.py b/homeassistant/components/nightscout/sensor.py index de1dadf1143..126a568a1d1 100644 --- a/homeassistant/components/nightscout/sensor.py +++ b/homeassistant/components/nightscout/sensor.py @@ -10,12 +10,12 @@ from aiohttp import ClientError from py_nightscout import Api as NightscoutAPI from homeassistant.components.sensor import SensorDeviceClass, SensorEntity -from homeassistant.config_entries import ConfigEntry from homeassistant.const import ATTR_DATE, UnitOfBloodGlucoseConcentration from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback -from .const import ATTR_DELTA, ATTR_DEVICE, ATTR_DIRECTION, DOMAIN +from . import NightscoutConfigEntry +from .const import ATTR_DELTA, ATTR_DEVICE, ATTR_DIRECTION SCAN_INTERVAL = timedelta(minutes=1) @@ -26,11 +26,11 @@ DEFAULT_NAME = "Blood Glucose" async def async_setup_entry( hass: HomeAssistant, - entry: ConfigEntry, + entry: NightscoutConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback, ) -> None: """Set up the Glucose Sensor.""" - api = hass.data[DOMAIN][entry.entry_id] + api = entry.runtime_data async_add_entities([NightscoutSensor(api, "Blood Sugar", entry.unique_id)], True)