{"record":{"id":"47f99726e5b138b8","repo":"home-assistant/core","slug":"forecast-update-error","errorCode":"forecast_update_error","errorMessage":"An error occurred while retrieving weather forecast data from the AccuWeather API: {error}","messagePattern":"An error occurred while retrieving weather forecast data from the AccuWeather API: (.+?)","errorType":"exception","errorClass":"UpdateFailed","httpStatus":null,"severity":"error","filePath":"homeassistant/components/accuweather/coordinator.py","lineNumber":146,"sourceCode":"\n        self.device_info = _get_device_info(self.location_key, name)\n\n        super().__init__(\n            hass,\n            _LOGGER,\n            config_entry=config_entry,\n            name=f\"{name} ({coordinator_type})\",\n            update_interval=update_interval,\n        )\n\n    @override\n    async def _async_update_data(self) -> list[dict[str, Any]]:\n        \"\"\"Update forecast data via library.\"\"\"\n        try:\n            async with timeout(10):\n                result = await self._fetch_method(language=self.hass.config.language)\n        except EXCEPTIONS as error:\n            raise UpdateFailed(\n                translation_domain=DOMAIN,\n                translation_key=\"forecast_update_error\",\n                translation_placeholders={\"error\": repr(error)},\n            ) from error\n        except InvalidApiKeyError as err:\n            raise ConfigEntryAuthFailed(\n                translation_domain=DOMAIN,\n                translation_key=\"auth_error\",\n                translation_placeholders={\"entry\": self.config_entry.title},\n            ) from err\n\n        _LOGGER.debug(\"Requests remaining: %d\", self.accuweather.requests_remaining)\n        return result\n\n\nclass AccuWeatherDailyForecastDataUpdateCoordinator(\n    AccuWeatherForecastDataUpdateCoordinator\n):","sourceCodeStart":128,"sourceCodeEnd":164,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/accuweather/coordinator.py#L128-L164","documentation":"UpdateFailed raised by the AccuWeather forecast coordinator when the forecast fetch method raises a generic exception (timeout >10s, connection error, or AccuWeather ApiError). It is the forecast counterpart of the observation error, keyed forecast_update_error, with the exception repr interpolated.","triggerScenarios":"self._fetch_method(language=...) (5-day hourly or daily forecast call) raises one of EXCEPTIONS inside async with timeout(10).","commonSituations":"Same as observation failures: rate limits (the forecast endpoints count against the 50 calls/day free tier), transient network drops, slow responses exceeding the 10s timeout.","solutions":["Confirm rate-limit headroom in debug logs ('Requests remaining'); free tier is 50 calls/day across all AccuWeather endpoints","Reduce polling: disable the forecast option or increase scan_interval so forecast calls are less frequent","Check connectivity to dataservice.accuweather.com and let the coordinator retry automatically"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"try:\n    async with timeout(10):\n        result = await self._fetch_method(language=self.hass.config.language)\nexcept EXCEPTIONS as error:\n    raise UpdateFailed(\n        translation_domain=DOMAIN,\n        translation_key=\"forecast_update_error\",\n        translation_placeholders={\"error\": repr(error)},\n    ) from error","preventionTips":["Bound every fetch with asyncio.timeout","Track requests_remaining and back off near quota","Reuse one translated-error pattern across sibling coordinators"],"tags":["coordinator","network","accuweather","rate-limit","retryable"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}