meringue.conf ¤
SETTING_KEY
module-attribute
¤
DEPRECATED_PARAMS
module-attribute
¤
PARAMS_TO_IMPORT
module-attribute
¤
Settings ¤
Settings(
setting_key: str,
defaults: dict[str, str],
deprecated_params: dict[str, str] | None = None,
params_to_impoprt: list[str] | None = None,
)
A settings object.
The settings are obtained from the django settings by the name of the key which should contain an object with all the application settings.
Attributes:
-
setting_key
–
Settings key in django settings list.
-
defaults
–
Dict with default parameter values. Used as a list of available settings.
-
deprecated_params
–
Dict with deprecated options and warning texts for them.
-
params_to_impoprt
–
List of options that contain the path to the module and must be imported.
Source code in meringue/conf/__init__.py
def __init__(
self,
setting_key: str,
defaults: dict[str, str],
deprecated_params: dict[str, str] | None = None,
params_to_impoprt: list[str] | None = None,
):
"""
Attributes:
setting_key: Settings key in django settings list.
defaults: Dict with default parameter values. Used as a list of available settings.
deprecated_params: Dict with deprecated options and warning texts for them.
params_to_impoprt: List of options that contain the path to the module and must be
imported.
"""
self.setting_key = setting_key
if isinstance(defaults, ModuleType):
self.defaults = {}
for key in dir(defaults):
if key.isupper():
self.defaults[key] = getattr(defaults, key)
else:
self.defaults = defaults
self.deprecated_params = deprecated_params or {}
self.params_to_impoprt = params_to_impoprt or []
self._cached_attrs = set()
self.reset()
__getattr__ ¤
Gets the parameter value and caches it in the attributes of the settings object.
Attributes:
-
attr
–
Setting parameter name.
Raises:
-
AttributeError
–Error when trying to get an unregistered parameter.
Warns:
-
DeprecationWarning
–A warning that the parameter is deprecated.
Returns:
-
Any
–Setting value.
Source code in meringue/conf/__init__.py
def __getattr__(self, attr: str) -> Any:
"""
Gets the parameter value and caches it in the attributes of the settings object.
Attributes:
attr: Setting parameter name.
Raises:
AttributeError: Error when trying to get an unregistered parameter.
Warns:
DeprecationWarning: A warning that the parameter is deprecated.
Returns:
Setting value.
"""
if attr not in self.defaults:
raise AttributeError("Invalid setting key: '%s'" % attr)
if attr in self.deprecated_params:
warnings.warn(self.deprecated_params[attr], DeprecationWarning, stacklevel=2)
val = self.user_params.get(attr, self.defaults[attr])
if attr in self.params_to_impoprt:
val = import_from_string(val, attr)
self._cached_attrs.add(attr)
setattr(self, attr, val)
return val
reset ¤
Reset downloaded settings, as well as clearing the cache.
import_from_string ¤
Imports a dotted module path and returns the attribute/class.
Attributes:
-
val
–
Dotted path to imported module.
-
attr
–
The name of the parameter in the library settings.
Raises:
-
ImportError
–Attribute/class not exists.
Returns:
-
Any
–Imported attribute/class.
Source code in meringue/conf/__init__.py
def import_from_string(val: str, attr: str) -> Any:
"""
Imports a dotted module path and returns the attribute/class.
Attributes:
val: Dotted path to imported module.
attr: The name of the parameter in the library settings.
Raises:
ImportError: Attribute/class not exists.
Returns:
Imported attribute/class.
"""
try:
return import_string(val)
except ImportError as e:
msg = f"Could not import '{val}' for API setting '{attr}'.\n{e.__class__.__name__}: {e}."
raise ImportError(msg) from None