An easy way to manage environment specific configurations.
- Python >=3.6
All the other names I managed to think of were already taken, so... here we are.
I recommend using environments names such as: production
, development
, etc.,
Also, if you would like to include variables from your environment, make sure to add a $
prefix ($HOME
) and Yamz will make sure it's included.
Note: global
settings will be available in all environments
pip install yamz
- Configure your environment in
config.yaml
(requires PyYAML)global: TEST: some_test production: HOME: $HOME MYSQL_DB_HOST: 1.2.3.4 MYSQL_DB_PASS: $MYSQL_DB_PASS
- Configure your environment in
config.json
{ "global": { "TEST": "some_test" }, "production": { "HOME": "$HOME", "MYSQL_DB_HOST": "1.2.3.4", "MYSQL_DB_PASS": "$MYSQL_DB_PASS" } }
import os
from yamz import Yamz
from yamz.providers.default import YamlProvider, JsonProvider
base = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
path = os.path.join(base, 'config.yaml')
env = Yamz(path, provider=YamlProvider) # or JsonProvider
prod_env = env.load("production")
prod_env.MYSQL_DB_HOST # 1.2.3.4
prod_env.YAMZ_ENV # production
If you'd like to contribute and make Yamz better, feel free to open up a PR. I'll review it at my earliest convenience!