mirror of
https://github.com/tiqi-group/pydase.git
synced 2025-04-20 08:20:02 +02:00
using helper function to get component class names
The type of the DataService instance (and instances of derived classes) should always be "DataService" unless it is a component. Also changing some logic.
This commit is contained in:
parent
304f2a7d91
commit
d8aa944e6d
@ -9,10 +9,14 @@ import rpyc
|
|||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
import pydase.units as u
|
import pydase.units as u
|
||||||
|
from pydase.data_service.abstract_data_service import AbstractDataService
|
||||||
|
from pydase.data_service.callback_manager import CallbackManager
|
||||||
|
from pydase.data_service.task_manager import TaskManager
|
||||||
from pydase.utils.helpers import (
|
from pydase.utils.helpers import (
|
||||||
convert_arguments_to_hinted_types,
|
convert_arguments_to_hinted_types,
|
||||||
generate_paths_from_DataService_dict,
|
generate_paths_from_DataService_dict,
|
||||||
get_class_and_instance_attributes,
|
get_class_and_instance_attributes,
|
||||||
|
get_component_class_names,
|
||||||
get_nested_value_by_path_and_key,
|
get_nested_value_by_path_and_key,
|
||||||
get_object_attr_from_path,
|
get_object_attr_from_path,
|
||||||
parse_list_attr_and_index,
|
parse_list_attr_and_index,
|
||||||
@ -22,10 +26,6 @@ from pydase.utils.warnings import (
|
|||||||
warn_if_instance_class_does_not_inherit_from_DataService,
|
warn_if_instance_class_does_not_inherit_from_DataService,
|
||||||
)
|
)
|
||||||
|
|
||||||
from .abstract_data_service import AbstractDataService
|
|
||||||
from .callback_manager import CallbackManager
|
|
||||||
from .task_manager import TaskManager
|
|
||||||
|
|
||||||
|
|
||||||
def process_callable_attribute(attr: Any, args: dict[str, Any]) -> Any:
|
def process_callable_attribute(attr: Any, args: dict[str, Any]) -> Any:
|
||||||
converted_args_or_error_msg = convert_arguments_to_hinted_types(
|
converted_args_or_error_msg = convert_arguments_to_hinted_types(
|
||||||
@ -226,7 +226,7 @@ class DataService(rpyc.Service, AbstractDataService):
|
|||||||
if isinstance(value, DataService):
|
if isinstance(value, DataService):
|
||||||
result[key] = {
|
result[key] = {
|
||||||
"type": type(value).__name__
|
"type": type(value).__name__
|
||||||
if type(value).__name__ in ("NumberSlider")
|
if type(value).__name__ in get_component_class_names()
|
||||||
else "DataService",
|
else "DataService",
|
||||||
"value": value.serialize(),
|
"value": value.serialize(),
|
||||||
"readonly": False,
|
"readonly": False,
|
||||||
@ -237,10 +237,10 @@ class DataService(rpyc.Service, AbstractDataService):
|
|||||||
"type": "list",
|
"type": "list",
|
||||||
"value": [
|
"value": [
|
||||||
{
|
{
|
||||||
"type": "DataService"
|
"type": type(item).__name__
|
||||||
if isinstance(item, DataService)
|
if not isinstance(item, DataService)
|
||||||
and type(item).__name__ not in ("NumberSlider")
|
or type(item).__name__ in get_component_class_names()
|
||||||
else type(item).__name__,
|
else "DataService",
|
||||||
"value": item.serialize()
|
"value": item.serialize()
|
||||||
if isinstance(item, DataService)
|
if isinstance(item, DataService)
|
||||||
else item,
|
else item,
|
||||||
|
@ -309,3 +309,18 @@ def parse_list_attr_and_index(attr_string: str) -> tuple[str, Optional[int]]:
|
|||||||
attr_name, idx = attr_string[:-1].split("[")
|
attr_name, idx = attr_string[:-1].split("[")
|
||||||
index = int(idx)
|
index = int(idx)
|
||||||
return attr_name, index
|
return attr_name, index
|
||||||
|
|
||||||
|
|
||||||
|
def get_component_class_names() -> list[str]:
|
||||||
|
"""
|
||||||
|
Returns the names of the component classes in a list.
|
||||||
|
|
||||||
|
It takes the names from the pydase/components/__init__.py file, so this file should
|
||||||
|
always be up-to-date with the currently available components.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
list[str]: List of component class names
|
||||||
|
"""
|
||||||
|
import pydase.components
|
||||||
|
|
||||||
|
return pydase.components.__all__
|
||||||
|
Loading…
x
Reference in New Issue
Block a user