Hide keyboard shortcuts

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. 

3 

4All the modifiable settings should be accessed via 'config' instead of using env.py directly. 

5""" 

6import sys 

7 

8 

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"): 

13 

14 def create_getter(getter_key: str): 

15 def getter(self): 

16 return getattr(self._env_module, getter_key) 

17 

18 return getter 

19 

20 def create_setter(setter_key: str): 

21 def setter(self, value: str): 

22 setattr(self._env_module, setter_key, value) 

23 

24 return setter 

25 

26 from config import env 

27 

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 

39 

40 

41class _Config(metaclass=_ConfigMeta): 

42 pass 

43 

44 

45config = _Config()