Skip to content

Commit 5ece073

Browse files
committed
remove autosave._state member
1 parent b86337a commit 5ece073

File tree

1 file changed

+9
-16
lines changed

1 file changed

+9
-16
lines changed

softioc/autosave.py

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def __init__(
4444
"call autosave.configure() with device keyword argument")
4545
self._last_saved_time = datetime.now()
4646
if not self.directory.is_dir():
47-
raise RuntimeError(f"{directory} is not a valid autosave directory")
47+
raise RuntimeError(f"{self.directory} is not a valid autosave directory")
4848
if self.backup_on_restart:
4949
self.backup_sav_file()
5050
self.get_autosave_pvs()
@@ -77,10 +77,6 @@ def remove_pv(self, pv):
7777
pv.autosave = False
7878
self._pvs.pop(pv.name, None)
7979

80-
def _get_state_from_device(self):
81-
for name, pv in self._pvs.items():
82-
self._state[name] = pv.get()
83-
8480
def _get_timestamped_backup_sav_path(self):
8581
sav_path = self._get_current_sav_path()
8682
return sav_path.parent / (
@@ -93,16 +89,13 @@ def _get_backup_save_path(self):
9389
def _get_current_sav_path(self):
9490
return self.directory / f"{self.device_name}.{SAV_SUFFIX}"
9591

96-
def _update_last_saved(self):
97-
self._last_saved_state = self._state.copy()
98-
self._last_saved_time = datetime.now()
99-
100-
def _save(self):
92+
def _save(self, state):
10193
try:
10294
for path in [self._get_current_sav_path(), self._get_backup_save_path()]:
10395
with open(path, "w") as f:
104-
json.dump(self._state, f, indent=4)
105-
self._update_last_saved()
96+
json.dump(state, f, indent=4)
97+
self._last_saved_state = state.copy() # do we need to copy?
98+
self._last_saved_time = datetime.now()
10699
except Exception as e:
107100
print(f"Could not save state to file: {e}")
108101

@@ -111,12 +104,13 @@ def save(self):
111104
print("Not saving to file as autosave adapter disabled")
112105
return
113106
timenow = datetime.now()
114-
self._get_state_from_device()
107+
state = {name: pv.get() for name, pv in self._pvs.items()}
108+
115109
if (
116110
(timenow - self._last_saved_time).total_seconds() > self.save_period
117-
and self._state != self._last_saved_state # only save if changed
111+
and state != self._last_saved_state # only save if changed
118112
):
119-
self._save()
113+
self._save(state)
120114

121115
def load(self, path = None):
122116
if not self.enabled:
@@ -134,7 +128,6 @@ def load(self, path = None):
134128
print(f"{name} is not a valid autosaved PV")
135129
continue
136130
pv.set(value)
137-
self._get_state_from_device()
138131

139132
def loop(self):
140133
if not self._pvs:

0 commit comments

Comments
 (0)