Skip to content

Commit

Permalink
Update Readme
Browse files Browse the repository at this point in the history
  • Loading branch information
Sebastien Iooss committed Jul 11, 2019
1 parent 40c4572 commit c407f92
Showing 1 changed file with 14 additions and 7 deletions.
21 changes: 14 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@

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
This package handle the problem of multi-source configuration in python. For a python program containing a set of configuration variables,
this package will populate the values of these configuration variables by looking for a yaml configuration file, then will overwrite the values of the
variable by looking for matching environment variables and then, if the program was started with some arguments, will once again overwrite the values of the configuration by loading these variables

Moreover, this package allow you to define configuration variables in multiple python files, using a namespace system so you can't accidentally break other part of the configuration, so the configuration stay near the code that needs it and you can update your configuration by just importing new python files

## Example

Expand All @@ -21,6 +21,7 @@ from distribute_config import Config

Config.define_int("nb", 1, "some number")
Config.define_str_list("list", ["a", "b", "c"], "some list")
Config.define_enum("logger", "debug", ["info", "debug", "warn"], "the logger level")

Config.load_conf()
print(Config.get_dict())
Expand All @@ -33,9 +34,10 @@ list:
- b
- c
nb: 1
logger: debug
```

and display : `{'nb': 1, 'list': ['a', 'b', 'c']}`
and display : `{'nb': 1, 'list': ['a', 'b', 'c'], 'logger' : 'debug'}`

Now if we update config.yml:
```yml
Expand Down Expand Up @@ -79,4 +81,9 @@ set1:

- `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}}`
- `SET1__SET2__NB=30 python app.py --set1.set2.nb=40` will print `{'nb': 1, 'set1': {'nb': 2, 'set2': {'nb': 40}}, 'other': {'nb': 4}}`


## Features
- The config support single variables (int, float, str, bool) but also list (int, float, str) and enum
- When loading configuration using Config.load_conf(), you can specify the name of the config file you want to create or load, and you can also specify if you don't want a config file to be create or if you want to update the content of the current config file (usefull when adding new features)

0 comments on commit c407f92

Please sign in to comment.