Skip to main content

Diff Match and Patch

Project description

diff-match-patch

Google's Diff Match and Patch library, packaged for modern Python.

version changelog license

Install

diff-match-patch is supported on Python 3.7 or newer. You can install it from PyPI:

python -m pip install diff-match-patch

Usage

Generating a patchset (analogous to unified diff) between two texts:

from diff_match_patch import diff_match_patch

dmp = diff_match_patch()
patches = dmp.patch_make(text1, text2)
diff = dmp.patch_toText(patches)

Applying a patchset to a text can then be done with:

from diff_match_patch import diff_match_patch

dmp = diff_match_patch()
patches = dmp.patch_fromText(diff)
new_text, _ = dmp.patch_apply(patches, text)

Original README

The Diff Match and Patch libraries offer robust algorithms to perform the operations required for synchronizing plain text.

  1. Diff:
    • Compare two blocks of plain text and efficiently return a list of differences.
    • Diff Demo
  2. Match:
    • Given a search string, find its best fuzzy match in a block of plain text. Weighted for both accuracy and location.
    • Match Demo
  3. Patch:
    • Apply a list of patches onto plain text. Use best-effort to apply patch even when the underlying text doesn't match.
    • Patch Demo

Originally built in 2006 to power Google Docs, this library is now available in C++, C#, Dart, Java, JavaScript, Lua, Objective C, and Python.

Reference

Languages

Although each language port of Diff Match Patch uses the same API, there are some language-specific notes.

A standardized speed test tracks the relative performance of diffs in each language.

Algorithms

This library implements Myer's diff algorithm which is generally considered to be the best general-purpose diff. A layer of pre-diff speedups and post-diff cleanups surround the diff algorithm, improving both performance and output quality.

This library also implements a Bitap matching algorithm at the heart of a flexible matching and patching strategy.

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

diff-match-patch-20230430.tar.gz (43.3 kB view details)

Uploaded Source

Built Distribution

diff_match_patch-20230430-py3-none-any.whl (42.8 kB view details)

Uploaded Python 3

File details

Details for the file diff-match-patch-20230430.tar.gz.

File metadata

  • Download URL: diff-match-patch-20230430.tar.gz
  • Upload date:
  • Size: 43.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.29.0

File hashes

Hashes for diff-match-patch-20230430.tar.gz
Algorithm Hash digest
SHA256 953019cdb9c9d2c9e47b5b12bcff3cf4746fc4598eb406076fa1fc27e6a1f15c
MD5 4a96416bcec3aab02e25e0708dadf852
BLAKE2b-256 48407f0b68e3578453d1ccd3638cfd9682b515b9d22730903a88615f1ee92352

See more details on using hashes here.

File details

Details for the file diff_match_patch-20230430-py3-none-any.whl.

File metadata

File hashes

Hashes for diff_match_patch-20230430-py3-none-any.whl
Algorithm Hash digest
SHA256 dce43505fb7b1b317de7195579388df0746d90db07015ed47a85e5e44930ef93
MD5 22419b448ba060448681a1fc3954347a
BLAKE2b-256 96192654bccc833c946d94b84e4fa02d1ad1d2ff216bacad2e014a3dd820c735

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