From a83e0c6c7f6d38f28e2bf2bedb3774f0e502aab7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mose=20M=C3=BCller?= Date: Thu, 16 Nov 2023 09:42:41 +0100 Subject: [PATCH 1/3] only update type value in serialized dict if its not a method --- src/pydase/server/server.py | 7 ++++++- src/pydase/utils/serializer.py | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/pydase/server/server.py b/src/pydase/server/server.py index 7046603..924ebd2 100644 --- a/src/pydase/server/server.py +++ b/src/pydase/server/server.py @@ -311,8 +311,13 @@ class Server: get_nested_dict_by_path(self._state_manager.cache, full_access_path) ) serialized_value = dump(value) + + if cached_value_dict["type"] != "method": + cached_value_dict["type"] = serialized_value["type"] + else: + logger.debug("Got method") + cached_value_dict["value"] = serialized_value["value"] - cached_value_dict["type"] = serialized_value["type"] async def notify() -> None: try: diff --git a/src/pydase/utils/serializer.py b/src/pydase/utils/serializer.py index ece26c4..d217718 100644 --- a/src/pydase/utils/serializer.py +++ b/src/pydase/utils/serializer.py @@ -259,8 +259,9 @@ def set_nested_value_by_path( # setting the new value serialized_value = dump(value) if "readonly" in current_dict: + if current_dict["type"] != "method": + current_dict["type"] = serialized_value["type"] current_dict["value"] = serialized_value["value"] - current_dict["type"] = serialized_value["type"] else: current_dict.update(serialized_value) From ebb8b4be8b830e1314dae96fa61bce279d160fed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mose=20M=C3=BCller?= Date: Thu, 16 Nov 2023 10:22:13 +0100 Subject: [PATCH 2/3] adds cache test for task status update --- tests/data_service/test_data_service_cache.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/data_service/test_data_service_cache.py b/tests/data_service/test_data_service_cache.py index 35dd400..d457b2d 100644 --- a/tests/data_service/test_data_service_cache.py +++ b/tests/data_service/test_data_service_cache.py @@ -23,3 +23,20 @@ def test_nested_attributes_cache_callback() -> None: test_service.class_attr.name = "Ciao" assert get_nested_dict_by_path(cache.cache, "class_attr.name")["value"] == "Ciao" + + +def test_task_status_update() -> None: + class ServiceClass(pydase.DataService): + name = "World" + + async def my_method(self) -> None: + pass + + test_service = ServiceClass() + cache = DataServiceCache(test_service) + assert get_nested_dict_by_path(cache.cache, "my_method")["type"] == "method" + assert get_nested_dict_by_path(cache.cache, "my_method")["value"] is None + + test_service.start_my_method() # type: ignore + assert get_nested_dict_by_path(cache.cache, "my_method")["type"] == "method" + assert get_nested_dict_by_path(cache.cache, "my_method")["value"] == {} From abd77e053dc406b68477b864b99cce8b403ff83b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mose=20M=C3=BCller?= Date: Thu, 16 Nov 2023 10:23:53 +0100 Subject: [PATCH 3/3] removes debug msg --- src/pydase/server/server.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/pydase/server/server.py b/src/pydase/server/server.py index 924ebd2..55fcbd5 100644 --- a/src/pydase/server/server.py +++ b/src/pydase/server/server.py @@ -314,8 +314,6 @@ class Server: if cached_value_dict["type"] != "method": cached_value_dict["type"] = serialized_value["type"] - else: - logger.debug("Got method") cached_value_dict["value"] = serialized_value["value"]