From fd4943c52846ae47f3ebb569d83dde8ce5f18fe8 Mon Sep 17 00:00:00 2001 From: Aaron Bach Date: Fri, 28 Jan 2022 22:30:54 -0700 Subject: [PATCH] Code review --- homeassistant/components/diagnostics/util.py | 23 ++++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) 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