Skip to main content

Fast implementation of difflib's algorithms

Project description

CyDifflib

Continuous Integration PyPI package version Python versions
GitHub license

CyDifflib is a fast implementation of difflib's algorithms, which can be used as a drop-in replacement.

🚀 Benchmarks

The following benchmark compares the performance in the original difflib implementation, the library cdifflib and CyDifflib

Benchmark CyDifflib

⚙️ Installation

You can install this library from PyPI with pip:

pip install cydifflib

CyDifflib provides binary wheels for all common platforms.

Source builds

For a source build (for example from a SDist packaged) you only require a C++11 compatible compiler. You can install directly from GitHub if you would like.

pip install git+https://github.com/rapidfuzz/CyDifflib.git@main

📖 Usage

The library can be used in the same way as difflib. Just use the cydifflib module instead of difflib:

# from difflib import SequenceMatcher
from cydifflib import SequenceMatcher

The official documentation of difflib explains how to use the library. If you work with a library which internally uses some of the algorithms of difflib it is possible to replace the implementation before importing this library. E.g. for thefuzz this can be done in the following way:

from cydifflib import SequenceMatcher
import difflib

difflib.SequenceMatcher = SequenceMatcher
from thefuzz import fuzz

👍 Contributing

PRs are welcome!

  • Found a bug? Report it in form of an issue. Any difference in behavior to difflib is considered as a bug.
  • Can make something faster? Great! Just avoid external dependencies and remember that external behavior does not change.
  • Have no time to code? Tell your friends and subscribers about CyDifflib.

Thank you :heart:

⚠️ License

Copyright 2021-present Max Bachmann. CyDifflib is free and open-source software licensed under the MIT License.

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

cydifflib-1.1.0.tar.gz (309.9 kB view hashes)

Uploaded Source

Built Distributions

cydifflib-1.1.0-pp39-pypy39_pp73-win_amd64.whl (497.0 kB view hashes)

Uploaded PyPy Windows x86-64

