Hello community,

here is the log from the commit of package python-ruamel.yaml for 
openSUSE:Factory checked in at 2019-09-11 10:23:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ruamel.yaml (Old)
 and      /work/SRC/openSUSE:Factory/.python-ruamel.yaml.new.7948 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-ruamel.yaml"

Wed Sep 11 10:23:01 2019 rev:20 rq:728692 version:0.16.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-ruamel.yaml/python-ruamel.yaml.changes    
2019-08-14 11:37:18.512697544 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-ruamel.yaml.new.7948/python-ruamel.yaml.changes
  2019-09-11 10:23:01.755491139 +0200
@@ -1,0 +2,11 @@
+Fri Sep  6 06:54:38 UTC 2019 - Ondřej Súkup <mimi...@gmail.com>
+
+- update to 0.16.5
+ * allow for YAML(typ=['unsafe', 'pytypes'])
+ * fix output of TAG directives with #
+ * move setting of version based on YAML directive to scanner, allowing to
+    check for file version during TAG directive scanning
+ * preserve YAML and TAG directives on roundtrip, correctly output # in URL
+    for YAML 1.2 
+
+-------------------------------------------------------------------

Old:
----
  ruamel.yaml-0.16.1.tar.gz

New:
----
  ruamel.yaml-0.16.5.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-ruamel.yaml.spec ++++++
--- /var/tmp/diff_new_pack.e6MXJf/_old  2019-09-11 10:23:02.867491000 +0200
+++ /var/tmp/diff_new_pack.e6MXJf/_new  2019-09-11 10:23:02.871491000 +0200
@@ -18,7 +18,7 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-ruamel.yaml
-Version:        0.16.1
+Version:        0.16.5
 Release:        0
 Summary:        Python YAML parser
 License:        MIT

++++++ ruamel.yaml-0.16.1.tar.gz -> ruamel.yaml-0.16.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruamel.yaml-0.16.1/CHANGES 
new/ruamel.yaml-0.16.5/CHANGES
--- old/ruamel.yaml-0.16.1/CHANGES      2019-08-08 08:20:25.000000000 +0200
+++ new/ruamel.yaml-0.16.5/CHANGES      2019-08-18 20:23:30.000000000 +0200
@@ -1,3 +1,20 @@
+[0, 16, 5]: 2019-08-18
+  - allow for ``YAML(typ=['unsafe', 'pytypes'])``
+
+[0, 16, 4]: 2019-08-16
+  - fix output of TAG directives with # (reported by `Thomas Smith
+    <https://bitbucket.org/%7Bd4c57a72-f041-4843-8217-b4d48b6ece2f%7D/>`__)
+
+
+[0, 16, 3]: 2019-08-15
+  - move setting of version based on YAML directive to scanner, allowing to
+    check for file version during TAG directive scanning
+
+[0, 16, 2]: 2019-08-15
+  - preserve YAML and TAG directives on roundtrip, correctly output #
+    in URL for YAML 1.2 (both reported by `Thomas Smith
+    <https://bitbucket.org/%7Bd4c57a72-f041-4843-8217-b4d48b6ece2f%7D/>`__)
+
 [0, 16, 1]: 2019-08-08
   - Force the use of new version of ruamel.yaml.clib (reported by `Alex Joz
     <https://bitbucket.org/%7B9af55900-2534-4212-976c-61339b6ffe14%7D/>`__)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruamel.yaml-0.16.1/PKG-INFO 
new/ruamel.yaml-0.16.5/PKG-INFO
--- old/ruamel.yaml-0.16.1/PKG-INFO     2019-08-08 08:22:18.000000000 +0200
+++ new/ruamel.yaml-0.16.5/PKG-INFO     2019-08-18 20:27:45.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: ruamel.yaml
-Version: 0.16.1
+Version: 0.16.5
 Summary: ruamel.yaml is a YAML parser/emitter that supports roundtrip 
preservation of comments, seq/map flow style, and map key order
 Home-page: https://bitbucket.org/ruamel/yaml
 Author: Anthon van der Neut
@@ -12,8 +12,8 @@
         
         ``ruamel.yaml`` is a YAML 1.2 loader/dumper package for Python.
         
-        :version:       0.16.1
-        :updated:       2019-08-08
+        :version:       0.16.5
+        :updated:       2019-08-18
         :documentation: http://yaml.readthedocs.io
         :repository:    https://bitbucket.org/ruamel/yaml
         :pypi:          https://pypi.org/project/ruamel.yaml/
