1 """Helpers to help during startup."""
3 from __future__
import annotations
5 from collections.abc
import Callable, Coroutine
19 from .typing
import NoEventData
25 at_start_cb: Callable[[HomeAssistant], Coroutine[Any, Any,
None] |
None],
26 event_type: EventType[NoEventData],
27 check_state: Callable[[HomeAssistant], bool],
29 """Execute a job at_start_cb when Home Assistant has the wanted state.
31 The job is executed immediately if Home Assistant is in the wanted state.
32 Will wait for event specified by event_type if it isn't.
34 at_start_job =
HassJob(at_start_cb)
36 hass.async_run_hass_job(at_start_job, hass)
39 unsub: CALLBACK_TYPE |
None =
None
42 def _matched_event(event: Event) ->
None:
43 """Call the callback when Home Assistant started."""
44 hass.async_run_hass_job(at_start_job, hass)
53 unsub = hass.bus.async_listen_once(event_type, _matched_event)
60 at_start_cb: Callable[[HomeAssistant], Coroutine[Any, Any,
None] |
None],
62 """Execute a job at_start_cb when Home Assistant is starting.
64 The job is executed immediately if Home Assistant is already starting or started.
65 Will wait for EVENT_HOMEASSISTANT_START if it isn't.
68 def _is_running(hass: HomeAssistant) -> bool:
69 return hass.is_running
72 hass, at_start_cb, EVENT_HOMEASSISTANT_START, _is_running
79 at_start_cb: Callable[[HomeAssistant], Coroutine[Any, Any,
None] |
None],
81 """Execute a job at_start_cb when Home Assistant has started.
83 The job is executed immediately if Home Assistant is already started.
84 Will wait for EVENT_HOMEASSISTANT_STARTED if it isn't.
87 def _is_started(hass: HomeAssistant) -> bool:
88 return hass.state
is CoreState.running
91 hass, at_start_cb, EVENT_HOMEASSISTANT_STARTED, _is_started
CALLBACK_TYPE _async_at_core_state(HomeAssistant hass, Callable[[HomeAssistant], Coroutine[Any, Any, None]|None] at_start_cb, EventType[NoEventData] event_type, Callable[[HomeAssistant], bool] check_state)
CALLBACK_TYPE async_at_started(HomeAssistant hass, Callable[[HomeAssistant], Coroutine[Any, Any, None]|None] at_start_cb)
CALLBACK_TYPE async_at_start(HomeAssistant hass, Callable[[HomeAssistant], Coroutine[Any, Any, None]|None] at_start_cb)