projects
/
python_utils.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Cleanup
[python_utils.git]
/
persistent.py
diff --git
a/persistent.py
b/persistent.py
index 1e520bedd9ba0816692c5687114a1b106f3440d2..c902313eb4a28cb4635779f584f8775a2b646d35 100644
(file)
--- a/
persistent.py
+++ b/
persistent.py
@@
-1,11
+1,15
@@
#!/usr/bin/env python3
#!/usr/bin/env python3
-from abc import ABC, abstractmethod
+"""A Persistent is just a class with a load and save method. This
+module defines the Persistent base and a decorator that can be used to
+create a persistent singleton that autoloads and autosaves."""
+
import atexit
import datetime
import enum
import functools
import logging
import atexit
import datetime
import enum
import functools
import logging
+from abc import ABC, abstractmethod
from typing import Any
import file_utils
from typing import Any
import file_utils
@@
-64,7
+68,7
@@
def was_file_written_today(filename: str) -> bool:
return False
mtime = file_utils.get_file_mtime_as_datetime(filename)
return False
mtime = file_utils.get_file_mtime_as_datetime(filename)
- assert mtime
+ assert mtime
is not None
now = datetime.datetime.now()
return mtime.month == now.month and mtime.day == now.day and mtime.year == now.year
now = datetime.datetime.now()
return mtime.month == now.month and mtime.day == now.day and mtime.year == now.year
@@
-81,7
+85,7
@@
def was_file_written_within_n_seconds(
return False
mtime = file_utils.get_file_mtime_as_datetime(filename)
return False
mtime = file_utils.get_file_mtime_as_datetime(filename)
- assert mtime
+ assert mtime
is not None
now = datetime.datetime.now()
return (now - mtime).total_seconds() <= limit_seconds
now = datetime.datetime.now()
return (now - mtime).total_seconds() <= limit_seconds
@@
-136,34
+140,29
@@
class persistent_autoloaded_singleton(object):
# memory.
if self.instance is not None:
logger.debug(
# memory.
if self.instance is not None:
logger.debug(
- f'Returning already instantiated singleton instance of {cls.__name__}.'
+ 'Returning already instantiated singleton instance of %s.', cls.__name__
)
return self.instance
# Otherwise, try to load it from persisted state.
was_loaded = False
)
return self.instance
# Otherwise, try to load it from persisted state.
was_loaded = False
- logger.debug(
f'Attempting to load {cls.__name__} from persisted state.'
)
+ logger.debug(
'Attempting to load %s from persisted state.', cls.__name__
)
self.instance = cls.load()
if not self.instance:
msg = 'Loading from cache failed.'
logger.warning(msg)
self.instance = cls.load()
if not self.instance:
msg = 'Loading from cache failed.'
logger.warning(msg)
- logger.debug(
f'Attempting to instantiate {cls.__name__} directly.'
)
+ logger.debug(
'Attempting to instantiate %s directly.', cls.__name__
)
self.instance = cls(*args, **kwargs)
else:
self.instance = cls(*args, **kwargs)
else:
- logger.debug(
- f'Class {cls.__name__} was loaded from persisted state successfully.'
- )
+ logger.debug('Class %s was loaded from persisted state successfully.', cls.__name__)
was_loaded = True
assert self.instance is not None
if self.persist_at_shutdown is PersistAtShutdown.ALWAYS or (
was_loaded = True
assert self.instance is not None
if self.persist_at_shutdown is PersistAtShutdown.ALWAYS or (
- not was_loaded
- and self.persist_at_shutdown is PersistAtShutdown.IF_NOT_LOADED
+ not was_loaded and self.persist_at_shutdown is PersistAtShutdown.IF_NOT_LOADED
):
):
- logger.debug(
- 'Scheduling a deferred called to save at process shutdown time.'
- )
+ logger.debug('Scheduling a deferred called to save at process shutdown time.')
atexit.register(self.instance.save)
return self.instance
atexit.register(self.instance.save)
return self.instance