diff --git a/homeassistant/components/diagnostics/util.py b/homeassistant/components/diagnostics/util.py index dfb6bea7a21..f579dc1c010 100644 --- a/homeassistant/components/diagnostics/util.py +++ b/homeassistant/components/diagnostics/util.py @@ -2,7 +2,6 @@ from __future__ import annotations from collections.abc import Iterable, Mapping -from copy import deepcopy from typing import Any, TypeVar from homeassistant.core import callback @@ -18,17 +17,17 @@ def async_redact_data(data: T, to_redact: Iterable[Any]) -> T: if not isinstance(data, (Mapping, list)): return data - redacted = deepcopy(data) - - if isinstance(redacted, dict): - for key, value in redacted.items(): - if key in to_redact: - redacted[key] = REDACTED - elif isinstance(value, dict): - redacted[key] = async_redact_data(value, to_redact) - elif isinstance(value, list): - redacted[key] = [async_redact_data(item, to_redact) for item in value] - elif isinstance(redacted, list): + if isinstance(data, list): return [async_redact_data(val, to_redact) for val in data] + redacted = {**data} + + for key, value in redacted.items(): + if key in to_redact: + redacted[key] = REDACTED + elif isinstance(value, dict): + redacted[key] = async_redact_data(value, to_redact) + elif isinstance(value, list): + redacted[key] = [async_redact_data(item, to_redact) for item in value] + return redacted