1 """Helpers to redact Google Assistant data when logging."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from functools
import partial
12 GOOGLE_MSG_TO_REDACT: dict[str, Callable[[str], str]] = {
13 "agentUserId": partial_redact,
14 "uuid": partial_redact,
15 "webhookId": partial_redact,
18 MDNS_TXT_TO_REDACT = [
28 """Redact only specified string in a list of strings."""
29 if not isinstance(x, list):
33 if not isinstance(itm, str):
36 for pattern
in to_redact:
37 if itm.startswith(pattern):
38 result.append(f
"{pattern}={REDACTED}")
46 """Redact strings from home-assistant mDNS txt records."""
51 """Redact strings from home-assistant mDNS txt records."""
52 if not isinstance(x, dict):
55 for k, v
in x.items():
56 result[k] = REDACTED
if k
in MDNS_TXT_TO_REDACT
else v
61 """Redact only a specified string."""
69 """Mask sensitive data in message."""
74 "data": partial_redact_txt_list,
75 "id": partial(partial_redact_string, to_redact=agent_user_id),
76 "texts": partial_redact_txt_list,
77 "txt": partial_redact_txt_dict,
dict async_redact_data(Mapping data, Iterable[Any] to_redact)
list[str] partial_redact_list_item(list[str] x, list[str] to_redact)
str partial_redact_string(str x, str to_redact)
dict[str, Any] async_redact_msg(dict[str, Any] msg, str agent_user_id)
dict[str, str] partial_redact_txt_dict(dict[str, str] x)
list[str] partial_redact_txt_list(list[str] x)
str partial_redact(str|Any x, int unmasked_prefix=4, int unmasked_suffix=4)