python-benedict/benedict/dicts/__init__.py

96 lines
2.6 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
2019-09-10 14:58:26 +00:00
from benedict.dicts.io import IODict
from benedict.dicts.keypath import KeypathDict
from benedict.dicts.parse import ParseDict
from benedict.dicts.utility import UtilityDict
def benediction(method):
def wrapper(*args, **kwargs):
value = method(*args, **kwargs)
return benedict.cast(value)
return wrapper
2019-09-10 14:58:26 +00:00
class benedict(IODict, KeypathDict, ParseDict, UtilityDict):
def __init__(self, *args, **kwargs):
super(benedict, self).__init__(*args, **kwargs)
@classmethod
def cast(cls, value):
if isinstance(value, dict) and not isinstance(value, cls):
return cls(value)
else:
return value
@benediction
def clone(self):
return super(benedict, self).clone()
@benediction
def copy(self):
return super(benedict, self).copy()
@benediction
def deepcopy(self):
return super(benedict, self).deepcopy()
2019-07-02 13:15:31 +00:00
@benediction
def filter(self, predicate):
return super(benedict, self).filter(predicate)
2019-07-02 13:15:31 +00:00
2019-09-12 15:04:22 +00:00
@benediction
def flatten(self, separator='_'):
return super(benedict, self).flatten(separator)
@classmethod
@benediction
def fromkeys(cls, sequence, value=None):
return KeypathDict.fromkeys(sequence, value)
2019-09-10 14:58:26 +00:00
@staticmethod
@benediction
def from_json(s, **kwargs):
return IODict.from_json(s, **kwargs)
@benediction
def __getitem__(self, key):
return super(benedict, self).__getitem__(key)
@benediction
def get(self, key, default=None):
return super(benedict, self).get(key, default)
@benediction
def get_dict(self, key, default=None):
return super(benedict, self).get_dict(key, default)
def get_list(self, key, default=None, separator=','):
values = super(benedict, self).get_list(key, default, separator)
values = [benedict.cast(value) for value in values]
return values
@benediction
def get_list_item(self, key, index=0, default=None, separator=','):
return super(benedict, self).get_list_item(
key, index, default, separator)
@benediction
def get_phonenumber(self, key, country_code=None, default=''):
return super(benedict, self).get_phonenumber(
key, country_code, default)
@benediction
def pop(self, key, default=None):
return super(benedict, self).pop(key, default)
@benediction
def setdefault(self, key, default=None):
return super(benedict, self).setdefault(key, default)
2019-07-19 08:59:44 +00:00
@benediction
def subset(self, keys):
return super(benedict, self).subset(keys)