M2-PT-DRP/source/utils/dict/TimestampedDict.py

42 lines
No EOL
1.2 KiB
Python

import collections
from datetime import datetime
class TimestampedDict(collections.UserDict):
"""
A dictionary with additional metadata
"""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) # NOQA
self._last_modified = datetime.now() # last time a value got modified
self._last_added = datetime.now() # last time a new value have been added
def __setitem__(self, key, value):
# if the key is already used, we only update a value
update = key in self
# set the value
super().__setitem__(key, value)
# update modification time
self._last_modified = datetime.now()
# if this is not an update, set the added time
if not update:
self._last_added = datetime.now()
def __delitem__(self, key):
super().__delitem__(key)
self._last_modified = datetime.now()
def update(self, *args, **kwargs):
super().update(*args, **kwargs) # NOQA
self._last_modified = datetime.now()
@property
def last_modified(self):
return self._last_modified
@property
def last_added(self):
return self._last_added