重复键

在正则 YAML 中允许重复键 - 如 pyyaml、ruamel.yaml 和 poyo 解析的那样

不仅不清楚 x 应该是“cow”还是“bull”(解析器将决定“bull”,但你知道吗?),如果 x: cow 和 x: bull 之间有 200 行,用户很可能会更改第一个 x 并错误地认为 x 的值已更改 - 而实际上并没有。

为了避免所有可能的混淆,StrictYAML 将简单地拒绝解析它,并且只会接受所有键都是唯一的关联数组。它将抛出 DuplicateKeysDisallowed 异常。

示例 yaml_snippet

a: cow
a: bull
from strictyaml import load, DuplicateKeysDisallowed

无名异常

load(yaml_snippet)
strictyaml.exceptions.DuplicateKeysDisallowed:
While parsing
  in "<unicode string>", line 2, column 1:
    a: bull
    ^ (line: 2)
Duplicate key 'a' found
  in "<unicode string>", line 2, column 2:
    a: bull
     ^ (line: 2)

命名异常

load(yaml_snippet, label="mylabel")
strictyaml.exceptions.DuplicateKeysDisallowed:
While parsing
  in "mylabel", line 2, column 1:
    a: bull
    ^ (line: 2)
Duplicate key 'a' found
  in "mylabel", line 2, column 2:
    a: bull
     ^ (line: 2)

可执行规范

文档自动从 duplicatekeys.story storytests. 生成。