Home Assistant Unofficial Reference 2024.12.1
trace.py
Go to the documentation of this file.
1 """Trace support for script."""
2 
3 from __future__ import annotations
4 
5 from collections.abc import Iterator
6 from contextlib import contextmanager
7 from typing import Any
8 
10  CONF_STORED_TRACES,
11  ActionTrace,
12  async_store_trace,
13 )
14 from homeassistant.core import Context, HomeAssistant
15 
16 from .const import DOMAIN
17 
18 
19 class ScriptTrace(ActionTrace):
20  """Container for script trace."""
21 
22  _domain = DOMAIN
23 
24 
25 @contextmanager
27  hass: HomeAssistant,
28  item_id: str,
29  config: dict[str, Any] | None,
30  blueprint_inputs: dict[str, Any] | None,
31  context: Context,
32  trace_config: dict[str, Any],
33 ) -> Iterator[ScriptTrace]:
34  """Trace execution of a script."""
35  trace = ScriptTrace(item_id, config, blueprint_inputs, context)
36  async_store_trace(hass, trace, trace_config[CONF_STORED_TRACES])
37 
38  try:
39  yield trace
40  except Exception as ex:
41  if item_id:
42  trace.set_error(ex)
43  raise
44  finally:
45  if item_id:
46  trace.finished()
Iterator[ScriptTrace] trace_script(HomeAssistant hass, str item_id, dict[str, Any]|None config, dict[str, Any]|None blueprint_inputs, Context context, dict[str, Any] trace_config)
Definition: trace.py:33
None async_store_trace(HomeAssistant hass, ActionTrace trace, int stored_traces)
Definition: util.py:83