具有env变量的无样板配置。
environ-config的Python项目详细描述
environ_config允许您使用环境变量(如The Twelve-Factor App方法论中建议的那样)配置应用程序,使用优雅、无样板和声明性代码:
>>> importenviron>>> # Extracts secrets from Vault-via-envconsul: 'secret/your-app':>>> vault=environ.secrets.VaultEnvSecrets(vault_prefix="SECRET_YOUR_APP")>>> @environ.config(prefix="APP")... classAppConfig:... @environ.config... classDB:... name=environ.var("default_db")... host=environ.var("default.host")... port=environ.var(5432,converter=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.>>> cfgAppConfig(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'
功能
- 无声明性模板。
- 来自扁平环境变量名的嵌套配置。
- 默认值和必需值:在不编写代码行的情况下强制配置结构。
- 有帮助的调试日志记录,它将告诉您哪些变量存在,以及environ_config正在查找什么。
- 建立在attrs之上,免费提供数据验证和转换。
- 可插入的秘密提取。
随附:
- HashiCorp Vault通过envconsul支持。
- ini文件,因为env变量中的秘密是icky。
项目信息
environ_config在MIT许可证下发布。 它的目标是python 2.7、3.5和更新版本,以及pypy。
学分
environ_config由Hynek Schlawack编写和维护。
这项发展得到了Variomedia AG的善意支持。
贡献者的完整列表可以在GitHub’s overview中找到。
^如果没有attrs project,{tt1}$是不可能的。