使用 为 YAML 文档指定缩进时ruaml.yaml.YAML.indent
,注释不包含在缩进的项目中。这些应该缩进与它们关联的序列/映射相同。
我相信这可能是一个错误ruamel.yaml.emitter.Emitter.write_comment
,或者类似的发射器方法,只根据列编写注释,而不考虑缩进级别。
从我在其他错误报告中读到的内容,我了解哪个序列/映射可能仍然是库中的一个悬而未决的问题(鉴于 YAML 规范声明它们不应与任何节点相关联,这是非常有效的),但我认为可以使用一个标志来明确支持它。
输入
import sys
from ruamel.yaml import YAML
text = """\
---
- a:
b:
# indent me
- item1
- item2
# indent me
c:
d: 'scalar1'
# indent me
- e:
f: 'scalar2'
"""
yaml = YAML()
yaml.explicit_start = True
yaml.indent(mapping=2, sequence=4, offset=2)
data = yaml.load(text)
yaml.dump(data, sys.stdout)
输出
---
- a:
b:
# indent me
- item1
- item2
# indent me
c:
d: scalar1
# indent me
- e:
f: scalar2
预期的
---
- a:
b:
# indent me
- item1
- item2
# indent me
c:
d: scalar1
# indent me
- e:
f: scalar2
环境
使用 ruamel.yaml (==0.15.35):
ruamel.yaml-0.15.35-cp35-cp35m-manylinux1_x86_64.whl
ruamel.yaml-0.15.35-cp27-cp27mu-manylinux1_x86_64.whl
测试:
蟒蛇2.7.12
蟒蛇3.5.2
操作系统:
- Ubuntu 16.04.3 LTS