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.0
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.0.tar.gz | 5.4 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| jubarte_redlines-0.10.0-cp310-abi3-manylinux_2_34_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.34+ x86-64 | Details |
| jubarte_redlines-0.10.0-cp310-abi3-manylinux_2_34_aarch64.whl | CPython 3.10 | abi3 | Linux glibc 2.34+ ARM64 | Details |
| jubarte_redlines-0.10.0-cp310-abi3-macosx_11_0_arm64.whl | CPython 3.10 | abi3 | macOS 11.0+ ARM64 | Details |
| jubarte_redlines-0.10.0-cp310-abi3-macosx_10_12_x86_64.whl | CPython 3.10 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 38.1 MB
Release files / jubarte_redlines-0.10.0.tar.gz
| Download URL | jubarte_redlines-0.10.0.tar.gz |
|---|---|
| Size | 5.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4f4a8da22a1c0ae8f59cb4deda8703325656c711b689de10033416134b38e3eb
|
|
BLAKE2b-256 checksum How to use checksums |
9199fd25db74d152340b5ff1d0e863173a7bad5b1bc7ae2d1d7731e9f4e13982
|
| 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.0-cp310-abi3-manylinux_2_34_x86_64.whl
| Download URL | jubarte_redlines-0.10.0-cp310-abi3-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 8.4 MB |
| Tags | CPython 3.10 Linux glibc 2.34+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
03418572891a29a0ea40a571e59ad7632855b46f91b3f254d136672aef295ebc
|
|
BLAKE2b-256 checksum How to use checksums |
70a7ca0c7283c3324ef1a5e7431056a7cbb863bfdeff094297edf2fe63bbd91c
|
| 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.0-cp310-abi3-manylinux_2_34_aarch64.whl
| Download URL | jubarte_redlines-0.10.0-cp310-abi3-manylinux_2_34_aarch64.whl |
|---|---|
| Size | 8.2 MB |
| Tags | CPython 3.10 Linux glibc 2.34+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
e6fa599e06cf4f658909fb37664a0ff9980daec5ec88d90a63f6b749312c4534
|
|
BLAKE2b-256 checksum How to use checksums |
a7f5df06bfea2015a9e5c27c0b9f9fa7ebaeef6eeea1f6257cdea3f8f0fb27ea
|
| 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.0-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | jubarte_redlines-0.10.0-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 7.9 MB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
2867d65e7424919d312dbbacfb10a2162bb137fd2b222461f103c72b9a4aeaf2
|
|
BLAKE2b-256 checksum How to use checksums |
9e1e466ec6087512ce8a6bd002fa1e63ce369a17edfa8325a058f8054a1b8ed9
|
| 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.0-cp310-abi3-macosx_10_12_x86_64.whl
| Download URL | jubarte_redlines-0.10.0-cp310-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 8.2 MB |
| Tags | CPython 3.10 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
4999553632dfd4452c9d35832ab87148224f06c0857e51b3d10d0384fc19d49a
|
|
BLAKE2b-256 checksum How to use checksums |
3d983de18b3f4073338abac411bd3fa2dd7006564475b9abc96602308277a1f5
|
| 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}
|