From 25aecabd3457deb200ab5c67d6cf910a401a5907 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Fri, 28 Jul 2023 20:49:51 -0700 Subject: [PATCH] [+] SafeNamespace --- hypy_utils/serializer.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/hypy_utils/serializer.py b/hypy_utils/serializer.py index e8aea0a..a4a011c 100644 --- a/hypy_utils/serializer.py +++ b/hypy_utils/serializer.py @@ -119,8 +119,16 @@ def json_stringify(obj: object, forced: bool = True, **kwargs) -> str: return json.dumps(obj, **args) -def jsn(s: str) -> SimpleNamespace: - return json.loads(s, object_hook=lambda d: SimpleNamespace(**d)) +class SafeNamespace(SimpleNamespace): + def __getattr__(self, attr): + try: + return super().__getattr__(attr) + except AttributeError: + return None + + +def jsn(s: str) -> SafeNamespace: + return json.loads(s, object_hook=lambda d: SafeNamespace(**d)) def ensure_dir(path: Path | str) -> Path: