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