69 lines
2.0 KiB
Python
69 lines
2.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
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)
|
|
value_benedicted = benedict.cast(value)
|
|
return value_benedicted if value_benedicted is not None else value
|
|
return wrapper
|
|
|
|
|
|
class benedict(KeypathDict, ParseDict, UtilityDict):
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super(benedict, self).__init__(*args, **kwargs)
|
|
|
|
@benediction
|
|
def copy(self):
|
|
return super(benedict, self).copy()
|
|
|
|
@benediction
|
|
def deepcopy(self):
|
|
return super(benedict, self).deepcopy()
|
|
|
|
@classmethod
|
|
@benediction
|
|
def fromkeys(cls, sequence, value=None):
|
|
return KeypathDict.fromkeys(sequence, value)
|
|
|
|
@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) or 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=None, default=''):
|
|
return super(benedict, self).get_phonenumber(
|
|
key, country, 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)
|
|
|