Skip to main content

A package to handle multi-source distributed configuration

Project description

Distribute Config

License: MIT Maintainability Coverage Status Build Status

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


Download files

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

Source Distribution

distribute_config-0.0.4.tar.gz (5.0 kB view hashes)

Uploaded Source

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