Skip to main content

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

Travis CI build status Latest PyPI version Code Test Coverage

Install

$ pip install PyStaticConfiguration

Also see the release notes.

Documentation

http://pythonhosted.org/PyStaticConfiguration/

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(filename, 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(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


Download files

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

Source Distribution

PyStaticConfiguration-0.10.3.tar.gz (17.8 kB view details)

Uploaded Source

File details

Details for the file PyStaticConfiguration-0.10.3.tar.gz.

File metadata

File hashes

Hashes for PyStaticConfiguration-0.10.3.tar.gz
Algorithm Hash digest
SHA256 b8191362e00e286a4562c603bf6a60b4f4eba289e9efcb71286085a70159aaac
MD5 e39ba01d30df9c548bf1a60913de14e4
BLAKE2b-256 6fc6e721b74c3eed4e06d59aec808b01280f78ddd9f0d5dfa63063b1cda8a762

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