@@ -62,6 +62,25 @@
         
         .. should insert NEXT: at the beginning of line for next key (with 
empty line)
         
+        0.16.5 (2019-08-18):
+          - allow for ``YAML(typ=['unsafe', 'pytypes'])``
+        
+        0.16.4 (2019-08-16):
+          - fix output of TAG directives with # (reported by `Thomas Smith
+            
<https://bitbucket.org/%7Bd4c57a72-f041-4843-8217-b4d48b6ece2f%7D/>`__)
+        
+        
+        0.16.3 (2019-08-15):
+          - split construct_object
+          - change stuff back to keep mypy happy
+          - move setting of version based on YAML directive to scanner, 
allowing to
+            check for file version during TAG directive scanning
+        
+        0.16.2 (2019-08-15):
+          - preserve YAML and TAG directives on roundtrip, correctly output #
+            in URL for YAML 1.2 (both reported by `Thomas Smith
+            
<https://bitbucket.org/%7Bd4c57a72-f041-4843-8217-b4d48b6ece2f%7D/>`__)
+        
         0.16.1 (2019-08-08):
           - Force the use of new version of ruamel.yaml.clib (reported by 
`Alex Joz
             
<https://bitbucket.org/%7B9af55900-2534-4212-976c-61339b6ffe14%7D/>`__)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruamel.yaml-0.16.1/README.rst 
new/ruamel.yaml-0.16.5/README.rst
--- old/ruamel.yaml-0.16.1/README.rst   2019-08-08 08:20:25.000000000 +0200
+++ new/ruamel.yaml-0.16.5/README.rst   2019-08-18 20:23:30.000000000 +0200
@@ -4,8 +4,8 @@
 
 ``ruamel.yaml`` is a YAML 1.2 loader/dumper package for Python.
 
-:version:       0.16.1
-:updated:       2019-08-08
+:version:       0.16.5
+:updated:       2019-08-18
 :documentation: http://yaml.readthedocs.io
 :repository:    https://bitbucket.org/ruamel/yaml
 :pypi:          https://pypi.org/project/ruamel.yaml/
@@ -54,6 +54,25 @@
 
 .. should insert NEXT: at the beginning of line for next key (with empty line)
 
+0.16.5 (2019-08-18):
+  - allow for ``YAML(typ=['unsafe', 'pytypes'])``
+
+0.16.4 (2019-08-16):
+  - fix output of TAG directives with # (reported by `Thomas Smith
+    <https://bitbucket.org/%7Bd4c57a72-f041-4843-8217-b4d48b6ece2f%7D/>`__)
+
+
+0.16.3 (2019-08-15):
+  - split construct_object
+  - change stuff back to keep mypy happy
+  - move setting of version based on YAML directive to scanner, allowing to
+    check for file version during TAG directive scanning
+
+0.16.2 (2019-08-15):
+  - preserve YAML and TAG directives on roundtrip, correctly output #
+    in URL for YAML 1.2 (both reported by `Thomas Smith
+    <https://bitbucket.org/%7Bd4c57a72-f041-4843-8217-b4d48b6ece2f%7D/>`__)
+
 0.16.1 (2019-08-08):
   - Force the use of new version of ruamel.yaml.clib (reported by `Alex Joz
     <https://bitbucket.org/%7B9af55900-2534-4212-976c-61339b6ffe14%7D/>`__)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruamel.yaml-0.16.1/__init__.py 
