From 9d24d8a1d9b2bc655c19b46ffff485b47fb4e79c Mon Sep 17 00:00:00 2001 From: TJ Horner Date: Mon, 3 Aug 2026 10:31:06 -0700 Subject: [PATCH] Avoid naive datetime.now() in weatherkit coordinator (#178103) Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> --- homeassistant/components/weatherkit/coordinator.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/weatherkit/coordinator.py b/homeassistant/components/weatherkit/coordinator.py index de80c3bc1a53..bbbc54b2a0dc 100644 --- a/homeassistant/components/weatherkit/coordinator.py +++ b/homeassistant/components/weatherkit/coordinator.py @@ -1,6 +1,7 @@ """DataUpdateCoordinator for WeatherKit integration.""" -from datetime import datetime, timedelta +from datetime import timedelta +import time from typing import override from apple_weatherkit import DataSetType @@ -20,7 +21,7 @@ REQUESTED_DATA_SETS = [ DataSetType.HOURLY_FORECAST, ] -STALE_DATA_THRESHOLD = timedelta(hours=1) +STALE_DATA_THRESHOLD = timedelta(hours=1).total_seconds() HOURLY_FORECAST_DURATION = timedelta(days=7) @@ -32,7 +33,7 @@ class WeatherKitDataUpdateCoordinator(DataUpdateCoordinator): config_entry: WeatherKitConfigEntry supported_data_sets: list[DataSetType] | None = None - last_updated_at: datetime | None = None + last_updated_at: float | None = None def __init__( self, @@ -83,12 +84,12 @@ class WeatherKitDataUpdateCoordinator(DataUpdateCoordinator): except WeatherKitApiClientError as exception: if self.data is None or ( self.last_updated_at is not None - and datetime.now() - self.last_updated_at > STALE_DATA_THRESHOLD # pylint: disable=home-assistant-enforce-naive-now + and time.time() - self.last_updated_at > STALE_DATA_THRESHOLD ): raise UpdateFailed(exception) from exception LOGGER.debug("Using stale data because update failed: %s", exception) return self.data else: - self.last_updated_at = datetime.now() # pylint: disable=home-assistant-enforce-naive-now + self.last_updated_at = time.time() return updated_data