Differences with PyYAML

::: parsed-literal

If I have seen further, it is by standing on the shoulders of giants.

: Isaac Newton (1676) :::

ruamel.yaml is a derivative of Kirill Simonov\'s PyYAML 3.11 and would not exist without that excellent base to start from.

The following a summary of the major differences with PyYAML 3.11

Defaulting to YAML 1.2 support

PyYAML supports the YAML 1.1 standard, ruamel.yaml supports YAML 1.2 as released in 2009.

  • YAML 1.2 dropped support for several features unquoted Yes, No, On, Off
  • YAML 1.2 no longer accepts strings that start with a 0 and solely consist of number characters as octal, you need to specify such strings with 0o[0-7]+ (zero + lower-case o for octal + one or more octal characters).
  • YAML 1.2 no longer supports sexagesimals, so the string scalar 12:34:56 doesn\'t need quoting.
  • \/ escape for JSON compatibility
  • correct parsing of floating point scalars with exponentials

unless the YAML document is loaded with an explicit version==1.1 or the document starts with:

% YAML 1.1

, ruamel.yaml will load the document as version 1.2.

PY2/PY3 reintegration

ruamel.yaml re-integrates the Python 2 and 3 sources, running on Python 2.7 (CPython, PyPy), 3.3, 3.4, 3.5 and 3.6 (support for 2.6 has been dropped mid 2016). It is more easy to extend and maintain as only a miniscule part of the code is Python version specific.

Fixes

  • ruamel.yaml follows the indent keyword argument on scalars when dumping.
  • ruamel.yaml allows : in plain scalars, as long as these are not followed by a space (as per the specification)

Testing

ruamel.yaml is tested using tox and py.test. In addition to new tests, the original PyYAML test framework is called from within tox runs.

Before versions are pushed to PyPI, tox is invoked, and has to pass, on all supported Python versions, on PyPI as well as flake8/pep8

API

Starting with 0.15 the API for using ruamel.yaml has diverged allowing easier addition of new features.

.. _tox: https://pypi.python.org/pypi/tox .. _py.test: http://pytest.org/latest/ .. _YAML 1.1: http://www.yaml.org/spec/1.1/spec.html .. _YAML 1.2: http://www.yaml.org/spec/1.2/spec.html .. _PyPI: https://pypi.python.org/pypi .. _ruamel.yaml: https://pypi.python.org/pypi/ruamel.yaml