Skip to content

docs: announce the docxdiff engine and tabulate the three engine choices#26

Open
JSv4 wants to merge 1 commit into
mainfrom
docs/clarify-engine-choices
Open

docs: announce the docxdiff engine and tabulate the three engine choices#26
JSv4 wants to merge 1 commit into
mainfrom
docs/clarify-engine-choices

Conversation

@JSv4

@JSv4 JSv4 commented Jul 10, 2026

Copy link
Copy Markdown
Owner

docxdiff shipped in 0.3.0, but you had to read to the bottom of the README to learn it existed. This surfaces it, and reorganizes the engine documentation around the three choices users actually have.

Announce the new engine up top

A callout now sits directly under the Quick Start: what docxdiff is, that it is off by default, the one-argument opt-in, and an explicit ask for feedback on real documents.

Three choices, one table

The README described "two comparison engines." There are really three ways to compare, across two engine classes:

# Choice How to select it Algorithm Status
1 Docxodus · wmlcomparer DocxodusEngine() Modernized WmlComparer Default, stable
2 Docxodus · docxdiff DocxodusEngine() + engine="docxdiff" Structure-aware IR diff New in 0.3.0, opt-in
3 Open-XML-PowerTools XmlPowerToolsEngine() Original WmlComparer Legacy, upstream archived

Choices 1 and 3 are both called "WmlComparer," which is genuinely confusing, so the text now says which is the maintained fork and which is the archived original.

Settings, split into two tables

One table for what each setting does; a second for which engine accepts it — , ❌ ValueError, or — ignored.

The matrix was derived by calling _build_command for every kwarg against both algorithms rather than transcribed by hand, and cross-checked against DocxodusEngine._WMLCOMPARER_ONLY. It documents one thing that was previously unstated anywhere: XmlPowerToolsEngine silently discards every keyword argument, including engine.

One correction

An earlier draft of this change claimed upgrading to 0.3.0 "will not change a single byte of your existing output." That is false and has been removed. The docxdiff flag is opt-in, but the Docxodus binary itself moved v5.4.2 → v7.0.0 in that release and carries upstream WmlComparer fixes (header references, table anchoring), so default-path output can differ from 0.2.1 independently of the new flag. The README now says so and suggests diffing a representative document if byte-level stability matters.

Notes

  • All three heading anchors are preserved — in particular #choosing-an-engine, which packages/core/README.md links to and which is already live on PyPI for 0.3.0.
  • Docs only. No code, no tests, no behavior change.
  • packages/core/README.md is the PyPI long description and is frozen at what 0.3.0 shipped; it would only refresh on a future release.

The docxdiff engine shipped in 0.3.0 but the README buried it. Announce it
directly under the Quick Start: what it is, that it is off by default, the
one-argument opt-in, and a request for feedback on real documents.

Replace the two-engine narrative with a table of the three actual choices --
Docxodus/wmlcomparer, Docxodus/docxdiff, and the legacy XmlPowerToolsEngine --
and disambiguate the naming, since two of the three descend from WmlComparer
and only one of those is maintained.

Split the settings section into what each setting does and which engine accepts
it. The per-engine matrix records that docxdiff raises ValueError for the three
settings it cannot honour, and that XmlPowerToolsEngine silently discards every
keyword argument, including engine -- previously undocumented.

Do not claim upgrading leaves output unchanged. The docxdiff flag is opt-in,
but the Docxodus binary moved v5.4.2 -> v7.0.0 and carries upstream WmlComparer
fixes, so default-path output can differ from 0.2.1 on its own.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant