Код:
#!/usr/bin/env python2
import sys
import ruamel.yaml
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: ''
'''
DATA = ruamel.yaml.round_trip_load(yaml_str, version=None, preserve_quotes=True)
indent = 4
block_seq_indent = 2
ruamel.yaml.round_trip_dump(DATA, sys.stdout, default_flow_style=True, indent=indent,
block_seq_indent=block_seq_indent)
Выход:
project: ''
project_lead: &ptl
name: ''
company: ''
email: ''
id: ''
timezone: ''
primary_contact: *ptl
committers:
- <<: *ptl
- name: ''
email: ''
company: ''
id: ''
timezone: ''
- name: ''
email: ''
company: ''
id: ''
timezone: ''
ВОПРОС:
foo.yaml|10 col 3 error| wrong indentation: expected 4 but found 2 (indentation)
Если я увеличу
block_seq_indent = 4
значения, следующие за ним (адрес электронной почты, компания, идентификатор, часовой пояс), не следуют за его отступом.
Является ли мой источник YAML "неправильным"? Могу ли я обойти это? Модуль ruamel великолепен, и я могу программно добавлять значения, но я не могу получить действительный YAML в своем выводе.