Boilerplate-free configuration with env variables.
Project description
environ_config allows you to configure your applications using environment variables – as recommended in The Twelve-Factor App methodology – with elegant, boilerplate-free, and declarative code:
>>> import environ
>>> # Extracts secrets from Vault-via-envconsul: 'secret/your-app':
>>> vault = environ.secrets.VaultEnvSecrets(vault_prefix="SECRET_YOUR_APP")
>>> @environ.config(prefix="APP")
... class AppConfig:
... @environ.config
... class DB:
... name = environ.var("default_db")
... host = environ.var("default.host")
... port = environ.var(5432, convert=int) # Use attrs's converters and validators!
... user = environ.var("default_user")
... password = vault.secret()
...
... env = environ.var()
... lang = environ.var(name="LANG") # It's possible to overwrite the names of variables.
... db = environ.group(DB)
... awesome = environ.bool_var()
>>> cfg = environ.to_config(
... AppConfig,
... environ={
... "APP_ENV": "dev",
... "APP_DB_HOST": "localhost",
... "LANG": "C",
... "APP_AWESOME": "yes", # true and 1 work too, everything else is False
... # Vault-via-envconsul-style var name:
... "SECRET_YOUR_APP_DB_PASSWORD": "s3kr3t",
... }) # Uses os.environ by default.
>>> cfg
AppConfig(env='dev', lang='C', db=AppConfig.DB(name='default_db', host='localhost', port=5432, user='default_user', password=<SECRET>), awesome=True)
>>> cfg.db.password
's3kr3t'
Features
Declarative & boilerplate-free.
Nested config from flat env variable names.
Default & mandatory values: enforce configuration structure without writing a line of code.
Helpful debug logging that will tell you which variables are present and what environ_config is looking for.
Built on top of attrs which gives you data validation and conversion for free.
Plugable secrets extraction. Ships with:
HashiCorp Vault support via envconsul.
INI files, because secrets in env variables are icky.
Project Information
environ_config is released under the MIT license. It targets Python 2.7, 3.5 and newer, and PyPy.
Release Information
17.1.0 (2017-12-14)
Initial release.
Credits
environ_config is written and maintained by Hynek Schlawack.
The development is kindly supported by Variomedia AG.
A full list of contributors can be found in GitHub’s overview.
environ_config wouldn’t be possible without the attrs project.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for environ_config-17.1.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aec5d85a7d0bb788c01c13fe537e0628b175dafb67a5cc5650ed5f407c3e5508 |
|
MD5 | fb68b9fd2b098ec16b2b833abb1afe63 |
|
BLAKE2b-256 | 04434b79076e141761f3b069a11c3095f706ca32bba16230b67287cecf401530 |