Coverage for tld/conf.py: 96%

25 statements  

« prev     ^ index     » next       coverage.py v7.4.4, created at 2024-05-27 05:40 +0000

1from typing import Any 

2 

3from . import defaults 

4 

5__author__ = "Artur Barseghyan" 

6__copyright__ = "2013-2023 Artur Barseghyan" 

7__license__ = "MPL-1.1 OR GPL-2.0-only OR LGPL-2.1-or-later" 

8__all__ = ( 

9 "get_setting", 

10 "reset_settings", 

11 "set_setting", 

12 "settings", 

13) 

14 

15 

16class Settings(object): 

17 """Settings registry.""" 

18 

19 def __init__(self): 

20 self._settings = {} 

21 self._settings_get = self._settings.get 

22 

23 def set(self, name: str, value: Any) -> None: 

24 """ 

25 Override default settings. 

26 

27 :param str name: 

28 :param mixed value: 

29 """ 

30 self._settings[name] = value 

31 

32 def get(self, name: str, default: Any = None) -> Any: 

33 """ 

34 Gets a variable from local settings. 

35 

36 :param str name: 

37 :param mixed default: Default value. 

38 :return mixed: 

39 """ 

40 if name in self._settings: 

41 return self._settings_get(name, default) 

42 elif hasattr(defaults, name): 

43 return getattr(defaults, name, default) 

44 

45 return default 

46 

47 def reset(self) -> None: 

48 """Reset settings.""" 

49 for name in defaults.__all__: 

50 self.set(name, getattr(defaults, name)) 

51 

52 

53settings = Settings() 

54 

55get_setting = settings.get 

56 

57set_setting = settings.set 

58 

59reset_settings = settings.reset