MetaValue   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Importance

Changes 5
Bugs 1 Features 0
Metric Value
c 5
b 1
f 0
dl 0
loc 32
rs 10
wmc 10

7 Methods

Rating   Name   Duplication   Size   Complexity  
A _get_metas() 0 4 2
A get() 0 8 3
A set() 0 3 1
A __init__() 0 2 1
A reset() 0 2 1
A unset() 0 3 1
A have() 0 3 1
1
class MetaValue():
2
    def __init__(self):
3
        self._metas = {}
4
5
    def reset(self):
6
        self._metas = {}
7
8
    def _get_metas(self, name):
9
        if name not in self._metas:
10
            self._metas[name] = {}
11
        return self._metas[name]
12
13
    def set(self, name, subject, value):
14
        metas = self._get_metas(name)
15
        metas[subject] = value
16
17
    def unset(self, name, subject):
18
        metas = self._get_metas(name)
19
        del(metas[subject])
20
21
    def have(self, name, subject):
22
        metas = self._get_metas(name)
23
        return subject in metas
24
25
    def get(self, name, subject, allow_empty=False, empty_value=None):
26
        metas = self._get_metas(name)
27
        try:
28
            return metas[subject]
29
        except KeyError:
30
            if not allow_empty:
31
                raise
32
            return empty_value
33