Repackaging of Google's Diff Match and Patch libraries. Offers robust algorithms to perform the operations required for synchronizing plain text.
Project description
diff-match-patch
Google's Diff Match and Patch library, packaged for modern Python.
Install
diff-match-patch is supported on Python 2.7 or Python 3.4 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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for diff-match-patch-20200713.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | da6f5a01aa586df23dfc89f3827e1cafbb5420be9d87769eeb079ddfd9477a18 |
|
MD5 | 6fd897ce03d7a8bff8bbf607bbd58834 |
|
BLAKE2b-256 | f01e48ba888757d3f63ff35536e3e73e05c8a20d701e2b4fcbe4b17c29a2408d |
Hashes for diff_match_patch-20200713-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8bf9d9c4e059d917b5c6312bac0c137971a32815ddbda9c682b949f2986b4d34 |
|
MD5 | 47b52189d17589be8e6a18b5cb2e7009 |
|
BLAKE2b-256 | c25a9aa3b95a1d108b82fadb1eed4c3773d19069f765bd4c360a930e107138ee |