Skip to content

Releases: remarshal-project/remarshal

v1.2.0

22 Aug 12:13
Compare
Choose a tag to compare
  • Added support for YAML 1.1. New input and output formats have been added: yaml-1.1 and yaml-1.2. YAML 1.2 remains the default.

v1.1.0

21 Aug 10:47
Compare
Choose a tag to compare
  • Added a new command-line option --yaml-style-newline.

v1.0.1

06 Aug 17:28
Compare
Choose a tag to compare
  • Fixed YAML line wrapping through the upstream package ruamel.yaml.
  • Fixed a missing newline after unindented Python output.
  • Switched pyproject.toml to PEP 621 for Poetry 2.0.
    • Moved tox configuration from tox.ini to pyproject.toml.

v1.0.0

17 Jan 12:43
Compare
Choose a tag to compare
  • BREAKING CHANGE: Dropped support for Python 3.9. Remarshal requires Python 3.10 or later.
  • TOML arrays that have more than a set number of items and aren't nested are formatted as multiline. Added the command-line option --multiline to control this.
  • The Remarshal CLI and public Python API should be considered stable.

v1.0.0rc3

10 Jan 08:52
Compare
Choose a tag to compare
v1.0.0rc3 Pre-release
Pre-release
  • Fixed a bug when parsing YAML like - src: {url: http://example.com}.
  • Switched to always using the pure-Python implementation of ruamel.yaml.

v1.0.0rc2

21 Nov 06:20
Compare
Choose a tag to compare
v1.0.0rc2 Pre-release
Pre-release

Breaking changes

  • Python API:
    The API has undergone significant changes in how formatting options are handled.
    • The formatting parameters to remarshal.remarshal have been removed and replaced with format-specific option classes. It makes clear what format uses what options.
    • While this is a breaking change, it should have no impact as Remarshal is used through its command-line interface.
  • --json-indent and --yaml-indent are now synonyms. See below for why. This should also have minimal impact.

Non-breaking changes

  • New Python output format:
    Added support for outputting data as Python code.
  • Unified formatting options:
    There are several improvements to make the formatting options more consistent.
    • A new unified --indent option. The option acts as a synonym for --json-indent and --yaml-indent. The old options remain available, though they have been hidden in the help message.
    • A new --width option acts as a synonym for --yaml-width. Besides YAML, it sets the width for Python output.
  • Improved the limitations section in the readme.

Upcoming v1.0

The YAML 1.2 upgrade in version 0.18 caught some downstream users off guard when their output documents were no longer valid YAML 1.1. We could have signaled this big break change with an increment to the major version. However, Remarshal was still version 0.x.

We should be done with minor breaking changes now. We shouldn't postpone a version 1.0 release because our new YAML library isn't stable. My plan is to release version 1.0 as the next release or the one after that. Going forward, we will be able to use semantic versioning to signal breaking changes.

v0.20.0

13 Oct 11:12
Compare
Choose a tag to compare
  • YAML: Emit null instead of an empty scalar for nulls. In 0.18.0 Remarshal switched to an empty scalar (meaning, foo: with no value after the key) to represent nulls. This was the result of migrating to the ruamel.yaml library, where it is the default. While both representations are valid YAML 1.2, people tend to write and expect null. The current release restores pre-0.18.0 behavior.

v0.19.1

12 Oct 20:19
Compare
Choose a tag to compare
  • YAML: Fixed error handling that broke in version 0.18.0. Improved the error messages.

v0.19.0

12 Oct 08:45
Compare
Choose a tag to compare
  • BREAKING CHANGE: Dropped support for Python 3.8 and PyPy 3.9.
  • TOML: Remarshal has stopped emitting empty tables when they have subtables.

v0.18.0

03 Apr 17:29
Compare
Choose a tag to compare

Breaking changes

  • Remarshal 0.18 finally encodes and decodes YAML as YAML 1.2 rather than YAML 1.1 like earlier versions. It means no more "Norway problem" (unquoted NO, No, and no being decoded as boolean false). Remarshal can now correctly process GitHub Actions YAML. To implement this, we have migrated from PyYAML to ruamel.yaml. The option --sort-keys no longer affects YAML output due to a lack of support in the new YAML library. Because ruamel.yaml is not yet considered stable, the 1.0 release of Remarshal is postponed.
  • Multiple small changes to the Python API when using Remarshal as a library. For example, the order of the arguments to the function remarshal has changed. A type checker like mypy or Pyright can help you upgrade. We hope to make this the biggest change before the API is declared stable in version 1.0.
  • Support for Python 3.7 has been dropped.

Non-breaking changes

  • TOML decoding speed-up: TOML decoding should be at least 10× faster on average. Encoding is unaffected.
  • There are new format command-line options -f/--from and -t/--to like in Pandoc and iconv(1). We have hidden (but kept) -if and -of with a single dash. Those are legacy options from the Go days of Remarshal.
  • A new --verbose command-line option has been added for debugging.
  • The command-line interface and the help message have color. Color is used sparingly. You can disable it by setting the environment variable NO_COLOR.
  • Remarshal is now tested with PyPy and on macOS.