get_value_dict_from_cache does not catch exceptions any more

This commit is contained in:
Mose Müller 2024-07-29 13:29:47 +02:00
parent 6d786cd0f8
commit ad0f9420d9
3 changed files with 36 additions and 23 deletions

View File

@ -2,7 +2,6 @@ import logging
from typing import TYPE_CHECKING, Any, cast from typing import TYPE_CHECKING, Any, cast
from pydase.utils.serialization.serializer import ( from pydase.utils.serialization.serializer import (
SerializationPathError,
SerializedObject, SerializedObject,
get_nested_dict_by_path, get_nested_dict_by_path,
set_nested_value_by_path, set_nested_value_by_path,
@ -37,16 +36,7 @@ class DataServiceCache:
) )
def get_value_dict_from_cache(self, full_access_path: str) -> SerializedObject: def get_value_dict_from_cache(self, full_access_path: str) -> SerializedObject:
try:
return get_nested_dict_by_path( return get_nested_dict_by_path(
cast(dict[str, SerializedObject], self._cache["value"]), cast(dict[str, SerializedObject], self._cache["value"]),
full_access_path, full_access_path,
) )
except (SerializationPathError, KeyError):
return {
"full_access_path": full_access_path,
"value": None,
"type": "None",
"doc": None,
"readonly": False,
}

View File

@ -9,7 +9,11 @@ from pydase.observer_pattern.observer.property_observer import (
PropertyObserver, PropertyObserver,
) )
from pydase.utils.helpers import get_object_attr_from_path from pydase.utils.helpers import get_object_attr_from_path
from pydase.utils.serialization.serializer import SerializedObject, dump from pydase.utils.serialization.serializer import (
SerializationPathError,
SerializedObject,
dump,
)
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -29,17 +33,27 @@ class DataServiceObserver(PropertyObserver):
for changing_attribute in self.changing_attributes for changing_attribute in self.changing_attributes
): ):
return return
cached_value_dict: SerializedObject
try:
cached_value_dict = deepcopy( cached_value_dict = deepcopy(
self.state_manager._data_service_cache.get_value_dict_from_cache( self.state_manager._data_service_cache.get_value_dict_from_cache(
full_access_path full_access_path
) )
) )
except (SerializationPathError, KeyError):
cached_value_dict = {
"full_access_path": full_access_path,
"value": None,
"type": "None",
"doc": None,
"readonly": False,
}
cached_value = cached_value_dict.get("value") cached_value = cached_value_dict.get("value")
if ( if (
all(part[0] != "_" for part in full_access_path.split(".")) all(part[0] != "_" for part in full_access_path.split("."))
and cached_value != dump(value)["value"] and cached_value != value
): ):
logger.debug("'%s' changed to '%s'", full_access_path, value) logger.debug("'%s' changed to '%s'", full_access_path, value)

View File

@ -157,9 +157,18 @@ class StateManager:
for path in generate_serialized_data_paths(json_dict): for path in generate_serialized_data_paths(json_dict):
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)
nested_class_dict = self._data_service_cache.get_value_dict_from_cache( try:
path nested_class_dict = (
self._data_service_cache.get_value_dict_from_cache(path)
) )
except (SerializationPathError, KeyError):
nested_class_dict = {
"full_access_path": path,
"value": None,
"type": "None",
"doc": None,
"readonly": False,
}
value_type = nested_json_dict["type"] value_type = nested_json_dict["type"]
class_attr_value_type = nested_class_dict.get("type", None) class_attr_value_type = nested_class_dict.get("type", None)