From 5b762db5356880a4dd90c154e472bb68b035731e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mose=20M=C3=BCller?= Date: Mon, 8 Apr 2024 09:24:52 +0200 Subject: [PATCH] fixes detection of property dependencies for classes inheriting from other observables Inheriting from a class that itself has defined properties, you cannot get those properties by calling vars(type(obj)). Instead, you have to go through all the classes' members and check if they are properties. You can either do this using dir(type(obj)) and get the members using getattr or just use inspect.getmembers. --- src/pydase/observer_pattern/observer/property_observer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pydase/observer_pattern/observer/property_observer.py b/src/pydase/observer_pattern/observer/property_observer.py index f543e0c..4b9819d 100644 --- a/src/pydase/observer_pattern/observer/property_observer.py +++ b/src/pydase/observer_pattern/observer/property_observer.py @@ -49,7 +49,7 @@ class PropertyObserver(Observer): def _process_observable_properties( self, obj: Observable, deps: dict[str, Any], prefix: str ) -> None: - for k, value in vars(type(obj)).items(): + for k, value in inspect.getmembers(type(obj)): prefix = ( f"{prefix}." if prefix != "" and not prefix.endswith(".") else prefix )