另一种Python配置
项目描述
Yapconf
另一种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 获取
致谢
此包是用 Cookiecutter 和 audreyr/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 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 8154b78cc3ac3724982f124844c4593109c8f0ab62b0e0299c9853097a4b8b21 |
|
MD5 | 7ac908b31a487f14e6dbdd9a77bed13d |
|
BLAKE2b-256 | 75492bc8ccd5631db797d5f276fc098c5559395658aba9bc9268ddd167011acf |
yapconf-1.0.0-py2.py3-none-any.whl 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 20453746e4e7fdd8329a1a513d0a9b245306bb5e053df0fe9dd2acc37fd28c67 |
|
MD5 | f0967b13d433dc21613d38f1c8ce1419 |
|
BLAKE2b-256 | f2cc9c685a81873c4078e1bcd4257d0bb18b806efefd30789a94caab591c4671 |