Skip to content

Releases: remarshal-project/remarshal

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.

v0.17.1

05 Sep 14:22
Compare
Choose a tag to compare

v0.17.0

10 Aug 16:31
Compare
Choose a tag to compare
  • BREAKING CHANGE: Remarshal no longer turns boolean and null keys into strings by default when converting to JSON. The default is to exit with an error. The previous default could cause silent data corruption, for example, when converting a GitHub Actions workflow file with an unquoted on key from YAML to JSON. While this is a breaking change, it should not affect most users.
  • The new flag -k/--stringify restores the old JSON conversion behavior of turning boolean and null keys into strings. Additionally, it turns date-time keys into strings and works for both JSON and TOML. it also converts null values to strings for TOML, since TOML does not have null.

v0.16.1

22 Jul 22:24
Compare
Choose a tag to compare
  • This version fixes the default JSON indentation setting. Line breaks are once again absent when you don't use --json-indent.
  • Types have been filled in for mypy strict mode.

v0.16.0

19 Jul 12:43
Compare
Choose a tag to compare
  • This version adds new command-line options: --json-indent n, -s/--sort-keys, --yaml-indent n, --yaml-width n. --json-indent n is a synonym for --indent-json n consistent with the YAML options. Prefer it to the older option.
  • Preserving key order in JSON, TOML, and YAML types is now the default. Remarshal accepts the flag -p/--preserve-key-order for compatibility, but it does nothing. Pass -s/--sort-keys to enable the previous default behavior.
  • The code has type annotations.
  • The readme has been improved. It suggests better ways to run and install Remarshal. The mistaken claim that you can use a blank string as the filename for standard input/output (not true since the Python rewrite in 2016) is gone.

v0.15.1

13 Jul 20:43
Compare
Choose a tag to compare

This release updates metadata and infrastructure. There are no user-visible changes.

v0.15.0

08 Jul 22:22
Compare
Choose a tag to compare

This version

  • Fixes conversion of YAML with boolean and null keys to JSON;
  • Updates the CBOR, TOML, and YAML library, upgrading support for TOML to 1.0.0 (no longer -rc);
  • Requires Python 3.8;
  • Removes some inert code that supported earlier versions of Python.