polyleven 0.11.0


pip install polyleven

  Latest version

Released: Feb 09, 2026

Project Links

Meta
Maintainer: Fujimoto Seiji
Requires Python: >=3.8

Classifiers

Development Status
  • 5 - Production/Stable

Operating System
  • OS Independent

Programming Language
  • Python :: 3
  • C
License:

MIT License

1. Introduction

polyleven is a Pythonic Levenshtein distance library that:

  • Is fast regardless of input types, and hence can be applied to both short (like English words) and long inputs (like DNA sequences).

  • Is stand-alone with no external dependencies.

  • Is distributed under the MIT License, hence can be used freely in private projects.

2. How to install

The official package is available on PyPI:

$ pip install polyleven

3. How to use

Polyleven provides a single interface function levenshtein(). You can use this function to measure the similarity of two strings.

>>> from polyleven import levenshtein
>>> levenshtein('aaa', 'ccc')
3

If you only care about distances under a certain threshold, you can pass the max threshold to the third argument.

>>> levenshtein('acc', 'ccc', 1)
1
>>> levenshtein('aaa', 'ccc', 1)
2

In general, you can gain a noticeable speed boost with threshold \(k < 3\).

4. Benchmark

4.1 English Words

To compare Polyleven with other Pythonic edit distance libraries, a million word pairs was generated from SCOWL.

Each library was measured how long it takes to evaluate all of these words. The following table summarises the result:

Function Name

TIME[sec]

SPEED[pairs/s]

edlib

4.763

208216

editdistance

1.943

510450

jellyfish.levenshtein_distance

0.722

1374081

distance.levenshtein

0.623

1591396

Levenshtein.distance

0.500

1982764

polyleven.levenshtein

0.431

2303420

4.2. Longer Inputs

To evaluate the efficiency for longer inputs, I created 5000 pairs of random strings of size 16, 32, 64, 128, 256, 512 and 1024.

Each library was measured how fast it can process these entries. [1]

Library

N=16

N=32

N=64

N=128

N=256

N=512

N=1024

edlib

0.040

0.063

0.094

0.205

0.432

0.908

2.089

editdistance

0.027

0.049

0.086

0.178

0.336

0.740

58.139

jellyfish

0.009

0.032

0.118

0.470

1.874

8.877

42.848

distance

0.007

0.029

0.109

0.431

1.726

6.950

27.998

Levenshtein

0.006

0.022

0.085

0.336

1.328

5.286

21.097

polyleven

0.003

0.005

0.010

0.043

0.149

0.550

2.109

4.3. List of Libraries

Library

Version

URL

edlib

v1.2.1

https://github.com/Martinsos/edlib

editdistance

v0.4

https://github.com/aflc/editdistance

jellyfish

v0.5.6

https://github.com/jamesturk/jellyfish

distance

v0.1.3

https://github.com/doukremt/distance

Levenshtein

v0.12

https://github.com/ztane/python-Levenshtein

polyleven

v0.3

https://github.com/fujimotos/polyleven

Wheel compatibility matrix

Platform CPython 3.8 CPython 3.9 CPython 3.10 CPython 3.11 CPython 3.12 CPython 3.13 CPython 3.14 CPython (additional flags: t) 3.14
macosx_10_13_x86_64
macosx_10_15_x86_64
macosx_10_9_x86_64
macosx_11_0_arm64
manylinux1_x86_64
manylinux2014_aarch64
manylinux_2_17_aarch64
manylinux_2_28_aarch64
manylinux_2_28_x86_64
manylinux_2_5_x86_64
musllinux_1_2_aarch64
musllinux_1_2_x86_64
win32
win_amd64
win_arm64

Files in release

