in src/commons/log_helper.py [0:0]
def hide_secret_values(obj: JT, secret_keys: set[str] | None = None,
replacement: str = '****') -> JT:
"""
Does not change the incoming object, creates a new one. The event after
this function is just supposed to be printed.
:param obj:
:param secret_keys:
:param replacement:
:return:
"""
if not secret_keys:
secret_keys = SECRET_KEYS
match obj:
case dict():
res = {}
for k, v in obj.items():
if k in secret_keys:
res[k] = replacement
else:
res[k] = hide_secret_values(v, secret_keys, replacement)
return res
case list():
return [
hide_secret_values(v, secret_keys, replacement) for v in obj
]
case str():
try:
return hide_secret_values(
json.loads(obj),
secret_keys,
replacement
)
except json.JSONDecodeError:
return obj
case _:
return obj