Coverage for bugscpp/config/config.py : 100%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1"""
2Interface of env.py.
4All the modifiable settings should be accessed via 'config' instead of using env.py directly.
5"""
6import sys
9class _ConfigMeta(type):
10 def __new__(mcs, name, bases, attrs):
11 new_class = type.__new__(mcs, name, bases, attrs)
12 if not hasattr(new_class, "_env_module"):
14 def create_getter(getter_key: str):
15 def getter(self):
16 return getattr(self._env_module, getter_key)
18 return getter
20 def create_setter(setter_key: str):
21 def setter(self, value: str):
22 setattr(self._env_module, setter_key, value)
24 return setter
26 from config import env
28 env_module = sys.modules[env.__name__]
29 setattr(new_class, "_env_module", env_module)
30 settings = {
31 key: getattr(env_module, key)
32 for key in dir(env_module)
33 if key.startswith("DPP")
34 }
35 for k in settings:
36 prop = property(create_getter(k), create_setter(k))
37 setattr(new_class, k, prop)
38 return new_class
41class _Config(metaclass=_ConfigMeta):
42 pass
45config = _Config()