根据pydantic模型,从环境变量、命令行参数和配置文件中加载小型应用程序配置。
项目描述
[!WARNING] 此项目处于开发中,尚未完成所有功能或测试。
[!WARNING] 此项目是BETA版本,在可预见的未来将是实验性的。接口和功能可能会更改,项目本身可能会被废弃。请不要在运行中的任何项目/软件中使用此软件。
Conflator是一个用于Python的配置处理库。它旨在简化从多个来源(如环境变量、命令行参数和配置文件)处理配置。作为应用程序或库的开发者,您使用Pydantic模型指定您的配置架构,Conflator将处理其余部分。
Conflator按照以下顺序加载配置
- 在Pydantic模型中指定的默认值
- /etc/appname/config.json(和yaml)中的全局配置
- 在~/.appname.json(和yaml)中的用户配置
- 作为命令行参数提供的附加配置文件和值(例如
-f filename
或--set value.deeper=foo
) - 环境变量
- 命令行参数
- 传递给load方法的字典
...然后根据Pydantic模型验证合并后的配置。
安装
Conflator可在PyPI上获得
pip install conflator
或使用poetry
poetry add conflator
用法
- 定义您的配置模型:首先,使用Pydantic模型定义您的配置架构。分别使用
EnvVar
和CLIArg
注释您的模型字段以支持环境变量和命令行参数。
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"
- 初始化Conflator:创建Conflator类的实例,传递您的应用程序名称和配置模型。
from conflator import Conflator
config = Conflator(app_name="my_app", model=AppConfig).load()
- 访问配置:在整个应用程序中使用已加载的配置,知道该配置已完全验证。
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 查看散列)
关闭
conflator-0.1.5.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 80afbb8e9ff68aa0e50f1fbcf0541c6cebf0acce31e42a576d74aa07a9a9a8bc |
|
MD5 | 8316da7a38dc211b45ae7624f8e8dd6e |
|
BLAKE2b-256 | 7aa9e9502c5225a5e814765b048c2860f98c850c9a7c1adfaed6a08d183829fd |
关闭
conflator-0.1.5-py3-none-any.whl 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | cae382e17e3a6362d7b8597040e28ea479e5a7ac89cebeeaa52f745c621487c9 |
|
MD5 | 65971094c40d7e089f2b528f6f007861 |
|
BLAKE2b-256 | 10301713cf59cd9293af0eec7a8af7b2765fe7795b438a5af0f26aab76eb94e5 |