From 8ac2c399085bfeced8bce8cd9177320fb5681d34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mose=20M=C3=BCller?= Date: Mon, 11 Dec 2023 12:52:58 +0100 Subject: [PATCH] fix: dont log private and protected attribute changes --- .../data_service/data_service_observer.py | 4 +++- .../test_data_service_observer.py | 20 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/pydase/data_service/data_service_observer.py b/src/pydase/data_service/data_service_observer.py index 1cddb77..afcdc2b 100644 --- a/src/pydase/data_service/data_service_observer.py +++ b/src/pydase/data_service/data_service_observer.py @@ -30,7 +30,9 @@ class DataServiceObserver(PropertyObserver): ) cached_value = cached_value_dict.get("value") - if cached_value != dump(value)["value"]: + if cached_value != dump(value)["value"] and all( + part[0] != "_" for part in full_access_path.split(".") + ): logger.debug("'%s' changed to '%s'", full_access_path, value) self._update_cache_value(full_access_path, value, cached_value_dict) diff --git a/tests/data_service/test_data_service_observer.py b/tests/data_service/test_data_service_observer.py index a15e97d..875d239 100644 --- a/tests/data_service/test_data_service_observer.py +++ b/tests/data_service/test_data_service_observer.py @@ -1,6 +1,7 @@ import logging import pydase +import pytest from pydase.data_service.data_service_observer import DataServiceObserver from pydase.data_service.state_manager import StateManager @@ -74,3 +75,22 @@ def test_dynamic_list_property_dependencies() -> None: "list_attr[0]._name": ["list_attr[0].name"], "list_attr[1]._name": ["list_attr[1].name"], } + + +def test_protected_or_private_change_logs(caplog: pytest.LogCaptureFixture) -> None: + class OtherService(pydase.DataService): + def __init__(self) -> None: + super().__init__() + self._name = "Hi" + + class MyService(pydase.DataService): + def __init__(self) -> None: + super().__init__() + self.subclass = OtherService() + + service = MyService() + state_manager = StateManager(service) + DataServiceObserver(state_manager) + + service.subclass._name = "Hello" + assert "'subclass._name' changed to 'Hello'" not in caplog.text