应用程序配置引擎
项目描述
Tweak是一个Python辅助类,用于处理和序列化特定应用程序的配置。
Tweak提供了一个自包含的(不依赖于标准库之外的其他库)、兼容Python 2和3的配置管理器。它会在您的用户主目录中自动保存和恢复应用程序的配置。它使用JSON或(可选)YAML进行序列化。它支持类似于dict的方法和访问语义,层次配置源,以及用于配置选项分层操作的数组合并运算符(见下文)。
安装
如果您的软件包不允许依赖管理,您可以从https://github.com/kislyuk/tweak/blob/master/tweak/__init__.py直接将Config类复制到您的应用程序中。否则
pip install tweak
概述
from tweak import Config
config = Config()
config.host, config.port = "example.com", 9000
config.nested_config = {}
config.nested_config.foo = True
在重新启动您的应用程序后
config = Config() print(config) >>> {'host': 'example.com', 'port': 9000, 'nested_config': {'foo': True}}
使用由argparse.parse_args()返回的argparse.Namespace对象
parser = argparse.ArgumentParser() ... args = parser.parse_args() if args.foo is not None: config.foo = args.foo elif "foo" not in config: raise Exception("foo unconfigured") config.update(vars(args))
使用YAML
config = Config(use_yaml=True) ...
传递Config(save_on_exit=False)以禁用在Python关闭时自动保存配置(如果您只想读取配置,而永不写入,或者您想手动调用config.save(),这将很有用)。传递Config(autosave=True)以使save()在配置对象发生赋值时运行。
配置摄入顺序
调整支持从可配置的源数组中获取配置。每个源都是一个JSON或YAML文件。紧随第一个源之后的配置源使用递归字典合并来更新配置。源按以下顺序排列
全局配置源,/etc/NAME/config.(yml|json)
用户配置源,~/.config/NAME/config.(yml|json)
在冒号分隔的变量NAME_CONFIG_FILE中列出的任何源
数组合并运算符
当加载配置源链时,调整使用递归字典合并来组合源。此外,当原始配置值是一个列表时,调整支持数组操作符
In [1]: from tweak import Config In [2]: c = Config() In [3]: c.update(x=[1, 2, 3]) In [4]: c Out[4]: {'x': [1, 2, 3]} In [5]: c.update(x={"$append": 4}) In [6]: c Out[6]: {'x': [1, 2, 3, 4]} In [7]: c.update(x={"$extend": [5, 6]}) In [8]: c Out[8]: {'x': [1, 2, 3, 4, 5, 6]} In [9]: c.update(x={"$insert": {0: 0}}) In [10]: c Out[10]: {'x': [0, 1, 2, 3, 4, 5, 6]} In [11]: c.update(x={"$extendleft": [-2, -1]}) In [12]: c Out[12]: {'x': [-2, -1, 0, 1, 2, 3, 4, 5, 6]} In [13]: c.update(x={"$remove": 0}) In [14]: c Out[14]: {'x': [-2, -1, 1, 2, 3, 4, 5, 6]}
每个运算符($append、$extend、$insert、$extendleft、$remove)必须是表示更新的字典中的唯一键,并且要更新的值必须是列表。例如,在以下两个YAML文件的集合中,第二个文件扩展了第一个文件中的列表。
/etc/NAME/config.yml:
x: - y - z
~/.config/NAME/config.yml:
x: $extend: - a - b
包含指令
可选的Config(allow_includes=True)关键字参数可用于触发处理配置文件中的包含指令。对于每个摄取的配置源文件,顶级include键可以包含一个字符串或字符串数组。这些字符串中的每个都将在使用包含指令的文件之前进行glob并摄取(例如,{"include": "config.d/*"}以摄取配置文件目录)。
链接
错误
请在GitHub上报告错误、问题、功能请求等。GitHub。
许可证
根据Apache许可证版本2.0的条款许可。
项目详情
下载文件
下载适用于您平台的应用程序。如果您不确定选择哪个,请了解有关安装软件包的更多信息。
源分布
构建分布
tweak-1.0.4.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9a349a68122fd86eaf0400616cb7bf026feab666190ad6824c492a9d012d9a62 |
|
MD5 | ee7442dcdaf3c2ab349d0e3ee8de1c0d |
|
BLAKE2b-256 | 34ca1689a9442d2f8e6bb298402ca0ab5e96d9039d423536ec57b2861987e495 |