Completed
Push — develop ( 432152...77c39a )
by Jace
9s
created

yorm/types/_representers.py (1 issue)

Labels
Severity
1
"""Custom YAML representers."""
0 ignored issues
show
There seems to be a cyclic import (yorm.bases -> yorm.bases.converter).

Cyclic imports may cause partly loaded modules to be returned. This might lead to unexpected runtime behavior which is hard to debug.

Loading history...
2
3 1
from collections import OrderedDict
4
5 1
import yaml
6
7
8 1
class LiteralString(str):
9
    """Custom type for strings which should be dumped in the literal style."""
10
11
12 1
def represent_literalstring(dumper, data):
13 1
    return dumper.represent_scalar('tag:yaml.org,2002:str', data,
14
                                   style='|' if data else '')
15
16
17 1
def represent_ordereddict(dumper, data):
18 1
    value = []
19
20 1
    for item_key, item_value in data.items():
21 1
        node_key = dumper.represent_data(item_key)
22 1
        node_value = dumper.represent_data(item_value)
23
24 1
        value.append((node_key, node_value))
25
26 1
    return yaml.nodes.MappingNode('tag:yaml.org,2002:map', value)
27
28
29 1
yaml.add_representer(OrderedDict, represent_ordereddict)
30
yaml.add_representer(LiteralString, represent_literalstring)
31