A python library for loading static configuration
Project description
A python library for loading, validating and reading configuration from many heterogeneous formats. Configuration is split into two phases.
Configuration Loading
Configuration is read from files or python objects, flattened, and merged into a container called a namespace. Namespaces are used to separate unrelated configuration groups.
If configuration is changed frequently, it can also be reloaded easily with very little change to the existing code.
Configuration Reading
A configuration value is looked up in the namespace. It is validating and converted to the requested type.
Build Status
Install
PyStaticConfiguration is available on pypi: https://pypi.python.org/pypi/PyStaticConfiguration
The source is hosted on github: https://github.com/dnephin/PyStaticConfiguration
$ pip install PyStaticConfiguration
Also see the release notes.
Documentation
Examples
A common minimal use of staticconf would be to use a single yaml configuration file and read some values from it.
import staticconf
filename = 'hosts.yaml'
namespace = 'hosts'
# Load configuration from the file into namespace `hosts`
staticconf.YamlConfiguration(file, namespace=namespace)
...
# Some time later on, read values from that namespace
print staticconf.read('database.slave', namespace=namespace)
print staticconf.read('database.master', namespace=namespace)
hosts.yaml might look something like this:
database:
slave: dbslave_1
master: dbmaster_1
A more involved example would load configuration from multiple files, create a watcher for reloading, and read some config values.
from functools import partial
import os
import staticconf
def load_config(config_path, defaults='~/.myapp.yaml`)
# First load global defaults if the file exists
staticconf.INIConfiguration('/etc/myapp.ini', optional=True)
# Next load user defaults
staticconf.YamlConfiguration(defaults, optional=True)
# Next load the specified configuration file
staticconf.YamlConfiguration(config_path)
# Now let's override it with some environment settings
staticconf.DictConfiguration(
(k[5:].lower(), v) for k, v in os.environ if k.startswith('MYAPP_'))
def build_watcher(loader, filename):
return staticconf.ConfigFacade.load(
filenames, 'DEFAULT', partial(load_config, filename))
def run(config_path):
watcher = build_watcher(config_path)
while is_work():
watcher.reload_if_changed()
current_threshold = staticconf.read_float('current_threshold')
do_some_work(current_thresold)
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
File details
Details for the file PyStaticConfiguration-0.8.0.tar.gz
.
File metadata
- Download URL: PyStaticConfiguration-0.8.0.tar.gz
- Upload date:
- Size: 16.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 138ec454f2fbbc7f917c2cb9269845bb8fa001801475feb01d457185b5a953ed |
|
MD5 | 4eaca089de6d8c445942a6197ab8dec5 |
|
BLAKE2b-256 | 24501bb713d1705ca77565d660f77dcdc381c5c89e7c6ff20eebdac2436ee9cf |