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.10.1
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.10.1.tar.gz | 5.5 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| jubarte_redlines-0.10.1-cp310-abi3-manylinux_2_34_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.34+ x86-64 | Details |
| jubarte_redlines-0.10.1-cp310-abi3-manylinux_2_34_aarch64.whl | CPython 3.10 | abi3 | Linux glibc 2.34+ ARM64 | Details |
| jubarte_redlines-0.10.1-cp310-abi3-macosx_11_0_arm64.whl | CPython 3.10 | abi3 | macOS 11.0+ ARM64 | Details |
| jubarte_redlines-0.10.1-cp310-abi3-macosx_10_12_x86_64.whl | CPython 3.10 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 39.4 MB
Release files / jubarte_redlines-0.10.1.tar.gz
| Download URL | jubarte_redlines-0.10.1.tar.gz |
|---|---|
| Size | 5.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a99c32809f9682932d2794aceb0caaf86f3d50cf3f3f56b8cf965ed684f35e9f
|
|
BLAKE2b-256 checksum How to use checksums |
e193c880366e09557bfaba2b6bee5da6572ae3b055e68170f64e1f80de57dac1
|
| 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.10.1-cp310-abi3-manylinux_2_34_x86_64.whl
| Download URL | jubarte_redlines-0.10.1-cp310-abi3-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 8.7 MB |
| Tags | CPython 3.10 Linux glibc 2.34+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
33d8166165257467d507e956e54b40bc4613cbced525d983d940c84dd2dc82a8
|
|
BLAKE2b-256 checksum How to use checksums |
24a81dbe31a4dfc54cf598cda67899e2e753b801d90fe8ce0ac86eccccb7485a
|
| 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.10.1-cp310-abi3-manylinux_2_34_aarch64.whl
| Download URL | jubarte_redlines-0.10.1-cp310-abi3-manylinux_2_34_aarch64.whl |
|---|---|
| Size | 8.4 MB |
| Tags | CPython 3.10 Linux glibc 2.34+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
6de50ffbe32b10cc34989648f4371b7740716c1148357c7e6bc37086ff2aa5f9
|
|
BLAKE2b-256 checksum How to use checksums |
d2c2e165a03a6e5a9a1c04b24ac48265267b38a10bc5330ea40ffd6109252e64
|
| 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.10.1-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | jubarte_redlines-0.10.1-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 8.2 MB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
0deaaba160bc18d7f3ada33daab9617ca0e7b4f996fe73b830fc438f604f8a1c
|
|
BLAKE2b-256 checksum How to use checksums |
cb5d84149002f2588b163510bd69467113328b6cd2b671e995e646447f7a1b0e
|
| 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.10.1-cp310-abi3-macosx_10_12_x86_64.whl
| Download URL | jubarte_redlines-0.10.1-cp310-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 8.5 MB |
| Tags | CPython 3.10 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
a0082bf21f5256769337c986e303f8ae1bdba27a68112907582188506011ddf4
|
|
BLAKE2b-256 checksum How to use checksums |
012533f0b1571c11f93e7d7d34e2ad1b70ad6517128d281d31a21314ca2d248a
|
| 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}
|