def get_yaml_instance(
version = (1, 2),
indent = { 'mapping': 2, 'sequence': 4, 'offset': 2 },
**kwargs
):
yaml = ruamel.yaml.YAML(**kwargs)
yaml.Constructor = clone_class(yaml.Constructor)
yaml.Representer = clone_class(yaml.Representer)
yaml.version = version
yaml.indent(**indent);
yaml.Representer.add_representer(OrderedDict, lambda self, data: self.represent_mapping('tag:yaml.org,2002:map', data))
return yaml
python类org()的实例源码
def represent_hex_quad(dumper, data):
return dumper.represent_scalar(u'tag:yaml.org,2002:int', '0x%04x' % data)
def represent_flow_seq(dumper, data):
"""
Dump sequences in flow style
"""
return dumper.represent_sequence(u'tag:yaml.org,2002:seq', data, flow_style=True)
def str_presenter(dmpr, data):
"""Return correct str_presenter to write multiple lines to a yaml field.
Source: http://stackoverflow.com/a/33300001
"""
if is_multiline(data):
return dmpr.represent_scalar('tag:yaml.org,2002:str', data, style='|')
return dmpr.represent_scalar('tag:yaml.org,2002:str', data)
def pocketsphinx(self):
# NOTE: copy()
# Return a shallow copy of x.
# source: https://docs.python.org/3/library/copy.html
"""Get pocketsphinx speech to text settings."""
return self._data.get('pocketsphinx', {}).copy()
def include(self, data):
return self.represent_mapping('tag:yaml.org,2002:map', data.data)
def str_presenter(dumper, data):
str_tag = 'tag:yaml.org,2002:str'
if len(data.splitlines()) > 1:
return dumper.represent_scalar(str_tag, data, style='|')
return dumper.represent_scalar(str_tag, data)
def list_presenter(dumper, data):
list_tag = 'tag:yaml.org,2002:seq'
if len(data) > 1:
if all([isinstance(item, str) for item in data]):
return dumper.represent_sequence(list_tag, data, flow_style=False)
return dumper.represent_sequence(list_tag, data)
def str_presenter(dumper, data):
str_tag = 'tag:yaml.org,2002:str'
if len(data.splitlines()) > 1:
return dumper.represent_scalar(str_tag, data, style='|')
return dumper.represent_scalar(str_tag, data)
def list_presenter(dumper, data):
list_tag = 'tag:yaml.org,2002:seq'
if len(data) > 1:
if all([isinstance(item, str) for item in data]):
return dumper.represent_sequence(list_tag, data, flow_style=False)
return dumper.represent_sequence(list_tag, data)
def str_presenter(dumper, data):
str_tag = 'tag:yaml.org,2002:str'
if len(data.splitlines()) > 1:
return dumper.represent_scalar(str_tag, data, style='|')
return dumper.represent_scalar(str_tag, data)
def str_presenter(dumper, data):
str_tag = 'tag:yaml.org,2002:str'
if len(data.splitlines()) > 1:
return dumper.represent_scalar(str_tag, data, style='|')
return dumper.represent_scalar(str_tag, data)
def list_presenter(dumper, data):
list_tag = 'tag:yaml.org,2002:seq'
if len(data) > 1:
if all([isinstance(item, str) for item in data]):
return dumper.represent_sequence(list_tag, data, flow_style=False)
return dumper.represent_sequence(list_tag, data)