diff options
Diffstat (limited to 'persistent_state.py')
| -rw-r--r-- | persistent_state.py | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/persistent_state.py b/persistent_state.py deleted file mode 100644 index 1607b5e..0000000 --- a/persistent_state.py +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env python3 - -import pickle -from typing import Any, Mapping - -import file_utils - - -class PersistentState(object): - """ - An object that behaves like a persistent hash map; it can be - accessed to store key-value pairs but also saved to disk and read - back from disk easily. - - """ - def __init__(self, filename: str, *, max_age_sec: int = None): - self.filename = filename - if file_utils.does_file_exist(self.filename): - if max_age_sec is not None: - age = file_utils.get_file_mtime_age_seconds(self.filename) - if age < max_age_sec: - self.state = self.load() - else: - self.state = {} - else: - self.state = self.load() - else: - self.state = {} - - def __getitem__(self, key: str) -> Any: - return self.state.get(key, "") - - def __setitem__(self, key: str, value: Any): - self.state[key] = value - - def __delitem__(self, key: str): - del self.state[key] - - def __iter__(self): - return iter(self.state) - - def __len__(self): - return len(self.state) - - def save(self) -> None: - with open(self.filename, 'wb') as f: - pickle.dump(self.state, f, pickle.HIGHEST_PROTOCOL) - - def load(self) -> Mapping[str, Any]: - with open(self.filename, 'rb') as f: - return(pickle.load(f)) |
