使用环境变量进行无样板配置。
项目描述
environ-config: 使用环境变量的应用程序配置
environ-config 允许您从环境变量中加载应用程序的配置 – 如在 《十二要素应用》 方法中所推荐 – 以优雅、无样板和声明性的代码实现
>>> 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, 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.
>>> 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'
AppConfig.from_environ({...})
等同于上面的代码,取决于您的喜好。
特性
-
声明式且无样板。
-
从平面环境变量名称中进行嵌套配置。
-
默认值和必需值:在不编写一行代码的情况下强制配置结构。
-
基于 attrs 构建,它为您免费提供数据验证和转换。
-
可插拔的秘密提取。内置
- HashiCorp Vault 支持,通过 envconsul。
- AWS Secrets Manager (需要 boto3))
- INI 文件,因为环境变量中的机密数据可能会很“讨厌”。
-
有用的调试日志,可以告诉你哪些变量存在以及 environ-config 正在寻找什么。
-
内置的动态帮助文档生成。
您可以在 Read the Docs 上找到完整的文档,包括逐步教程。
项目信息
environ-config 由 Hynek Schlawack 维护,并使用 Apache License 2.0 许可证发布。开发在 GitHub 上进行。
开发得到了 Variomedia AG 和所有我的惊人 GitHub Sponsors 的支持。
environ-config 的实现离不开 attrs 项目。
environ-config 企业版
作为 Tidelift 订阅的一部分提供。
environ-config 的维护者以及成千上万的其他软件包维护者正在与 Tidelift 合作,为您使用的开源软件包提供商业支持和维护。节省时间,降低风险,并提高代码健康,同时支付您使用的确切软件包的维护者。了解更多信息 [点击这里]。
版本信息
新增
-
支持 Python 3.13。
-
支持 Moto 5。 #76
移除
- 支持 Python 3.7。
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。
源分布
environ_config-24.1.0.tar.gz (44.9 kB 查看哈希值)
构建分布
environ_config-24.1.0-py3-none-any.whl (19.9 kB 查看哈希值)