Move pure_energie coordinator to separate module (#117560)

pull/117570/head
epenet 2024-05-16 16:51:25 +02:00 committed by GitHub
parent e168cb96e9
commit d670f1d81d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 58 additions and 48 deletions

View File

@ -2,18 +2,13 @@
from __future__ import annotations
from typing import NamedTuple
from gridnet import Device, GridNet, SmartBridge
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_HOST, Platform
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
from .const import DOMAIN, LOGGER, SCAN_INTERVAL
from .const import DOMAIN
from .coordinator import PureEnergieDataUpdateCoordinator
PLATFORMS = [Platform.SENSOR]
@ -39,39 +34,3 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
del hass.data[DOMAIN][entry.entry_id]
return unload_ok
class PureEnergieData(NamedTuple):
"""Class for defining data in dict."""
device: Device
smartbridge: SmartBridge
class PureEnergieDataUpdateCoordinator(DataUpdateCoordinator[PureEnergieData]): # pylint: disable=hass-enforce-coordinator-module
"""Class to manage fetching Pure Energie data from single eindpoint."""
config_entry: ConfigEntry
def __init__(
self,
hass: HomeAssistant,
) -> None:
"""Initialize global Pure Energie data updater."""
super().__init__(
hass,
LOGGER,
name=DOMAIN,
update_interval=SCAN_INTERVAL,
)
self.gridnet = GridNet(
self.config_entry.data[CONF_HOST], session=async_get_clientsession(hass)
)
async def _async_update_data(self) -> PureEnergieData:
"""Fetch data from SmartBridge."""
return PureEnergieData(
device=await self.gridnet.device(),
smartbridge=await self.gridnet.smartbridge(),
)

View File

@ -0,0 +1,51 @@
"""Coordinator for the Pure Energie integration."""
from __future__ import annotations
from typing import NamedTuple
from gridnet import Device, GridNet, SmartBridge
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_HOST
from homeassistant.core import HomeAssistant
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
from .const import DOMAIN, LOGGER, SCAN_INTERVAL
class PureEnergieData(NamedTuple):
"""Class for defining data in dict."""
device: Device
smartbridge: SmartBridge
class PureEnergieDataUpdateCoordinator(DataUpdateCoordinator[PureEnergieData]):
"""Class to manage fetching Pure Energie data from single eindpoint."""
config_entry: ConfigEntry
def __init__(
self,
hass: HomeAssistant,
) -> None:
"""Initialize global Pure Energie data updater."""
super().__init__(
hass,
LOGGER,
name=DOMAIN,
update_interval=SCAN_INTERVAL,
)
self.gridnet = GridNet(
self.config_entry.data[CONF_HOST], session=async_get_clientsession(hass)
)
async def _async_update_data(self) -> PureEnergieData:
"""Fetch data from SmartBridge."""
return PureEnergieData(
device=await self.gridnet.device(),
smartbridge=await self.gridnet.smartbridge(),
)

View File

@ -10,8 +10,8 @@ from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_HOST
from homeassistant.core import HomeAssistant
from . import PureEnergieDataUpdateCoordinator
from .const import DOMAIN
from .coordinator import PureEnergieDataUpdateCoordinator
TO_REDACT = {
CONF_HOST,

View File

@ -19,8 +19,8 @@ from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from . import PureEnergieData, PureEnergieDataUpdateCoordinator
from .const import DOMAIN
from .coordinator import PureEnergieData, PureEnergieDataUpdateCoordinator
@dataclass(frozen=True, kw_only=True)

View File

@ -53,7 +53,7 @@ def mock_pure_energie_config_flow(
def mock_pure_energie():
"""Return a mocked Pure Energie client."""
with patch(
"homeassistant.components.pure_energie.GridNet", autospec=True
"homeassistant.components.pure_energie.coordinator.GridNet", autospec=True
) as pure_energie_mock:
pure_energie = pure_energie_mock.return_value
pure_energie.smartbridge = AsyncMock(

View File

@ -37,7 +37,7 @@ async def test_load_unload_config_entry(
@patch(
"homeassistant.components.pure_energie.GridNet._request",
"homeassistant.components.pure_energie.coordinator.GridNet._request",
side_effect=GridNetConnectionError,
)
async def test_config_entry_not_ready(