1 """The history_stats component."""
3 from __future__
import annotations
5 from datetime
import timedelta
11 async_remove_stale_devices_links_keep_entity_device,
15 from .const
import CONF_DURATION, CONF_END, CONF_START, PLATFORMS
16 from .coordinator
import HistoryStatsUpdateCoordinator
17 from .data
import HistoryStats
19 type HistoryStatsConfigEntry = ConfigEntry[HistoryStatsUpdateCoordinator]
23 hass: HomeAssistant, entry: HistoryStatsConfigEntry
25 """Set up History stats from a config entry."""
27 entity_id: str = entry.options[CONF_ENTITY_ID]
28 entity_states: list[str] = entry.options[CONF_STATE]
29 start: str |
None = entry.options.get(CONF_START)
30 end: str |
None = entry.options.get(CONF_END)
32 duration: timedelta |
None =
None
33 if duration_dict := entry.options.get(CONF_DURATION):
40 Template(start, hass)
if start
else None,
41 Template(end, hass)
if end
else None,
45 await coordinator.async_config_entry_first_refresh()
46 entry.runtime_data = coordinator
51 entry.options[CONF_ENTITY_ID],
54 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
55 entry.async_on_unload(entry.add_update_listener(update_listener))
61 hass: HomeAssistant, entry: HistoryStatsConfigEntry
63 """Unload History stats config entry."""
64 return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
68 """Handle options update."""
69 await hass.config_entries.async_reload(entry.entry_id)
None update_listener(HomeAssistant hass, ConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, HistoryStatsConfigEntry entry)
bool async_setup_entry(HomeAssistant hass, HistoryStatsConfigEntry entry)
None async_remove_stale_devices_links_keep_entity_device(HomeAssistant hass, str entry_id, str source_entity_id_or_uuid)