|
9 | 9 |
|
10 | 10 | import json |
11 | 11 |
|
| 12 | +from .base import BaseConfig |
12 | 13 |
|
13 | | -class Config(object): |
14 | | - __slots__ = ('_section', '_filename', '_settings') |
15 | 14 |
|
16 | | - def __init__(self, section, filename='.jconfig'): |
17 | | - self._section = section |
18 | | - self._filename = filename |
19 | | - self._settings = self.load() |
20 | | - |
21 | | - def __getattr__(self, name): |
22 | | - return self._settings[self._section].get(name) |
23 | | - |
24 | | - def __getitem__(self, key): |
25 | | - return self.__getattr__(key) |
| 15 | +class Config(BaseConfig): |
26 | 16 |
|
27 | | - def __setattr__(self, name, value): |
28 | | - if name.startswith('_'): |
29 | | - super(Config, self).__setattr__(name, value) |
30 | | - return |
| 17 | + __slots__ = BaseConfig.__slots__ + ('_filename',) |
31 | 18 |
|
32 | | - self._settings[self._section][name] = value |
33 | | - |
34 | | - def __setitem__(self, key, value): |
35 | | - return self.__setattr__(key, value) |
| 19 | + def __init__(self, section, filename='.jconfig'): |
| 20 | + self._filename = filename |
36 | 21 |
|
37 | | - def clear_section(self): |
38 | | - self._settings[self._section] = {} |
| 22 | + super(Config, self).__init__(section, filename=filename) |
39 | 23 |
|
40 | | - def load(self): |
| 24 | + def load(self, filename, **kwargs): |
41 | 25 | try: |
42 | | - with open(self._filename, 'r') as f: |
| 26 | + with open(filename, 'r') as f: |
43 | 27 | settings = json.load(f) |
44 | 28 | except (IOError, ValueError): |
45 | 29 | settings = {} |
46 | 30 |
|
47 | | - settings.setdefault(self._section, {}) |
| 31 | + settings.setdefault(self.section_name, {}) |
48 | 32 |
|
49 | 33 | return settings |
50 | 34 |
|
|
0 commit comments