new/ruamel.yaml-0.16.5/__init__.py
--- old/ruamel.yaml-0.16.1/__init__.py  2019-08-08 08:21:56.000000000 +0200
+++ new/ruamel.yaml-0.16.5/__init__.py  2019-08-18 20:24:22.000000000 +0200
@@ -7,8 +7,8 @@
 
 _package_data = dict(
     full_package_name='ruamel.yaml',
-    version_info=(0, 16, 1),
-    __version__='0.16.1',
+    version_info=(0, 16, 5),
+    __version__='0.16.5',
     author='Anthon van der Neut',
     author_email='a.van.der.n...@ruamel.eu',
     description='ruamel.yaml is a YAML parser/emitter that supports roundtrip 
preservation of comments, seq/map flow style, and map key order',  # NOQA
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruamel.yaml-0.16.1/anchor.py 
new/ruamel.yaml-0.16.5/anchor.py
--- old/ruamel.yaml-0.16.1/anchor.py    2018-11-15 15:46:06.000000000 +0100
+++ new/ruamel.yaml-0.16.5/anchor.py    2019-08-18 20:21:18.000000000 +0200
@@ -11,3 +11,7 @@
         # type: () -> None
         self.value = None
         self.always_dump = False
+
+    def __repr__(self):
+        ad = ", (always dump)" if self.always_dump else ""
+        return "Anchor({!r}{})".format(self.value, ad)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruamel.yaml-0.16.1/comments.py 
new/ruamel.yaml-0.16.5/comments.py
--- old/ruamel.yaml-0.16.1/comments.py  2019-07-09 12:58:32.000000000 +0200
+++ new/ruamel.yaml-0.16.5/comments.py  2019-08-15 22:21:45.000000000 +0200
@@ -12,7 +12,8 @@
 import copy
 
 
-from ruamel.yaml.compat import ordereddict, PY2, string_types, 
MutableSliceableSequence
+from ruamel.yaml.compat import ordereddict  # type: ignore
+from ruamel.yaml.compat import PY2, string_types, MutableSliceableSequence
 from ruamel.yaml.scalarstring import ScalarString
 from ruamel.yaml.anchor import Anchor
 
@@ -159,7 +160,7 @@
     def add_idx_line_col(self, key, data):
         # type: (Any, Any) -> None
         if self.data is None:
-            self.data = {}  # type: Dict[Any, Any]
+            self.data = {}
         self.data[key] = data
 
 
@@ -351,7 +352,7 @@
         self.tag.value = value
 
     def copy_attributes(self, t, memo=None):
-        # type: (Any, bool) -> None
+        # type: (Any, Any) -> None
         # fmt: off
         for a in [Comment.attrib, Format.attrib, LineCol.attrib, Anchor.attrib,
                   Tag.attrib, merge_attrib]:
@@ -629,7 +630,7 @@
             yield self._mapping[key]
 
 
-class CommentedMap(ordereddict, CommentedBase):
+class CommentedMap(ordereddict, CommentedBase):  # type: ignore
     __slots__ = (Comment.attrib, '_ok', '_ref')
 
     def __init__(self, *args, **kw):
@@ -695,7 +696,7 @@
             self.ca.comment[1] = pre_comments
         return pre_comments
 
-    def update(self, vals):  # type: ignore
+    def update(self, vals):
         # type: (Any) -> None
         try:
             ordereddict.update(self, vals)
@@ -828,7 +829,7 @@
 
     def __len__(self):
         # type: () -> int
-        return ordereddict.__len__(self)
+        return int(ordereddict.__len__(self))
 
     def __eq__(self, other):
         # type: (Any) -> bool
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruamel.yaml-0.16.1/compat.py 
new/ruamel.yaml-0.16.5/compat.py
--- old/ruamel.yaml-0.16.1/compat.py    2019-07-25 21:45:21.000000000 +0200
+++ new/ruamel.yaml-0.16.5/compat.py    2019-08-15 22:17:06.000000000 +0200
@@ -13,7 +13,8 @@
 
 # fmt: off
 if False:  # MYPY
-    from typing import Any, Dict, Optional, List, Union, BinaryIO, IO, Text, 
Tuple, Optional  # NOQA
+    from typing import Any, Dict, Optional, List, Union, BinaryIO, IO, Text, 
Tuple  # NOQA
+    from typing import Optional  # NOQA
 # fmt: on
 
 _DEFAULT_YAML_VERSION = (1, 2)
@@ -106,7 +107,7 @@
     binary_type = str
 
     # to allow importing
-    unichr = unichr  # type: ignore
+    unichr = unichr
     from StringIO import StringIO as _StringIO
 
     StringIO = _StringIO
@@ -122,7 +123,7 @@
     # StreamType = Union[BinaryIO, IO[str], StringIO]  # type: ignore
     StreamType = Any
 
-    StreamTextType = Union[Text, StreamType]
+    StreamTextType = StreamType  # Union[Text, StreamType]
     VersionType = Union[List[int], str, Tuple[int, int]]
 
 if PY3:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruamel.yaml-0.16.1/constructor.py 
new/ruamel.yaml-0.16.5/constructor.py
--- old/ruamel.yaml-0.16.1/constructor.py       2019-04-21 17:26:25.000000000 
+0200
+++ new/ruamel.yaml-0.16.5/constructor.py       2019-08-15 22:31:29.000000000 
+0200
@@ -16,8 +16,10 @@
 from ruamel.yaml.nodes import *                               # NOQA
 from ruamel.yaml.nodes import (SequenceNode, MappingNode, ScalarNode)
 from ruamel.yaml.compat import (utf8, builtins_module, to_str, PY2, PY3,  # 
NOQA
-                                ordereddict, text_type, nprint, nprintf, 
version_tnf,
-                                Hashable, MutableSequence, MutableMapping)
+                                text_type, nprint, nprintf, version_tnf)
+from ruamel.yaml.compat import ordereddict, Hashable, MutableSequence  # type: 
ignore
+from ruamel.yaml.compat import MutableMapping  # type: ignore
+
 from ruamel.yaml.comments import *                               # NOQA
 from ruamel.yaml.comments import (CommentedMap, CommentedOrderedMap, 
CommentedSet,
                                   CommentedKeySeq, CommentedSeq, TaggedScalar,
@@ -141,19 +143,31 @@
             #     None, None, 'found unconstructable recursive node', 
node.start_mark
             # )
         self.recursive_objects[node] = None
+        data = self.construct_non_recursive_object(node)
+
+        self.constructed_objects[node] = data
+        del self.recursive_objects[node]
+        if deep:
+            self.deep_construct = old_deep
+        return data
+
+    def construct_non_recursive_object(self, node, tag=None):
+        # type: (Any, Optional[str]) -> Any
         constructor = None  # type: Any
         tag_suffix = None
-        if node.tag in self.yaml_constructors:
-            constructor = self.yaml_constructors[node.tag]
+        if tag is None:
+            tag = node.tag
+        if tag in self.yaml_constructors:
+            constructor = self.yaml_constructors[tag]
         else:
             for tag_prefix in self.yaml_multi_constructors:
-                if node.tag.startswith(tag_prefix):
-                    tag_suffix = node.tag[len(tag_prefix) :]
+                if tag.startswith(tag_prefix):
+                    tag_suffix = tag[len(tag_prefix) :]
                     constructor = self.yaml_multi_constructors[tag_prefix]
                     break
             else:
                 if None in self.yaml_multi_constructors:
-                    tag_suffix = node.tag
+                    tag_suffix = tag
                     constructor = self.yaml_multi_constructors[None]
                 elif None in self.yaml_constructors:
                     constructor = self.yaml_constructors[None]
@@ -175,10 +189,6 @@
                     pass
             else:
                 self.state_generators.append(generator)
-        self.constructed_objects[node] = data
-        del self.recursive_objects[node]
-        if deep:
-            self.deep_construct = old_deep
         return data
 
     def construct_scalar(self, node):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruamel.yaml-0.16.1/emitter.py 
new/ruamel.yaml-0.16.5/emitter.py
--- old/ruamel.yaml-0.16.1/emitter.py   2019-07-20 12:24:07.000000000 +0200
+++ new/ruamel.yaml-0.16.5/emitter.py   2019-08-16 07:18:20.000000000 +0200
@@ -169,7 +169,7 @@
         self.prefixed_colon = self.colon if prefix_colon is None else 
prefix_colon + self.colon
         # single entry mappings in flow sequence
         self.brace_single_entry_mapping_in_flow_sequence = (
-            brace_single_entry_mapping_in_flow_sequence
+         brace_single_entry_mapping_in_flow_sequence
         )  # NOQA
 
         # Formatting details.
@@ -204,6 +204,8 @@
         self.analysis = None  # type: Any
         self.style = None  # type: Any
 
+        self.scalar_after_indicator = True  # write a scalar on the same line 
as `---`
+
     @property
     def stream(self):
         # type: () -> Any
@@ -239,7 +241,7 @@
     def dispose(self):
         # type: () -> None
         # Reset the state attributes (to clear self-references)
-        self.states = []  # type: List[Any]
+        self.states = []
         self.state = None
 
     def emit(self, event):
@@ -408,6 +410,12 @@
                 and self.sequence_context
             ):
                 self.sequence_context = False
