gpt4 book ai didi

python - 为什么这不是 Rx 的有效模式?

转载 作者:太空狗 更新时间:2023-10-30 00:08:40 25 4
gpt4 key购买 nike

我正在使用 YAML 作为 Python 项目的配置文件格式。

最近我发现Rx成为唯一可用于 Python 和 YAML 的模式验证器。 :-/Kwalify适用于 YAML,但仅适用于 Ruby 和 Java。 :(

我整天都在阅读他们缺少的文档,似乎无法编写一个有效的架构来表示我的文件结构。帮忙?

我有以下 YAML 配置文件:

cmd:
exec: mycmd
aliases: [my, cmd]
filter:
sms: 'regex .*'

load:
exec: load
filter:
sms: 'load: .*$'

echo:
exec: echo %

我无法表示嵌套结构。我想要的是最外层的项目(在本例中为 cmd、load 和 echo)是一个包含其他项目的任意字符串。 'exec'为固定字符串,必填项; 'aliases' 和 'filter' 也是固定的,但应该是可选的。过滤器又具有另一组必需项和可选项。我应该如何用 Rx 表示它?

到目前为止,我有以下模式(在 YAML 中),Rx 无法编译它:

type: //rec
required:
type: //rec
required:
exec: //str
optional:
aliases:
type: //arr
contents: //str
length: {min: 1, max: 10}
filter:
type: //rec
optional:
sms: //str
email: //str
all: //str

在 IPython 中测试这个给了我这个:

/Rx.py in make_schema(self, schema)
68 raise Error('invalid schema argument to make_schema')
69
---> 70 uri = self.expand_uri(schema["type"])
71
72 if not self.type_registry.get(uri): raise "unknown type %s" % uri

KeyError: 'type'

这让我相信我没有在某处指定“类型”。 :-S

有什么想法吗?

我已经厌倦了与这个东西作斗争...有没有其他方法可以编写模式并使用它来验证我的配置文件?

提前致谢

伊凡

最佳答案

试试这个:

type: //map
values:
type: //rec
required:
exec: //str
optional:
aliases:
type: //arr
contents: //str
length: {min: 1, max: 10}
filter:
type: //rec
optional:
sms: //str
email: //str
all: //str

映射可以包含任何字符串作为键,而记录只能包含“必需”和“可选”中指定的键。

关于python - 为什么这不是 Rx 的有效模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1061482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com