diff --git a/src/pydase/data_service/data_service_observer.py b/src/pydase/data_service/data_service_observer.py index 4989f5c..1cddb77 100644 --- a/src/pydase/data_service/data_service_observer.py +++ b/src/pydase/data_service/data_service_observer.py @@ -4,6 +4,7 @@ from copy import deepcopy from typing import Any from pydase.data_service.state_manager import StateManager +from pydase.observer_pattern.observable.observable_object import ObservableObject from pydase.observer_pattern.observer.property_observer import ( PropertyObserver, ) @@ -37,6 +38,9 @@ class DataServiceObserver(PropertyObserver): for callback in self._notification_callbacks: callback(full_access_path, value, cached_value_dict) + if isinstance(value, ObservableObject): + self._update_property_deps_dict() + self._notify_dependent_property_changes(full_access_path) def _update_cache_value( diff --git a/src/pydase/observer_pattern/observer/property_observer.py b/src/pydase/observer_pattern/observer/property_observer.py index 9298d3e..f543e0c 100644 --- a/src/pydase/observer_pattern/observer/property_observer.py +++ b/src/pydase/observer_pattern/observer/property_observer.py @@ -29,6 +29,9 @@ def get_property_dependencies(prop: property, prefix: str = "") -> list[str]: class PropertyObserver(Observer): def __init__(self, observable: Observable) -> None: super().__init__(observable) + self._update_property_deps_dict() + + def _update_property_deps_dict(self) -> None: self.property_deps_dict = reverse_dict( self._get_properties_and_their_dependencies(self.observable) )