+            if (
+                root
+                and isinstance(self.event, ScalarEvent)
+                and not self.scalar_after_indicator
+            ):
+                self.write_indent()
             self.process_tag()
             if isinstance(self.event, ScalarEvent):
                 # nprint('@', self.indention, self.no_newline, self.column)
@@ -912,14 +920,14 @@
         start = end = 0
         if prefix[0] == u'!':
             end = 1
+        ch_set = u"-;/?:@&=+$,_.~*'()[]"
+        if self.dumper:
+            version = getattr(self.dumper, 'version', (1, 2))
+            if version is None or version >= (1, 2):
+                ch_set += u'#'
         while end < len(prefix):
             ch = prefix[end]
-            if (
-                u'0' <= ch <= u'9'
-                or u'A' <= ch <= u'Z'
-                or u'a' <= ch <= u'z'
-                or ch in u"-;/?!:@&=+$,_.~*'()[]"
-            ):
+            if u'0' <= ch <= u'9' or u'A' <= ch <= u'Z' or u'a' <= ch <= u'z' 
or ch in ch_set:
                 end += 1
             else:
                 if start < end:
@@ -947,13 +955,18 @@
                 suffix = tag[len(prefix) :]
         chunks = []  # type: List[Any]
         start = end = 0
+        ch_set = u"-;/?:@&=+$,_.~*'()[]"
+        if self.dumper:
+            version = getattr(self.dumper, 'version', (1, 2))
+            if version is None or version >= (1, 2):
+                ch_set += u'#'
         while end < len(suffix):
             ch = suffix[end]
             if (
                 u'0' <= ch <= u'9'
                 or u'A' <= ch <= u'Z'
                 or u'a' <= ch <= u'z'
-                or ch in u"-;/?:@&=+$,_.~*'()[]"
+                or ch in ch_set
                 or (ch == u'!' and handle != u'!')
             ):
                 end += 1
