Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nr.config-0.2.0.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

nr.config-0.2.0-py3-none-any.whl (17.4 kB view details)

Uploaded Python 3

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

Hashes for nr.config-0.2.0.tar.gz
Algorithm Hash digest
SHA256 a74ba1a5e40b97e9dc41fc1b722d5fded6c30f6e672cb892e48ecb63415c2d2a
MD5 368f1af75cd4104b972bd317f692f140
BLAKE2b-256 850beca97846e54349cb7c2cddc8c3da4709c162a346a1e56739eda496726cdd

See more details on using hashes here.

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

Hashes for nr.config-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b2d8be4294953930321a960825de88c32f4b342782b067a26c992ce46bcdb8df
MD5 fad72791fcff55f3159b14e9d40ac3c7
BLAKE2b-256 5cce47bff78db79f5f1fcdf66c6cb7801ad39a0fe1fc112dee826f566fef377d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page