cydifflib-1.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (536.1 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

cydifflib-1.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (525.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

cydifflib-1.1.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (547.4 kB view hashes)

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

cydifflib-1.1.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (516.7 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

cydifflib-1.1.0-pp38-pypy38_pp73-win_amd64.whl (497.8 kB view hashes)

Uploaded PyPy Windows x86-64

cydifflib-1.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (538.3 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

cydifflib-1.1.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (529.2 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

cydifflib-1.1.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (550.8 kB view hashes)

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

cydifflib-1.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (517.8 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

cydifflib-1.1.0-cp312-cp312-win_arm64.whl (476.3 kB view hashes)

Uploaded CPython 3.12 Windows ARM64

cydifflib-1.1.0-cp312-cp312-win_amd64.whl (501.9 kB view hashes)

Uploaded CPython 3.12 Windows x86-64

cydifflib-1.1.0-cp312-cp312-win32.whl (479.9 kB view hashes)

Uploaded CPython 3.12 Windows x86

cydifflib-1.1.0-cp312-cp312-musllinux_1_1_x86_64.whl (1.1 MB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ x86-64

cydifflib-1.1.0-cp312-cp312-musllinux_1_1_s390x.whl (1.2 MB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ s390x

cydifflib-1.1.0-cp312-cp312-musllinux_1_1_ppc64le.whl (1.2 MB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ ppc64le

cydifflib-1.1.0-cp312-cp312-musllinux_1_1_i686.whl (1.2 MB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ i686

cydifflib-1.1.0-cp312-cp312-musllinux_1_1_aarch64.whl (1.1 MB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ ARM64

cydifflib-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (578.7 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

cydifflib-1.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (560.6 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

cydifflib-1.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (592.0 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64le

cydifflib-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (561.0 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

cydifflib-1.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (584.6 kB view hashes)

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

cydifflib-1.1.0-cp312-cp312-macosx_11_0_arm64.whl (530.4 kB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

cydifflib-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl (542.3 kB view hashes)

Uploaded CPython 3.12 macOS 10.9+ x86-64

cydifflib-1.1.0-cp312-cp312-macosx_10_9_universal2.whl (749.2 kB view hashes)

Uploaded CPython 3.12 macOS 10.9+ universal2 (ARM64, x86-64)

cydifflib-1.1.0-cp311-cp311-win_arm64.whl (475.6 kB view hashes)

Uploaded CPython 3.11 Windows ARM64

cydifflib-1.1.0-cp311-cp311-win_amd64.whl (501.4 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

cydifflib-1.1.0-cp311-cp311-win32.whl (481.0 kB view hashes)

Uploaded CPython 3.11 Windows x86

cydifflib-1.1.0-cp311-cp311-musllinux_1_1_x86_64.whl (1.1 MB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

cydifflib-1.1.0-cp311-cp311-musllinux_1_1_s390x.whl (1.2 MB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ s390x

cydifflib-1.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl (1.2 MB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ ppc64le

cydifflib-1.1.0-cp311-cp311-musllinux_1_1_i686.whl (1.2 MB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

cydifflib-1.1.0-cp311-cp311-musllinux_1_1_aarch64.whl (1.1 MB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ ARM64

cydifflib-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (583.7 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

cydifflib-1.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (567.1 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

cydifflib-1.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (604.2 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64le

cydifflib-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (571.0 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

cydifflib-1.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (591.8 kB view hashes)

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

cydifflib-1.1.0-cp311-cp311-macosx_11_0_arm64.whl (528.1 kB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

cydifflib-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl (539.4 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ x86-64

cydifflib-1.1.0-cp311-cp311-macosx_10_9_universal2.whl (743.7 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

cydifflib-1.1.0-cp310-cp310-win_arm64.whl (475.0 kB view hashes)

Uploaded CPython 3.10 Windows ARM64

cydifflib-1.1.0-cp310-cp310-win_amd64.whl (500.0 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

cydifflib-1.1.0-cp310-cp310-win32.whl (481.6 kB view hashes)

Uploaded CPython 3.10 Windows x86

cydifflib-1.1.0-cp310-cp310-musllinux_1_1_x86_64.whl (1.1 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

cydifflib-1.1.0-cp310-cp310-musllinux_1_1_s390x.whl (1.2 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ s390x

cydifflib-1.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl (1.2 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ ppc64le

cydifflib-1.1.0-cp310-cp310-musllinux_1_1_i686.whl (1.2 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

cydifflib-1.1.0-cp310-cp310-musllinux_1_1_aarch64.whl (1.1 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ ARM64

cydifflib-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (584.7 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

cydifflib-1.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (567.9 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ s390x

cydifflib-1.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (604.4 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ppc64le

cydifflib-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (570.6 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

cydifflib-1.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (593.9 kB view hashes)

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

cydifflib-1.1.0-cp310-cp310-macosx_11_0_arm64.whl (527.7 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

cydifflib-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl (539.5 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

cydifflib-1.1.0-cp310-cp310-macosx_10_9_universal2.whl (743.4 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

cydifflib-1.1.0-cp39-cp39-win_arm64.whl (474.7 kB view hashes)

Uploaded CPython 3.9 Windows ARM64

cydifflib-1.1.0-cp39-cp39-win_amd64.whl (500.1 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

cydifflib-1.1.0-cp39-cp39-win32.whl (481.1 kB view hashes)

Uploaded CPython 3.9 Windows x86

cydifflib-1.1.0-cp39-cp39-musllinux_1_1_x86_64.whl (1.1 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

cydifflib-1.1.0-cp39-cp39-musllinux_1_1_s390x.whl (1.2 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ s390x

cydifflib-1.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl (1.2 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ ppc64le

cydifflib-1.1.0-cp39-cp39-musllinux_1_1_i686.whl (1.2 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

cydifflib-1.1.0-cp39-cp39-musllinux_1_1_aarch64.whl (1.1 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ ARM64

cydifflib-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (584.6 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

cydifflib-1.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (567.8 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ s390x

cydifflib-1.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (603.0 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ppc64le

cydifflib-1.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (570.1 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

cydifflib-1.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (593.3 kB view hashes)

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

cydifflib-1.1.0-cp39-cp39-macosx_11_0_arm64.whl (528.4 kB view hashes)

Uploaded CPython 3.9 macOS 11.0+ ARM64

cydifflib-1.1.0-cp39-cp39-macosx_10_9_x86_64.whl (540.0 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

cydifflib-1.1.0-cp39-cp39-macosx_10_9_universal2.whl (744.8 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

cydifflib-1.1.0-cp38-cp38-win_amd64.whl (501.0 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

cydifflib-1.1.0-cp38-cp38-win32.whl (479.5 kB view hashes)

Uploaded CPython 3.8 Windows x86

cydifflib-1.1.0-cp38-cp38-musllinux_1_1_x86_64.whl (1.1 MB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

cydifflib-1.1.0-cp38-cp38-musllinux_1_1_s390x.whl (1.2 MB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ s390x

cydifflib-1.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl (1.2 MB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ ppc64le

cydifflib-1.1.0-cp38-cp38-musllinux_1_1_i686.whl (1.2 MB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

cydifflib-1.1.0-cp38-cp38-musllinux_1_1_aarch64.whl (1.1 MB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ ARM64

cydifflib-1.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (586.9 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

cydifflib-1.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (569.5 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ s390x

cydifflib-1.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (603.9 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ppc64le

cydifflib-1.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (571.8 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

cydifflib-1.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (594.2 kB view hashes)

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

cydifflib-1.1.0-cp38-cp38-macosx_11_0_arm64.whl (527.6 kB view hashes)

Uploaded CPython 3.8 macOS 11.0+ ARM64

cydifflib-1.1.0-cp38-cp38-macosx_10_9_x86_64.whl (539.2 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ x86-64

cydifflib-1.1.0-cp38-cp38-macosx_10_9_universal2.whl (743.1 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ universal2 (ARM64, x86-64)

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