1 """The Homeassistant Analytics integration."""
3 from __future__
import annotations
5 from dataclasses
import dataclass
7 from python_homeassistant_analytics
import (
8 HomeassistantAnalyticsClient,
9 HomeassistantAnalyticsConnectionError,
18 from .const
import CONF_TRACKED_INTEGRATIONS
19 from .coordinator
import HomeassistantAnalyticsDataUpdateCoordinator
21 PLATFORMS: list[Platform] = [Platform.SENSOR]
22 type AnalyticsInsightsConfigEntry = ConfigEntry[AnalyticsInsightsData]
25 @dataclass(frozen=True)
27 """Analytics data class."""
29 coordinator: HomeassistantAnalyticsDataUpdateCoordinator
34 hass: HomeAssistant, entry: AnalyticsInsightsConfigEntry
36 """Set up Homeassistant Analytics from a config entry."""
40 integrations = await client.get_integrations()
41 except HomeassistantAnalyticsConnectionError
as ex:
45 for integration
in entry.options[CONF_TRACKED_INTEGRATIONS]:
46 if integration
not in integrations:
47 names[integration] = integration
49 names[integration] = integrations[integration].title
53 await coordinator.async_config_entry_first_refresh()
57 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
58 entry.async_on_unload(entry.add_update_listener(update_listener))
64 hass: HomeAssistant, entry: AnalyticsInsightsConfigEntry
66 """Unload a config entry."""
67 return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
71 hass: HomeAssistant, entry: AnalyticsInsightsConfigEntry
73 """Handle options update."""
74 await hass.config_entries.async_reload(entry.entry_id)
bool async_unload_entry(HomeAssistant hass, AnalyticsInsightsConfigEntry entry)
None update_listener(HomeAssistant hass, AnalyticsInsightsConfigEntry entry)
bool async_setup_entry(HomeAssistant hass, AnalyticsInsightsConfigEntry entry)
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)