Open Media Library
This commit is contained in:
commit
2ee2bc178a
228 changed files with 85988 additions and 0 deletions
37
oml/pdict.py
Normal file
37
oml/pdict.py
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
import os
|
||||
import json
|
||||
|
||||
class pdict(dict):
|
||||
def __init__(self, path, defaults=None):
|
||||
self._path = None
|
||||
self._defaults = defaults
|
||||
if os.path.exists(path):
|
||||
with open(path) as fd:
|
||||
_data = json.load(fd)
|
||||
for key in _data:
|
||||
self[key] = _data[key]
|
||||
self._path = path
|
||||
|
||||
def _save(self):
|
||||
if self._path:
|
||||
with open(self._path, 'w') as fd:
|
||||
json.dump(self, fd, indent=1)
|
||||
|
||||
def get(self, key, default=None):
|
||||
if default == None and self._defaults:
|
||||
default = self._defaults.get(key)
|
||||
return dict.get(self, key, default)
|
||||
|
||||
def __getitem__(self, key):
|
||||
if key not in self and self._defaults and key in self._defaults:
|
||||
return self._defaults[key]
|
||||
return dict.__getitem__(self, key)
|
||||
|
||||
def __setitem__(self, key, value):
|
||||
dict.__setitem__(self, key, value)
|
||||
self._save()
|
||||
|
||||
def __delitem__(self, key):
|
||||
dict.__delitem__(self, key)
|
||||
self._save()
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue