From bbf86335be67ec795dd81bb242a979fe247916e4 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Fri, 17 May 2024 08:05:43 +0200 Subject: [PATCH] Move opengarage coordinator to separate module (#117608) --- .../components/opengarage/__init__.py | 38 +-------------- .../components/opengarage/binary_sensor.py | 2 +- homeassistant/components/opengarage/button.py | 2 +- .../components/opengarage/coordinator.py | 46 +++++++++++++++++++ homeassistant/components/opengarage/cover.py | 2 +- homeassistant/components/opengarage/entity.py | 3 +- homeassistant/components/opengarage/sensor.py | 2 +- 7 files changed, 53 insertions(+), 42 deletions(-) create mode 100644 homeassistant/components/opengarage/coordinator.py diff --git a/homeassistant/components/opengarage/__init__.py b/homeassistant/components/opengarage/__init__.py index adc96ee0946..12c2f96d7e4 100644 --- a/homeassistant/components/opengarage/__init__.py +++ b/homeassistant/components/opengarage/__init__.py @@ -2,22 +2,15 @@ from __future__ import annotations -from datetime import timedelta -import logging -from typing import Any - import opengarage from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_HOST, CONF_PORT, CONF_VERIFY_SSL, Platform from homeassistant.core import HomeAssistant -from homeassistant.helpers import update_coordinator from homeassistant.helpers.aiohttp_client import async_get_clientsession -from homeassistant.helpers.update_coordinator import DataUpdateCoordinator from .const import CONF_DEVICE_KEY, DOMAIN - -_LOGGER = logging.getLogger(__name__) +from .coordinator import OpenGarageDataUpdateCoordinator PLATFORMS = [Platform.BINARY_SENSOR, Platform.BUTTON, Platform.COVER, Platform.SENSOR] @@ -49,32 +42,3 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: hass.data[DOMAIN].pop(entry.entry_id) return unload_ok - - -class OpenGarageDataUpdateCoordinator(DataUpdateCoordinator[dict[str, Any]]): # pylint: disable=hass-enforce-coordinator-module - """Class to manage fetching Opengarage data.""" - - def __init__( - self, - hass: HomeAssistant, - *, - open_garage_connection: opengarage.OpenGarage, - ) -> None: - """Initialize global Opengarage data updater.""" - self.open_garage_connection = open_garage_connection - - super().__init__( - hass, - _LOGGER, - name=DOMAIN, - update_interval=timedelta(seconds=5), - ) - - async def _async_update_data(self) -> dict[str, Any]: - """Fetch data.""" - data = await self.open_garage_connection.update_state() - if data is None: - raise update_coordinator.UpdateFailed( - "Unable to connect to OpenGarage device" - ) - return data diff --git a/homeassistant/components/opengarage/binary_sensor.py b/homeassistant/components/opengarage/binary_sensor.py index 2eca670b990..55cacfb5f90 100644 --- a/homeassistant/components/opengarage/binary_sensor.py +++ b/homeassistant/components/opengarage/binary_sensor.py @@ -13,8 +13,8 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import OpenGarageDataUpdateCoordinator from .const import DOMAIN +from .coordinator import OpenGarageDataUpdateCoordinator from .entity import OpenGarageEntity _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/opengarage/button.py b/homeassistant/components/opengarage/button.py index f3a31d1b050..9f93e0fa716 100644 --- a/homeassistant/components/opengarage/button.py +++ b/homeassistant/components/opengarage/button.py @@ -18,8 +18,8 @@ from homeassistant.const import EntityCategory from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import OpenGarageDataUpdateCoordinator from .const import DOMAIN +from .coordinator import OpenGarageDataUpdateCoordinator from .entity import OpenGarageEntity diff --git a/homeassistant/components/opengarage/coordinator.py b/homeassistant/components/opengarage/coordinator.py new file mode 100644 index 00000000000..d35dc22d288 --- /dev/null +++ b/homeassistant/components/opengarage/coordinator.py @@ -0,0 +1,46 @@ +"""The OpenGarage integration.""" + +from __future__ import annotations + +from datetime import timedelta +import logging +from typing import Any + +import opengarage + +from homeassistant.core import HomeAssistant +from homeassistant.helpers import update_coordinator +from homeassistant.helpers.update_coordinator import DataUpdateCoordinator + +from .const import DOMAIN + +_LOGGER = logging.getLogger(__name__) + + +class OpenGarageDataUpdateCoordinator(DataUpdateCoordinator[dict[str, Any]]): + """Class to manage fetching Opengarage data.""" + + def __init__( + self, + hass: HomeAssistant, + *, + open_garage_connection: opengarage.OpenGarage, + ) -> None: + """Initialize global Opengarage data updater.""" + self.open_garage_connection = open_garage_connection + + super().__init__( + hass, + _LOGGER, + name=DOMAIN, + update_interval=timedelta(seconds=5), + ) + + async def _async_update_data(self) -> dict[str, Any]: + """Fetch data.""" + data = await self.open_garage_connection.update_state() + if data is None: + raise update_coordinator.UpdateFailed( + "Unable to connect to OpenGarage device" + ) + return data diff --git a/homeassistant/components/opengarage/cover.py b/homeassistant/components/opengarage/cover.py index 69338ad4b90..a165fcc4785 100644 --- a/homeassistant/components/opengarage/cover.py +++ b/homeassistant/components/opengarage/cover.py @@ -15,8 +15,8 @@ from homeassistant.const import STATE_CLOSED, STATE_CLOSING, STATE_OPEN, STATE_O from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import OpenGarageDataUpdateCoordinator from .const import DOMAIN +from .coordinator import OpenGarageDataUpdateCoordinator from .entity import OpenGarageEntity _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/opengarage/entity.py b/homeassistant/components/opengarage/entity.py index 4bf63567fe3..60f7b323469 100644 --- a/homeassistant/components/opengarage/entity.py +++ b/homeassistant/components/opengarage/entity.py @@ -7,7 +7,8 @@ from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC, Device from homeassistant.helpers.entity import EntityDescription from homeassistant.helpers.update_coordinator import CoordinatorEntity -from . import DOMAIN, OpenGarageDataUpdateCoordinator +from .const import DOMAIN +from .coordinator import OpenGarageDataUpdateCoordinator class OpenGarageEntity(CoordinatorEntity[OpenGarageDataUpdateCoordinator]): diff --git a/homeassistant/components/opengarage/sensor.py b/homeassistant/components/opengarage/sensor.py index 39b431157ab..003e0e0fa5a 100644 --- a/homeassistant/components/opengarage/sensor.py +++ b/homeassistant/components/opengarage/sensor.py @@ -22,8 +22,8 @@ from homeassistant.const import ( from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import OpenGarageDataUpdateCoordinator from .const import DOMAIN +from .coordinator import OpenGarageDataUpdateCoordinator from .entity import OpenGarageEntity _LOGGER = logging.getLogger(__name__)