From 6bd3648c7736fc01704ea4cb7a10b9c751c6f599 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Wed, 15 May 2024 12:13:05 +0200 Subject: [PATCH] Move melnor coordinator to separate module (#117486) --- homeassistant/components/melnor/__init__.py | 2 +- .../components/melnor/coordinator.py | 33 ++++++++++++++++++ homeassistant/components/melnor/models.py | 34 ++----------------- homeassistant/components/melnor/number.py | 7 ++-- homeassistant/components/melnor/sensor.py | 8 ++--- homeassistant/components/melnor/switch.py | 7 ++-- homeassistant/components/melnor/time.py | 7 ++-- 7 files changed, 45 insertions(+), 53 deletions(-) create mode 100644 homeassistant/components/melnor/coordinator.py diff --git a/homeassistant/components/melnor/__init__.py b/homeassistant/components/melnor/__init__.py index 9a15e81dc22..afaf8eb95f8 100644 --- a/homeassistant/components/melnor/__init__.py +++ b/homeassistant/components/melnor/__init__.py @@ -12,7 +12,7 @@ from homeassistant.core import HomeAssistant, callback from homeassistant.exceptions import ConfigEntryNotReady from .const import DOMAIN -from .models import MelnorDataUpdateCoordinator +from .coordinator import MelnorDataUpdateCoordinator PLATFORMS: list[Platform] = [ Platform.NUMBER, diff --git a/homeassistant/components/melnor/coordinator.py b/homeassistant/components/melnor/coordinator.py new file mode 100644 index 00000000000..669fe916082 --- /dev/null +++ b/homeassistant/components/melnor/coordinator.py @@ -0,0 +1,33 @@ +"""Coordinator for the Melnor integration.""" + +from datetime import timedelta +import logging + +from melnor_bluetooth.device import Device + +from homeassistant.core import HomeAssistant +from homeassistant.helpers.update_coordinator import DataUpdateCoordinator + +_LOGGER = logging.getLogger(__name__) + + +class MelnorDataUpdateCoordinator(DataUpdateCoordinator[Device]): + """Melnor data update coordinator.""" + + _device: Device + + def __init__(self, hass: HomeAssistant, device: Device) -> None: + """Initialize my coordinator.""" + super().__init__( + hass, + _LOGGER, + name="Melnor Bluetooth", + update_interval=timedelta(seconds=5), + ) + self._device = device + + async def _async_update_data(self): + """Update the device state.""" + + await self._device.fetch_state() + return self._device diff --git a/homeassistant/components/melnor/models.py b/homeassistant/components/melnor/models.py index f30edbe3177..933b2972d6a 100644 --- a/homeassistant/components/melnor/models.py +++ b/homeassistant/components/melnor/models.py @@ -1,45 +1,17 @@ """Melnor integration models.""" from collections.abc import Callable -from datetime import timedelta -import logging from typing import TypeVar from melnor_bluetooth.device import Device, Valve from homeassistant.components.number import EntityDescription -from homeassistant.core import HomeAssistant, callback +from homeassistant.core import callback from homeassistant.helpers.device_registry import DeviceInfo -from homeassistant.helpers.update_coordinator import ( - CoordinatorEntity, - DataUpdateCoordinator, -) +from homeassistant.helpers.update_coordinator import CoordinatorEntity from .const import DOMAIN - -_LOGGER = logging.getLogger(__name__) - - -class MelnorDataUpdateCoordinator(DataUpdateCoordinator[Device]): # pylint: disable=hass-enforce-coordinator-module - """Melnor data update coordinator.""" - - _device: Device - - def __init__(self, hass: HomeAssistant, device: Device) -> None: - """Initialize my coordinator.""" - super().__init__( - hass, - _LOGGER, - name="Melnor Bluetooth", - update_interval=timedelta(seconds=5), - ) - self._device = device - - async def _async_update_data(self): - """Update the device state.""" - - await self._device.fetch_state() - return self._device +from .coordinator import MelnorDataUpdateCoordinator class MelnorBluetoothEntity(CoordinatorEntity[MelnorDataUpdateCoordinator]): diff --git a/homeassistant/components/melnor/number.py b/homeassistant/components/melnor/number.py index 33d9fa443b1..beaa0fd913b 100644 --- a/homeassistant/components/melnor/number.py +++ b/homeassistant/components/melnor/number.py @@ -19,11 +19,8 @@ from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback from .const import DOMAIN -from .models import ( - MelnorDataUpdateCoordinator, - MelnorZoneEntity, - get_entities_for_valves, -) +from .coordinator import MelnorDataUpdateCoordinator +from .models import MelnorZoneEntity, get_entities_for_valves @dataclass(frozen=True, kw_only=True) diff --git a/homeassistant/components/melnor/sensor.py b/homeassistant/components/melnor/sensor.py index 6528773d9d8..233dada8ab2 100644 --- a/homeassistant/components/melnor/sensor.py +++ b/homeassistant/components/melnor/sensor.py @@ -27,12 +27,8 @@ from homeassistant.helpers.typing import StateType from homeassistant.util import dt as dt_util from .const import DOMAIN -from .models import ( - MelnorBluetoothEntity, - MelnorDataUpdateCoordinator, - MelnorZoneEntity, - get_entities_for_valves, -) +from .coordinator import MelnorDataUpdateCoordinator +from .models import MelnorBluetoothEntity, MelnorZoneEntity, get_entities_for_valves def watering_seconds_left(valve: Valve) -> datetime | None: diff --git a/homeassistant/components/melnor/switch.py b/homeassistant/components/melnor/switch.py index f912db1e981..efa779f04b0 100644 --- a/homeassistant/components/melnor/switch.py +++ b/homeassistant/components/melnor/switch.py @@ -18,11 +18,8 @@ from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback from .const import DOMAIN -from .models import ( - MelnorDataUpdateCoordinator, - MelnorZoneEntity, - get_entities_for_valves, -) +from .coordinator import MelnorDataUpdateCoordinator +from .models import MelnorZoneEntity, get_entities_for_valves @dataclass(frozen=True, kw_only=True) diff --git a/homeassistant/components/melnor/time.py b/homeassistant/components/melnor/time.py index d2d05f6517f..373a22c8ff4 100644 --- a/homeassistant/components/melnor/time.py +++ b/homeassistant/components/melnor/time.py @@ -16,11 +16,8 @@ from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback from .const import DOMAIN -from .models import ( - MelnorDataUpdateCoordinator, - MelnorZoneEntity, - get_entities_for_valves, -) +from .coordinator import MelnorDataUpdateCoordinator +from .models import MelnorZoneEntity, get_entities_for_valves @dataclass(frozen=True, kw_only=True) -- GitLab