skip to navigation
skip to content

conflib 1.0.0

Manage configuration hierarchies


[![Latest Version](](
[![Coverage Status](](
[![Build Status](](
[![MIT Licensed](](

Simplifies configuration stacking. Primarily, this was written to allow stacking of default, global, and local settings. It allows for validation so that you can enforce contraints on supplied options.

## Usage

Using conflib is just a matter of importing it and giving it some dictionaries to stack:

>>> import conflib
>>> Default = {'hello': 'world', 'alpha': 5}
>>> Global = {'wat': 'wut', 'fancy': (20, 'fish')}
>>> Local = {'hello': 'everybody', 'beta': 'qwerty'}
>>> Config = conflib.Config(Default, Global, Local)
>>> print(Config.options)
{'alpha': 5, 'wat': 'wut', 'beta': 'qwerty', 'hello': 'everybody', 'fancy': (20, 'fish')}

If you need to stack on new configs later, go for it:

>>> Config.stack({'wat': 'new_value', 'extra': 10})
>>> print(Config.options)
{'alpha': 5, 'wat': 'new_value', 'beta': 'qwerty', 'hello': 'everybody', 'fancy': (20, 'fish'), 'extra': 10}

Pass in a validation dictionary if you want to check the provided arguments:

Validator = {
'alpha': lambda x: x < 10,
'fancy': tuple,
'beta': [('asdf', 'qwerty'), ('fizz','buzz')]

Alternately, you can pass in a validation\_dict when creating a Config object. Validation failures raise ValueError with a message indicating the specific failure. There are several available options for the Validation dictionary:

* `bool`: Converts 'y', 'yes', '1', 1, and True to True, and 'n', 'no', '0', 0 and False to False
* `int`: Casts provided value as an integer
* A list of tuples: looks for the provided value as a member of any of the tuples, and returns the first item in that tuple
* A list: looks for the provided value in the list
* Any type (`str`, `float`, etc): validates that the provided value is of the specified type (does not try to cast it)
* A callable: Runs the provided function, which should either return the validated value or raise TypeError

## Installation

pip install conflib

## License

conflib is released under the MIT License. See the bundled LICENSE file for details.

File Type Py Version Uploaded on Size
conflib-1.0.0.tar.gz (md5) Source 2015-01-20 3KB