跳转到主要内容

另一种Python配置

项目描述

Yapconf

https://img.shields.io/pypi/v/yapconf.svg https://img.shields.io/travis/loganasherjones/yapconf.svg https://codecov.io/gh/loganasherjones/yapconf/branch/master/graph/badge.svg Documentation Status Updates

另一种Python配置。一种简单管理Python应用程序配置的方式。

Yapconf允许您轻松管理Python应用程序的配置。它处理与您的应用程序配置相关的所有内容。通常情况下,以合理的方式公开配置可能会很困难。您需要考虑加载顺序,以及大量样板代码来正确更新配置。那么CLI支持呢?将旧配置迁移到新配置?Yapconf可以帮到您。

功能

Yapconf帮助管理您的Python应用程序配置

  • 支持JSON/YAML配置文件

  • 支持Etcd配置

  • 支持Kubernetes ConfigMap

  • 支持Argparse集成

  • 环境加载

  • 配置监控

  • 将旧配置迁移到新配置

  • 为您的配置生成文档

快速入门

要安装Yapconf,请在终端中运行此命令

$ pip install yapconf

然后您就可以自己使用Yapconf了!

加载第一个配置

from yapconf import YapconfSpec

# First define a specification
spec_def = {
    "foo": {"type": "str", "default": "bar"},
}
my_spec = YapconfSpec(spec_def)

# Now add your source
my_spec.add_source('my yaml config', 'yaml', filename='./config.yaml')

# Then load the configuration!
config = my_spec.load_config('config.yaml')

print(config.foo)
print(config['foo'])

在此示例中,load_config将在./config.yaml文件中查找“foo”值,如果在那里找不到,将回退到规范定义中的默认值(“bar”)。

尝试在./config.yaml中使用空文件运行,然后尝试使用

foo: baz

从环境变量加载

from yapconf import YapconfSpec

# First define a specification
spec_def = {
    "foo-dash": {"type": "str", "default": "bar"},
}
my_spec = YapconfSpec(spec_def, env_prefix='MY_APP_')

# Now add your source
my_spec.add_source('env', 'environment')

# Then load the configuration!
config = my_spec.load_config('env')

print(config.foo)
print(config['foo'])

在本示例中,load_config 将在环境中查找‘foo’值,如果未找到,则回退到规范定义中的默认值(“bar”)。

先运行一次,然后在shell中运行 export MY_APP_FOO_DASH=BAZ 并再次运行。

注意,yapconf正在搜索的环境名称已被修改。已经应用了env_prefix MY_APP_,并且名称本身已被大写并转换为蛇形。

从CLI参数加载

import argparse
from yapconf import YapconfSpec

# First define a specification
spec_def = {
    "foo": {"type": "str", "default": "bar"},
}
my_spec = YapconfSpec(spec_def)

# This will add --foo as an argument to your python program
parser = argparse.ArgumentParser()
my_spec.add_arguments(parser)

# Now you can load these via load_config:
cli_args = vars(parser.parse_args(sys.argv[1:]))
config = my_spec.load_config(cli_args)

print(config.foo)
print(config['foo'])

从多个来源加载

from yapconf import YapconfSpec

# First define a specification
spec_def = {
    "foo": {"type": "str", "default": "bar"},
}
my_spec = YapconfSpec(spec_def, env_prefix='MY_APP_')

# Now add your sources (order does not matter)
my_spec.add_source('env', 'environment')
my_spec.add_source('my yaml file', 'yaml', filename='./config.yaml')

# Now load your configuration using the sources in the order you want!
config = my_spec.load_config('my yaml file', 'env')

print(config.foo)
print(config['foo'])

在这种情况下,load_config 将在 ./config.yaml 中查找‘foo’。如果未找到,它将在环境中查找 MY_APP_FOO,如果仍然未找到,它将回退到默认值。由于在 load_config 参数中“my yaml file”标签排在前面,因此 yapconf 首先会在那里查找值,即使 add_source 被调用时使用了‘env’。

监视配置更改

def my_handler(old_config, new_config):
    print("TODO: Something interesting goes here.")

my_spec.spawn_watcher('config.yaml', target=my_handler)

为您的配置生成文档

# Show me some sweet Markdown documentation
my_spec(spec.generate_documentation())

# Or write it to a file
spec.generate_documentation(output_file_name='configuration_docs.md')

有关更详细的信息和更好的教程,请查看文档!

文档

文档可在 https://yapconf.readthedocs.io 获取

致谢

此包是用 Cookiecutteraudreyr/cookiecutter-pypackage 项目模板创建的。

历史

0.3.7 (2019-12-02)

  • 修复了损坏的测试

  • 添加CLI源

  • 修复了将cli_name添加到项中的问题

0.3.6 (2019-09-17)

  • dump_data 添加到 __all__

0.3.5 (2019-09-03)

  • 添加了对加载特定配置项的初始支持。

0.3.4 (2019-09-02)

  • 修复了弃用警告(#96)

0.3.3 (2018-06-25)

  • 修复了在Python 2中导出unicode的问题(#82)

0.3.2 (2018-06-11)

  • 修复了将box数据导出到YAML的问题(#78)

0.3.1 (2018-06-07)

  • 修复了环境加载的问题(#74)

  • 修复了监视内存字典的问题(#75)

0.3.0 (2018-06-02)

  • 修复了utf-8迁移会中断的问题(#46)

  • 添加了对etcd的支持(#47)

  • 添加了对kubernetes的支持(#47)

  • 添加了对配置值回退的支持(#45)

  • 添加了生成配置文档的能力(#63)

  • 添加了配置监视功能(#36)

0.2.4 (2018-05-21)

  • 在加载之前扁平化配置(#54)

  • 修复了 fq_name 未正确设置复杂数据的问题

  • dump_kwargs 添加到 migrate_config

  • 当验证失败时提供更好的错误消息(#55)

  • 使所有 argparse 项都成为可选的(#42)

  • 为配置项添加了对 long_description 的支持(#44)

  • 为配置项添加了对 validator 的支持(#43)

0.2.3 (2018-04-03)

  • 修复了Python 2 unicode错误(#41)

0.2.2 (2018-03-28)

  • 修复了Python 2兼容性错误(#35)

0.2.1 (2018-03-11)

  • 向 YapconfItemNotFound 添加了项(#21)

  • 从 setup_requires 中移除了 pytest-runner(#22)

0.2.0 (2018-03-11)

  • 添加了CLI参数的自动kebab-case(#7)

  • 添加了应用环境前缀的标志(#11)

  • choices 添加到项规范(#14)

  • alt_env_names 添加到项规范(#13)

0.1.1 (2018-02-08)

  • 修复了 None 被视为有效值的问题。

0.1.0 (2018-02-01)

  • 首次发布在PyPI上。

项目详情


下载文件

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

源代码分发

yapconf-1.0.0.tar.gz (64.7 kB 查看散列值)

上传时间 源代码

构建分发

yapconf-1.0.0-py2.py3-none-any.whl (32.4 kB 查看散列值)

上传时间 Python 2 Python 3

由以下支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面