Skip to main content

Python implementation of the patiencediff algorithm

Project description

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

Usage

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

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

patiencediff-0.2.15.tar.gz (27.5 kB view hashes)

Uploaded Source

Built Distributions

patiencediff-0.2.15-pp310-pypy310_pp73-win_amd64.whl (33.2 kB view hashes)

Uploaded PyPy Windows x86-64

patiencediff-0.2.15-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (32.5 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

patiencediff-0.2.15-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (32.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

patiencediff-0.2.15-pp310-pypy310_pp73-macosx_11_0_arm64.whl (30.2 kB view hashes)

Uploaded PyPy macOS 11.0+ ARM64

patiencediff-0.2.15-pp39-pypy39_pp73-win_amd64.whl (33.2 kB view hashes)

Uploaded PyPy Windows x86-64

patiencediff-0.2.15-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (32.5 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

patiencediff-0.2.15-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (32.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

patiencediff-0.2.15-pp39-pypy39_pp73-macosx_11_0_arm64.whl (30.2 kB view hashes)

Uploaded PyPy macOS 11.0+ ARM64

patiencediff-0.2.15-pp38-pypy38_pp73-win_amd64.whl (33.2 kB view hashes)

Uploaded PyPy Windows x86-64

patiencediff-0.2.15-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (32.4 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

patiencediff-0.2.15-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (32.8 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

patiencediff-0.2.15-pp38-pypy38_pp73-macosx_11_0_arm64.whl (30.2 kB view hashes)

Uploaded PyPy macOS 11.0+ ARM64

patiencediff-0.2.15-cp312-cp312-win_amd64.whl (33.3 kB view hashes)

Uploaded CPython 3.12 Windows x86-64

patiencediff-0.2.15-cp312-cp312-win32.whl (31.4 kB view hashes)

Uploaded CPython 3.12 Windows x86

patiencediff-0.2.15-cp312-cp312-musllinux_1_1_x86_64.whl (61.4 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ x86-64

patiencediff-0.2.15-cp312-cp312-musllinux_1_1_i686.whl (60.4 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ i686

patiencediff-0.2.15-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (56.4 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

patiencediff-0.2.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (55.1 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

patiencediff-0.2.15-cp312-cp312-macosx_11_0_arm64.whl (30.5 kB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

patiencediff-0.2.15-cp311-cp311-win_amd64.whl (33.2 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

patiencediff-0.2.15-cp311-cp311-win32.whl (31.5 kB view hashes)

Uploaded CPython 3.11 Windows x86

patiencediff-0.2.15-cp311-cp311-musllinux_1_1_x86_64.whl (60.8 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

patiencediff-0.2.15-cp311-cp311-musllinux_1_1_i686.whl (59.8 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

patiencediff-0.2.15-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (55.2 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

patiencediff-0.2.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (54.1 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

patiencediff-0.2.15-cp311-cp311-macosx_11_0_arm64.whl (30.4 kB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

patiencediff-0.2.15-cp310-cp310-win_amd64.whl (33.2 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

patiencediff-0.2.15-cp310-cp310-win32.whl (31.5 kB view hashes)

Uploaded CPython 3.10 Windows x86

patiencediff-0.2.15-cp310-cp310-musllinux_1_1_x86_64.whl (59.9 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

patiencediff-0.2.15-cp310-cp310-musllinux_1_1_i686.whl (58.8 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

patiencediff-0.2.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (54.8 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

patiencediff-0.2.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (53.7 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

patiencediff-0.2.15-cp310-cp310-macosx_11_0_arm64.whl (30.4 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

patiencediff-0.2.15-cp39-cp39-win_amd64.whl (33.2 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

patiencediff-0.2.15-cp39-cp39-win32.whl (31.5 kB view hashes)

Uploaded CPython 3.9 Windows x86

patiencediff-0.2.15-cp39-cp39-musllinux_1_1_x86_64.whl (59.6 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

patiencediff-0.2.15-cp39-cp39-musllinux_1_1_i686.whl (58.6 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

patiencediff-0.2.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (54.6 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

patiencediff-0.2.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (53.5 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

patiencediff-0.2.15-cp39-cp39-macosx_11_0_arm64.whl (30.4 kB view hashes)

Uploaded CPython 3.9 macOS 11.0+ ARM64

patiencediff-0.2.15-cp38-cp38-win_amd64.whl (33.2 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

patiencediff-0.2.15-cp38-cp38-win32.whl (31.5 kB view hashes)

Uploaded CPython 3.8 Windows x86

patiencediff-0.2.15-cp38-cp38-musllinux_1_1_x86_64.whl (60.4 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

patiencediff-0.2.15-cp38-cp38-musllinux_1_1_i686.whl (59.3 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

patiencediff-0.2.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (55.8 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

patiencediff-0.2.15-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (54.6 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

patiencediff-0.2.15-cp38-cp38-macosx_11_0_arm64.whl (30.4 kB view hashes)

Uploaded CPython 3.8 macOS 11.0+ ARM64

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