Utility library to implement composable YAML configuration files.
Project description
Note: This package is in the dangerous land of
0.x.y
versions and may be subject to breaking changes with minor version increments.
nr.config
The nr.config
package helps with configuration file processing and dynamic reloading tasks.
It can serve as a generic library or give you a fast and easy framework.
Quickstart
The nr.config.process_config()
function is the main function for processing config data. It
expects the data to process as well as a number of processor plugins that will run over config.
A common pattern is to use a conf
section to hydrate variables for the remainder of the
configuration.
from nr.config import process_config
from nr.config.plugins import Vars
import yaml
with open('var/conf/runtime.yaml') as fp:
data = yaml.safe_load(fp)
config = process_config(data['runtime'], Vars({'conf': data['conf']}))
This particular example allows the use of references in the runtime
block.
conf:
value: 42
runtime:
answer: '{{conf.value}}'
Service applications may want to reload the configuration file whenever it changes. For this
purpose the nr.config
module provides the ConfigReloadTask
that uses the watchdog
module
to observe file changes and reload the config when the file changes. Errors that occur during
the reload are automatically logged and the last valid configuration will be returned.
from nr.config.reloader import ConfigReloadTask
from nr.proxy import Proxy
reload_task = ConfigReloadTask('var/conf/runtime.yaml', load_config_from_file)
reload_task.reload_callback(callback)
reload_task.start()
config = Proxy(reload_task.get)
Copyright © 2020 Niklas Rosenstein
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for nr.config-0.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b2d8be4294953930321a960825de88c32f4b342782b067a26c992ce46bcdb8df |
|
MD5 | fad72791fcff55f3159b14e9d40ac3c7 |
|
BLAKE2b-256 | 5cce47bff78db79f5f1fcdf66c6cb7801ad39a0fe1fc112dee826f566fef377d |