Override Python dict contents with YAML file and/or environment variables.
Originally created for Django settings but may be useful in other cases.
pip install settings-overrider
# settings.py
from settings_overrider import override
...
# at the end of the file
override(globals(), ...)
Use YAML file path:
override(globals(), yaml='/etc/project-settings.yaml')
Use YAML file:
with open('/etc/project-settings.yaml') as f:
override(globals(), yaml=f)
Use all environment variables with specified prefix:
override(globals(), env='PRJ_')
Prefix will be omitted, i.e. PRJ_DEBUG
variable will become DEBUG
setting.
Variable content will be parsed as YAML so you can use:
True
/False
: boolText
/"Text"
: string123
: number{ default: { ENGINE: django.db.backends.sqlite3, NAME: /tmp/prj.sqlite3 }}
- nested dicts
You can combine YAML file and environment variables.
git clone https://github.com/kottenator/settings-overrider.git
cd settings-overrider
pip install -e '.[test]'
py.test