예제 #1
0
def add_multi_representer(data_type,
                          multi_representer,
                          Dumper=None,
                          representer=Representer):
    # type: (Any, Any, Any, Any) -> None
    """
    Add a representer for the given type.
    multi_representer is a function accepting a Dumper instance
    and an instance of the given data type or subtype
    and producing the corresponding representation node.
    """
    if Dumper is None:
        representer.add_multi_representer(data_type, multi_representer)
    else:
        if hasattr(Dumper, 'add_multi_representer'):
            Dumper.add_multi_representer(data_type, multi_representer)
            return
        if issubclass(Dumper, BaseDumper):
            BaseRepresenter.add_multi_representer(data_type, multi_representer)
        elif issubclass(Dumper, SafeDumper):
            SafeRepresenter.add_multi_representer(data_type, multi_representer)
        elif issubclass(Dumper, Dumper):
            Representer.add_multi_representer(data_type, multi_representer)
        elif issubclass(Dumper, RoundTripDumper):
            RoundTripRepresenter.add_multi_representer(data_type,
                                                       multi_representer)
        else:
            raise NotImplementedError
예제 #2
0
 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):
     Emitter.__init__(self,
                      stream,
                      canonical=canonical,
                      indent=indent,
                      width=width,
                      allow_unicode=allow_unicode,
                      line_break=line_break,
                      block_seq_indent=block_seq_indent)
     Serializer.__init__(self,
                         encoding=encoding,
                         explicit_start=explicit_start,
                         explicit_end=explicit_end,
                         version=version,
                         tags=tags)
     BaseRepresenter.__init__(self,
                              default_style=default_style,
                              default_flow_style=default_flow_style)
     BaseResolver.__init__(self)
예제 #3
0
 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: (Any, StreamType, Any, Any, Optional[bool], Optional[int], Optional[int], Optional[bool], Any, Any, Optional[bool], Optional[bool], Any, Any, Any, Any, Any) -> None   # NOQA
     Emitter.__init__(
         self,
         stream,
         canonical=canonical,
         indent=indent,
         width=width,
         allow_unicode=allow_unicode,
         line_break=line_break,
         block_seq_indent=block_seq_indent,
         dumper=self,
     )
     Serializer.__init__(
         self,
         encoding=encoding,
         explicit_start=explicit_start,
         explicit_end=explicit_end,
         version=version,
         tags=tags,
         dumper=self,
     )
     BaseRepresenter.__init__(
         self,
         default_style=default_style,
         default_flow_style=default_flow_style,
         dumper=self,
     )
     BaseResolver.__init__(self, loadumper=self)
예제 #4
0
 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)
예제 #5
0
def _yaml_none_representer(representer: BaseRepresenter,
                           data: Mapping[str, Any]) -> ScalarNode:
    """Yaml repr for ``None`` python values.

    Parameters
    ----------
    representer : BaseRepresenter
        Representer of the :class:`YAML` instance.
    data : Mapping[str, Any]
        Data to write to yaml.

    Returns
    -------
    ScalarNode
        Node representing the value.

    References
    ----------
    https://stackoverflow.com/a/44314840
    """
    return representer.represent_scalar("tag:yaml.org,2002:null", "null")