From e2ce0e9acb0adb7b6d2e8c7b6ba811a9e3f64d86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mose=20M=C3=BCller?= Date: Tue, 1 Oct 2024 07:27:27 +0200 Subject: [PATCH] adds ProxyClass serialization support --- src/pydase/utils/serialization/serializer.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/pydase/utils/serialization/serializer.py b/src/pydase/utils/serialization/serializer.py index bfc86ed..240e117 100644 --- a/src/pydase/utils/serialization/serializer.py +++ b/src/pydase/utils/serialization/serializer.py @@ -42,6 +42,8 @@ from pydase.utils.serialization.types import ( if TYPE_CHECKING: from collections.abc import Callable + from pydase.client.proxy_class import ProxyClass + logger = logging.getLogger(__name__) @@ -74,6 +76,7 @@ class Serializer: Returns: Dictionary representation of `obj`. """ + from pydase.client.client import ProxyClass result: SerializedObject @@ -83,6 +86,9 @@ class Serializer: elif isinstance(obj, datetime): result = cls._serialize_datetime(obj, access_path=access_path) + elif isinstance(obj, ProxyClass): + result = cls._serialize_proxy_class(obj, access_path=access_path) + elif isinstance(obj, AbstractDataService): result = cls._serialize_data_service(obj, access_path=access_path) @@ -322,6 +328,13 @@ class Serializer: "doc": doc, } + @classmethod + def _serialize_proxy_class( + cls, obj: ProxyClass, access_path: str = "" + ) -> SerializedDataService: + # Get serialization value from the remote service and adapt the full_access_path + return add_prefix_to_full_access_path(obj.serialize(), access_path + ".") + def dump(obj: Any) -> SerializedObject: """Serialize `obj` to a