| Total Complexity | 12 |
| Total Lines | 42 |
| Duplicated Lines | 0 % |
| Changes | 0 | ||
| 1 | #!/usr/bin/env python |
||
| 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 |