mirror of
https://github.com/home-assistant/core.git
synced 2025-07-26 06:37:52 +00:00
Use typed config entry in rainbird (#132031)
* Use typed config entry in rainbird * Adjust
This commit is contained in:
parent
80f28302a1
commit
28eb4f3dff
@ -9,7 +9,6 @@ import aiohttp
|
|||||||
from pyrainbird.async_client import AsyncRainbirdClient, AsyncRainbirdController
|
from pyrainbird.async_client import AsyncRainbirdClient, AsyncRainbirdController
|
||||||
from pyrainbird.exceptions import RainbirdApiException, RainbirdAuthException
|
from pyrainbird.exceptions import RainbirdApiException, RainbirdAuthException
|
||||||
|
|
||||||
from homeassistant.config_entries import ConfigEntry
|
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
CONF_HOST,
|
CONF_HOST,
|
||||||
CONF_MAC,
|
CONF_MAC,
|
||||||
@ -46,7 +45,7 @@ DOMAIN = "rainbird"
|
|||||||
|
|
||||||
def _async_register_clientsession_shutdown(
|
def _async_register_clientsession_shutdown(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
entry: ConfigEntry,
|
entry: RainbirdConfigEntry,
|
||||||
clientsession: aiohttp.ClientSession,
|
clientsession: aiohttp.ClientSession,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Register cleanup hooks for the clientsession."""
|
"""Register cleanup hooks for the clientsession."""
|
||||||
@ -126,7 +125,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: RainbirdConfigEntry) ->
|
|||||||
|
|
||||||
|
|
||||||
async def _async_fix_unique_id(
|
async def _async_fix_unique_id(
|
||||||
hass: HomeAssistant, controller: AsyncRainbirdController, entry: ConfigEntry
|
hass: HomeAssistant, controller: AsyncRainbirdController, entry: RainbirdConfigEntry
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""Update the config entry with a unique id based on the mac address."""
|
"""Update the config entry with a unique id based on the mac address."""
|
||||||
_LOGGER.debug("Checking for migration of config entry (%s)", entry.unique_id)
|
_LOGGER.debug("Checking for migration of config entry (%s)", entry.unique_id)
|
||||||
@ -255,6 +254,6 @@ def _async_fix_device_id(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
async def async_unload_entry(hass: HomeAssistant, entry: RainbirdConfigEntry) -> bool:
|
||||||
"""Unload a config entry."""
|
"""Unload a config entry."""
|
||||||
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
|
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
|
||||||
|
@ -12,17 +12,13 @@ from pyrainbird.data import WifiParams
|
|||||||
from pyrainbird.exceptions import RainbirdApiException, RainbirdAuthException
|
from pyrainbird.exceptions import RainbirdApiException, RainbirdAuthException
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
from homeassistant.config_entries import (
|
from homeassistant.config_entries import ConfigFlow, ConfigFlowResult, OptionsFlow
|
||||||
ConfigEntry,
|
|
||||||
ConfigFlow,
|
|
||||||
ConfigFlowResult,
|
|
||||||
OptionsFlow,
|
|
||||||
)
|
|
||||||
from homeassistant.const import CONF_HOST, CONF_MAC, CONF_PASSWORD
|
from homeassistant.const import CONF_HOST, CONF_MAC, CONF_PASSWORD
|
||||||
from homeassistant.core import callback
|
from homeassistant.core import callback
|
||||||
from homeassistant.helpers import config_validation as cv, selector
|
from homeassistant.helpers import config_validation as cv, selector
|
||||||
from homeassistant.helpers.device_registry import format_mac
|
from homeassistant.helpers.device_registry import format_mac
|
||||||
|
|
||||||
|
from . import RainbirdConfigEntry
|
||||||
from .const import (
|
from .const import (
|
||||||
ATTR_DURATION,
|
ATTR_DURATION,
|
||||||
CONF_SERIAL_NUMBER,
|
CONF_SERIAL_NUMBER,
|
||||||
@ -69,7 +65,7 @@ class RainbirdConfigFlowHandler(ConfigFlow, domain=DOMAIN):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
@callback
|
@callback
|
||||||
def async_get_options_flow(
|
def async_get_options_flow(
|
||||||
config_entry: ConfigEntry,
|
config_entry: RainbirdConfigEntry,
|
||||||
) -> RainBirdOptionsFlowHandler:
|
) -> RainBirdOptionsFlowHandler:
|
||||||
"""Define the config flow to handle options."""
|
"""Define the config flow to handle options."""
|
||||||
return RainBirdOptionsFlowHandler()
|
return RainBirdOptionsFlowHandler()
|
||||||
|
@ -15,13 +15,13 @@ from pyrainbird.async_client import (
|
|||||||
)
|
)
|
||||||
from pyrainbird.data import ModelAndVersion, Schedule
|
from pyrainbird.data import ModelAndVersion, Schedule
|
||||||
|
|
||||||
from homeassistant.config_entries import ConfigEntry
|
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.debounce import Debouncer
|
from homeassistant.helpers.debounce import Debouncer
|
||||||
from homeassistant.helpers.device_registry import DeviceInfo
|
from homeassistant.helpers.device_registry import DeviceInfo
|
||||||
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
|
||||||
|
|
||||||
from .const import DOMAIN, MANUFACTURER, TIMEOUT_SECONDS
|
from .const import DOMAIN, MANUFACTURER, TIMEOUT_SECONDS
|
||||||
|
from .types import RainbirdConfigEntry
|
||||||
|
|
||||||
UPDATE_INTERVAL = datetime.timedelta(minutes=1)
|
UPDATE_INTERVAL = datetime.timedelta(minutes=1)
|
||||||
# The calendar data requires RPCs for each program/zone, and the data rarely
|
# The calendar data requires RPCs for each program/zone, and the data rarely
|
||||||
@ -140,7 +140,7 @@ class RainbirdUpdateCoordinator(DataUpdateCoordinator[RainbirdDeviceState]):
|
|||||||
class RainbirdScheduleUpdateCoordinator(DataUpdateCoordinator[Schedule]):
|
class RainbirdScheduleUpdateCoordinator(DataUpdateCoordinator[Schedule]):
|
||||||
"""Coordinator for rainbird irrigation schedule calls."""
|
"""Coordinator for rainbird irrigation schedule calls."""
|
||||||
|
|
||||||
config_entry: ConfigEntry
|
config_entry: RainbirdConfigEntry
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
|
@ -1,13 +1,20 @@
|
|||||||
"""Types for Rain Bird integration."""
|
"""Types for Rain Bird integration."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
from pyrainbird.async_client import AsyncRainbirdController
|
from pyrainbird.async_client import AsyncRainbirdController
|
||||||
from pyrainbird.data import ModelAndVersion
|
from pyrainbird.data import ModelAndVersion
|
||||||
|
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
|
|
||||||
from .coordinator import RainbirdScheduleUpdateCoordinator, RainbirdUpdateCoordinator
|
if TYPE_CHECKING:
|
||||||
|
from .coordinator import (
|
||||||
|
RainbirdScheduleUpdateCoordinator,
|
||||||
|
RainbirdUpdateCoordinator,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
Loading…
x
Reference in New Issue
Block a user