Utility library to implement composable YAML configuration files.
Project description
Note: This package is in the dangerous land of
0.x.yversions 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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nr.config-0.2.0.tar.gz.
File metadata
- Download URL: nr.config-0.2.0.tar.gz
- Upload date:
- Size: 13.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a74ba1a5e40b97e9dc41fc1b722d5fded6c30f6e672cb892e48ecb63415c2d2a
|
|
| MD5 |
368f1af75cd4104b972bd317f692f140
|
|
| BLAKE2b-256 |
850beca97846e54349cb7c2cddc8c3da4709c162a346a1e56739eda496726cdd
|
File details
Details for the file nr.config-0.2.0-py3-none-any.whl.
File metadata
- Download URL: nr.config-0.2.0-py3-none-any.whl
- Upload date:
- Size: 17.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2d8be4294953930321a960825de88c32f4b342782b067a26c992ce46bcdb8df
|
|
| MD5 |
fad72791fcff55f3159b14e9d40ac3c7
|
|
| BLAKE2b-256 |
5cce47bff78db79f5f1fcdf66c6cb7801ad39a0fe1fc112dee826f566fef377d
|