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 pydase.utils.serialization.serializer import (
SerializationPathError,
SerializedObject,
get_nested_dict_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:
try:
return get_nested_dict_by_path(
cast(dict[str, SerializedObject], self._cache["value"]),
full_access_path,
)
except (SerializationPathError, KeyError):
return {
"full_access_path": full_access_path,
"value": None,
"type": "None",
"doc": None,
"readonly": False,
}
return get_nested_dict_by_path(
cast(dict[str, SerializedObject], self._cache["value"]),
full_access_path,
)

View File

@ -9,7 +9,11 @@ from pydase.observer_pattern.observer.property_observer import (
PropertyObserver,
)
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__)
@ -29,17 +33,27 @@ class DataServiceObserver(PropertyObserver):
for changing_attribute in self.changing_attributes
):
return
cached_value_dict: SerializedObject
cached_value_dict = deepcopy(
self.state_manager._data_service_cache.get_value_dict_from_cache(
full_access_path
try:
cached_value_dict = deepcopy(
self.state_manager._data_service_cache.get_value_dict_from_cache(
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")
if (
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)

View File

@ -157,9 +157,18 @@ class StateManager:
for path in generate_serialized_data_paths(json_dict):
if self.__is_loadable_state_attribute(path):
nested_json_dict = get_nested_dict_by_path(json_dict, path)
nested_class_dict = self._data_service_cache.get_value_dict_from_cache(
path
)
try:
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"]
class_attr_value_type = nested_class_dict.get("type", None)