From 5c8fa717bf8f0ff2235cce4f7c83a44344ad3d23 Mon Sep 17 00:00:00 2001 From: Manu <4445816+tr4nt0r@users.noreply.github.com> Date: Thu, 20 Feb 2025 08:14:08 +0100 Subject: [PATCH] Move test before setup coordinator `_async_setup` in pyLoad integration (#138893) Move setup test to `async_setup` in the coordinator --- homeassistant/components/pyload/__init__.py | 21 --------------- .../components/pyload/coordinator.py | 26 ++++++++++++++++++- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/homeassistant/components/pyload/__init__.py b/homeassistant/components/pyload/__init__.py index 3dd2fd9b2ba..8251722de50 100644 --- a/homeassistant/components/pyload/__init__.py +++ b/homeassistant/components/pyload/__init__.py @@ -4,7 +4,6 @@ from __future__ import annotations from aiohttp import CookieJar from pyloadapi.api import PyLoadAPI -from pyloadapi.exceptions import CannotConnect, InvalidAuth, ParserError from homeassistant.const import ( CONF_HOST, @@ -16,10 +15,8 @@ from homeassistant.const import ( Platform, ) from homeassistant.core import HomeAssistant -from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady from homeassistant.helpers.aiohttp_client import async_create_clientsession -from .const import DOMAIN from .coordinator import PyLoadConfigEntry, PyLoadCoordinator PLATFORMS: list[Platform] = [Platform.BUTTON, Platform.SENSOR, Platform.SWITCH] @@ -45,24 +42,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: PyLoadConfigEntry) -> bo password=entry.data[CONF_PASSWORD], ) - try: - await pyloadapi.login() - except CannotConnect as e: - raise ConfigEntryNotReady( - translation_domain=DOMAIN, - translation_key="setup_request_exception", - ) from e - except ParserError as e: - raise ConfigEntryNotReady( - translation_domain=DOMAIN, - translation_key="setup_parse_exception", - ) from e - except InvalidAuth as e: - raise ConfigEntryAuthFailed( - translation_domain=DOMAIN, - translation_key="setup_authentication_exception", - translation_placeholders={CONF_USERNAME: entry.data[CONF_USERNAME]}, - ) from e coordinator = PyLoadCoordinator(hass, entry, pyloadapi) await coordinator.async_config_entry_first_refresh() diff --git a/homeassistant/components/pyload/coordinator.py b/homeassistant/components/pyload/coordinator.py index 8b2db605c94..0d752e971e5 100644 --- a/homeassistant/components/pyload/coordinator.py +++ b/homeassistant/components/pyload/coordinator.py @@ -9,7 +9,7 @@ from pyloadapi import CannotConnect, InvalidAuth, ParserError, PyLoadAPI from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_USERNAME from homeassistant.core import HomeAssistant -from homeassistant.exceptions import ConfigEntryAuthFailed +from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed from .const import DOMAIN @@ -85,3 +85,27 @@ class PyLoadCoordinator(DataUpdateCoordinator[PyLoadData]): ) from e except ParserError as e: raise UpdateFailed("Unable to parse data from pyLoad API") from e + + async def _async_setup(self) -> None: + """Set up the coordinator.""" + + try: + await self.pyload.login() + except CannotConnect as e: + raise ConfigEntryNotReady( + translation_domain=DOMAIN, + translation_key="setup_request_exception", + ) from e + except ParserError as e: + raise ConfigEntryNotReady( + translation_domain=DOMAIN, + translation_key="setup_parse_exception", + ) from e + except InvalidAuth as e: + raise ConfigEntryAuthFailed( + translation_domain=DOMAIN, + translation_key="setup_authentication_exception", + translation_placeholders={ + CONF_USERNAME: self.config_entry.data[CONF_USERNAME] + }, + ) from e