Home Assistant Unofficial Reference 2024.12.1
diagnostics.py
Go to the documentation of this file.
1 """SFR Box diagnostics platform."""
2 
3 from __future__ import annotations
4 
5 import dataclasses
6 from typing import TYPE_CHECKING, Any
7 
8 from homeassistant.components.diagnostics import async_redact_data
9 from homeassistant.config_entries import ConfigEntry
10 from homeassistant.core import HomeAssistant
11 
12 from .const import DOMAIN
13 from .models import DomainData
14 
15 if TYPE_CHECKING:
16  from _typeshed import DataclassInstance
17 
18 TO_REDACT = {"mac_addr", "serial_number", "ip_addr", "ipv6_addr"}
19 
20 
21 def _async_redact_data(obj: DataclassInstance | None) -> dict[str, Any] | None:
22  if obj is None:
23  return None
24  return async_redact_data(dataclasses.asdict(obj), TO_REDACT)
25 
26 
28  hass: HomeAssistant, entry: ConfigEntry
29 ) -> dict[str, Any]:
30  """Return diagnostics for a config entry."""
31  data: DomainData = hass.data[DOMAIN][entry.entry_id]
32 
33  return {
34  "entry": {
35  "title": entry.title,
36  "data": dict(entry.data),
37  },
38  "data": {
39  "dsl": _async_redact_data(await data.system.box.dsl_get_info()),
40  "ftth": _async_redact_data(await data.system.box.ftth_get_info()),
41  "system": _async_redact_data(await data.system.box.system_get_info()),
42  "wan": _async_redact_data(await data.system.box.wan_get_info()),
43  },
44  }
dict async_redact_data(Mapping data, Iterable[Any] to_redact)
Definition: util.py:14
dict[str, Any]|None _async_redact_data(DataclassInstance|None obj)
Definition: diagnostics.py:21
dict[str, Any] async_get_config_entry_diagnostics(HomeAssistant hass, ConfigEntry entry)
Definition: diagnostics.py:29