diff options
-rw-r--r-- | .hgignore | 1 | ||||
-rw-r--r-- | README.rst | 3 | ||||
-rw-r--r-- | __init__.py | 2 | ||||
-rw-r--r-- | _test/test_numpy.py | 24 | ||||
-rw-r--r-- | dumper.py | 6 | ||||
-rw-r--r-- | representer.py | 2 | ||||
-rw-r--r-- | resolver.py | 3 |
7 files changed, 34 insertions, 7 deletions
@@ -26,4 +26,3 @@ cmd TODO.rst _doc/_build .dcw_alt.yml -commit_message.txt @@ -18,6 +18,9 @@ ChangeLog :: + 0.12.18 (2016-11-16): + - another fix for numpy (re-reported by Nathanial Burdic) + 0.12.17 (2016-11-15): - only the RoundTripLoader included the Resolver that supports YAML 1.2 now all loaders do (reported by mixmastamyk) diff --git a/__init__.py b/__init__.py index fa7115e..bf976aa 100644 --- a/__init__.py +++ b/__init__.py @@ -9,7 +9,7 @@ from __future__ import absolute_import _package_data = dict( full_package_name="ruamel.yaml", - version_info=(0, 12, 17), + version_info=(0, 12, 18), author="Anthon van der Neut", author_email="a.van.der.neut@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 --git a/_test/test_numpy.py b/_test/test_numpy.py new file mode 100644 index 0000000..deec7a2 --- /dev/null +++ b/_test/test_numpy.py @@ -0,0 +1,24 @@ +# coding: utf-8 + +from __future__ import print_function, absolute_import, division, unicode_literals + +try: + import numpy +except: + numpy = None + +import ruamel.yaml + + +def test_numpy(): + if numpy is None: + return + data = numpy.arange(10) + print('data', type(data), data) + + yaml_str = ruamel.yaml.dump(data) + datb = ruamel.yaml.load(yaml_str) + print('datb', type(datb), datb) + + print('\nYAML', yaml_str) + assert data == datb @@ -27,9 +27,9 @@ class BaseDumper(Emitter, Serializer, BaseRepresenter, BaseResolver): explicit_start=explicit_start, explicit_end=explicit_end, version=version, tags=tags) - Representer.__init__(self, default_style=default_style, - default_flow_style=default_flow_style) - Resolver.__init__(self) + BaseRepresenter.__init__(self, default_style=default_style, + default_flow_style=default_flow_style) + BaseResolver.__init__(self) class SafeDumper(Emitter, Serializer, SafeRepresenter, Resolver): diff --git a/representer.py b/representer.py index 56890b3..2d82cf7 100644 --- a/representer.py +++ b/representer.py @@ -200,7 +200,7 @@ class SafeRepresenter(BaseRepresenter): # https://docs.python.org/3/reference/expressions.html#parenthesized-forms : # "i.e. two occurrences of the empty tuple may or may not yield the same object" # so "data is ()" should not be used - if data is None or data == (): + if data is None or (isinstance(data, tuple) and data == ()): return True if isinstance(data, (binary_type, text_type, bool, int, float)): return True diff --git a/resolver.py b/resolver.py index 366d8ff..b0e8105 100644 --- a/resolver.py +++ b/resolver.py @@ -3,6 +3,7 @@ from __future__ import absolute_import import re +import copy from typing import Any, Dict # NOQA @@ -38,7 +39,7 @@ class BaseResolver(object): def add_implicit_resolver(cls, tag, regexp, first): # type: (Any, Any, Any) -> None if 'yaml_implicit_resolvers' not in cls.__dict__: - cls.yaml_implicit_resolvers = cls.yaml_implicit_resolvers.copy() + cls.yaml_implicit_resolvers = copy.deepcopy(cls.yaml_implicit_resolvers) if first is None: first = [None] for ch in first: |