1 """DataUpdateCoordinator for Linear."""
3 from __future__
import annotations
5 from collections.abc
import Awaitable, Callable
6 from dataclasses
import dataclass
7 from datetime
import timedelta
11 from linear_garage_door
import Linear
12 from linear_garage_door.errors
import InvalidLoginError
20 _LOGGER = logging.getLogger(__name__)
25 """Linear device dataclass."""
28 subdevices: dict[str, dict[str, str]]
32 """DataUpdateCoordinator for Linear."""
34 _devices: list[dict[str, Any]] |
None =
None
35 config_entry: ConfigEntry
37 def __init__(self, hass: HomeAssistant) ->
None:
38 """Initialize DataUpdateCoordinator for Linear."""
42 name=
"Linear Garage Door",
48 """Get the data for Linear."""
50 async
def update_data(linear: Linear) -> dict[str, Any]:
57 device_id =
str(device[
"id"])
58 state = await linear.get_device_state(device_id)
62 return await self.execute(update_data)
64 async
def execute[_T](self, func: Callable[[Linear], Awaitable[_T]]) -> _T:
65 """Execute an API call."""
71 device_id=self.
config_entryconfig_entry.data[
"device_id"],
74 except InvalidLoginError
as err:
77 ==
"Login error: Login provided is invalid, please check the email and password"
79 raise ConfigEntryAuthFailed
from err
80 raise ConfigEntryNotReady
from err
81 result = await func(linear)
dict[str, LinearDevice] _async_update_data(self)
None __init__(self, HomeAssistant hass)
def execute(hass, filename, source, data=None, return_response=False)
aiohttp.ClientSession async_get_clientsession(HomeAssistant hass, bool verify_ssl=True, socket.AddressFamily family=socket.AF_UNSPEC, ssl_util.SSLCipherList ssl_cipher=ssl_util.SSLCipherList.PYTHON_DEFAULT)