@@ -1581,7 +1594,7 @@
                         self.stream.write(data)
                     start = end
             elif breaks:
-                if ch not in u'\n\x85\u2028\u2029':
+                if ch not in u'\n\x85\u2028\u2029':  # type: ignore
                     if text[start] == u'\n':
                         self.write_line_break()
                     for br in text[start:end]:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruamel.yaml-0.16.1/error.py 
new/ruamel.yaml-0.16.5/error.py
--- old/ruamel.yaml-0.16.1/error.py     2019-07-17 09:39:54.000000000 +0200
+++ new/ruamel.yaml-0.16.5/error.py     2019-08-15 22:11:35.000000000 +0200
@@ -40,6 +40,7 @@
         return where
 
     def __eq__(self, other):
+        # type: (Any) -> bool
         if self.line != other.line or self.column != other.column:
             return False
         if self.name != other.name or self.index != other.index:
@@ -47,6 +48,7 @@
         return True
 
     def __ne__(self, other):
+        # type: (Any) -> bool
         return not self.__eq__(other)
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruamel.yaml-0.16.1/main.py 
new/ruamel.yaml-0.16.5/main.py
--- old/ruamel.yaml-0.16.1/main.py      2019-04-15 20:39:59.000000000 +0200
+++ new/ruamel.yaml-0.16.5/main.py      2019-08-18 18:32:50.000000000 +0200
@@ -35,7 +35,7 @@
 from ruamel.yaml.loader import Loader as UnsafeLoader
 
 if False:  # MYPY
-    from typing import List, Set, Dict, Union, Any, Callable  # NOQA
+    from typing import List, Set, Dict, Union, Any, Callable, Optional, Text  
# NOQA
     from ruamel.yaml.compat import StreamType, StreamTextType, VersionType  # 
NOQA
 
     if PY3:
@@ -78,7 +78,7 @@
                 '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 @@
         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  # type: Any
-            self.Representer = ruamel.yaml.representer.RoundTripRepresenter  # 
type: Any
-            self.Scanner = ruamel.yaml.scanner.RoundTripScanner  # type: Any
-            # 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 @@
             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 @@
             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
@@ -161,8 +160,19 @@
         self.tags = None
         self.default_style = None
         self.top_level_block_style_scalar_no_indent_error_1_1 = False
