A package to handle multi-source distributed configuration
Project description
Distribute Config
A package to handle multi-source distributed configuration
this package allow you to define a set of configuration variables in multiple python files, then populate its values by looking for :
- a yml file to parse
- then environment variables
- then program arguments
Example
Let the following python program app.py:
from distribute_config import Config
Config.define_int("nb", 1, "some number")
Config.define_str_list("list", ["a", "b", "c"], "some list")
Config.load_conf()
print(Config.get_dict())
by running it with python app.py
it will create a file config.yml :
list:
- a
- b
- c
nb: 1
and display : {'nb': 1, 'list': ['a', 'b', 'c']}
Now if we update config.yml:
list:
- a
- b
nb: 2
python app.py
will print{'nb': 2, 'list': ['a', 'b']}
NB=3 python app.py
will print{'nb': 3, 'list': ['a', 'b']}
NB=3 python app.py --nb 4
will print{'nb': 4, 'list': ['a', 'b']}
Moreover, python app.py --help
with display all the possible variables and useful comments
Example 2: namespace
Let change app.py to be:
from distribute_config import Config
Config.define_int("nb", 1, "some number")
with Config.namespace("set1"):
Config.define_int("nb", 2, "some other number")
with Config.namespace("set2"):
Config.define_int("nb", 3, "and again")
Config.define_int("other.nb", 4, "last")
Config.load_conf()
print(Config.get_dict())
Running python app.py
will display {'nb': 1, 'set1': {'nb': 2, 'set2': {'nb': 3}}, 'other': {'nb': 4}}
and the created config.yml is:
nb: 1
other:
nb: 4
set1:
nb: 2
set2:
nb: 3
python app.py
will print{'nb': 1, 'set1': {'nb': 2, 'set2': {'nb': 3}}, 'other': {'nb': 4}}
SET1__SET2__NB=30 python app.py
will print{'nb': 1, 'set1': {'nb': 2, 'set2': {'nb': 30}}, 'other': {'nb': 4}}
SET1__SET2__NB=30 python app.py --set1.set2.nb=40
will print{'nb': 1, 'set1': {'nb': 2, 'set2': {'nb': 40}}, 'other': {'nb': 4}}
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.