基于 YAML 文件的配置解析器,支持变量、覆盖和层次结构
项目描述
Configcrunch 是一个用 Rust 编写的 Python 库,用于读取基于 YAML 的配置文件。它旨在简单快速,同时还提供一些非常强大的功能。
Configcrunch 与 Python 3.6 及更高版本兼容。
通过 pip 安装它:pip install configcrunch
特征:
从 YAML 文件中读取配置文件。
定义可以通过模式验证的各种类型的配置文件。
配置文件的类型被定义为单独的 Python 类。
可以将文档配置为包含任何类型的嵌套文档。
文档可以包含Minijinja模板,这些模板可以引用同一文档或父文档中的任何其他字段。
代表文档类型的类可以包含可以在配置文件中使用的方法。
文档可以参考其他文件中的文档。Configcrunch 会将它们合并在一起。您决定在何处查找引用的文档。
配置对象也可以在没有 YAML 文件的情况下通过使用普通的 Python dicts 来创建。
所有功能都是可选的。
使用者:
(你的项目在这里!打开一个问题。)
默认情况下,Configcrunch 使用模式来验证模式。但您也可以使用自己的验证逻辑!
例子
这是一个使用上述大部分功能的示例,使用两种文档类型。
# doc1.yml - Type: one
one:
name: Document
number: 1
sub:
# Sub-document of type "two"
$ref: /doc2
two_field: <s>"{{</s> <s>parent().method()</s> <s>}}"</s>
# <lookup path>/doc2.yml - Type: two
two:
name: Doc 2
number: 2
two_field: This is overridden
# classes.py
from schema import Schema, Optional
from configcrunch import YamlConfigDocument, DocReference, variable_helper
class One(YamlConfigDocument):
@classmethod
def header(cls) -> str:
return "one"
@classmethod
def schema(cls) -> Schema:
return Schema(
{
Optional('$ref'): str, # reference to other One documents
'name': str,
'number': int,
Optional('sub'): DocReference(Two)
}
)
@classmethod
def subdocuments(cls):
return [
("sub", Two)
]
@variable_helper
def method(self):
return "I will return something"
class Two(YamlConfigDocument):
@classmethod
def header(cls) -> str:
return "two"
@classmethod
def schema(cls) -> Schema:
return Schema(
{
Optional('$ref'): str, # reference to other Two documents
'name': str,
'number': int,
'two_field': str
}
)
@classmethod
def subdocuments(cls):
return []
然后可以通过 Python 读取文档“one.yml”:
>>> import yaml
>>> from classes import One
>>> doc = One.from_yaml('./doc1.yml')
>>> doc.resolve_and_merge_references(['<lookup path>'])
>>> doc.process_vars()
>>> print(yaml.dump(doc.to_dict(), default_flow_style=False))
one:
name: Document
number: 1
sub:
name: Doc 2
number: 2
two_field: I will return something
测试
configcrunch.tests包内是测试。
要运行测试,请参阅run_tests.sh。
文档
完整的文档可以在Read the Docs(或 docs 目录)中找到。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
内置发行版
configcrunch-1.0.3-cp310-cp310-win_amd64.whl
(621.7 kB
查看哈希)
configcrunch-1.0.3-cp310-cp310-win32.whl
(589.1 kB
查看哈希)
configcrunch-1.0.3-cp39-cp39-win_amd64.whl
(621.8 kB
查看哈希)
configcrunch-1.0.3-cp39-cp39-win32.whl
(589.3 kB
查看哈希)
configcrunch-1.0.3-cp38-cp38-win_amd64.whl
(621.2 kB
查看哈希)
configcrunch-1.0.3-cp38-cp38-win32.whl
(588.5 kB
查看哈希)
configcrunch-1.0.3-cp37-cp37m-win_amd64.whl
(621.0 kB
查看哈希)
configcrunch-1.0.3-cp37-cp37m-win32.whl
(588.6 kB
查看哈希)
关
configcrunch -1.0.3-cp310-cp310-win_amd64.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 24fe90276231274a267c3c7306cb4c13cc3c67786df01a68363b0c8897558691 |
|
| MD5 | 2698f9a4c73cd00b9453157ec57d8627 |
|
| 布莱克2-256 | 70db9274993fb3d88e0bdea735f5ee46dcfade5c1e86a035359def1207734d23 |
关
configcrunch -1.0.3-cp310-cp310-win32.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 43d1a126cc439057d6e73baf6a93e4a2672c7d2e5d783db39fd7f06d292ca080 |
|
| MD5 | bb4bdcab965978cc26a287ba51f51667 |
|
| 布莱克2-256 | aa2c5d321e781ab9153af132d59b43c8700b5ddfac1fc2e9806e5f4c0c2ee8ed |
关
configcrunch -1.0.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 0e7f88b34fd9acec96c4b86a54fbadbdd3d53a28dc771dc407421627dba9fc79 |
|
| MD5 | e4c4de4ffce6509d417dc8b980b717d3 |
|
| 布莱克2-256 | a9ae00f33ea81a429d51170361dbb18047b70d860d63c4caba399674a9cd16cf |
关
configcrunch -1.0.3-cp310-cp310-macosx_11_0_x86_64.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | a4fda65bf27364e639f6fb79a4dc8463c053cbb91fc6ce3e9ae4a98366052dea |
|
| MD5 | 00a2d7734b44e8b69c38e6c3010c9aaf |
|
| 布莱克2-256 | 9214d5eeefd9ec5cf7f39fce59d750c4d43031b3c4124d4265d8684db837a139 |
关
configcrunch -1.0.3-cp39-cp39-win_amd64.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | a00ae91b61d3cf5454a06539b2002d73bbcac540eaa43cae6958531687783a55 |
|
| MD5 | ea675a1d81f1f2ef0a0a49832a87da19 |
|
| 布莱克2-256 | b96a12cce8a2f9f4292ee06c28f7c294f637d92456486d4edfe1863cd95b5154 |
关
configcrunch -1.0.3-cp39-cp39-win32.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 1d6f9a5df8b106bf273062f2c040e33eb9770cfa8cefd8fb07bc803c97f925f2 |
|
| MD5 | 4db9ae9cce7fc3ddaa9368c84b75e132 |
|
| 布莱克2-256 | c3f4def5a4fe76ef4ea1fdf9ef4d37983e763fb880ab3729066b25d3
|