+        # directives end indicator with single scalar document
+        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):
@@ -324,7 +334,7 @@
         """
         if not hasattr(stream, 'read') and hasattr(stream, 'open'):
             # pathlib.Path() instance
-            with stream.open('rb') as fp:  # type: ignore
+            with stream.open('rb') as fp:
                 return self.load(fp)
         constructor, parser = self.get_constructor_parser(stream)
         try:
@@ -349,7 +359,7 @@
             )
         if not hasattr(stream, 'read') and hasattr(stream, 'open'):
             # pathlib.Path() instance
-            with stream.open('r') as fp:  # type: ignore
+            with stream.open('r') as fp:
                 for d in self.load_all(fp, _kw=enforce):
                     yield d
                 return
@@ -518,18 +528,22 @@
                 self.Serializer = ruamel.yaml.serializer.Serializer
             self.emitter.stream = stream
             self.emitter.top_level_colon_align = tlca
+            if self.scalar_after_indicator is not None:
+                self.emitter.scalar_after_indicator = 
self.scalar_after_indicator
             return self.serializer, self.representer, self.emitter
         if self.Serializer is not None:
             # cannot set serializer with CEmitter
             self.Emitter = ruamel.yaml.emitter.Emitter
             self.emitter.stream = stream
             self.emitter.top_level_colon_align = tlca
+            if self.scalar_after_indicator is not None:
+                self.emitter.scalar_after_indicator = 
self.scalar_after_indicator
             return self.serializer, self.representer, self.emitter
         # C routines
 
         rslvr = (
             ruamel.yaml.resolver.BaseResolver
-            if self.typ == 'base'
+            if 'base' in self.typ
             else ruamel.yaml.resolver.Resolver
         )
 
@@ -595,7 +609,7 @@
     # 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)
@@ -604,7 +618,7 @@
 
     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)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruamel.yaml-0.16.1/parser.py 
new/ruamel.yaml-0.16.5/parser.py
--- old/ruamel.yaml-0.16.1/parser.py    2019-05-15 23:19:33.000000000 +0200
+++ new/ruamel.yaml-0.16.5/parser.py    2019-08-15 17:07:38.000000000 +0200
@@ -109,7 +109,6 @@
         # type: () -> None
         # Reset the state attributes (to clear self-references)
         self.current_event = None
-        self.yaml_version = None
         self.tag_handles = {}  # type: Dict[Any, Any]
         self.states = []  # type: List[Any]
         self.marks = []  # type: List[Any]
@@ -219,6 +218,9 @@
                 )
             token = self.scanner.get_token()
             end_mark = token.end_mark
+            # if self.loader is not None and \
+            #    end_mark.line != self.scanner.peek_token().start_mark.line:
+            #     self.loader.scalar_after_indicator = False
             event = DocumentStartEvent(
                 start_mark, end_mark, explicit=True, version=version, tags=tags
             )  # type: Any
@@ -266,12 +268,12 @@
 
     def process_directives(self):
         # type: () -> Any
-        self.yaml_version = None
+        yaml_version = None
         self.tag_handles = {}
         while self.scanner.check_token(DirectiveToken):
             token = self.scanner.get_token()
             if token.name == u'YAML':
-                if self.yaml_version is not None:
+                if yaml_version is not None:
                     raise ParserError(
                         None, None, 'found duplicate YAML directive', 
token.start_mark
                     )
@@ -283,7 +285,7 @@
                         'found incompatible YAML document (version 1.* is ' 
'required)',
                         token.start_mark,
                     )
-                self.yaml_version = token.value
+                yaml_version = token.value
             elif token.name == u'TAG':
                 handle, prefix = token.value
                 if handle in self.tag_handles:
@@ -292,9 +294,15 @@
                     )
                 self.tag_handles[handle] = prefix
         if bool(self.tag_handles):
-            value = self.yaml_version, self.tag_handles.copy()  # type: Any
+            value = yaml_version, self.tag_handles.copy()  # type: Any
         else:
-            value = self.yaml_version, None
+            value = yaml_version, None
+        if self.loader is not None and hasattr(self.loader, 'tags'):
+            self.loader.version = yaml_version
+            if self.loader.tags is None:
+                self.loader.tags = {}
+            for k in self.tag_handles:
+                self.loader.tags[k] = self.tag_handles[k]
         for key in self.DEFAULT_TAGS:
             if key not in self.tag_handles:
                 self.tag_handles[key] = self.DEFAULT_TAGS[key]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruamel.yaml-0.16.1/representer.py 
new/ruamel.yaml-0.16.5/representer.py
--- old/ruamel.yaml-0.16.1/representer.py       2019-07-17 09:19:33.000000000 
+0200
+++ new/ruamel.yaml-0.16.5/representer.py       2019-08-15 22:28:42.000000000 
+0200
@@ -5,7 +5,8 @@
 
 from ruamel.yaml.error import *  # NOQA
 from ruamel.yaml.nodes import *  # NOQA
-from ruamel.yaml.compat import text_type, binary_type, to_unicode, PY2, PY3, 
ordereddict
+from ruamel.yaml.compat import text_type, binary_type, to_unicode, PY2, PY3
+from ruamel.yaml.compat import ordereddict  # type: ignore
 from ruamel.yaml.compat import nprint, nprintf  # NOQA
 from ruamel.yaml.scalarstring import (
     LiteralScalarString,
@@ -83,8 +84,8 @@
         # type: (Any) -> None
         node = self.represent_data(data)
         self.serializer.serialize(node)
-        self.represented_objects = {}  # type: Dict[Any, Any]
-        self.object_keeper = []  # type: List[Any]
+        self.represented_objects = {}
+        self.object_keeper = []
         self.alias_key = None
 
     def represent_data(self, data):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruamel.yaml-0.16.1/resolver.py 
new/ruamel.yaml-0.16.5/resolver.py
--- old/ruamel.yaml-0.16.1/resolver.py  2019-04-21 17:24:04.000000000 +0200
+++ new/ruamel.yaml-0.16.5/resolver.py  2019-08-15 19:21:34.000000000 +0200
@@ -383,7 +383,7 @@
     def processing_version(self):
         # type: () -> Any
         try:
-            version = self.parser.yaml_version
+            version = self.loadumper._scanner.yaml_version
         except AttributeError:
             try:
                 if hasattr(self.loadumper, 'typ'):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruamel.yaml-0.16.1/ruamel.yaml.egg-info/PKG-INFO 
new/ruamel.yaml-0.16.5/ruamel.yaml.egg-info/PKG-INFO
--- old/ruamel.yaml-0.16.1/ruamel.yaml.egg-info/PKG-INFO        2019-08-08 
08:22:17.000000000 +0200
+++ new/ruamel.yaml-0.16.5/ruamel.yaml.egg-info/PKG-INFO        2019-08-18 
20:27:44.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: ruamel.yaml
-Version: 0.16.1
+Version: 0.16.5
 Summary: ruamel.yaml is a YAML parser/emitter that supports roundtrip 
preservation of comments, seq/map flow style, and map key order
 Home-page: https://bitbucket.org/ruamel/yaml
 Author: Anthon van der Neut
@@ -12,8 +12,8 @@
         
         ``ruamel.yaml`` is a YAML 1.2 loader/dumper package for Python.
         
-        :version:       0.16.1
-        :updated:       2019-08-08
+        :version:       0.16.5
+        :updated:       2019-08-18
         :documentation: http://yaml.readthedocs.io
         :repository:    https://bitbucket.org/ruamel/yaml
         :pypi:          https://pypi.org/project/ruamel.yaml/
@@ -62,6 +62,25 @@
         
         .. should insert NEXT: at the beginning of line for next key (with 
empty line)
         
+        0.16.5 (2019-08-18):
+          - allow for ``YAML(typ=['unsafe', 'pytypes'])``
+        
+        0.16.4 (2019-08-16):
+          - fix output of TAG directives with # (reported by `Thomas Smith
+            
<https://bitbucket.org/%7Bd4c57a72-f041-4843-8217-b4d48b6ece2f%7D/>`__)
+        
+        
+        0.16.3 (2019-08-15):
+          - split construct_object
+          - change stuff back to keep mypy happy
+          - move setting of version based on YAML directive to scanner, 
allowing to
+            check for file version during TAG directive scanning
+        
+        0.16.2 (2019-08-15):
+          - preserve YAML and TAG directives on roundtrip, correctly output #
+            in URL for YAML 1.2 (both reported by `Thomas Smith
+            
<https://bitbucket.org/%7Bd4c57a72-f041-4843-8217-b4d48b6ece2f%7D/>`__)
+        
         0.16.1 (2019-08-08):
           - Force the use of new version of ruamel.yaml.clib (reported by 
`Alex Joz
             
<https://bitbucket.org/%7B9af55900-2534-4212-976c-61339b6ffe14%7D/>`__)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruamel.yaml-0.16.1/scalarstring.py 
new/ruamel.yaml-0.16.5/scalarstring.py
--- old/ruamel.yaml-0.16.1/scalarstring.py      2018-12-27 22:57:56.000000000 
+0100
+++ new/ruamel.yaml-0.16.5/scalarstring.py      2019-08-15 22:19:45.000000000 
+0200
@@ -129,7 +129,8 @@
         map[':'] = SingleQuotedScalarString
         walk_tree(data, map=map)
     """
