Mercurial > repos > shellac > guppy_basecaller
diff env/lib/python3.7/site-packages/ruamel/yaml/serializer.py @ 5:9b1c78e6ba9c draft default tip
"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
| author | shellac |
|---|---|
| date | Mon, 01 Jun 2020 08:59:25 -0400 |
| parents | 79f47841a781 |
| children |
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/ruamel/yaml/serializer.py Thu May 14 16:47:39 2020 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,240 +0,0 @@ -# coding: utf-8 - -from __future__ import absolute_import - -from ruamel.yaml.error import YAMLError -from ruamel.yaml.compat import nprint, DBG_NODE, dbg, string_types, nprintf # NOQA -from ruamel.yaml.util import RegExp - -from ruamel.yaml.events import ( - StreamStartEvent, - StreamEndEvent, - MappingStartEvent, - MappingEndEvent, - SequenceStartEvent, - SequenceEndEvent, - AliasEvent, - ScalarEvent, - DocumentStartEvent, - DocumentEndEvent, -) -from ruamel.yaml.nodes import MappingNode, ScalarNode, SequenceNode - -if False: # MYPY - from typing import Any, Dict, Union, Text, Optional # NOQA - from ruamel.yaml.compat import VersionType # NOQA - -__all__ = ['Serializer', 'SerializerError'] - - -class SerializerError(YAMLError): - pass - - -class Serializer(object): - - # 'id' and 3+ numbers, but not 000 - ANCHOR_TEMPLATE = u'id%03d' - ANCHOR_RE = RegExp(u'id(?!000$)\\d{3,}') - - def __init__( - self, - encoding=None, - explicit_start=None, - explicit_end=None, - version=None, - tags=None, - dumper=None, - ): - # type: (Any, Optional[bool], Optional[bool], Optional[VersionType], Any, Any) -> None # NOQA - self.dumper = dumper - if self.dumper is not None: - self.dumper._serializer = self - self.use_encoding = encoding - self.use_explicit_start = explicit_start - self.use_explicit_end = explicit_end - if isinstance(version, string_types): - self.use_version = tuple(map(int, version.split('.'))) - else: - self.use_version = version # type: ignore - self.use_tags = tags - self.serialized_nodes = {} # type: Dict[Any, Any] - self.anchors = {} # type: Dict[Any, Any] - self.last_anchor_id = 0 - self.closed = None # type: Optional[bool] - self._templated_id = None - - @property - def emitter(self): - # type: () -> Any - if hasattr(self.dumper, 'typ'): - return self.dumper.emitter - return self.dumper._emitter - - @property - def resolver(self): - # type: () -> Any - if hasattr(self.dumper, 'typ'): - self.dumper.resolver - return self.dumper._resolver - - def open(self): - # type: () -> None - if self.closed is None: - self.emitter.emit(StreamStartEvent(encoding=self.use_encoding)) - self.closed = False - elif self.closed: - raise SerializerError('serializer is closed') - else: - raise SerializerError('serializer is already opened') - - def close(self): - # type: () -> None - if self.closed is None: - raise SerializerError('serializer is not opened') - elif not self.closed: - self.emitter.emit(StreamEndEvent()) - self.closed = True - - # def __del__(self): - # self.close() - - def serialize(self, node): - # type: (Any) -> None - if dbg(DBG_NODE): - nprint('Serializing nodes') - node.dump() - if self.closed is None: - raise SerializerError('serializer is not opened') - elif self.closed: - raise SerializerError('serializer is closed') - self.emitter.emit( - DocumentStartEvent( - explicit=self.use_explicit_start, version=self.use_version, tags=self.use_tags - ) - ) - self.anchor_node(node) - self.serialize_node(node, None, None) - self.emitter.emit(DocumentEndEvent(explicit=self.use_explicit_end)) - self.serialized_nodes = {} - self.anchors = {} - self.last_anchor_id = 0 - - def anchor_node(self, node): - # type: (Any) -> None - if node in self.anchors: - if self.anchors[node] is None: - self.anchors[node] = self.generate_anchor(node) - else: - anchor = None - try: - if node.anchor.always_dump: - anchor = node.anchor.value - except: # NOQA - pass - self.anchors[node] = anchor - if isinstance(node, SequenceNode): - for item in node.value: - self.anchor_node(item) - elif isinstance(node, MappingNode): - for key, value in node.value: - self.anchor_node(key) - self.anchor_node(value) - - def generate_anchor(self, node): - # type: (Any) -> Any - try: - anchor = node.anchor.value - except: # NOQA - anchor = None - if anchor is None: - self.last_anchor_id += 1 - return self.ANCHOR_TEMPLATE % self.last_anchor_id - return anchor - - def serialize_node(self, node, parent, index): - # type: (Any, Any, Any) -> None - alias = self.anchors[node] - if node in self.serialized_nodes: - self.emitter.emit(AliasEvent(alias)) - else: - self.serialized_nodes[node] = True - self.resolver.descend_resolver(parent, index) - if isinstance(node, ScalarNode): - # here check if the node.tag equals the one that would result from parsing - # if not equal quoting is necessary for strings - detected_tag = self.resolver.resolve(ScalarNode, node.value, (True, False)) - default_tag = self.resolver.resolve(ScalarNode, node.value, (False, True)) - implicit = ( - (node.tag == detected_tag), - (node.tag == default_tag), - node.tag.startswith('tag:yaml.org,2002:'), - ) - self.emitter.emit( - ScalarEvent( - alias, - node.tag, - implicit, - node.value, - style=node.style, - comment=node.comment, - ) - ) - elif isinstance(node, SequenceNode): - implicit = node.tag == self.resolver.resolve(SequenceNode, node.value, True) - comment = node.comment - end_comment = None - seq_comment = None - if node.flow_style is True: - if comment: # eol comment on flow style sequence - seq_comment = comment[0] - # comment[0] = None - if comment and len(comment) > 2: - end_comment = comment[2] - else: - end_comment = None - self.emitter.emit( - SequenceStartEvent( - alias, - node.tag, - implicit, - flow_style=node.flow_style, - comment=node.comment, - ) - ) - index = 0 - for item in node.value: - self.serialize_node(item, node, index) - index += 1 - self.emitter.emit(SequenceEndEvent(comment=[seq_comment, end_comment])) - elif isinstance(node, MappingNode): - implicit = node.tag == self.resolver.resolve(MappingNode, node.value, True) - comment = node.comment - end_comment = None - map_comment = None - if node.flow_style is True: - if comment: # eol comment on flow style sequence - map_comment = comment[0] - # comment[0] = None - if comment and len(comment) > 2: - end_comment = comment[2] - self.emitter.emit( - MappingStartEvent( - alias, - node.tag, - implicit, - flow_style=node.flow_style, - comment=node.comment, - nr_items=len(node.value), - ) - ) - for key, value in node.value: - self.serialize_node(key, node, None) - self.serialize_node(value, node, key) - self.emitter.emit(MappingEndEvent(comment=[map_comment, end_comment])) - self.resolver.ascend_resolver() - - -def templated_id(s): - # type: (Text) -> Any - return Serializer.ANCHOR_RE.match(s)
