0

使用 为 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
4

0 回答 0