This package contains the implementation of the patiencediff
algorithm, as
first described by Bram Cohen.
Like Python's difflib
, this module provides both a convenience unified_diff
function for the generation of unified diffs of text files
as well as a SequenceMatcher that can be used on arbitrary lists.
Patiencediff provides a good balance of performance, nice output for humans, and implementation simplicity.
The code in this package was extracted from the Bazaar code base.
The package comes with two implementations:
- A Python implementation (_patiencediff_py.py); this implementation only requires a Python interpreter and is the more readable version of the two
- A C implementation implementation (_patiencediff_c.c); this implementation is faster, but requires a C compiler and is less readable
To invoke patiencediff from the command-line:
python -m patiencediff file_a file_b
Or from Python:
>>> import patiencediff >>> print(''.join(patiencediff.unified_diff( ... ['a\n', 'b\n', 'b\n', 'c\n'], ... ['a\n', 'c\n', 'b\n']))) --- +++ @@ -1,4 +1,3 @@ a +c b -b -c