From 6a67081c7394285170d4420ace6794758b1fa925 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20K=C3=BCnzel?= <simonk@fsmpi.rwth-aachen.de> Date: Sun, 13 Oct 2024 19:06:18 +0200 Subject: [PATCH] Fix context serialization bug --- src/videoag_common/api_object/__init__.py | 1 + src/videoag_common/api_object/object.py | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/videoag_common/api_object/__init__.py b/src/videoag_common/api_object/__init__.py index 8617f6f..52283ca 100644 --- a/src/videoag_common/api_object/__init__.py +++ b/src/videoag_common/api_object/__init__.py @@ -6,5 +6,6 @@ from .object import ( VisibilityApiObject, api_mapped, api_include_in_data, + NoSerializationContext ) from .object_class import ApiObjectClass diff --git a/src/videoag_common/api_object/object.py b/src/videoag_common/api_object/object.py index 341600b..bd27778 100644 --- a/src/videoag_common/api_object/object.py +++ b/src/videoag_common/api_object/object.py @@ -37,6 +37,22 @@ def api_include_in_data( return decorator +class NoSerializationContext(dict): + """ + A dict which can be used as a context for serialize() to prevent any serialization of objects of a specific type. + This dict pretends like all keys are already present. Actually retrieving or updating an item throws an error + """ + + def __setitem__(self, __key, __value): + raise Exception("Not supported") + + def __getitem__(self, __key): + raise Exception("Not supported") + + def __contains__(self, __key): + return True + + API_VALUE_OBJECT_CLASSES_BY_ID: dict[str, type["ApiValueObject"]] = {} _disable_value_object_registration = False -- GitLab