diff options
author | Anthon van der Neut <anthon@mnt.org> | 2019-08-18 20:27:26 +0200 |
---|---|---|
committer | Anthon van der Neut <anthon@mnt.org> | 2019-08-18 20:27:26 +0200 |
commit | 6b2dce7c8a347b39ed09cb7ed48ae5613925c181 (patch) | |
tree | b34e24d2fe8322e23a9085ddd63b3de4ad3da3b8 /main.py | |
parent | 90ce63fb8e053ee6a41c29c862b09cd65fad6e04 (diff) | |
download | ruamel.yaml-6b2dce7c8a347b39ed09cb7ed48ae5613925c181.tar.gz |
allow list as typ argument for YAML()0.16.5
needed for extending the basic types e.g. in ruamel.yaml.pytypes
Diffstat (limited to 'main.py')
-rw-r--r-- | main.py | 60 |
1 files changed, 34 insertions, 26 deletions
@@ -78,7 +78,7 @@ class YAML(object): 'one was given ({!r})'.format(self.__class__.__name__, _kw) ) - self.typ = 'rt' if typ is None else typ + self.typ = ['rt'] if typ is None else (typ if isinstance(typ, list) else [typ]) self.pure = pure # self._input = input @@ -95,18 +95,11 @@ class YAML(object): self.Scanner = None # type: Any self.Serializer = None # type: Any self.default_flow_style = None # type: Any - if self.typ == 'rt': - self.default_flow_style = False - # no optimized rt-dumper yet - self.Emitter = ruamel.yaml.emitter.Emitter # type: Any - self.Serializer = ruamel.yaml.serializer.Serializer - self.Representer = ruamel.yaml.representer.RoundTripRepresenter # type: Any - self.Scanner = ruamel.yaml.scanner.RoundTripScanner - # no optimized rt-parser yet - self.Parser = ruamel.yaml.parser.RoundTripParser # type: Any - self.Composer = ruamel.yaml.composer.Composer # type: Any - self.Constructor = ruamel.yaml.constructor.RoundTripConstructor # type: Any - elif self.typ == 'safe': + typ_found = 1 + setup_rt = False + if 'rt' in self.typ: + setup_rt = True + elif 'safe' in self.typ: self.Emitter = ( ruamel.yaml.emitter.Emitter if pure or CEmitter is None else CEmitter ) @@ -114,13 +107,13 @@ class YAML(object): self.Parser = ruamel.yaml.parser.Parser if pure or CParser is None else CParser self.Composer = ruamel.yaml.composer.Composer self.Constructor = ruamel.yaml.constructor.SafeConstructor - elif self.typ == 'base': + elif 'base' in self.typ: self.Emitter = ruamel.yaml.emitter.Emitter self.Representer = ruamel.yaml.representer.BaseRepresenter self.Parser = ruamel.yaml.parser.Parser if pure or CParser is None else CParser self.Composer = ruamel.yaml.composer.Composer self.Constructor = ruamel.yaml.constructor.BaseConstructor - elif self.typ == 'unsafe': + elif 'unsafe' in self.typ: self.Emitter = ( ruamel.yaml.emitter.Emitter if pure or CEmitter is None else CEmitter ) @@ -129,14 +122,20 @@ class YAML(object): self.Composer = ruamel.yaml.composer.Composer self.Constructor = ruamel.yaml.constructor.Constructor else: - for module in self.plug_ins: - if getattr(module, 'typ', None) == self.typ: - module.init_typ(self) - break - else: - raise NotImplementedError( - 'typ "{}"not recognised (need to install plug-in?)'.format(self.typ) - ) + setup_rt = True + typ_found = 0 + if setup_rt: + self.default_flow_style = False + # no optimized rt-dumper yet + self.Emitter = ruamel.yaml.emitter.Emitter # type: Any + self.Serializer = ruamel.yaml.serializer.Serializer + self.Representer = ruamel.yaml.representer.RoundTripRepresenter # type: Any + self.Scanner = ruamel.yaml.scanner.RoundTripScanner + # no optimized rt-parser yet + self.Parser = ruamel.yaml.parser.RoundTripParser # type: Any + self.Composer = ruamel.yaml.composer.Composer # type: Any + self.Constructor = ruamel.yaml.constructor.RoundTripConstructor # type: Any + del setup_rt self.stream = None self.canonical = None self.old_indent = None @@ -165,6 +164,15 @@ class YAML(object): self.scalar_after_indicator = None # [a, b: 1, c: {d: 2}] vs. [a, {b: 1}, {c: {d: 2}}] self.brace_single_entry_mapping_in_flow_sequence = False + for module in self.plug_ins: + if getattr(module, 'typ', None) in self.typ: + typ_found += 1 + module.init_typ(self) + break + if typ_found == 0: + raise NotImplementedError( + 'typ "{}"not recognised (need to install plug-in?)'.format(self.typ) + ) @property def reader(self): @@ -535,7 +543,7 @@ class YAML(object): rslvr = ( ruamel.yaml.resolver.BaseResolver - if self.typ == 'base' + if 'base' in self.typ else ruamel.yaml.resolver.Resolver ) @@ -601,7 +609,7 @@ class YAML(object): # basic types def map(self, **kw): # type: (Any) -> Any - if self.typ == 'rt': + if 'rt' in self.typ: from ruamel.yaml.comments import CommentedMap return CommentedMap(**kw) @@ -610,7 +618,7 @@ class YAML(object): def seq(self, *args): # type: (Any) -> Any - if self.typ == 'rt': + if 'rt' in self.typ: from ruamel.yaml.comments import CommentedSeq return CommentedSeq(*args) |