BaseEntry.__init__()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 3
ccs 3
cts 3
cp 1
rs 10
cc 1
crap 1
1
# -*- coding: utf-8 -*-
2 15
from werobot.utils import to_text
3
4
5 15
def get_value(instance, path, default=None):
6 15
    dic = instance.__dict__
7 15
    for entry in path.split('.'):
8 15
        dic = dic.get(entry)
9
        if dic is None:
10
            return default
11 15
    return dic or default
12 15
13 15
14 15
class BaseEntry(object):
15 15
    def __init__(self, entry, default=None):
16 15
        self.entry = entry
17 15
        self.default = default
18
19
20 15
class IntEntry(BaseEntry):
21 15
    def __get__(self, instance, owner):
22 15
        try:
23 15
            return int(get_value(instance, self.entry, self.default))
24 15
        except TypeError:
25 15
            return
26 15
27
28
class FloatEntry(BaseEntry):
29 15
    def __get__(self, instance, owner):
30 15
        try:
31 15
            return float(get_value(instance, self.entry, self.default))
32 15
        except TypeError:
33 15
            return
34 15
35
36
class StringEntry(BaseEntry):
37
    def __get__(self, instance, owner):
38
        v = get_value(instance, self.entry, self.default)
39
        if v is not None:
40
            return to_text(v)
41
        return v
42