mirror of
https://github.com/tiqi-group/pydase.git
synced 2025-06-05 13:10:41 +02:00
updates / fixes method serialization tests
This commit is contained in:
parent
a72a551f54
commit
a7ce321506
@ -6,9 +6,11 @@ import pydase
|
|||||||
import pydase.units as u
|
import pydase.units as u
|
||||||
import pytest
|
import pytest
|
||||||
from pydase.components.coloured_enum import ColouredEnum
|
from pydase.components.coloured_enum import ColouredEnum
|
||||||
|
from pydase.data_service.task_manager import TaskStatus
|
||||||
from pydase.utils.serializer import (
|
from pydase.utils.serializer import (
|
||||||
SerializationPathError,
|
SerializationPathError,
|
||||||
dump,
|
dump,
|
||||||
|
frontend,
|
||||||
get_nested_dict_by_path,
|
get_nested_dict_by_path,
|
||||||
get_next_level_dict_by_key,
|
get_next_level_dict_by_key,
|
||||||
serialized_dict_is_nested_object,
|
serialized_dict_is_nested_object,
|
||||||
@ -133,29 +135,34 @@ async def test_method_serialization() -> None:
|
|||||||
def some_method(self) -> str:
|
def some_method(self) -> str:
|
||||||
return "some method"
|
return "some method"
|
||||||
|
|
||||||
async def some_task(self, sleep_time: int) -> None:
|
async def some_task(self) -> None:
|
||||||
while True:
|
while True:
|
||||||
await asyncio.sleep(sleep_time)
|
await asyncio.sleep(10)
|
||||||
|
|
||||||
instance = ClassWithMethod()
|
instance = ClassWithMethod()
|
||||||
instance.start_some_task(10) # type: ignore
|
instance.start_some_task() # type: ignore
|
||||||
|
|
||||||
assert dump(instance)["value"] == {
|
assert dump(instance)["value"] == {
|
||||||
"some_method": {
|
"some_method": {
|
||||||
"async": False,
|
|
||||||
"doc": None,
|
|
||||||
"parameters": {},
|
|
||||||
"readonly": True,
|
|
||||||
"type": "method",
|
"type": "method",
|
||||||
"value": None,
|
"value": None,
|
||||||
|
"readonly": True,
|
||||||
|
"doc": None,
|
||||||
|
"async": False,
|
||||||
|
"signature": {"parameters": {}, "return_annotation": {}},
|
||||||
|
"frontend_render": False,
|
||||||
},
|
},
|
||||||
"some_task": {
|
"some_task": {
|
||||||
"async": True,
|
|
||||||
"doc": None,
|
|
||||||
"parameters": {"sleep_time": "int"},
|
|
||||||
"readonly": True,
|
|
||||||
"type": "method",
|
"type": "method",
|
||||||
"value": {"sleep_time": 10},
|
"value": TaskStatus.RUNNING.name,
|
||||||
|
"readonly": True,
|
||||||
|
"doc": None,
|
||||||
|
"async": True,
|
||||||
|
"signature": {
|
||||||
|
"parameters": {},
|
||||||
|
"return_annotation": {},
|
||||||
|
},
|
||||||
|
"frontend_render": True,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -173,28 +180,79 @@ def test_methods_with_type_hints() -> None:
|
|||||||
assert dump(method_without_type_hint) == {
|
assert dump(method_without_type_hint) == {
|
||||||
"async": False,
|
"async": False,
|
||||||
"doc": None,
|
"doc": None,
|
||||||
"parameters": {"arg_without_type_hint": None},
|
"signature": {
|
||||||
|
"parameters": {
|
||||||
|
"arg_without_type_hint": {
|
||||||
|
"annotation": "<class 'inspect._empty'>",
|
||||||
|
"default": {},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"return_annotation": {},
|
||||||
|
},
|
||||||
"readonly": True,
|
"readonly": True,
|
||||||
"type": "method",
|
"type": "method",
|
||||||
"value": None,
|
"value": None,
|
||||||
|
"frontend_render": False,
|
||||||
}
|
}
|
||||||
|
|
||||||
assert dump(method_with_type_hint) == {
|
assert dump(method_with_type_hint) == {
|
||||||
"async": False,
|
|
||||||
"doc": None,
|
|
||||||
"parameters": {"some_argument": "int"},
|
|
||||||
"readonly": True,
|
|
||||||
"type": "method",
|
"type": "method",
|
||||||
"value": None,
|
"value": None,
|
||||||
|
"readonly": True,
|
||||||
|
"doc": None,
|
||||||
|
"async": False,
|
||||||
|
"signature": {
|
||||||
|
"parameters": {
|
||||||
|
"some_argument": {"annotation": "<class 'int'>", "default": {}}
|
||||||
|
},
|
||||||
|
"return_annotation": {},
|
||||||
|
},
|
||||||
|
"frontend_render": False,
|
||||||
|
}
|
||||||
|
assert dump(method_with_union_type_hint) == {
|
||||||
|
"type": "method",
|
||||||
|
"value": None,
|
||||||
|
"readonly": True,
|
||||||
|
"doc": None,
|
||||||
|
"async": False,
|
||||||
|
"signature": {
|
||||||
|
"parameters": {
|
||||||
|
"some_argument": {"annotation": "int | float", "default": {}}
|
||||||
|
},
|
||||||
|
"return_annotation": {},
|
||||||
|
},
|
||||||
|
"frontend_render": False,
|
||||||
}
|
}
|
||||||
|
|
||||||
assert dump(method_with_union_type_hint) == {
|
|
||||||
"async": False,
|
def test_exposed_function_serialization() -> None:
|
||||||
"doc": None,
|
class MyService(pydase.DataService):
|
||||||
"parameters": {"some_argument": "int | float"},
|
@frontend
|
||||||
"readonly": True,
|
def some_method(self) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
|
@frontend
|
||||||
|
def some_function() -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
|
assert dump(MyService().some_method) == {
|
||||||
"type": "method",
|
"type": "method",
|
||||||
"value": None,
|
"value": None,
|
||||||
|
"readonly": True,
|
||||||
|
"doc": None,
|
||||||
|
"async": False,
|
||||||
|
"signature": {"parameters": {}, "return_annotation": {}},
|
||||||
|
"frontend_render": True,
|
||||||
|
}
|
||||||
|
|
||||||
|
assert dump(some_function) == {
|
||||||
|
"type": "method",
|
||||||
|
"value": None,
|
||||||
|
"readonly": True,
|
||||||
|
"doc": None,
|
||||||
|
"async": False,
|
||||||
|
"signature": {"parameters": {}, "return_annotation": {}},
|
||||||
|
"frontend_render": True,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -224,6 +282,7 @@ def test_list_serialization() -> None:
|
|||||||
"doc": None,
|
"doc": None,
|
||||||
"readonly": False,
|
"readonly": False,
|
||||||
"type": "DataService",
|
"type": "DataService",
|
||||||
|
"name": "MySubclass",
|
||||||
"value": {
|
"value": {
|
||||||
"bool_attr": {
|
"bool_attr": {
|
||||||
"doc": None,
|
"doc": None,
|
||||||
@ -268,6 +327,7 @@ def test_dict_serialization() -> None:
|
|||||||
"type": "dict",
|
"type": "dict",
|
||||||
"value": {
|
"value": {
|
||||||
"DataService_key": {
|
"DataService_key": {
|
||||||
|
"name": "MyClass",
|
||||||
"doc": None,
|
"doc": None,
|
||||||
"readonly": False,
|
"readonly": False,
|
||||||
"type": "DataService",
|
"type": "DataService",
|
||||||
@ -317,9 +377,14 @@ def test_derived_data_service_serialization() -> None:
|
|||||||
class DerivedService(BaseService):
|
class DerivedService(BaseService):
|
||||||
...
|
...
|
||||||
|
|
||||||
base_instance = BaseService()
|
base_service_serialization = dump(BaseService())
|
||||||
service_instance = DerivedService()
|
derived_service_serialization = dump(DerivedService())
|
||||||
assert service_instance.serialize() == base_instance.serialize()
|
|
||||||
|
# Names of the classes obviously differ
|
||||||
|
base_service_serialization.pop("name")
|
||||||
|
derived_service_serialization.pop("name")
|
||||||
|
|
||||||
|
assert base_service_serialization == derived_service_serialization
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
Loading…
x
Reference in New Issue
Block a user