无模式解析 YAML

使用 strictyaml 时,不必指定模式。如果这样做,将使用验证器“Any”,它将接受任何映射、任何列表和任何标量值(与普通 YAML 不同,它将始终解释为字符串)。

这是快速原型设计时的推荐方法,并且期望的模式是流动的。

当原型代码解析具有更固定结构的 YAML 时,建议你使用模式“锁定它”。

Any 验证器也可以在固定结构中使用。

示例 yaml_snippet

a:
  x: 9
  y: 8
b: 2
c: 3
from strictyaml import Str, Any, MapPattern, load
from ensure import Ensure

不使用验证器解析

Ensure(load(yaml_snippet)).equals({"a": {"x": "9", "y": "8"}, "b": "2", "c": "3"})

使用 any 验证器解析 - 等效

Ensure(load(yaml_snippet, Any())).equals({"a": {"x": "9", "y": "8"}, "b": "2", "c": "3"})

修复更高级别的模式

Ensure(load(yaml_snippet, MapPattern(Str(), Any()))).equals({"a": {"x": "9", "y": "8"}, "b": "2", "c": "3"})

可执行规范

non-schema-validation.story storytests 自动生成的文档。