Home Assistant Unofficial Reference 2024.12.1
coordinator.py
Go to the documentation of this file.
1 """Data update coordinator for Version entities."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 from awesomeversion import AwesomeVersion
8 from pyhaversion import HaVersion, HaVersionSource
9 from pyhaversion.exceptions import HaVersionException
10 
11 from homeassistant.config_entries import ConfigEntry
12 from homeassistant.core import HomeAssistant
13 from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
14 
15 from .const import DOMAIN, LOGGER, UPDATE_COORDINATOR_UPDATE_INTERVAL
16 
17 
19  """Data update coordinator for Version entities."""
20 
21  config_entry: ConfigEntry
22 
23  def __init__(
24  self,
25  hass: HomeAssistant,
26  api: HaVersion,
27  ) -> None:
28  """Initialize the coordinator."""
29  super().__init__(
30  hass=hass,
31  logger=LOGGER,
32  name=DOMAIN,
33  update_interval=UPDATE_COORDINATOR_UPDATE_INTERVAL,
34  )
35  self._api_api = api
36  self._version: AwesomeVersion | None = None
37  self._version_data_version_data: dict[str, Any] | None = None
38 
39  @property
40  def version(self) -> str | None:
41  """Return the latest version."""
42  return str(self._version) if self._version else None
43 
44  @property
45  def version_data(self) -> dict[str, Any] | None:
46  """Return the version data."""
47  if self._api_api.source == HaVersionSource.LOCAL:
48  return None
49  return self._version_data_version_data or {}
50 
51  async def _async_update_data(self) -> None:
52  """Update version data."""
53  try:
54  self._version, self._version_data_version_data = await self._api_api.get_version()
55  except HaVersionException as exception:
56  raise UpdateFailed(exception) from exception
None __init__(self, HomeAssistant hass, HaVersion api)
Definition: coordinator.py:27