polyleven-0.11.0-cp310-cp310-macosx_10_9_x86_64.whl (7.2KiB)
polyleven-0.11.0-cp310-cp310-macosx_11_0_arm64.whl (7.3KiB)
polyleven-0.11.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (19.1KiB)
polyleven-0.11.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (19.8KiB)
polyleven-0.11.0-cp310-cp310-musllinux_1_2_aarch64.whl (19.1KiB)
polyleven-0.11.0-cp310-cp310-musllinux_1_2_x86_64.whl (18.9KiB)
polyleven-0.11.0-cp310-cp310-win32.whl (11.4KiB)
polyleven-0.11.0-cp310-cp310-win_amd64.whl (10.6KiB)
polyleven-0.11.0-cp310-cp310-win_arm64.whl (9.2KiB)
polyleven-0.11.0-cp311-cp311-macosx_10_9_x86_64.whl (7.2KiB)
polyleven-0.11.0-cp311-cp311-macosx_11_0_arm64.whl (7.3KiB)
polyleven-0.11.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (20.4KiB)
polyleven-0.11.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (20.9KiB)
polyleven-0.11.0-cp311-cp311-musllinux_1_2_aarch64.whl (20.0KiB)
polyleven-0.11.0-cp311-cp311-musllinux_1_2_x86_64.whl (20.2KiB)
polyleven-0.11.0-cp311-cp311-win32.whl (11.3KiB)
polyleven-0.11.0-cp311-cp311-win_amd64.whl (10.6KiB)
polyleven-0.11.0-cp311-cp311-win_arm64.whl (9.2KiB)
polyleven-0.11.0-cp312-cp312-macosx_10_13_x86_64.whl (7.3KiB)
polyleven-0.11.0-cp312-cp312-macosx_11_0_arm64.whl (7.3KiB)
polyleven-0.11.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (20.5KiB)
polyleven-0.11.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (21.0KiB)
polyleven-0.11.0-cp312-cp312-musllinux_1_2_aarch64.whl (20.0KiB)
polyleven-0.11.0-cp312-cp312-musllinux_1_2_x86_64.whl (20.3KiB)
polyleven-0.11.0-cp312-cp312-win32.whl (11.4KiB)
polyleven-0.11.0-cp312-cp312-win_amd64.whl (10.6KiB)
polyleven-0.11.0-cp312-cp312-win_arm64.whl (9.2KiB)
polyleven-0.11.0-cp313-cp313-macosx_10_13_x86_64.whl (7.3KiB)
polyleven-0.11.0-cp313-cp313-macosx_11_0_arm64.whl (7.3KiB)
polyleven-0.11.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (20.5KiB)
polyleven-0.11.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (21.0KiB)
polyleven-0.11.0-cp313-cp313-musllinux_1_2_aarch64.whl (20.1KiB)
polyleven-0.11.0-cp313-cp313-musllinux_1_2_x86_64.whl (20.3KiB)
polyleven-0.11.0-cp313-cp313-win32.whl (11.4KiB)
polyleven-0.11.0-cp313-cp313-win_amd64.whl (10.6KiB)
polyleven-0.11.0-cp313-cp313-win_arm64.whl (9.2KiB)
polyleven-0.11.0-cp314-cp314-macosx_10_15_x86_64.whl (7.3KiB)
polyleven-0.11.0-cp314-cp314-macosx_11_0_arm64.whl (7.3KiB)
polyleven-0.11.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (20.6KiB)
polyleven-0.11.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (21.0KiB)
polyleven-0.11.0-cp314-cp314-musllinux_1_2_aarch64.whl (20.1KiB)
polyleven-0.11.0-cp314-cp314-musllinux_1_2_x86_64.whl (20.3KiB)
polyleven-0.11.0-cp314-cp314-win32.whl (11.7KiB)
polyleven-0.11.0-cp314-cp314-win_amd64.whl (10.8KiB)
polyleven-0.11.0-cp314-cp314-win_arm64.whl (9.4KiB)
polyleven-0.11.0-cp314-cp314t-macosx_10_15_x86_64.whl (7.3KiB)
polyleven-0.11.0-cp314-cp314t-macosx_11_0_arm64.whl (7.3KiB)
polyleven-0.11.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (20.6KiB)
polyleven-0.11.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (21.1KiB)
polyleven-0.11.0-cp314-cp314t-musllinux_1_2_aarch64.whl (20.2KiB)
polyleven-0.11.0-cp314-cp314t-musllinux_1_2_x86_64.whl (20.4KiB)
polyleven-0.11.0-cp314-cp314t-win32.whl (11.6KiB)
polyleven-0.11.0-cp314-cp314t-win_amd64.whl (10.8KiB)
polyleven-0.11.0-cp314-cp314t-win_arm64.whl (9.4KiB)
polyleven-0.11.0-cp38-cp38-macosx_10_9_x86_64.whl (7.0KiB)
polyleven-0.11.0-cp38-cp38-macosx_11_0_arm64.whl (7.1KiB)
polyleven-0.11.0-cp38-cp38-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (19.3KiB)
polyleven-0.11.0-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (20.1KiB)
polyleven-0.11.0-cp38-cp38-musllinux_1_2_aarch64.whl (18.8KiB)
polyleven-0.11.0-cp38-cp38-musllinux_1_2_x86_64.whl (18.6KiB)
polyleven-0.11.0-cp38-cp38-win32.whl (11.4KiB)
polyleven-0.11.0-cp38-cp38-win_amd64.whl (10.5KiB)
polyleven-0.11.0-cp39-cp39-macosx_10_9_x86_64.whl (7.2KiB)
polyleven-0.11.0-cp39-cp39-macosx_11_0_arm64.whl (7.3KiB)
polyleven-0.11.0-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (19.0KiB)
polyleven-0.11.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (19.7KiB)
polyleven-0.11.0-cp39-cp39-musllinux_1_2_aarch64.whl (19.0KiB)
polyleven-0.11.0-cp39-cp39-musllinux_1_2_x86_64.whl (18.8KiB)
polyleven-0.11.0-cp39-cp39-win32.whl (11.4KiB)
polyleven-0.11.0-cp39-cp39-win_amd64.whl (10.6KiB)
polyleven-0.11.0-cp39-cp39-win_arm64.whl (9.2KiB)
polyleven-0.11.0.tar.gz (6.3KiB)
No dependencies