Skip to main content

Compare text, and produce human-readable differences or deltas which look like track changes in Microsoft Word.

Project description

Redlines

Repository banner image PyPI - Version GitHub Release Date - Published_At GitHub last commit (by committer) PyPI - License Chat on Matrix

Redlines produces a text showing the differences between two strings/text. The changes are represented with strike-throughs and underlines, which looks similar to Microsoft Word's track changes. This method of showing changes is more familiar to lawyers and is more compact for long series of characters.

Redlines uses SequenceMatcher to find differences between words used. The output can be in HTML, Markdown, or rich format.

Example

Given an original string:

The quick brown fox jumps over the lazy dog.

And the string to be tested with:

The quick brown fox walks past the lazy dog.

The library gives a result of:

The quick brown fox <del>jumps over </del><ins>walks past </ins>the lazy dog.

Which is rendered like this:

The quick brown fox jumps over walks past the lazy dog.

The library can also output the results in Markdown, HTML or rich format, and for a variety of environments like Streamlit, Jupyter Notebooks, Google Colab and the terminal.

Install

pip install redlines

Usage

The library contains one class: Redlines, which is used to compare text.

from redlines import Redlines

test = Redlines(
    "The quick brown fox jumps over the lazy dog.",
  "The quick brown fox walks past the lazy dog.", markdown_style="none",
)
assert (
        test.output_markdown
        == "The quick brown fox <del>jumps over </del><ins>walks past </ins>the lazy dog."
)

Alternatively, you can create Redline with the text to be tested, and compare several times to see the results.

from redlines import Redlines

test = Redlines("The quick brown fox jumps over the lazy dog.", markdown_style="none")
assert (
        test.compare("The quick brown fox walks past the lazy dog.")
        == "The quick brown fox <del>jumps over </del><ins>walks past </ins>the lazy dog."
)

assert (
        test.compare("The quick brown fox jumps over the dog.")
        == "The quick brown fox jumps over the <del>lazy </del>dog."
)

Redlines also features a simple command line tool redlines to visualise the differences in text in the terminal.

 Usage: redlines text [OPTIONS] SOURCE TEST                                                                                                                                                                                                   
                                                                                                                                                                                                                                              
 Compares the strings SOURCE and TEST and produce a redline in the terminal. 

You may also want to check out the demo project redlines-textual.

Documentation

Read the available Documentation.

Uses

License

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

redlines-0.5.1.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

redlines-0.5.1-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file redlines-0.5.1.tar.gz.

File metadata

  • Download URL: redlines-0.5.1.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for redlines-0.5.1.tar.gz
Algorithm Hash digest
SHA256 3474e2ce76b50695ac4ab2999a8c7bb8949b99f76083f0d8ebd510a0e4d888f8
MD5 15ec29141268f7d97a4ee2ac6371fb2c
BLAKE2b-256 3bb7877ecb46f4f3e1ef5f75f4a272ba34fffae087ceebf49bae4785ab3d17e1

See more details on using hashes here.

File details

Details for the file redlines-0.5.1-py3-none-any.whl.

File metadata

  • Download URL: redlines-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for redlines-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 aa7bbe263d2bf46a0ea880b8d92ffd4d869b4a7c444b1e2fde307fbb7763a7b7
MD5 2e5d85ee6a30d3851c8e483b74cfe17b
BLAKE2b-256 fcec9095a088bc0db80bd6daa752ba5d92b838213065fe02d172a3f14d6dd967

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page