Override the default Emitter and Dumper from the pyyaml library to
introduce (or more specifically stop suppressing) indentation when
writing block sequences. Also adjust the dump parameters to match
the indentation and related style used for included sample data and
configuration files.
+class _IBSEmitter(yaml.emitter.Emitter):
+
+ """Override the default YAML Emitter to indent block sequences."""
+
+ def expect_block_sequence(self):
+ """Match the expectations of the ``yamllint`` style checker."""
+
+ # TODO(fungi) Get an option for this implemented upstream in
+ # the pyyaml library
+ self.increase_indent(flow=False, indentless=False)
+ self.state = self.expect_first_block_sequence_item
+
+
+class _IBSDumper(yaml.SafeDumper, _IBSEmitter):
+
+ """Use our _IBSEmitter instead of the default implementation."""
+
+ pass
+
+
class Data:
"""A file containing universe elements and their facets."""
class Data:
"""A file containing universe elements and their facets."""
os.umask(old_umask)
# write and close the file
os.umask(old_umask)
# write and close the file
- yaml.safe_dump(self.data, allow_unicode=True,
- default_flow_style=False, stream=file_descriptor)
+ yaml.dump(self.data, Dumper=_IBSDumper, allow_unicode=True,
+ default_flow_style=False, explicit_start=True, indent=4,
+ stream=file_descriptor)
file_descriptor.close()
# unset the modified flag
file_descriptor.close()
# unset the modified flag