updates property dependencies when changing to an observable object

This commit is contained in:
Mose Müller 2023-12-05 14:45:36 +01:00
parent 4bd0092fbf
commit 3169531a24
2 changed files with 7 additions and 0 deletions

View File

@ -4,6 +4,7 @@ from copy import deepcopy
from typing import Any from typing import Any
from pydase.data_service.state_manager import StateManager 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 ( from pydase.observer_pattern.observer.property_observer import (
PropertyObserver, PropertyObserver,
) )
@ -37,6 +38,9 @@ class DataServiceObserver(PropertyObserver):
for callback in self._notification_callbacks: for callback in self._notification_callbacks:
callback(full_access_path, value, cached_value_dict) 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) self._notify_dependent_property_changes(full_access_path)
def _update_cache_value( def _update_cache_value(

View File

@ -29,6 +29,9 @@ def get_property_dependencies(prop: property, prefix: str = "") -> list[str]:
class PropertyObserver(Observer): class PropertyObserver(Observer):
def __init__(self, observable: Observable) -> None: def __init__(self, observable: Observable) -> None:
super().__init__(observable) super().__init__(observable)
self._update_property_deps_dict()
def _update_property_deps_dict(self) -> None:
self.property_deps_dict = reverse_dict( self.property_deps_dict = reverse_dict(
self._get_properties_and_their_dependencies(self.observable) self._get_properties_and_their_dependencies(self.observable)
) )