mirror of
https://github.com/tiqi-group/pydase.git
synced 2025-06-07 05:50:41 +02:00
StateManager: replaces _data_service_cache with cache_manager
- _data_service_cache -> cache_manager - removes cache property - replaces get_nested_dict_by_path with cache_manager.get_value_dict_from_cache where possible
This commit is contained in:
parent
ad0f9420d9
commit
817afc610a
@ -37,7 +37,7 @@ class DataServiceObserver(PropertyObserver):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
cached_value_dict = deepcopy(
|
cached_value_dict = deepcopy(
|
||||||
self.state_manager._data_service_cache.get_value_dict_from_cache(
|
self.state_manager.cache_manager.get_value_dict_from_cache(
|
||||||
full_access_path
|
full_access_path
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -60,7 +60,7 @@ class DataServiceObserver(PropertyObserver):
|
|||||||
self._update_cache_value(full_access_path, value, cached_value_dict)
|
self._update_cache_value(full_access_path, value, cached_value_dict)
|
||||||
|
|
||||||
cached_value_dict = deepcopy(
|
cached_value_dict = deepcopy(
|
||||||
self.state_manager._data_service_cache.get_value_dict_from_cache(
|
self.state_manager.cache_manager.get_value_dict_from_cache(
|
||||||
full_access_path
|
full_access_path
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -93,7 +93,7 @@ class DataServiceObserver(PropertyObserver):
|
|||||||
value_dict["type"],
|
value_dict["type"],
|
||||||
cached_value_dict["type"],
|
cached_value_dict["type"],
|
||||||
)
|
)
|
||||||
self.state_manager._data_service_cache.update_cache(
|
self.state_manager.cache_manager.update_cache(
|
||||||
full_access_path,
|
full_access_path,
|
||||||
value,
|
value,
|
||||||
)
|
)
|
||||||
|
@ -113,19 +113,12 @@ class StateManager:
|
|||||||
self.filename = filename
|
self.filename = filename
|
||||||
|
|
||||||
self.service = service
|
self.service = service
|
||||||
self._data_service_cache = DataServiceCache(self.service)
|
self.cache_manager = DataServiceCache(self.service)
|
||||||
|
|
||||||
@property
|
|
||||||
def cache(self) -> SerializedObject:
|
|
||||||
"""Returns the cached DataService state."""
|
|
||||||
return self._data_service_cache.cache
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def cache_value(self) -> dict[str, SerializedObject]:
|
def cache_value(self) -> dict[str, SerializedObject]:
|
||||||
"""Returns the "value" value of the DataService serialization."""
|
"""Returns the "value" value of the DataService serialization."""
|
||||||
return cast(
|
return cast(dict[str, SerializedObject], self.cache_manager.cache["value"])
|
||||||
dict[str, SerializedObject], self._data_service_cache.cache["value"]
|
|
||||||
)
|
|
||||||
|
|
||||||
def save_state(self) -> None:
|
def save_state(self) -> None:
|
||||||
"""
|
"""
|
||||||
@ -158,8 +151,8 @@ class StateManager:
|
|||||||
if self.__is_loadable_state_attribute(path):
|
if self.__is_loadable_state_attribute(path):
|
||||||
nested_json_dict = get_nested_dict_by_path(json_dict, path)
|
nested_json_dict = get_nested_dict_by_path(json_dict, path)
|
||||||
try:
|
try:
|
||||||
nested_class_dict = (
|
nested_class_dict = self.cache_manager.get_value_dict_from_cache(
|
||||||
self._data_service_cache.get_value_dict_from_cache(path)
|
path
|
||||||
)
|
)
|
||||||
except (SerializationPathError, KeyError):
|
except (SerializationPathError, KeyError):
|
||||||
nested_class_dict = {
|
nested_class_dict = {
|
||||||
@ -211,7 +204,7 @@ class StateManager:
|
|||||||
value: The new value to set for the attribute.
|
value: The new value to set for the attribute.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
current_value_dict = get_nested_dict_by_path(self.cache_value, path)
|
current_value_dict = self.cache_manager.get_value_dict_from_cache(path)
|
||||||
|
|
||||||
# This will also filter out methods as they are 'read-only'
|
# This will also filter out methods as they are 'read-only'
|
||||||
if current_value_dict["readonly"]:
|
if current_value_dict["readonly"]:
|
||||||
@ -249,7 +242,7 @@ class StateManager:
|
|||||||
path_parts = parse_full_access_path(path)
|
path_parts = parse_full_access_path(path)
|
||||||
target_obj = get_object_by_path_parts(self.service, path_parts[:-1])
|
target_obj = get_object_by_path_parts(self.service, path_parts[:-1])
|
||||||
|
|
||||||
attr_cache_type = get_nested_dict_by_path(self.cache_value, path)["type"]
|
attr_cache_type = self.cache_manager.get_value_dict_from_cache(path)["type"]
|
||||||
|
|
||||||
# De-serialize the value
|
# De-serialize the value
|
||||||
if attr_cache_type in ("ColouredEnum", "Enum"):
|
if attr_cache_type in ("ColouredEnum", "Enum"):
|
||||||
@ -296,8 +289,8 @@ class StateManager:
|
|||||||
return has_decorator
|
return has_decorator
|
||||||
|
|
||||||
try:
|
try:
|
||||||
cached_serialization_dict = get_nested_dict_by_path(
|
cached_serialization_dict = self.cache_manager.get_value_dict_from_cache(
|
||||||
self.cache_value, full_access_path
|
full_access_path
|
||||||
)
|
)
|
||||||
|
|
||||||
if cached_serialization_dict["value"] == "method":
|
if cached_serialization_dict["value"] == "method":
|
||||||
|
@ -134,7 +134,7 @@ def setup_sio_events(sio: socketio.AsyncServer, state_manager: StateManager) ->
|
|||||||
"Client [%s] requested service serialization",
|
"Client [%s] requested service serialization",
|
||||||
click.style(str(sid), fg="cyan"),
|
click.style(str(sid), fg="cyan"),
|
||||||
)
|
)
|
||||||
return state_manager.cache
|
return state_manager.cache_manager.cache
|
||||||
|
|
||||||
@sio.event
|
@sio.event
|
||||||
async def update_value(sid: str, data: UpdateDict) -> SerializedObject | None: # type: ignore
|
async def update_value(sid: str, data: UpdateDict) -> SerializedObject | None: # type: ignore
|
||||||
@ -151,9 +151,7 @@ def setup_sio_events(sio: socketio.AsyncServer, state_manager: StateManager) ->
|
|||||||
@sio.event
|
@sio.event
|
||||||
async def get_value(sid: str, access_path: str) -> SerializedObject:
|
async def get_value(sid: str, access_path: str) -> SerializedObject:
|
||||||
try:
|
try:
|
||||||
return state_manager._data_service_cache.get_value_dict_from_cache(
|
return state_manager.cache_manager.get_value_dict_from_cache(access_path)
|
||||||
access_path
|
|
||||||
)
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.exception(e)
|
logger.exception(e)
|
||||||
return dump(e)
|
return dump(e)
|
||||||
|
@ -123,7 +123,7 @@ class WebServer:
|
|||||||
self,
|
self,
|
||||||
request: aiohttp.web.Request,
|
request: aiohttp.web.Request,
|
||||||
) -> aiohttp.web.Response:
|
) -> aiohttp.web.Response:
|
||||||
return aiohttp.web.json_response(self.state_manager.cache)
|
return aiohttp.web.json_response(self.state_manager.cache_manager.cache)
|
||||||
|
|
||||||
async def _web_settings_route(
|
async def _web_settings_route(
|
||||||
self,
|
self,
|
||||||
|
@ -22,13 +22,13 @@ def test_nested_attributes_cache_callback() -> None:
|
|||||||
|
|
||||||
service_instance.name = "Peepz"
|
service_instance.name = "Peepz"
|
||||||
assert (
|
assert (
|
||||||
state_manager._data_service_cache.get_value_dict_from_cache("name")["value"]
|
state_manager.cache_manager.get_value_dict_from_cache("name")["value"]
|
||||||
== "Peepz"
|
== "Peepz"
|
||||||
)
|
)
|
||||||
|
|
||||||
service_instance.class_attr.name = "Ciao"
|
service_instance.class_attr.name = "Ciao"
|
||||||
assert (
|
assert (
|
||||||
state_manager._data_service_cache.get_value_dict_from_cache("class_attr.name")[
|
state_manager.cache_manager.get_value_dict_from_cache("class_attr.name")[
|
||||||
"value"
|
"value"
|
||||||
]
|
]
|
||||||
== "Ciao"
|
== "Ciao"
|
||||||
@ -48,24 +48,20 @@ async def test_task_status_update() -> None:
|
|||||||
DataServiceObserver(state_manager)
|
DataServiceObserver(state_manager)
|
||||||
|
|
||||||
assert (
|
assert (
|
||||||
state_manager._data_service_cache.get_value_dict_from_cache("my_method")["type"]
|
state_manager.cache_manager.get_value_dict_from_cache("my_method")["type"]
|
||||||
== "method"
|
== "method"
|
||||||
)
|
)
|
||||||
assert (
|
assert (
|
||||||
state_manager._data_service_cache.get_value_dict_from_cache("my_method")[
|
state_manager.cache_manager.get_value_dict_from_cache("my_method")["value"]
|
||||||
"value"
|
|
||||||
]
|
|
||||||
is None
|
is None
|
||||||
)
|
)
|
||||||
|
|
||||||
service_instance.start_my_method() # type: ignore
|
service_instance.start_my_method() # type: ignore
|
||||||
assert (
|
assert (
|
||||||
state_manager._data_service_cache.get_value_dict_from_cache("my_method")["type"]
|
state_manager.cache_manager.get_value_dict_from_cache("my_method")["type"]
|
||||||
== "method"
|
== "method"
|
||||||
)
|
)
|
||||||
assert (
|
assert (
|
||||||
state_manager._data_service_cache.get_value_dict_from_cache("my_method")[
|
state_manager.cache_manager.get_value_dict_from_cache("my_method")["value"]
|
||||||
"value"
|
|
||||||
]
|
|
||||||
== "RUNNING"
|
== "RUNNING"
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user