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 —
every function takes and returns bytes, 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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jubarte_redlines-0.7.1.tar.gz.
File metadata
- Download URL: jubarte_redlines-0.7.1.tar.gz
- Upload date:
- Size: 4.2 MB
- Tags: Source
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
23cea5c7961981703a35edd5248e2aa0de847b3ffb60fa63abc97757465ebb7a
|
|
| MD5 |
9f9f34c89a34354686717b5a5a340184
|
|
| BLAKE2b-256 |
e28bb11ed0bd6d40d90b3d1180749f99c05f4122829d2d882d6456600a993c42
|
File details
Details for the file jubarte_redlines-0.7.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: jubarte_redlines-0.7.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 6.7 MB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ x86-64
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a45e0449d98daf9526a50fdcb8f6f2c945164a3270c8f8cf82f33b36360b9cfd
|
|
| MD5 |
4e3ab19c7a6b865ad192271307ebe0f1
|
|
| BLAKE2b-256 |
1eaa3b535400ae7bbf80f650b14627748354ae630c4a4f63b61f65db759d4070
|
File details
Details for the file jubarte_redlines-0.7.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: jubarte_redlines-0.7.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 6.5 MB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ ARM64
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e06aea397ac984dbda056b8aaab0f1fda9628272f7a2b3c74e5d8c496e771ef9
|
|
| MD5 |
ddea67cb2388b67f67e90dfd8fcb2311
|
|
| BLAKE2b-256 |
4e23d5bdddfd5dd968a98c9c80f511b8ca33c4671ea6da71c5973be296238819
|
File details
Details for the file jubarte_redlines-0.7.1-cp310-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: jubarte_redlines-0.7.1-cp310-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 6.5 MB
- Tags: CPython 3.10+, macOS 11.0+ ARM64
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5be04ccca1b2d0fa99e2d4d2fff7d170184c5552e8a0caace013bff008fcbb5
|
|
| MD5 |
c33887c18b625d3e07efe5c7903d5fe6
|
|
| BLAKE2b-256 |
0ca4c77ab87777168211d9adba291f0d73194348720621cb5e647353522716ce
|
File details
Details for the file jubarte_redlines-0.7.1-cp310-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: jubarte_redlines-0.7.1-cp310-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 6.7 MB
- Tags: CPython 3.10+, macOS 10.12+ x86-64
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c4a68963e0eddb11279298784d05d9b5c4658f600a6d9d15c51d421672a10df
|
|
| MD5 |
c5dc33a2222d6356f9938eb1b1c6fd3b
|
|
| BLAKE2b-256 |
91da9606a455ed80302a993848fa9c14fb3be1f8ab8def8c82879c6d858150bf
|