Home Assistant Unofficial Reference 2024.12.1
coordinator.py
Go to the documentation of this file.
1 """Data update coordinator for the Tautulli integration."""
2 
3 from __future__ import annotations
4 
5 import asyncio
6 from datetime import timedelta
7 from typing import TYPE_CHECKING
8 
9 from pytautulli import (
10  PyTautulli,
11  PyTautulliApiActivity,
12  PyTautulliApiHomeStats,
13  PyTautulliApiUser,
14 )
15 from pytautulli.exceptions import (
16  PyTautulliAuthenticationException,
17  PyTautulliConnectionException,
18 )
19 from pytautulli.models.host_configuration import PyTautulliHostConfiguration
20 
21 from homeassistant.core import HomeAssistant
22 from homeassistant.exceptions import ConfigEntryAuthFailed
23 from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
24 
25 from .const import DOMAIN, LOGGER
26 
27 if TYPE_CHECKING:
28  from . import TautulliConfigEntry
29 
30 
32  """Data update coordinator for the Tautulli integration."""
33 
34  config_entry: TautulliConfigEntry
35 
36  def __init__(
37  self,
38  hass: HomeAssistant,
39  host_configuration: PyTautulliHostConfiguration,
40  api_client: PyTautulli,
41  ) -> None:
42  """Initialize the coordinator."""
43  super().__init__(
44  hass=hass,
45  logger=LOGGER,
46  name=DOMAIN,
47  update_interval=timedelta(seconds=10),
48  )
49  self.host_configurationhost_configuration = host_configuration
50  self.api_clientapi_client = api_client
51  self.activity: PyTautulliApiActivity | None = None
52  self.home_stats: list[PyTautulliApiHomeStats] | None = None
53  self.users: list[PyTautulliApiUser] | None = None
54 
55  async def _async_update_data(self) -> None:
56  """Get the latest data from Tautulli."""
57  try:
58  [self.activity, self.home_stats, self.users] = await asyncio.gather(
59  *[
60  self.api_clientapi_client.async_get_activity(),
61  self.api_clientapi_client.async_get_home_stats(),
62  self.api_clientapi_client.async_get_users(),
63  ]
64  )
65  except PyTautulliConnectionException as ex:
66  raise UpdateFailed(ex) from ex
67  except PyTautulliAuthenticationException as ex:
68  raise ConfigEntryAuthFailed(ex) from ex
None __init__(self, HomeAssistant hass, PyTautulliHostConfiguration host_configuration, PyTautulli api_client)
Definition: coordinator.py:41
list[str] async_get_users(HomeAssistant hass)
Definition: http.py:394