Releases: JSv4/Python-Redlines
Release list
v0.3.0 — Docxodus v7.0.0 and the docxdiff comparison engine
Upgrades the vendored Docxodus engine from v5.4.2 to v7.0.0 and exposes its new comparison-engine selector.
New: choose a comparison engine
DocxodusEngine now accepts an engine= keyword argument. wmlcomparer remains the default, so existing code is unaffected.
from python_redlines import DocxodusEngine
engine = DocxodusEngine()
engine.run_redline("Reviewer", original, modified) # wmlcomparer (default)
engine.run_redline("Reviewer", original, modified, engine="docxdiff") # new IR enginedocxdiff is Docxodus's structure-aware IR diff engine. It produces finer-grained markup and will report a different revision count than wmlcomparer for the same pair of documents — different algorithms, both correct.
Settings docxdiff does not support
docxdiff does not implement detail_threshold, simplify_move_markup, or detect_format_changes. The underlying CLI accepts and silently ignores them, so passing any of the three alongside engine="docxdiff" now raises ValueError instead of quietly producing untuned output.
It does honour detect_moves, case_insensitive, conflate_spaces, move_similarity_threshold, move_minimum_word_count, and date_time.
Move markup differs between the two: docxdiff renders moves natively and rejects simplify_move_markup, so the Word-compatibility mitigation documented for wmlcomparer is unavailable there. If you need moves lowered to plain del/ins, use engine="wmlcomparer" with simplify_move_markup=True.
Building from source now requires the .NET 10 SDK
Docxodus v7.0.0 targets net10.0. A .NET 8 SDK can no longer build the Docxodus engine. The Open-XML-PowerTools engine still targets net8.0, and the .NET 10 SDK builds both, so only one SDK is needed.
apt install dotnet-sdk-10.0
# or: curl -sSL https://dot.net/v1/dotnet-install.sh | bash -s -- --channel 10.0This affects contributors only. Installing from PyPI ships prebuilt binaries; end users never compile anything and need no .NET SDK.
Install
pip install python-redlines[docxodus] # Docxodus engine (wmlcomparer + docxdiff)
pip install python-redlines[ooxmlpowertools] # Open-XML-PowerTools engine
pip install python-redlines[all]Full changelog: v0.2.1...v0.3.0
v0.2.1
Patch release with documentation and typing fixes.
Changes
docs/quickstart.mdrewritten to lead with the recommendedDocxodusEngine(was previously the legacy engine), with a new section demonstrating Docxodus-only comparison kwargs and a callout thatXmlPowerToolsEnginesilently ignores them. (#23)run_redlineargument type widened fromUnion[bytes, Path]toUnion[str, bytes, Path]to match documented usage — passing plainstrpaths now matches the annotation. No runtime behavior change. (#23)
Install
pip install --upgrade python-redlines[docxodus]
v0.2.0
First release of the three-package layout.
Install
pip install python-redlines[docxodus] # default engine (recommended)
pip install python-redlines[ooxmlpowertools] # legacy engine
pip install python-redlines[all] # both enginesPrebuilt wheels for Linux, macOS, and Windows (x64 and arm64). No .NET SDK required to install or use.
What's new
- Restructured into three PyPI packages:
python-redlines(pure-Python core),python-redlines-docxodus(default engine binary),python-redlines-ooxmlpowertools(legacy engine binary). Engines are optional extras. - New default engine — DocxodusEngine: modernized .NET 8 fork of Open-XML-PowerTools with move detection, format-change detection, LCS-based table row matching, and active maintenance.
- Comparison settings:
DocxodusEngine.run_redline()accepts kwargs fordetect_moves,simplify_move_markup,detail_threshold,case_insensitive,move_similarity_threshold,move_minimum_word_count,detect_format_changes,conflate_spaces, anddate_time. - Helpful error on missing engine: instantiating an engine without its companion package raises
EngineNotInstalledErrorwith the exactpip installcommand. - Release pipeline: GitHub Actions builds per-platform wheels and publishes to PyPI via Trusted Publishing (OIDC).
Backwards compatibility
XmlPowerToolsEngine remains available unchanged for existing users. Both engines share the same run_redline(author, original_bytes, modified_bytes) API.
v0.0.5 - Add ARM Support
What's Changed
- Add ARM support by @ross-mcnairn-dev in #9
New Contributors
- @ross-mcnairn-dev made their first contribution in #9
Full Changelog: v0.0.4...v0.0.5
v0.0.4 - Release Binaries via PyPi Latest
What's Changed
- Fix binary extraction flow by @rishabh-sagar-20 in #7
- Improve Build and Dist Infrastructure by @JSv4 in #6
New Contributors
- @rishabh-sagar-20 made their first contribution in #7
Full Changelog: v0.0.3...v0.0.4
v0.0.3 - Update Docs and Add OSX Build
Updated docs and added OSX build.
v0.0.2 - Fix Docs
v0.0.1 - Initial Release
Initial release of our Python library to run docx redlines. As discussed extensively in the README, it currently is a simple wrapper of a C# class - WMLComparer, which is distributed as part of Open-XML-PowerTools. We would like to build a pure Python version as well, but this is meant to provide basic redlining capabilities to the Python ecosystem ASAP. Contributions are welcome.