Passed
Push — master ( 929d80...68a360 )
by Fabio
04:07
created

benedict.dicts.benediction()   A

Complexity

Conditions 2

Size

Total Lines 6
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 6
dl 0
loc 6
rs 10
c 0
b 0
f 0
cc 2
nop 1
1
# -*- coding: utf-8 -*-
2
3
from benedict.dicts.keypath import KeypathDict
4
from benedict.dicts.parse import ParseDict
5
from benedict.dicts.utility import UtilityDict
6
7
8
def benediction(method):
9
    def wrapper(*args, **kwargs):
10
        value = method(*args, **kwargs)
11
        value_benedicted = benedict.cast(value)
12
        return value_benedicted if value_benedicted is not None else value
13
    return wrapper
14
15
16
class benedict(KeypathDict, ParseDict, UtilityDict):
17
18
    def __init__(self, *args, **kwargs):
19
        super(benedict, self).__init__(*args, **kwargs)
20
21
    @benediction
22
    def copy(self):
23
        return super(benedict, self).copy()
24
25
    @benediction
26
    def deepcopy(self):
27
        return super(benedict, self).deepcopy()
28
29
    @benediction
30
    def filter(self, predicate):
31
        return super(benedict, self).filter(predicate)
32
33
    @classmethod
34
    @benediction
35
    def fromkeys(cls, sequence, value=None):
36
        return KeypathDict.fromkeys(sequence, value)
37
38
    @benediction
39
    def __getitem__(self, key):
40
        return super(benedict, self).__getitem__(key)
41
42
    @benediction
43
    def get(self, key, default=None):
44
        return super(benedict, self).get(key, default)
45
46
    @benediction
47
    def get_dict(self, key, default=None):
48
        return super(benedict, self).get_dict(key, default)
49
50
    def get_list(self, key, default=None, separator=','):
51
        values = super(benedict, self).get_list(key, default, separator)
52
        values = [(benedict.cast(value) or value) for value in values]
53
        return values
54
55
    @benediction
56
    def get_list_item(self, key, index=0, default=None, separator=','):
57
        return super(benedict, self).get_list_item(
58
            key, index, default, separator)
59
60
    @benediction
61
    def get_phonenumber(self, key, country_code=None, default=''):
62
        return super(benedict, self).get_phonenumber(
63
            key, country_code, default)
64
65
    @benediction
66
    def pop(self, key, default=None):
67
        return super(benedict, self).pop(key, default)
68
69
    @benediction
70
    def setdefault(self, key, default=None):
71
        return super(benedict, self).setdefault(key, default)
72
73
    @benediction
74
    def subset(self, keys):
75
        return super(benedict, self).subset(keys)
76