diff --git a/src/accml_lib/core/bl/delta_backend.py b/src/accml_lib/core/bl/delta_backend.py index 5dd9fe9..7688743 100644 --- a/src/accml_lib/core/bl/delta_backend.py +++ b/src/accml_lib/core/bl/delta_backend.py @@ -22,6 +22,9 @@ def __repr__(self): def clear(self): self.cache = dict() + def keys(self): + return self.cache.keys() + def get(self, id, default=None): """ Todo: @@ -66,10 +69,9 @@ async def read(self, dev_id: str, prop_id: str) -> object: if not flag: return await self.backend.read(dev_id=dev_id, prop_id=prop_id) r = await self.backend.read(dev_id=dev_id, prop_id=orig_prop_id) - rcmd = ReadCommand(id=dev_id, property=prop_id) + rcmd = ReadCommand(id=dev_id, property=orig_prop_id) ref = self.cache.get(rcmd, None) if ref is None: - rcmd = ReadCommand(id=dev_id, property=prop_id) self.cache.set(rcmd, r) # to get some zero of proper type return self._calculate_delta_read(rcmd, r) @@ -95,7 +97,7 @@ async def set(self, dev_id: str, prop_id: str, value: object): if not flag: return await self.backend.set(dev_id=dev_id, prop_id=prop_id, value=value) - rcmd = ReadCommand(id=dev_id, property=prop_id) + rcmd = ReadCommand(id=dev_id, property=orig_prop_id) ref = self.cache.get(rcmd, None) if not ref: r = await self.backend.read(dev_id=dev_id, prop_id=orig_prop_id) @@ -112,5 +114,5 @@ def _calculate_delta_set(self, rcmd: ReadCommand, value): For overloading in derived classes e.g. for processing ophyd-async data """ ref = self.cache.get(rcmd, None) - assert ref is not None + assert ref is not None, f"No reference stored for {rcmd}" return value + ref