summaryrefslogtreecommitdiff
path: root/cyaml.py
blob: 3e5b90a13a63dbf5fdb21097fbeb1127551aeda3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# coding: utf-8

from __future__ import absolute_import

from _ruamel_yaml import CParser, CEmitter   # type: ignore

from ruamel.yaml.constructor import Constructor, BaseConstructor, SafeConstructor
from ruamel.yaml.representer import Representer, SafeRepresenter, BaseRepresenter
from ruamel.yaml.resolver import Resolver, BaseResolver

if False:  # MYPY
    from typing import Any, Union  # NOQA
    from ruamel.yaml.compat import StreamTextType, StreamType, VersionType  # NOQA

__all__ = ['CBaseLoader', 'CSafeLoader', 'CLoader',
           'CBaseDumper', 'CSafeDumper', 'CDumper']


# this includes some hacks to solve the  usage of resolver by lower level
# parts of the parser

class CBaseLoader(CParser, BaseConstructor, BaseResolver):  # type: ignore
    def __init__(self, stream, version=None, preserve_quotes=None):
        # type: (StreamTextType, VersionType, bool) -> None
        CParser.__init__(self, stream)
        self._parser = self._composer = self
        BaseConstructor.__init__(self, loader=self)
        BaseResolver.__init__(self, loadumper=self)
        # self.descend_resolver = self._resolver.descend_resolver
        # self.ascend_resolver = self._resolver.ascend_resolver
        # self.resolve = self._resolver.resolve


class CSafeLoader(CParser, SafeConstructor, Resolver):  # type: ignore
    def __init__(self, stream, version=None, preserve_quotes=None):
        # type: (StreamTextType, VersionType, bool) -> None
        CParser.__init__(self, stream)
        self._parser = self._composer = self
        SafeConstructor.__init__(self, loader=self)
        Resolver.__init__(self, loadumper=self)
        # self.descend_resolver = self._resolver.descend_resolver
        # self.ascend_resolver = self._resolver.ascend_resolver
        # self.resolve = self._resolver.resolve


class CLoader(CParser, Constructor, Resolver):  # type: ignore
    def __init__(self, stream, version=None, preserve_quotes=None):
        # type: (StreamTextType, VersionType, bool) -> None
        CParser.__init__(self, stream)
        self._parser = self._composer = self
        Constructor.__init__(self, loader=self)
        Resolver.__init__(self, loadumper=self)
        # self.descend_resolver = self._resolver.descend_resolver
        # self.ascend_resolver = self._resolver.ascend_resolver
        # self.resolve = self._resolver.resolve


class CBaseDumper(CEmitter, BaseRepresenter, BaseResolver):  # type: ignore
    def __init__(self, stream,
                 default_style=None, default_flow_style=None,
                 canonical=None, indent=None, width=None,
                 allow_unicode=None, line_break=None,
                 encoding=None, explicit_start=None, explicit_end=None,
                 version=None, tags=None, block_seq_indent=None,
                 top_level_colon_align=None, prefix_colon=None):
        # type: (StreamType, Any, Any, Any, bool, Union[None, int], Union[None, int], bool, Any, Any, Union[None, bool], Union[None, bool], Any, Any, Any, Any, Any) -> None   # NOQA
        CEmitter.__init__(self, stream, canonical=canonical,
                          indent=indent, width=width, encoding=encoding,
                          allow_unicode=allow_unicode, line_break=line_break,
                          explicit_start=explicit_start,
                          explicit_end=explicit_end,
                          version=version, tags=tags)
        self._emitter = self._serializer = self._representer = self
        BaseRepresenter.__init__(self, default_style=default_style,
                                 default_flow_style=default_flow_style, dumper=self)
        BaseResolver.__init__(self, loadumper=self)


class CSafeDumper(CEmitter, SafeRepresenter, Resolver):  # type: ignore
    def __init__(self, stream,
                 default_style=None, default_flow_style=None,
                 canonical=None, indent=None, width=None,
                 allow_unicode=None, line_break=None,
                 encoding=None, explicit_start=None, explicit_end=None,
                 version=None, tags=None, block_seq_indent=None,
                 top_level_colon_align=None, prefix_colon=None):
        # type: (StreamType, Any, Any, Any, bool, Union[None, int], Union[None, int], bool, Any, Any, Union[None, bool], Union[None, bool], Any, Any, Any, Any, Any) -> None   # NOQA
        self._emitter = self._serializer = self._representer = self
        CEmitter.__init__(self, stream, canonical=canonical,
                          indent=indent, width=width, encoding=encoding,
                          allow_unicode=allow_unicode, line_break=line_break,
                          explicit_start=explicit_start,
                          explicit_end=explicit_end,
                          version=version, tags=tags)
        self._emitter = self._serializer = self._representer = self  # type: ignore
        SafeRepresenter.__init__(self, default_style=default_style,
                                 default_flow_style=default_flow_style)
        Resolver.__init__(self)


class CDumper(CEmitter, Representer, Resolver):  # type: ignore
    def __init__(self, stream,
                 default_style=None, default_flow_style=None,
                 canonical=None, indent=None, width=None,
                 allow_unicode=None, line_break=None,
                 encoding=None, explicit_start=None, explicit_end=None,
                 version=None, tags=None, block_seq_indent=None,
                 top_level_colon_align=None, prefix_colon=None):
        # type: (StreamType, Any, Any, Any, bool, Union[None, int], Union[None, int], bool, Any, Any, Union[None, bool], Union[None, bool], Any, Any, Any, Any, Any) -> None   # NOQA
        CEmitter.__init__(self, stream, canonical=canonical,
                          indent=indent, width=width, encoding=encoding,
                          allow_unicode=allow_unicode, line_break=line_break,
                          explicit_start=explicit_start,
                          explicit_end=explicit_end,
                          version=version, tags=tags)
        self._emitter = self._serializer = self._representer = self
        Representer.__init__(self, default_style=default_style,
                             default_flow_style=default_flow_style)
        Resolver.__init__(self)