GeneralConfig.report()   A
last analyzed

Complexity

Conditions 4

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
dl 0
loc 8
rs 9.2
c 0
b 0
f 0
1
#!/usr/bin/env python
2
# -*- coding: utf-8 -*-
3
4
5
class GeneralConfig(object):
6
7
    def __init__(self, logger=None):
8
        """
9
        Create a general config
10
        """
11
        object.__setattr__(self, "attrs", {})
12
        object.__setattr__(self, "used_parameters", set())
13
        object.__setattr__(self, "undefined_parameters", set())
14
        object.__setattr__(self, "logger", logger)
15
16
    def __getattr__(self, key):
17
        self.used_parameters.add(key)
18
        if key not in self.attrs:
19
            self.undefined_parameters.add(key)
20
            return None
21
        else:
22
            return self.attrs[key]
23
24
    def __setattr__(self, key, value):
25
        self.attrs[key] = value
26
27
    def get(self, key, default=None):
28
        key = getattr(self, key)
29
        if key != None:
30
            return key
31
        else:
32
            return default
33
34
    def merge(self, config):
35
        for k in config.attrs:
36
            setattr(self, k, getattr(config, k))
37
        return self
38
39
    def report(self):
40
        """
41
        Report usage of training parameters.
42
        """
43
        if self.logger:
44
            self.logger.info("accessed parameters:")
45
            for key in self.used_parameters:
46
                self.logger.info(" - %s %s" % (key, "(undefined)" if key in self.undefined_parameters else ""))
47