重复键
在正则 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)