summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES178
-rw-r--r--README.rst3
-rw-r--r--__init__.py7
-rw-r--r--compat.py12
-rw-r--r--cyaml.py7
-rw-r--r--dumper.py8
-rw-r--r--emitter.py7
-rw-r--r--error.py6
-rw-r--r--loader.py8
-rw-r--r--main.py7
-rw-r--r--nodes.py4
-rw-r--r--reader.py8
-rw-r--r--resolver.py6
-rw-r--r--scalarstring.py5
-rw-r--r--scanner.py5
-rw-r--r--serializer.py7
-rw-r--r--util.py7
17 files changed, 247 insertions, 38 deletions
diff --git a/CHANGES b/CHANGES
index 50c7e6f..f16e8ed 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,13 +1,185 @@
+0.14.0: 2017-03-22
+ - fix Text not available on 3.5.0 and 3.5.1 (reported by Charles Bouchard-Légaré)
-0.11.10 2016-05-02
+0.14.0: 2017-03-21
+ - updates for mypy --strict
+ - preparation for moving away from inheritance in Loader and Dumper, calls from e.g.
+ the Representer to the Serializer.serialize() are now done via the attribute
+ .serializer.serialize(). Usage of .serialize() outside of Serializer will be
+ deprecated soon
+ - some extra tests on main.py functions
+
+0.13.14: 2017-02-12
+ - fix for issue 97: clipped block scalar followed by empty lines and comment
+ would result in two CommentTokens of which the first was dropped.
+ (reported by Colm O'Connor)
+
+0.13.13: 2017-01-28
+ - fix for issue 96: prevent insertion of extra empty line if indented mapping entries
+ are separated by an empty line (reported by Derrick Sawyer)
+
+0.13.11: 2017-01-23
+ - allow ':' in flow style scalars if not followed by space. Also don't
+ quote such scalar as this is no longer necessary.
+ - add python 3.6 manylinux wheel to PyPI
+
+0.13.10: 2017-01-22
+ - fix for issue 93, insert spurious blank line before single line comment
+ between indented sequence elements (reported by Alex)
+
+0.13.9: 2017-01-18
+ - fix for issue 92, wrong import name reported by the-corinthian
+
+0.13.8: 2017-01-18
+ - fix for issue 91, when a compiler is unavailable reported by Maximilian Hils
+ - fix for deepcopy issue with TimeStamps not preserving 'T', reported on
+ `StackOverflow Q&A <http://stackoverflow.com/a/41577841/1307905>`_ by
+ `Quuxplusone <http://stackoverflow.com/users/1424877/quuxplusone>`_
+
+
+0.13.7: 2016-12-27
+ - fix for issue 85, constructor.py importing unicode_literals caused mypy to fail
+ on 2.7 (reported by Peter Amstutz)
+
+0.13.6: 2016-12-27
+ - fix for issue 83, collections.OrderedDict not representable by SafeRepresenter
+ (reported by Frazer McLean)
+
+0.13.5: 2016-12-25
+ - fix for issue 84, deepcopy not properly working (reported by Peter Amstutz)
+
+0.13.4: 2016-12-05
+ - another fix for issue 82, change to non-global resolver data broke implicit type
+ specification
+
+0.13.3: 2016-12-05
+ - fix for issue 82, deepcopy not working (reported by code monk)
+
+0.13.2: 2016-11-28
+ - fix for comments after empty (null) values (reported by dsw2127 and cokelaer)
+
+0.13.1: 2016-11-22
+ - optimisations on memory usage when loading YAML from large files (py3: -50%, py2: -85%)
+
+0.13.0: 2016-11-20
+ - if ``load()`` or ``load_all()`` is called with only a single argument
+ (stream or string)
+ a UnsafeLoaderWarning will be issued once. If appropriate you can surpress this
+ warning by filtering it. Explicitly supplying the ``Loader=ruamel.yaml.Loader``
+ argument, will also prevent it from being issued. You should however consider
+ using ``safe_load()``, ``safe_load_all()`` if your YAML input does not use tags.
+ - allow adding comments before and after keys (based on
+ `StackOveflow Q&A <http://stackoverflow.com/a/40705671/1307905>`_ by
+ `msinn <http://stackoverflow.com/users/7185467/msinn>`_)
+
+0.12.18: 2016-11-16
+ - another fix for numpy (re-reported independently by PaulG & 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)
+
+0.12.16: 2016-11-13
+ - allow dot char (and many others) in anchor name
+ Fix issue 72 (reported by Shalon Wood)
+ - Slightly smarter behaviour dumping strings when no style is
+ specified. Single string scalars that start with single quotes
+ or have newlines now are dumped double quoted: "'abc\nklm'" instead of::
+
+ '''abc
+
+ klm'''
+
+0.12.14: 2016-09-21
+ - preserve round-trip sequences that are mapping keys
+ (prompted by stackoverflow question 39595807 from Nowox)
+
+0.12.13: 2016-09-15
+ - Fix for issue #60 representation of CommentedMap with merge
+ keys incorrect (reported by Tal Liron)
+
+0.12.11: 2016-09-06
+ - Fix issue 58 endless loop in scanning tokens (reported by
+ Christopher Lambert)
+
+0.12.10: 2016-09-05
+ - Make previous fix depend on unicode char width (32 bit unicode support
+ is a problem on MacOS reported by David Tagatac)
+
+0.12.8: 2016-09-05
+ - To be ignored Unicode characters were not properly regex matched
+ (no specific tests, PR by Haraguroicha Hsu)
+
+0.12.7: 2016-09-03
+ - fixing issue 54 empty lines with spaces (reported by Alex Harvey)
+
+0.12.6: 2016-09-03
+ - fixing issue 46 empty lines between top-level keys were gobbled (but
+ not between sequence elements, nor between keys in netsted mappings
+ (reported by Alex Harvey)
+
+0.12.5: 2016-08-20
+ - fixing issue 45 preserving datetime formatting (submitted by altuin)
+ Several formatting parameters are preserved with some normalisation:
+ - preserve 'T', 't' is replaced by 'T', multiple spaces between date
+ and time reduced to one.
+ - optional space before timezone is removed
+ - still using microseconds, but now rounded (.1234567 -> .123457)
+ - Z/-5/+01:00 preserved
+
+0.12.4: 2016-08-19
+ - Fix for issue 44: missing preserve_quotes keyword argument (reported
+ by M. Crusoe)
+
+0.12.3: 2016-08-17
+ - correct 'in' operation for merged CommentedMaps in round-trip mode
+ (implementation inspired by J.Ngo, but original not working for merges)
+ - iteration over round-trip loaded mappings, that contain merges. Also
+ keys(), items(), values() (Py3/Py2) and iterkeys(), iteritems(),
+ itervalues(), viewkeys(), viewitems(), viewvalues() (Py2)
+ - reuse of anchor name now generates warning, not an error. Round-tripping such
+ anchors works correctly. This inherited PyYAML issue was brought to attention
+ by G. Coddut (and was long standing https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=515634)
+ suppressing the warning::
+
+ import warnings
+ from ruamel.yaml.error import ReusedAnchorWarning
+ warnings.simplefilter("ignore", ReusedAnchorWarning)
+
+0.12.2: 2016-08-16
+ - minor improvements based on feedback from M. Crusoe
+ https://bitbucket.org/ruamel/yaml/issues/42/
+
+0.12.0: 2016-08-16
+ - drop support for Python 2.6
+ - include initial Type information (inspired by M. Crusoe)
+
+0.11.15: 2016-08-07
+ - Change to prevent FutureWarning in NumPy, as reported by tgehring
+ ("comparison to None will result in an elementwise object comparison in the future")
+
+0.11.14: 2016-07-06
+ - fix preserve_quotes missing on original Loaders (as reported
+ by Leynos, bitbucket issue 38)
+
+0.11.13: 2016-07-06
+ - documentation only, automated linux wheels
+
+0.11.12: 2016-07-06
+ - added support for roundtrip of single/double quoted scalars using:
+ ruamel.yaml.round_trip_load(stream, preserve_quotes=True)
+
+0.11.10: 2016-05-02
- added .insert(pos, key, value, comment=None) to CommentedMap
-0.11.10 2016-04-19
+0.11.10: 2016-04-19
- indent=2, block_seq_indent=2 works as expected
-<To be updated>
+0.11.0: 2016-02-18
+ - RoundTripLoader loads 1.2 by default (no sexagesimals, 012 octals nor
+ yes/no/on/off booleans
0.10.11: 2015-09-17
- Fix issue 13: dependency on libyaml to be installed for yaml.h
diff --git a/README.rst b/README.rst
index 50f32e2..b27c1ac 100644
--- a/README.rst
+++ b/README.rst
@@ -18,6 +18,9 @@ ChangeLog
.. should insert NEXT: at the beginning of line for next key
+0.14.1 (2017-03-22):
+ - fix Text not available on 3.5.0 and 3.5.1 (reported by Charles Bouchard-Légaré)
+
0.14.0 (2017-03-21):
- updates for mypy --strict
- preparation for moving away from inheritance in Loader and Dumper, calls from e.g.
diff --git a/__init__.py b/__init__.py
index b255c7a..8a21e45 100644
--- a/__init__.py
+++ b/__init__.py
@@ -10,8 +10,8 @@ from typing import Dict, Any # NOQA
_package_data = dict(
full_package_name='ruamel.yaml',
- version_info=(0, 14, 0),
- __version__='0.14.0',
+ version_info=(0, 14, 1),
+ __version__='0.14.1',
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
@@ -51,8 +51,7 @@ _package_data = dict(
read_the_docs='yaml',
many_linux='libyaml-devel',
supported=[(2, 7), (3, 3)], # minimum
-) # type: Dict[Any, Any]
-
+) # type: Dict[Any, Any]
version_info = _package_data['version_info']
__version__ = _package_data['__version__']
diff --git a/compat.py b/compat.py
index 54db14d..4747fdb 100644
--- a/compat.py
+++ b/compat.py
@@ -8,7 +8,8 @@ import sys
import os
import types
-from typing import Any, Dict, Optional, List, Union, BinaryIO, IO, Text, Tuple # NOQA
+if sys.version_info >= (3, 5, 2):
+ from typing import Any, Dict, Optional, List, Union, BinaryIO, IO, Text, Tuple # NOQA
try:
@@ -94,11 +95,12 @@ else:
import cStringIO
BytesIO = cStringIO.StringIO
-# StreamType = Union[BinaryIO, IO[str], IO[unicode], StringIO]
-StreamType = Union[BinaryIO, IO[str], StringIO]
+if sys.version_info >= (3, 5, 2):
+ # StreamType = Union[BinaryIO, IO[str], IO[unicode], StringIO]
+ StreamType = Union[BinaryIO, IO[str], StringIO]
-StreamTextType = Union[Text, StreamType]
-VersionType = Union[List[int], str, Tuple[int, int]]
+ StreamTextType = Union[Text, StreamType]
+ VersionType = Union[List[int], str, Tuple[int, int]]
if PY3:
builtins_module = 'builtins'
diff --git a/cyaml.py b/cyaml.py
index 2223a5b..41d2d08 100644
--- a/cyaml.py
+++ b/cyaml.py
@@ -2,7 +2,8 @@
from __future__ import absolute_import
-from typing import Any, Union # NOQA
+import sys
+
from _ruamel_yaml import CParser, CEmitter # type: ignore
@@ -11,7 +12,9 @@ from ruamel.yaml.serializer import Serializer
from ruamel.yaml.representer import Representer, SafeRepresenter, BaseRepresenter
from ruamel.yaml.resolver import Resolver, BaseResolver
-from ruamel.yaml.compat import StreamTextType, StreamType, VersionType # NOQA
+if sys.version_info >= (3, 5, 2):
+ from typing import Any, Union # NOQA
+ from ruamel.yaml.compat import StreamTextType, StreamType, VersionType # NOQA
__all__ = ['CBaseLoader', 'CSafeLoader', 'CLoader',
'CBaseDumper', 'CSafeDumper', 'CDumper']
diff --git a/dumper.py b/dumper.py
index 139265e..da64056 100644
--- a/dumper.py
+++ b/dumper.py
@@ -2,9 +2,7 @@
from __future__ import absolute_import
-from typing import Any, Dict, List, Union # NOQA
-
-from ruamel.yaml.compat import StreamType, VersionType # NOQA
+import sys
from ruamel.yaml.emitter import Emitter
from ruamel.yaml.serializer import Serializer
@@ -12,6 +10,10 @@ from ruamel.yaml.representer import Representer, SafeRepresenter, BaseRepresente
RoundTripRepresenter
from ruamel.yaml.resolver import Resolver, BaseResolver, VersionedResolver
+if sys.version_info >= (3, 5, 2):
+ from typing import Any, Dict, List, Union # NOQA
+ from ruamel.yaml.compat import StreamType, VersionType # NOQA
+
__all__ = ['BaseDumper', 'SafeDumper', 'Dumper', 'RoundTripDumper']
diff --git a/emitter.py b/emitter.py
index 7a2a5a2..e0ea980 100644
--- a/emitter.py
+++ b/emitter.py
@@ -10,14 +10,17 @@ from __future__ import print_function
# sequence ::= SEQUENCE-START node* SEQUENCE-END
# mapping ::= MAPPING-START (node node)* MAPPING-END
-from typing import Any, Dict, List, Union, Text # NOQA
+import sys
from ruamel.yaml.error import YAMLError
from ruamel.yaml.events import * # NOQA
from ruamel.yaml.compat import utf8, text_type, PY2, nprint, dbg, DBG_EVENT, \
check_anchorname_char
-from ruamel.yaml.compat import StreamType # NOQA
+
+if sys.version_info >= (3, 5, 2):
+ from typing import Any, Dict, List, Union, Text # NOQA
+ from ruamel.yaml.compat import StreamType # NOQA
__all__ = ['Emitter', 'EmitterError']
diff --git a/error.py b/error.py
index c35623f..9de0b60 100644
--- a/error.py
+++ b/error.py
@@ -4,10 +4,14 @@ from __future__ import absolute_import
import warnings
-from typing import Any, Dict, Optional, List, Text # NOQA
+import sys
from ruamel.yaml.compat import utf8
+if sys.version_info >= (3, 5, 2):
+ from typing import Any, Dict, Optional, List, Text # NOQA
+
+
__all__ = [
'FileMark', 'StringMark', 'CommentMark', 'YAMLError', 'MarkedYAMLError',
'ReusedAnchorWarning', 'UnsafeLoaderWarning',
diff --git a/loader.py b/loader.py
index a9b237f..f99ade7 100644
--- a/loader.py
+++ b/loader.py
@@ -2,9 +2,7 @@
from __future__ import absolute_import
-from typing import Any, Dict, List # NOQA
-
-from ruamel.yaml.compat import StreamTextType, VersionType # NOQA
+import sys
from ruamel.yaml.reader import Reader
from ruamel.yaml.scanner import Scanner, RoundTripScanner
@@ -14,6 +12,10 @@ from ruamel.yaml.constructor import BaseConstructor, SafeConstructor, Constructo
RoundTripConstructor
from ruamel.yaml.resolver import VersionedResolver
+if sys.version_info >= (3, 5, 2):
+ from typing import Any, Dict, List # NOQA
+ from ruamel.yaml.compat import StreamTextType, VersionType # NOQA
+
__all__ = ['BaseLoader', 'SafeLoader', 'Loader', 'RoundTripLoader']
diff --git a/main.py b/main.py
index 25a8f36..3c17915 100644
--- a/main.py
+++ b/main.py
@@ -4,8 +4,7 @@ from __future__ import absolute_import, unicode_literals
import warnings
-
-from typing import List, Set, Dict, Union, Any # NOQA
+import sys
import ruamel.yaml
from ruamel.yaml.error import * # NOQA
@@ -17,7 +16,6 @@ from ruamel.yaml.nodes import * # NOQA
from ruamel.yaml.loader import BaseLoader, SafeLoader, Loader, RoundTripLoader # NOQA
from ruamel.yaml.dumper import BaseDumper, SafeDumper, Dumper, RoundTripDumper # NOQA
from ruamel.yaml.compat import StringIO, BytesIO, with_metaclass, PY3
-from ruamel.yaml.compat import StreamType, StreamTextType, VersionType # NOQA
from ruamel.yaml.resolver import VersionedResolver, Resolver # NOQA
from ruamel.yaml.representer import (BaseRepresenter, SafeRepresenter, Representer,
RoundTripRepresenter)
@@ -25,6 +23,9 @@ from ruamel.yaml.constructor import (BaseConstructor, SafeConstructor, Construct
RoundTripConstructor)
from ruamel.yaml.loader import Loader as UnsafeLoader
+if sys.version_info >= (3, 5, 2):
+ from typing import List, Set, Dict, Union, Any # NOQA
+ from ruamel.yaml.compat import StreamType, StreamTextType, VersionType # NOQA
# import io
diff --git a/nodes.py b/nodes.py
index b96524c..7f1cf88 100644
--- a/nodes.py
+++ b/nodes.py
@@ -2,7 +2,9 @@
from __future__ import print_function
-from typing import Dict, Any, Text # NOQA
+import sys
+if sys.version_info >= (3, 5, 2):
+ from typing import Dict, Any, Text # NOQA
class Node(object):
diff --git a/reader.py b/reader.py
index a2db2f8..777247d 100644
--- a/reader.py
+++ b/reader.py
@@ -23,11 +23,13 @@ from __future__ import absolute_import
import codecs
import re
-from typing import Any, Dict, Optional, List, Union, Text # NOQA
-
+import sys
from ruamel.yaml.error import YAMLError, FileMark, StringMark
from ruamel.yaml.compat import text_type, binary_type, PY3
-from ruamel.yaml.compat import StreamTextType # NOQA
+
+if sys.version_info >= (3, 5, 2):
+ from typing import Any, Dict, Optional, List, Union, Text # NOQA
+ from ruamel.yaml.compat import StreamTextType # NOQA
__all__ = ['Reader', 'ReaderError']
diff --git a/resolver.py b/resolver.py
index eab1b41..6245216 100644
--- a/resolver.py
+++ b/resolver.py
@@ -4,11 +4,13 @@ from __future__ import absolute_import
import re
-from typing import Any, Dict, List, Union # NOQA
+import sys
+if sys.version_info >= (3, 5, 2):
+ from typing import Any, Dict, List, Union # NOQA
+ from ruamel.yaml.compat import string_types, VersionType # NOQA
from ruamel.yaml.error import * # NOQA
from ruamel.yaml.nodes import * # NOQA
-from ruamel.yaml.compat import string_types, VersionType # NOQA
__all__ = ['BaseResolver', 'Resolver', 'VersionedResolver']
diff --git a/scalarstring.py b/scalarstring.py
index da43bcf..b02ad1d 100644
--- a/scalarstring.py
+++ b/scalarstring.py
@@ -3,10 +3,13 @@
from __future__ import absolute_import
from __future__ import print_function
-from typing import Text, Any, Dict, List # NOQA
+import sys
from ruamel.yaml.compat import text_type
+if sys.version_info >= (3, 5, 2):
+ from typing import Text, Any, Dict, List # NOQA
+
__all__ = ["ScalarString", "PreservedScalarString", "SingleQuotedScalarString",
"DoubleQuotedScalarString"]
diff --git a/scanner.py b/scanner.py
index 68b043c..3a95d4e 100644
--- a/scanner.py
+++ b/scanner.py
@@ -30,12 +30,15 @@ from __future__ import print_function, absolute_import, division, unicode_litera
# Read comments in the Scanner code for more details.
#
-from typing import Any, Dict, Optional, List, Union, Text # NOQA
+import sys
from ruamel.yaml.error import MarkedYAMLError
from ruamel.yaml.tokens import * # NOQA
from ruamel.yaml.compat import utf8, unichr, PY3, check_anchorname_char
+if sys.version_info >= (3, 5, 2):
+ from typing import Any, Dict, Optional, List, Union, Text # NOQA
+
__all__ = ['Scanner', 'RoundTripScanner', 'ScannerError']
diff --git a/serializer.py b/serializer.py
index 7cac44d..30348f3 100644
--- a/serializer.py
+++ b/serializer.py
@@ -4,11 +4,10 @@ from __future__ import absolute_import
import re
-from typing import Any, Dict, Union, Text # NOQA
+import sys
from ruamel.yaml.error import YAMLError
from ruamel.yaml.compat import nprint, DBG_NODE, dbg, string_types
-from ruamel.yaml.compat import VersionType # NOQA
from ruamel.yaml.events import (
StreamStartEvent, StreamEndEvent, MappingStartEvent, MappingEndEvent,
@@ -19,6 +18,10 @@ from ruamel.yaml.nodes import (
MappingNode, ScalarNode, SequenceNode,
)
+if sys.version_info >= (3, 5, 2):
+ from typing import Any, Dict, Union, Text # NOQA
+ from ruamel.yaml.compat import VersionType # NOQA
+
__all__ = ['Serializer', 'SerializerError']
diff --git a/util.py b/util.py
index 4ce14ec..3d44230 100644
--- a/util.py
+++ b/util.py
@@ -6,10 +6,13 @@ some helper functions that might be generally useful
from __future__ import absolute_import, print_function
-from typing import Any, Dict, Optional, List, Text # NOQA
+import sys
from .compat import text_type, binary_type
-from .compat import StreamTextType, StringIO # NOQA
+
+if sys.version_info >= (3, 5, 2):
+ from typing import Any, Dict, Optional, List, Text # NOQA
+ from .compat import StreamTextType # NOQA
# originally as comment