-    from ruamel.yaml.compat import string_types, MutableMapping, 
MutableSequence
+    from ruamel.yaml.compat import string_types
+    from ruamel.yaml.compat import MutableMapping, MutableSequence  # type: 
ignore
 
     if map is None:
         map = {'\n': preserve_literal}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruamel.yaml-0.16.1/scanner.py 
new/ruamel.yaml-0.16.5/scanner.py
--- old/ruamel.yaml-0.16.1/scanner.py   2019-08-08 07:57:41.000000000 +0200
+++ new/ruamel.yaml-0.16.5/scanner.py   2019-08-16 07:17:21.000000000 +0200
@@ -81,6 +81,7 @@
             self.loader._scanner = self
         self.reset_scanner()
         self.first_time = False
+        self.yaml_version = None  # type: Any
 
     @property
     def flow_level(self):
@@ -155,10 +156,10 @@
 
     @property
     def scanner_processing_version(self):  # prefix until un-composited
-        # type: () -> VersionType
+        # type: () -> Any
         if hasattr(self.loader, 'typ'):
-            return self.loader.resolver.processing_version  # type: ignore
-        return self.loader.processing_version  # type: ignore
+            return self.loader.resolver.processing_version
+        return self.loader.processing_version
 
     # Public methods.
 
