From 57337b5cee5a5ab076ab89ded23219b40497e6b8 Mon Sep 17 00:00:00 2001 From: Jan-Philipp Benecke Date: Sat, 16 Sep 2023 11:19:49 +0200 Subject: [PATCH] Move flipr coordinator to its own file (#100467) --- homeassistant/components/flipr/__init__.py | 47 +------------------ homeassistant/components/flipr/coordinator.py | 45 ++++++++++++++++++ tests/components/flipr/test_init.py | 2 +- 3 files changed, 48 insertions(+), 46 deletions(-) create mode 100644 homeassistant/components/flipr/coordinator.py diff --git a/homeassistant/components/flipr/__init__.py b/homeassistant/components/flipr/__init__.py index 81c21a4aa99..865aeaa2d28 100644 --- a/homeassistant/components/flipr/__init__.py +++ b/homeassistant/components/flipr/__init__.py @@ -1,27 +1,16 @@ """The Flipr integration.""" -from datetime import timedelta -import logging - -from flipr_api import FliprAPIRestClient -from flipr_api.exceptions import FliprError - from homeassistant.config_entries import ConfigEntry -from homeassistant.const import CONF_EMAIL, CONF_PASSWORD, Platform +from homeassistant.const import Platform from homeassistant.core import HomeAssistant from homeassistant.helpers.device_registry import DeviceInfo from homeassistant.helpers.entity import EntityDescription from homeassistant.helpers.update_coordinator import ( CoordinatorEntity, DataUpdateCoordinator, - UpdateFailed, ) from .const import ATTRIBUTION, CONF_FLIPR_ID, DOMAIN, MANUFACTURER - -_LOGGER = logging.getLogger(__name__) - -SCAN_INTERVAL = timedelta(minutes=60) - +from .coordinator import FliprDataUpdateCoordinator PLATFORMS = [Platform.BINARY_SENSOR, Platform.SENSOR] @@ -49,38 +38,6 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: return unload_ok -class FliprDataUpdateCoordinator(DataUpdateCoordinator): - """Class to hold Flipr data retrieval.""" - - def __init__(self, hass, entry): - """Initialize.""" - username = entry.data[CONF_EMAIL] - password = entry.data[CONF_PASSWORD] - self.flipr_id = entry.data[CONF_FLIPR_ID] - - # Establishes the connection. - self.client = FliprAPIRestClient(username, password) - self.entry = entry - - super().__init__( - hass, - _LOGGER, - name=f"Flipr data measure for {self.flipr_id}", - update_interval=SCAN_INTERVAL, - ) - - async def _async_update_data(self): - """Fetch data from API endpoint.""" - try: - data = await self.hass.async_add_executor_job( - self.client.get_pool_measure_latest, self.flipr_id - ) - except FliprError as error: - raise UpdateFailed(error) from error - - return data - - class FliprEntity(CoordinatorEntity): """Implements a common class elements representing the Flipr component.""" diff --git a/homeassistant/components/flipr/coordinator.py b/homeassistant/components/flipr/coordinator.py new file mode 100644 index 00000000000..d51db645035 --- /dev/null +++ b/homeassistant/components/flipr/coordinator.py @@ -0,0 +1,45 @@ +"""DataUpdateCoordinator for flipr integration.""" +from datetime import timedelta +import logging + +from flipr_api import FliprAPIRestClient +from flipr_api.exceptions import FliprError + +from homeassistant.const import CONF_EMAIL, CONF_PASSWORD +from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed + +from .const import CONF_FLIPR_ID + +_LOGGER = logging.getLogger(__name__) + + +class FliprDataUpdateCoordinator(DataUpdateCoordinator): + """Class to hold Flipr data retrieval.""" + + def __init__(self, hass, entry): + """Initialize.""" + username = entry.data[CONF_EMAIL] + password = entry.data[CONF_PASSWORD] + self.flipr_id = entry.data[CONF_FLIPR_ID] + + # Establishes the connection. + self.client = FliprAPIRestClient(username, password) + self.entry = entry + + super().__init__( + hass, + _LOGGER, + name=f"Flipr data measure for {self.flipr_id}", + update_interval=timedelta(minutes=60), + ) + + async def _async_update_data(self): + """Fetch data from API endpoint.""" + try: + data = await self.hass.async_add_executor_job( + self.client.get_pool_measure_latest, self.flipr_id + ) + except FliprError as error: + raise UpdateFailed(error) from error + + return data diff --git a/tests/components/flipr/test_init.py b/tests/components/flipr/test_init.py index e9685bd6e0a..c1c5c0086e7 100644 --- a/tests/components/flipr/test_init.py +++ b/tests/components/flipr/test_init.py @@ -21,7 +21,7 @@ async def test_unload_entry(hass: HomeAssistant) -> None: unique_id="123456", ) entry.add_to_hass(hass) - with patch("homeassistant.components.flipr.FliprAPIRestClient"): + with patch("homeassistant.components.flipr.coordinator.FliprAPIRestClient"): await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done() await hass.config_entries.async_unload(entry.entry_id)