From 81f2281002d08051cf68e5d231d0085b0256ecad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mose=20M=C3=BCller?= Date: Wed, 25 Oct 2023 16:33:29 +0200 Subject: [PATCH] fix: autostart_tasks capbability in sub-classes --- src/pydase/data_service/task_manager.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/pydase/data_service/task_manager.py b/src/pydase/data_service/task_manager.py index 1089453..7ac7cd7 100644 --- a/src/pydase/data_service/task_manager.py +++ b/src/pydase/data_service/task_manager.py @@ -7,6 +7,10 @@ from collections.abc import Callable from functools import wraps from typing import TYPE_CHECKING, Any, TypedDict +from pydase.data_service.abstract_data_service import AbstractDataService +from pydase.data_service.data_service_list import DataServiceList +from pydase.utils.helpers import get_class_and_instance_attributes + if TYPE_CHECKING: from .data_service import DataService @@ -110,6 +114,16 @@ class TaskManager: f"No start method found for service '{service_name}'" ) + attrs = get_class_and_instance_attributes(self.service) + + for _, attr_value in attrs.items(): + if isinstance(attr_value, AbstractDataService): + attr_value._task_manager.start_autostart_tasks() + elif isinstance(attr_value, DataServiceList): + for i, item in enumerate(attr_value): + if isinstance(item, AbstractDataService): + item._task_manager.start_autostart_tasks() + def _make_stop_task(self, name: str) -> Callable[..., Any]: """ Factory function to create a 'stop_task' function for a running task.