Changelog

This document records all notable changes to Xul.

3.0.0 (2025-01-27)

  • Drop support for Python < 3.9.

  • xp: fix boolean result (Python >= 3.12).

  • xp: fix string result representation (Python 3).

  • xp: improved printing of namespaces.

  • transform: syntax highlighting for terminal output

  • transform: added --no-syntax option for terminal output

  • transform: removed --xsl-output option (always for --file).

  • Fixed encoding issues.

  • Clearer error messages.

  • Improved documentation; grouped CLI options.

  • Code checks: ruff, black, isort, mypy (GitHub Action).

  • Test script for local testing with Docker Compose.

  • Removed legacy code.

  • Typing.

  • Updated Sphinx configuration; Furo theme.

  • Output formatting (f-strings).

2.5.1 (2024-12-26)

  • Catch UnicodeDecodeError (Python 3).

2.5.0 (2024-12-25)

  • Documentation updates.

  • Tested on Python 3.11, 3.12, 3.13.

  • transform: honor --file with a non-XML result.

2.4.2 (2024-12-15)

  • Moved to GitHub.

  • Read the Docs configuration.

  • Migrated to pyproject.toml.

2.4.1 (2022-02-14)

  • Fixed Changelog URL.

2.4.0 (2022-02-14)

  • Beter handling of encodings other than UTF-8 (e.g. ISO-8859, UTF-16, UCS-2, UCS-4).

  • Added --file FILE option to transform: save result to file.

  • transform: now only transforms a single file.

  • Added --xsl-output option to transform: honor xsl:output.

  • Removed xul.dom module (legacy).

2.3.0 (2021-01-28)

  • Added --invalidated-files option to validate: only print names of invalidated files.

  • Added --validated-files option to validate: only print names of validated XML files.

  • xp: --files-with-hits and --files-without-hits options are mutually exclusive.

  • Consistent broken pipes errno.EPIPE exit status (Python 2).

2.2.1 (2021-01-14)

  • xp --pretty-element fix: output multiple results to a pipe (Python 2).

2.2.0 (2020-10-07)

  • xp: handle NaN [1] result as a false result (--files-with|without-hits).

  • Renamed xp --files-without-results option to --files-without-hits: only print names of files with a false or NaN [1] result, or without any results.

  • Renamed xp --files-with-results option to --files-with-hits: only print names of files with a non-false and non-NaN [1] result.

  • Added --relaxng option to validate: validate an XML source with RELAX NG.

  • Refactored validate script.

  • README: documentation is on Read The Docs.

2.1.0 (2020-09-09)

  • Added --quiet option to xp: don’t print the XML namespace list.

  • Added --files-without-results option to xp: only print names of files with a false result or without any results.

  • Added --files-with-results option to xp: only print names of files with XPath matches.

2.0.3 (2020-06-10)

  • Fix output encoding when piping output to a pager like less (Python 2).

2.0.2 (2020-05-31)

  • Fix: removed encoding from Pygments formatter so highlight returns Unicode strings.

2.0.1 (2020-03-08)

  • Added “syntax” install extra (Pygments): pip install Xul[syntax]

2.0.0 (2020-03-07)

Open sourced Xul.

Footnotes