跳转到主要内容

使用环境变量进行无样板配置。

项目描述

environ-config: 使用环境变量的应用程序配置

Documentation License: Apache 2.0 PyPI version Downloads / Month

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 构建,它为您免费提供数据验证和转换。

  • 可插拔的秘密提取。内置

  • 有用的调试日志,可以告诉你哪些变量存在以及 environ-config 正在寻找什么。

  • 内置的动态帮助文档生成。

您可以在 Read the Docs 上找到完整的文档,包括逐步教程。

项目信息

environ-configHynek 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 查看哈希值)

上传时间 Python 3

由以下支持