diff-match-patch
Google's Diff Match and Patch library, packaged for modern Python.
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.
- Diff:
- Compare two blocks of plain text and efficiently return a list of differences.
- Diff Demo
- Match:
- Given a search string, find its best fuzzy match in a block of plain text. Weighted for both accuracy and location.
- Match Demo
- 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
- API - Common API across all languages.
- Line or Word Diffs - Less detailed diffs.
- Plain Text vs. Structured Content - How to deal with data like XML.
- Unidiff - The patch serialization format.
- Support - Newsgroup for developers.
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.
Metadata
Release files for diff-match-patch 20230430
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| diff-match-patch-20230430.tar.gz | 43.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| diff_match_patch-20230430-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 86.2 kB
Release files / diff-match-patch-20230430.tar.gz
| Download URL | diff-match-patch-20230430.tar.gz |
|---|---|
| Size | 43.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
953019cdb9c9d2c9e47b5b12bcff3cf4746fc4598eb406076fa1fc27e6a1f15c
|
|
BLAKE2b-256 checksum How to use checksums |
48407f0b68e3578453d1ccd3638cfd9682b515b9d22730903a88615f1ee92352
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-requests/2.29.0
|
Release files / diff_match_patch-20230430-py3-none-any.whl
| Download URL | diff_match_patch-20230430-py3-none-any.whl |
|---|---|
| Size | 42.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dce43505fb7b1b317de7195579388df0746d90db07015ed47a85e5e44930ef93
|
|
BLAKE2b-256 checksum How to use checksums |
96192654bccc833c946d94b84e4fa02d1ad1d2ff216bacad2e014a3dd820c735
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-requests/2.29.0
|