|
a |
|
b/settings.py |
|
|
1 |
import ast |
|
|
2 |
import configparser |
|
|
3 |
from collections.abc import Mapping |
|
|
4 |
|
|
|
5 |
|
|
|
6 |
class Settings(Mapping): |
|
|
7 |
def __init__(self, setting_file='settings.ini'): |
|
|
8 |
config = configparser.ConfigParser() |
|
|
9 |
config.read(setting_file) |
|
|
10 |
self.settings_dict = _parse_values(config) |
|
|
11 |
|
|
|
12 |
def __getitem__(self, key): |
|
|
13 |
return self.settings_dict[key] |
|
|
14 |
|
|
|
15 |
def __len__(self): |
|
|
16 |
return len(self.settings_dict) |
|
|
17 |
|
|
|
18 |
def __iter__(self): |
|
|
19 |
return self.settings_dict.items() |
|
|
20 |
|
|
|
21 |
|
|
|
22 |
def _parse_values(config): |
|
|
23 |
config_parsed = {} |
|
|
24 |
for section in config.sections(): |
|
|
25 |
config_parsed[section] = {} |
|
|
26 |
for key, value in config[section].items(): |
|
|
27 |
config_parsed[section][key] = ast.literal_eval(value) |
|
|
28 |
return config_parsed |