Git Product home page Git Product logo

pystaticconfiguration's Introduction

PyStaticConfiguration

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 Number of PyPI downloads 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(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)

pystaticconfiguration's People

Contributors

asottile avatar dnephin avatar eevee avatar hashbrowncipher avatar kmosher avatar kurtisfreedland avatar patricklucas avatar roguelazer avatar svisser avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.