Python 是';是';实际上是';正确';根据YAML 1.1规范?1.2规范?

Python 是';是';实际上是';正确';根据YAML 1.1规范?1.2规范?,python,yaml,pyyaml,ruamel.yaml,Python,Yaml,Pyyaml,Ruamel.yaml,我试图调试一个问题,它归结为 >>> import yaml as pyyaml >>> import ruamel.yaml as ruamel >>> ruamel.load("x: yes") == ruamel.load("x: true") False >>> pyyaml.safe_load("x: yes") == pyyaml.safe_load("x: true") True “是”和“否”是保留字,它们

我试图调试一个问题,它归结为

>>> import yaml as pyyaml
>>> import ruamel.yaml as ruamel
>>> ruamel.load("x: yes") == ruamel.load("x: true")
False
>>> pyyaml.safe_load("x: yes") == pyyaml.safe_load("x: true")
True
“是”和“否”是保留字,它们也是
true
false
的同义词

但是只有1.1规范中有,但没有详细说明,并且字符串“yes”根本没有出现在中

事实上,翻阅它只是以一种合法的方式出现在任何一种合法的方式中,并在修订后被删除


我怀疑我在写作过程中回答了自己的问题,但是。。。关于“是/否”的业务是否只是在实现中出现的胡说八道(我的编辑甚至强调“是/否”是特别的),还是我误解或遗漏了规范的一部分?

将yaml spec 1.1中的
/
解释为
/
,是故意的,是故意的。然而,在yaml规范2.2中,将
/
解释为
/
被删除

PyYAML支持YAML 1.1标准,
ruamel.YAML
支持YAML 1.2 2009年发布

YAML 1.2放弃了对几个功能的支持,这些功能未被引用
Yes
No
On
Off


在这方面很难比较YAML 1.2和YAML 1.1。具有YAML 1.1中缺少的模式

YAML 1.2规范(base、json、core)中提到的任何模式都没有将
Yes
作为布尔类型提及,并且示例不再使用这些模式,而YAML 1.1仍然使用这些模式

然而,YAML 1.2规范确实提到了核心模式之外的可能模式,包括 不幸的是,该存储库中有一些地方与YAML 1.2相矛盾(例如八进制的表示方式)。因此,在YAML 1.2中完全兼容通用1.1是不可能的


考虑到
Yes
未被提及为布尔值,以及它引起的普遍混乱(有一个问题是为什么
Yes
在这里被如此转储时被引用),我决定在
ruamel.YAML
中实现YAML 1.2支持时放弃对它的支持。其他一些不太容易混淆的(IMO)和有用的东西,如合并键(
唯一提到的似乎是“例如,布尔值“true”也可能写为“yes”。这在我看来根本不是故意的,除非我误解了…和“off”没有出现。@jberryman数据类型在文档规范本身中没有详细讨论。相反,规范引用了各种标记格式的模式文档。核心
!!bool
标记的文档在这里:。无可否认,找到它并不容易。不可穿透的规范实际上是YAML的核心批评之一@KonradRudolph谢谢!是的,它看起来在规范中有两处链接。我不太清楚它们是以什么方式“可选”的,或者它们与规范的关系如何,但如果你想感谢你在ruamel上的工作,我会接受你的评论作为回答,它到目前为止真的很有用!
%YAML 1.1
---
x: yes