Skip to content

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

License

Notifications You must be signed in to change notification settings

rapidfuzz/CyDifflib

Repository files navigation

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 ❤️

⚠️ License

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