@@ -453,7 +454,7 @@
         # Reset simple keys.
         self.remove_possible_simple_key()
         self.allow_simple_key = False
-        self.possible_simple_keys = {}  # type: Dict[Any, Any]
+        self.possible_simple_keys = {}
         # Read the token.
         mark = self.reader.get_mark()
         # Add STREAM-END.
@@ -955,7 +956,8 @@
                 "expected a digit or ' ', but found %r" % utf8(srp()),
                 self.reader.get_mark(),
             )
-        return (major, minor)
+        self.yaml_version = (major, minor)
+        return self.yaml_version
 
     def scan_yaml_directive_number(self, start_mark):
         # type: (Any) -> Any
@@ -1675,7 +1677,7 @@
             or 'A' <= ch <= 'Z'
             or 'a' <= ch <= 'z'
             or ch in "-;/?:@&=+$,_.!~*'()[]%"
-            or ((self.scanner_processing_version > (1, 1)) and ch == "#")
+            or ((self.scanner_processing_version > (1, 1)) and ch == '#')
         ):
             if ch == '%':
                 chunks.append(self.reader.prefix(length))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruamel.yaml-0.16.1/setup.py 
new/ruamel.yaml-0.16.5/setup.py
--- old/ruamel.yaml-0.16.1/setup.py     2019-08-08 08:20:19.000000000 +0200
+++ new/ruamel.yaml-0.16.5/setup.py     2019-08-18 20:23:24.000000000 +0200
@@ -1,6 +1,6 @@
 # # header
 # coding: utf-8
-# dd: 20190807
+# dd: 20190815
 
 from __future__ import print_function, absolute_import, division, 
unicode_literals
 
@@ -20,8 +20,13 @@
 from setuptools.command import install_lib  # NOQA
 from setuptools.command.sdist import sdist as _sdist  # NOQA
 
-from setuptools.namespaces import Installer as NameSpaceInstaller # NOQA
-
+try:
+    from setuptools.namespaces import Installer as NameSpaceInstaller # NOQA
+except ImportError:
+    msg = ('You should use the latest setuptools. The namespaces.py file that 
this setup.py'
+           ' uses was added in setuptools 28.7.0 (Oct 2016)')
+    print(msg)
+    sys.exit()
 
 if __name__ != '__main__':
     raise NotImplementedError('should never include setup.py')
@@ -30,9 +35,6 @@
 
 full_package_name = None
 
-if __name__ != '__main__':
-    raise NotImplementedError('should never include setup.py')
-
 if sys.version_info < (3,):
     string_type = basestring
 else:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruamel.yaml-0.16.1/tokens.py 
new/ruamel.yaml-0.16.5/tokens.py
--- old/ruamel.yaml-0.16.1/tokens.py    2019-07-17 09:27:51.000000000 +0200
+++ new/ruamel.yaml-0.16.5/tokens.py    2019-08-15 22:12:53.000000000 +0200
@@ -272,6 +272,7 @@
         return 'CommentToken({})'.format(v)
 
     def __eq__(self, other):
+        # type: (Any) -> bool
         if self.start_mark != other.start_mark:
             return False
         if self.end_mark != other.end_mark:
@@ -281,4 +282,5 @@
         return True
 
     def __ne__(self, other):
+        # type: (Any) -> bool
         return not self.__eq__(other)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruamel.yaml-0.16.1/util.py 
new/ruamel.yaml-0.16.5/util.py
--- old/ruamel.yaml-0.16.1/util.py      2019-07-14 20:59:54.000000000 +0200
+++ new/ruamel.yaml-0.16.5/util.py      2019-08-15 22:08:26.000000000 +0200
@@ -77,9 +77,10 @@
         return idx
 
     if isinstance(stream, text_type):
-        yaml_str = stream
+        yaml_str = stream  # type: Any
     elif isinstance(stream, binary_type):
-        yaml_str = stream.decode('utf-8')  # most likely, but the Reader 
checks BOM for this
+        # most likely, but the Reader checks BOM for this
+        yaml_str = stream.decode('utf-8')
     else:
         yaml_str = stream.read()
     map_indent = None


Reply via email to