Coverage for tld/conf.py: 96%
25 statements
« prev ^ index » next coverage.py v7.2.7, created at 2024-05-26 22:29 +0000
« prev ^ index » next coverage.py v7.2.7, created at 2024-05-26 22:29 +0000
1from typing import Any
3from . import defaults
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)
16class Settings(object):
17 """Settings registry."""
19 def __init__(self):
20 self._settings = {}
21 self._settings_get = self._settings.get
23 def set(self, name: str, value: Any) -> None:
24 """
25 Override default settings.
27 :param str name:
28 :param mixed value:
29 """
30 self._settings[name] = value
32 def get(self, name: str, default: Any = None) -> Any:
33 """
34 Gets a variable from local settings.
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)
45 return default
47 def reset(self) -> None:
48 """Reset settings."""
49 for name in defaults.__all__:
50 self.set(name, getattr(defaults, name))
53settings = Settings()
55get_setting = settings.get
57set_setting = settings.set
59reset_settings = settings.reset