jubarte-redlines (Python)
Lossless DOCX redline engine: compare two Word documents into a tracked-changes document that opens cleanly in Microsoft Word; list, accept, or reject revisions; render DOCX to PDF.
Python bindings (PyO3 + maturin) for the Rust
jubarte-redlines engine.
Pure compute, no Word/LibreOffice dependency, no network, no temp files —
documents go in and come out as bytes (whole DOCX/PDF packages), revision
metadata comes back as parsed records (get_revisions → list[dict],
get_revisions_json → JSON string), and the GIL is released while the
engine runs.
Install
pip install jubarte-redlines
# or: uv add jubarte-redlines
Prebuilt wheels are abi3 (one wheel per platform, CPython ≥ 3.10).
Usage
from pathlib import Path
from jubarte_redlines import (
compare_documents,
get_revisions,
accept_revisions,
reject_revisions,
docx_to_pdf,
)
original = Path("original.docx").read_bytes()
modified = Path("modified.docx").read_bytes()
# Word-mode compare → tracked-changes DOCX (w:ins / w:del)
redline = compare_documents(original, modified, author="Reviewer")
Path("redline.docx").write_bytes(redline)
# List revisions (same shape as the CLI `jubarte revisions --json`)
for rev in get_revisions(redline):
print(rev["type"], rev["author"], repr(rev.get("text")))
# Accept / reject every tracked revision, package-wide
clean = accept_revisions(redline) # ≙ modified content
base = reject_revisions(redline) # ≙ original content
# Render to PDF (Word-style layout)
Path("redline.pdf").write_bytes(docx_to_pdf(redline))
compare_documents(original, modified, author="jubarte", date=None) stamps
revisions with a fixed epoch date by default so output is deterministic;
pass an ISO-8601 date to override. Errors raise
jubarte_redlines.JubarteError.
Also available as
- Rust crate:
jubarte-redlines(this engine, plus a CLI) - npm / WebAssembly:
jubarte-wasm(Node and browser builds)
License
AGPL-3.0-only © Jandira Technologies, LLC
Metadata
Release files for jubarte-redlines 0.9.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| jubarte_redlines-0.9.3.tar.gz | 5.3 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| jubarte_redlines-0.9.3-cp310-abi3-manylinux_2_34_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.34+ x86-64 | Details |
| jubarte_redlines-0.9.3-cp310-abi3-manylinux_2_34_aarch64.whl | CPython 3.10 | abi3 | Linux glibc 2.34+ ARM64 | Details |
| jubarte_redlines-0.9.3-cp310-abi3-macosx_11_0_arm64.whl | CPython 3.10 | abi3 | macOS 11.0+ ARM64 | Details |
| jubarte_redlines-0.9.3-cp310-abi3-macosx_10_12_x86_64.whl | CPython 3.10 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 35.8 MB
Release files / jubarte_redlines-0.9.3.tar.gz
| Download URL | jubarte_redlines-0.9.3.tar.gz |
|---|---|
| Size | 5.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d010464b8c78d30478378d8a6ab73f29d19a979f6d7b2347e4361ad58f75939d
|
|
BLAKE2b-256 checksum How to use checksums |
7d4e6bbf732dc3d4a226f85adc6fd1969edfe947caa4c6f235c2b0b92f150976
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / jubarte_redlines-0.9.3-cp310-abi3-manylinux_2_34_x86_64.whl
| Download URL | jubarte_redlines-0.9.3-cp310-abi3-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 7.8 MB |
| Tags | CPython 3.10 Linux glibc 2.34+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
9cebdb054fce0d225956ee70e89b032d70aa1f2079ae708a3cc24cb9b9982d1f
|
|
BLAKE2b-256 checksum How to use checksums |
d57be0731b655b9ac402993b87e040821e26e6da1328385297f07f489cb40ba8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / jubarte_redlines-0.9.3-cp310-abi3-manylinux_2_34_aarch64.whl
| Download URL | jubarte_redlines-0.9.3-cp310-abi3-manylinux_2_34_aarch64.whl |
|---|---|
| Size | 7.6 MB |
| Tags | CPython 3.10 Linux glibc 2.34+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
257aee0e5c0a0e3de97baf3ad6486a7855b08079181532cfb1dc3226f345f9b5
|
|
BLAKE2b-256 checksum How to use checksums |
5e811993b0ea6fb48a8746e52b59af416d4ef6773cf63fcb6dc86f917f1a1e19
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / jubarte_redlines-0.9.3-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | jubarte_redlines-0.9.3-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 7.4 MB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
0d02d3491305bde04421d3cdb7f28d16d0805ad091d7e9a313f22878e5f1575a
|
|
BLAKE2b-256 checksum How to use checksums |
602a1cf2d77fb67f44548eead76863c3a7a3da55a725b4aadc23f94b99ed8f14
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / jubarte_redlines-0.9.3-cp310-abi3-macosx_10_12_x86_64.whl
| Download URL | jubarte_redlines-0.9.3-cp310-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 7.7 MB |
| Tags | CPython 3.10 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
1157375d4b7cd2c359f55db5b9a68a92c6af2329d77e74f3beb8d7634f27fd92
|
|
BLAKE2b-256 checksum How to use checksums |
80b13f7e27f020406deb61d69d96ac1d1478f51c645104973c15a5f214896f7d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|