跳转到主要内容

根据pydantic模型,从环境变量、命令行参数和配置文件中加载小型应用程序配置。

项目描述

conflator logo

[!WARNING] 此项目处于开发中,尚未完成所有功能或测试。

[!WARNING] 此项目是BETA版本,在可预见的未来将是实验性的。接口和功能可能会更改,项目本身可能会被废弃。请不要在运行中的任何项目/软件中使用此软件。

Conflator是一个用于Python的配置处理库。它旨在简化从多个来源(如环境变量、命令行参数和配置文件)处理配置。作为应用程序或库的开发者,您使用Pydantic模型指定您的配置架构,Conflator将处理其余部分。

Conflator按照以下顺序加载配置

  1. 在Pydantic模型中指定的默认值
  2. /etc/appname/config.json(和yaml)中的全局配置
  3. 在~/.appname.json(和yaml)中的用户配置
  4. 作为命令行参数提供的附加配置文件和值(例如 -f filename--set value.deeper=foo
  5. 环境变量
  6. 命令行参数
  7. 传递给load方法的字典

...然后根据Pydantic模型验证合并后的配置。

安装

Conflator可在PyPI上获得

pip install conflator

或使用poetry

poetry add conflator

用法

  1. 定义您的配置模型:首先,使用Pydantic模型定义您的配置架构。分别使用EnvVarCLIArg注释您的模型字段以支持环境变量和命令行参数。
from pydantic import Field
from conflator import EnvVar, CLIArg, ConfigModel
from annotated_types import Annotated

class AppConfig(ConfigModel):

    host: str = "localhost"
    port: Annotated[int, EnvVar("PORT"), CLIArg("--port")] = 5432
    user: Annotated[str, EnvVar("USER"), CLIArg("--user"), Field(description="Your username")] = "foo"
  1. 初始化Conflator:创建Conflator类的实例,传递您的应用程序名称和配置模型。
from conflator import Conflator

config = Conflator(app_name="my_app", model=AppConfig).load()
  1. 访问配置:在整个应用程序中使用已加载的配置,知道该配置已完全验证。
print(f"User: {config.user}")

尝试在环境中设置 MY_APP_USER 以查看值的变化,或使用 --user 标志来覆盖值。

高级使用

不同部署的配置层叠

your-app -f ./config/base.yaml -f ./config/production.yaml

嵌套配置正常工作

from annotated_types import Annotated
from conflator import EnvVar, CLIArg, ConfigModel

class DeeperConfig(ConfigModel):
    nested: Annotated[str, EnvVar("NESTED"), CLIArg("--nested")] = "default"

class Config(ConfigModel):
    host: str = "localhost"
    port: int = 543
    deeper: DeeperConfig = DeeperConfig()

为您的配置生成 JSON 架构

config = Conflator(app_name="my_app", model=AppConfig).schema() # uses pydantic's schema method behind the scenes

限制

  • CLI 参数和环境变量按模型类型定义,而不是按模型实例定义。这意味着您不能为同一模型的不同实例有不同的 CLI 参数或环境变量。未来可能会添加一些对此的支持。

  • 包括来自其他包的 ConfigModel,以便将其配置与您的配置嵌套,是可能的。然而,没有方法解决两个不同配置模式之间 CLI 参数和环境变量命名的冲突。未来可能会添加一些对此的支持。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

conflator-0.1.5.tar.gz (9.9 kB 查看散列)

上传时间

构建分发

conflator-0.1.5-py3-none-any.whl (10.7 kB 查看散列)

上传时间 Python 3

由以下组织支持