ruamel.yaml.round_trip_dump预期为4,但发现2(缩进)

ruamel.yaml.round_trip_dump预期为4,但发现2(缩进),yaml,ruamel.yaml,Yaml,Ruamel.yaml,代码: 如果我增加 foo.yaml|10 col 3 error| wrong indentation: expected 4 but found 2 (indentation) 它后面的值(电子邮件、公司、id、时区)不跟随其缩进 我的消息来源是不是错了?我能解决这个问题吗?ruamel模块很棒,我可以通过编程方式添加值,但我似乎无法在输出中获得有效的YAML。您的输入在(嵌套的)块映射上有四个位置缩进,这是项目负责人的值,在序列上有六个缩进,这是提交人的值,虚线偏移量为四(在序列中,缩进

代码:

如果我增加

foo.yaml|10 col 3 error| wrong indentation: expected 4 but found 2 (indentation)
它后面的值(电子邮件、公司、id、时区)不跟随其缩进


我的消息来源是不是错了?我能解决这个问题吗?ruamel模块很棒,我可以通过编程方式添加值,但我似乎无法在输出中获得有效的YAML。

您的输入在(嵌套的)块映射上有四个位置缩进,这是
项目负责人的值,在序列上有六个缩进,这是
提交人的值,虚线偏移量为四(在序列中,缩进从序列元素的开头开始计算)

如果您像以前那样使用旧API,这确实会出错,但是使用新API(以及适当的值),您可以:

block_seq_indent = 4
导入系统 进口ruamel.yaml 从cStringIO导入StringIO yaml_str=''\ --- 项目:“” 项目负责人:&ptl 名称:“” 公司:'' 电子邮件:“” id:“” 时区:“” 主要联系人:*ptl 提交人:
-哇。非常感谢你!
foo.yaml|10 col 3 error| wrong indentation: expected 4 but found 2 (indentation)
block_seq_indent = 4
import sys
import ruamel.yaml
from cStringIO import StringIO

yaml_str = '''\
---
project: ''
project_lead: &ptl
    name: ''
    company: ''
    email: ''
    id: ''
    timezone: ''
primary_contact: *ptl
committers:
    - <<: *ptl
    - name: ''
      email: ''
      company: ''
      id: ''
      timezone: ''
    - name: ''
      email: ''
      company: ''
      id: ''
      timezone: ''
'''

yaml = ruamel.yaml.YAML()
yaml.preserve_quotes = True
yaml.indent(mapping=4, sequence=6, offset=4)
yaml.explicit_start = True
data = yaml.load(yaml_str)
yaml.dump(data, sys.stdout)
buf = StringIO()
yaml.dump(data, buf)
assert buf.getvalue() == yaml_str