# Rust implementation of the Damerau-Levenshtein distance
[Damerau-Levenshtein](https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance) implementation in Rust as
Python package.
You should use this package if you need to calculate a distance metric for lists of integers or strings, and you need
high-performance.
If you only need to check the distance between two strings
checkout [editdistance](https://github.com/roy-ht/editdistance) or [jellyfish](https://github.com/jamesturk/jellyfish).
## Install
```shell
pip install pyrsdameraulevenshtein
```
## Use
```python
import pyrsdameraulevenshtein as dl
distance = dl.distance_int([1, 2, 3], [1, 3])
# distance = 1
normalized_distance = dl.normalized_distance_int([1, 2, 3], [1, 3])
# normalized_distance = 0.33
similarity = dl.similarity_int([1, 2, 3], [1, 3])
# similarity = 0.66
distance = dl.distance_str(["A", "B", "C"], ["A", "C"])
# distance = 1
normalized_distance = dl.normalized_distance_str(["A", "B", "C"], ["A", "C"])
# normalized_distance = 0.33
similarity = dl.similarity_str(["A", "B", "C"], ["A", "C"])
# similarity = 0.66
distance = dl.distance_unicode("ABC", "AC")
# distance = 1
normalized_distance = dl.normalized_distance_unicode("ABC", "AC")
# normalized_distance = 0.33
similarity = dl.similarity_unicode("ABC", "AC")
# similarity = 0.66
```
## Get started
1. First, create a virtual python environment.
2. Install packages `pip install -r requirements.txt`
3. Create the Rust binary
1. Full performance: `maturin build --release` and `pip install target/wheels/*.whl`
2. Develop version: `maturin develop`
4. Run the tests `python tests/DamerauLevenshteinTest.py`
## Performance
Tests are executed on a Mac Mini with M1 chip with Python 3.10.
Redo these tests in [tests/DamerauLevenshteinTest.py](tests/DamerauLevenshteinTest.py).
#### List comparisons
```python
import random
import time
import pyrsdameraulevenshtein
from fastDamerauLevenshtein import damerauLevenshtein
from pyxdameraulevenshtein import damerau_levenshtein_distance
n = 100000
x = 10
print("Int lists:")
a_lists = [random.sample(list(range(x)), k=x, counts=[x for i in range(x)]) for i in range(n)]
b_lists = [random.sample(list(range(x)), k=x, counts=[x for i in range(x)]) for i in range(n)]
tic = time.perf_counter()
for a, b in zip(a_lists, b_lists):
result = pyrsdameraulevenshtein.distance_int(a, b)
toc = time.perf_counter()
print(f"{toc - tic:0.4f} seconds, THIS implementation")
# 0.0847 seconds, THIS implementation <<< BEST PERFORMANCE
tic = time.perf_counter()
for a, b in zip(a_lists, b_lists):
result = damerau_levenshtein_distance(a, b)
toc = time.perf_counter()
print(f"{toc - tic:0.4f} seconds, pyxdameraulevenshtein")
# 0.3073 seconds, pyxdameraulevenshtein
tic = time.perf_counter()
for a, b in zip(a_lists, b_lists):
result = damerauLevenshtein(a, b, similarity=False)
toc = time.perf_counter()
print(f"{toc - tic:0.4f} seconds, fastDamerauLevenshtein")
# 0.1257 seconds, fastDamerauLevenshtein
```
#### String comparisons
```python
import random
import time
import jellyfish
import textdistance
import pyrsdameraulevenshtein
from fastDamerauLevenshtein import damerauLevenshtein
from pyxdameraulevenshtein import damerau_levenshtein_distance
n = 100000
x = 10
print("Strings:")
a_strings = [
"".join(random.sample(list(chr(ord("A") + i) for i in range(x)), k=x, counts=[x for i in range(x)]))
for y in range(n)]
b_strings = [
"".join(random.sample(list(chr(ord("A") + i) for i in range(x)), k=x, counts=[x for i in range(x)]))
for y in range(n)]
tic = time.perf_counter()
for a, b in zip(a_strings, b_strings):
result = pyrsdameraulevenshtein.distance_unicode(a, b)
toc = time.perf_counter()
print(f"{toc - tic:0.4f} seconds, THIS implementation")
# 0.0764 seconds, THIS implementation
tic = time.perf_counter()
for a, b in zip(a_strings, b_strings):
result = damerau_levenshtein_distance(a, b)
toc = time.perf_counter()
print(f"{toc - tic:0.4f} seconds, pyxdameraulevenshtein")
# 0.3925 seconds, pyxdameraulevenshtein
tic = time.perf_counter()
for a, b in zip(a_strings, b_strings):
result = damerauLevenshtein(a, b, similarity=False)
toc = time.perf_counter()
print(f"{toc - tic:0.4f} seconds, fastDamerauLevenshtein")
# 0.1275 seconds, fastDamerauLevenshtein
tic = time.perf_counter()
for a, b in zip(a_strings, b_strings):
result = jellyfish.damerau_levenshtein_distance(a, b)
toc = time.perf_counter()
print(f"{toc - tic:0.4f} seconds, jellyfish.damerau_levenshtein_distance")
# 0.0546 seconds, jellyfish.damerau_levenshtein_distance
tic = time.perf_counter()
for a, b in zip(a_strings, b_strings):
result = textdistance.DamerauLevenshtein(a, b)
toc = time.perf_counter()
print(f"{toc - tic:0.4f} seconds, textdistance.DamerauLevenshtein")
# 0.0191 seconds, textdistance.DamerauLevenshtein <<< BEST PERFORMANCE
```
Raw data
{
"_id": null,
"home_page": null,
"name": "pyrsdameraulevenshtein",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": null,
"keywords": "distance, rust, distance, dameraulevenshtein, damerau, levenshtein",
"author": null,
"author_email": "Jonas Blatt <jonas@blatts.de>",
"download_url": "https://files.pythonhosted.org/packages/26/18/02885896126b78c30e86a5040f4001c45c4165972fee8915b1ed00c87d81/pyrsdameraulevenshtein-1.1.0.tar.gz",
"platform": null,
"description": "# Rust implementation of the Damerau-Levenshtein distance\n\n[Damerau-Levenshtein](https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance) implementation in Rust as\nPython package.\nYou should use this package if you need to calculate a distance metric for lists of integers or strings, and you need\nhigh-performance.\nIf you only need to check the distance between two strings\ncheckout [editdistance](https://github.com/roy-ht/editdistance) or [jellyfish](https://github.com/jamesturk/jellyfish).\n\n## Install\n\n```shell\npip install pyrsdameraulevenshtein\n```\n\n## Use\n\n```python\nimport pyrsdameraulevenshtein as dl\n\ndistance = dl.distance_int([1, 2, 3], [1, 3])\n# distance = 1\nnormalized_distance = dl.normalized_distance_int([1, 2, 3], [1, 3])\n# normalized_distance = 0.33\nsimilarity = dl.similarity_int([1, 2, 3], [1, 3])\n# similarity = 0.66\ndistance = dl.distance_str([\"A\", \"B\", \"C\"], [\"A\", \"C\"])\n# distance = 1\nnormalized_distance = dl.normalized_distance_str([\"A\", \"B\", \"C\"], [\"A\", \"C\"])\n# normalized_distance = 0.33\nsimilarity = dl.similarity_str([\"A\", \"B\", \"C\"], [\"A\", \"C\"])\n# similarity = 0.66\ndistance = dl.distance_unicode(\"ABC\", \"AC\")\n# distance = 1\nnormalized_distance = dl.normalized_distance_unicode(\"ABC\", \"AC\")\n# normalized_distance = 0.33\nsimilarity = dl.similarity_unicode(\"ABC\", \"AC\")\n# similarity = 0.66\n```\n\n## Get started\n\n1. First, create a virtual python environment.\n2. Install packages `pip install -r requirements.txt`\n3. Create the Rust binary\n 1. Full performance: `maturin build --release` and `pip install target/wheels/*.whl`\n 2. Develop version: `maturin develop`\n4. Run the tests `python tests/DamerauLevenshteinTest.py`\n\n## Performance\n\nTests are executed on a Mac Mini with M1 chip with Python 3.10.\nRedo these tests in [tests/DamerauLevenshteinTest.py](tests/DamerauLevenshteinTest.py).\n\n#### List comparisons\n\n```python\nimport random\nimport time\nimport pyrsdameraulevenshtein\nfrom fastDamerauLevenshtein import damerauLevenshtein\nfrom pyxdameraulevenshtein import damerau_levenshtein_distance\n\nn = 100000\nx = 10\n\nprint(\"Int lists:\")\na_lists = [random.sample(list(range(x)), k=x, counts=[x for i in range(x)]) for i in range(n)]\nb_lists = [random.sample(list(range(x)), k=x, counts=[x for i in range(x)]) for i in range(n)]\ntic = time.perf_counter()\nfor a, b in zip(a_lists, b_lists):\n result = pyrsdameraulevenshtein.distance_int(a, b)\ntoc = time.perf_counter()\nprint(f\"{toc - tic:0.4f} seconds, THIS implementation\")\n# 0.0847 seconds, THIS implementation <<< BEST PERFORMANCE\ntic = time.perf_counter()\nfor a, b in zip(a_lists, b_lists):\n result = damerau_levenshtein_distance(a, b)\ntoc = time.perf_counter()\nprint(f\"{toc - tic:0.4f} seconds, pyxdameraulevenshtein\")\n# 0.3073 seconds, pyxdameraulevenshtein\ntic = time.perf_counter()\nfor a, b in zip(a_lists, b_lists):\n result = damerauLevenshtein(a, b, similarity=False)\ntoc = time.perf_counter()\nprint(f\"{toc - tic:0.4f} seconds, fastDamerauLevenshtein\")\n# 0.1257 seconds, fastDamerauLevenshtein\n```\n\n#### String comparisons\n\n```python\nimport random\nimport time\nimport jellyfish\nimport textdistance\nimport pyrsdameraulevenshtein\nfrom fastDamerauLevenshtein import damerauLevenshtein\nfrom pyxdameraulevenshtein import damerau_levenshtein_distance\n\nn = 100000\nx = 10\n\nprint(\"Strings:\")\na_strings = [\n \"\".join(random.sample(list(chr(ord(\"A\") + i) for i in range(x)), k=x, counts=[x for i in range(x)]))\n for y in range(n)]\nb_strings = [\n \"\".join(random.sample(list(chr(ord(\"A\") + i) for i in range(x)), k=x, counts=[x for i in range(x)]))\n for y in range(n)]\ntic = time.perf_counter()\nfor a, b in zip(a_strings, b_strings):\n result = pyrsdameraulevenshtein.distance_unicode(a, b)\ntoc = time.perf_counter()\nprint(f\"{toc - tic:0.4f} seconds, THIS implementation\")\n# 0.0764 seconds, THIS implementation\ntic = time.perf_counter()\nfor a, b in zip(a_strings, b_strings):\n result = damerau_levenshtein_distance(a, b)\ntoc = time.perf_counter()\nprint(f\"{toc - tic:0.4f} seconds, pyxdameraulevenshtein\")\n# 0.3925 seconds, pyxdameraulevenshtein\ntic = time.perf_counter()\nfor a, b in zip(a_strings, b_strings):\n result = damerauLevenshtein(a, b, similarity=False)\ntoc = time.perf_counter()\nprint(f\"{toc - tic:0.4f} seconds, fastDamerauLevenshtein\")\n# 0.1275 seconds, fastDamerauLevenshtein\ntic = time.perf_counter()\nfor a, b in zip(a_strings, b_strings):\n result = jellyfish.damerau_levenshtein_distance(a, b)\ntoc = time.perf_counter()\nprint(f\"{toc - tic:0.4f} seconds, jellyfish.damerau_levenshtein_distance\")\n# 0.0546 seconds, jellyfish.damerau_levenshtein_distance\ntic = time.perf_counter()\nfor a, b in zip(a_strings, b_strings):\n result = textdistance.DamerauLevenshtein(a, b)\ntoc = time.perf_counter()\nprint(f\"{toc - tic:0.4f} seconds, textdistance.DamerauLevenshtein\")\n# 0.0191 seconds, textdistance.DamerauLevenshtein <<< BEST PERFORMANCE\n```\n\n",
"bugtrack_url": null,
"license": "GPL-3.0-or-later",
"summary": "Damererau-Levenshtein implementation with Rust for high-performance.",
"version": "1.1.0",
"project_urls": {
"homepage": "https://github.com/joleaf/pyrsdameraulevenshtein",
"repository": "https://github.com/joleaf/pyrsdameraulevenshtein"
},
"split_keywords": [
"distance",
" rust",
" distance",
" dameraulevenshtein",
" damerau",
" levenshtein"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "a32cb61e806a6229e9786b64e3219766ec4c467f9fbd07fed2cc25f645782d2d",
"md5": "b88b1a0d60f8f32b6fef13eba4e7fe1c",
"sha256": "4e4dca13187438737c106b51e42db778427be02fd7425d664cba6e9dbd6b6166"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp311-cp311-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "b88b1a0d60f8f32b6fef13eba4e7fe1c",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.11",
"size": 224209,
"upload_time": "2024-11-21T08:10:35",
"upload_time_iso_8601": "2024-11-21T08:10:35.613685Z",
"url": "https://files.pythonhosted.org/packages/a3/2c/b61e806a6229e9786b64e3219766ec4c467f9fbd07fed2cc25f645782d2d/pyrsdameraulevenshtein-1.1.0-cp311-cp311-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3f6b9214428a8bad9059ea7e7bd1985052240f55d621a054a5b2e74e1037b797",
"md5": "c19647dd37642b9e2c09bc1d77aa01f7",
"sha256": "72ca70bfff1a312b9f2453e7582adf4117057b080a1cbc4ee70a78e72974829e"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "c19647dd37642b9e2c09bc1d77aa01f7",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.11",
"size": 222387,
"upload_time": "2024-11-21T08:10:32",
"upload_time_iso_8601": "2024-11-21T08:10:32.664724Z",
"url": "https://files.pythonhosted.org/packages/3f/6b/9214428a8bad9059ea7e7bd1985052240f55d621a054a5b2e74e1037b797/pyrsdameraulevenshtein-1.1.0-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a8d063c77d5b45bf0cc73c5dbaa9072d94c95caea8c96cd64817fe41fa2daf3f",
"md5": "2de5e370b0de96c1106b419b6dc7a0d1",
"sha256": "50a90092da88272ef63cfa3785eeb2841ae57dd8320dc30933efb26a9e198309"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "2de5e370b0de96c1106b419b6dc7a0d1",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.11",
"size": 249932,
"upload_time": "2024-11-21T08:10:11",
"upload_time_iso_8601": "2024-11-21T08:10:11.570614Z",
"url": "https://files.pythonhosted.org/packages/a8/d0/63c77d5b45bf0cc73c5dbaa9072d94c95caea8c96cd64817fe41fa2daf3f/pyrsdameraulevenshtein-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a222e0118db39f76e494bdfacbc836c406d51262aa5f48d6759af2081df5b584",
"md5": "03e4f45d53318832187ed8392f8a5962",
"sha256": "922639d064410eecd829ac9535eb44de25ba63f96fa99607b99b571a7a4bdb9c"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"has_sig": false,
"md5_digest": "03e4f45d53318832187ed8392f8a5962",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.11",
"size": 254578,
"upload_time": "2024-11-21T08:10:14",
"upload_time_iso_8601": "2024-11-21T08:10:14.599700Z",
"url": "https://files.pythonhosted.org/packages/a2/22/e0118db39f76e494bdfacbc836c406d51262aa5f48d6759af2081df5b584/pyrsdameraulevenshtein-1.1.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c0ee60b47f26f46527938bb4766aa135e2de829ccf97596ea596d773d9dd1191",
"md5": "6b46ddb280b4f9c22b6decae2e35a862",
"sha256": "7e9420ef7cc75c131aa59ceb1addecf4e61f58e38144d2eaf5b18f4096ad3ec9"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "6b46ddb280b4f9c22b6decae2e35a862",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.11",
"size": 292777,
"upload_time": "2024-11-21T08:10:17",
"upload_time_iso_8601": "2024-11-21T08:10:17.613070Z",
"url": "https://files.pythonhosted.org/packages/c0/ee/60b47f26f46527938bb4766aa135e2de829ccf97596ea596d773d9dd1191/pyrsdameraulevenshtein-1.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7a27b600254c788caa2d96aec4faf6267d2e1a40cd26f4dc2639f82843d1dbdb",
"md5": "c4308deafa398a63af85c3be14818f03",
"sha256": "35446df6ebac2cbd0a970353eeddeed8562033e7b76d4ae77935af0a73d642bf"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "c4308deafa398a63af85c3be14818f03",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.11",
"size": 285919,
"upload_time": "2024-11-21T08:10:21",
"upload_time_iso_8601": "2024-11-21T08:10:21.511619Z",
"url": "https://files.pythonhosted.org/packages/7a/27/b600254c788caa2d96aec4faf6267d2e1a40cd26f4dc2639f82843d1dbdb/pyrsdameraulevenshtein-1.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "48e7baad1a47bee4ced4265ff7ff39db3493687e9739696b392b26a4fea9fd58",
"md5": "188d36c9f42c5d5293c1a582fa6cacc3",
"sha256": "d5f89a03d038a258bde95fd9285c61b2e2802e7914bf87f11f76abec55f53d45"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "188d36c9f42c5d5293c1a582fa6cacc3",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.11",
"size": 251220,
"upload_time": "2024-11-21T08:10:29",
"upload_time_iso_8601": "2024-11-21T08:10:29.574485Z",
"url": "https://files.pythonhosted.org/packages/48/e7/baad1a47bee4ced4265ff7ff39db3493687e9739696b392b26a4fea9fd58/pyrsdameraulevenshtein-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0c7157d53570c04fe9f0094ca895f25463f1254909b8de260e819f474910e870",
"md5": "13c09313415659e01c6b104705558cc0",
"sha256": "8268d3b4cd7e8b8d366c6ef6fc5280bd5a16157a91d2ab50994c8c795dc3958e"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl",
"has_sig": false,
"md5_digest": "13c09313415659e01c6b104705558cc0",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.11",
"size": 265261,
"upload_time": "2024-11-21T08:10:25",
"upload_time_iso_8601": "2024-11-21T08:10:25.279780Z",
"url": "https://files.pythonhosted.org/packages/0c/71/57d53570c04fe9f0094ca895f25463f1254909b8de260e819f474910e870/pyrsdameraulevenshtein-1.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ceeeebf02e8d46d25dfab07e2c09d6dad8ac3b8adc5474b39b44090baa9e14c2",
"md5": "60d9e7506c6af1947ee82ac5ab885e70",
"sha256": "121693c3f63e7453ffe04164a0d670cd79da56983bab72ac7bd21cd28636d123"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "60d9e7506c6af1947ee82ac5ab885e70",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.11",
"size": 434125,
"upload_time": "2024-11-21T08:10:37",
"upload_time_iso_8601": "2024-11-21T08:10:37.992214Z",
"url": "https://files.pythonhosted.org/packages/ce/ee/ebf02e8d46d25dfab07e2c09d6dad8ac3b8adc5474b39b44090baa9e14c2/pyrsdameraulevenshtein-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c842fc28a1d175b3cd044c3d5b7f9d41d458a8d44503ebbb69abad354d06a906",
"md5": "fb5679b3f1bf47c29534224ef5726d0e",
"sha256": "4dcdfd34e4ea6e555747c638e4c569f0d7252fb4f0d8af6f1f48c001569b8391"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp311-cp311-musllinux_1_2_armv7l.whl",
"has_sig": false,
"md5_digest": "fb5679b3f1bf47c29534224ef5726d0e",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.11",
"size": 515030,
"upload_time": "2024-11-21T08:10:40",
"upload_time_iso_8601": "2024-11-21T08:10:40.734092Z",
"url": "https://files.pythonhosted.org/packages/c8/42/fc28a1d175b3cd044c3d5b7f9d41d458a8d44503ebbb69abad354d06a906/pyrsdameraulevenshtein-1.1.0-cp311-cp311-musllinux_1_2_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "fcc9da30c01eec00f287471e7678cd1410943bd10356bcf5e9eae77d77b2429b",
"md5": "9791f69b9a1c18e4c502a6c90532fac3",
"sha256": "9338ce34bdd2ae508ec186f12ff3a5b8ce8542ea6b8c23873c6aeac650e1e588"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp311-cp311-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "9791f69b9a1c18e4c502a6c90532fac3",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.11",
"size": 438690,
"upload_time": "2024-11-21T08:10:43",
"upload_time_iso_8601": "2024-11-21T08:10:43.136139Z",
"url": "https://files.pythonhosted.org/packages/fc/c9/da30c01eec00f287471e7678cd1410943bd10356bcf5e9eae77d77b2429b/pyrsdameraulevenshtein-1.1.0-cp311-cp311-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "86bb1ae16e3006f8c9bfa671c4e97d54c70fb585eb387739ee0c3964abbf0c14",
"md5": "a7baa11ad75f7632ac16ac4d64635a12",
"sha256": "448585320e23afc594024d6a3a67514de4f5c6764114244b369346f46f1470ed"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "a7baa11ad75f7632ac16ac4d64635a12",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.11",
"size": 415458,
"upload_time": "2024-11-21T08:10:46",
"upload_time_iso_8601": "2024-11-21T08:10:46.394465Z",
"url": "https://files.pythonhosted.org/packages/86/bb/1ae16e3006f8c9bfa671c4e97d54c70fb585eb387739ee0c3964abbf0c14/pyrsdameraulevenshtein-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f09fdc0ca79fbefb9b6e9f45eace0c9a1131beff4569a3fbb6b1729d77f5ccc4",
"md5": "385d8a9550ab49ded8185ebfaa9ed6f5",
"sha256": "91d00d4402784412ac1a803cb3cd443b3741cc8be9e5345809ca0107b83db323"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp311-none-win32.whl",
"has_sig": false,
"md5_digest": "385d8a9550ab49ded8185ebfaa9ed6f5",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.11",
"size": 118911,
"upload_time": "2024-11-21T08:10:52",
"upload_time_iso_8601": "2024-11-21T08:10:52.475539Z",
"url": "https://files.pythonhosted.org/packages/f0/9f/dc0ca79fbefb9b6e9f45eace0c9a1131beff4569a3fbb6b1729d77f5ccc4/pyrsdameraulevenshtein-1.1.0-cp311-none-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6cceb58a645c7e7c82e10ac232b8da62843a23999d3e7c557beaa7ebb5e026c7",
"md5": "64aeb27957a95b281aab1ea20425d5f7",
"sha256": "9eadb463d5b0681256548d4dbfa21c06b6b5ee66f955738e56777a22c6c376ba"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp311-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "64aeb27957a95b281aab1ea20425d5f7",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.11",
"size": 123322,
"upload_time": "2024-11-21T08:10:50",
"upload_time_iso_8601": "2024-11-21T08:10:50.031223Z",
"url": "https://files.pythonhosted.org/packages/6c/ce/b58a645c7e7c82e10ac232b8da62843a23999d3e7c557beaa7ebb5e026c7/pyrsdameraulevenshtein-1.1.0-cp311-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "909961ebf3f76bf929f4e0752d27d1f8e4a353421634746bd004a95196cebcaa",
"md5": "ebf1cb3ea476e2fc7acab889e9a9d62a",
"sha256": "60cde45e96a0223bdd5ec63a633162dfbc3d1b43cc5d6cc3f7e063a34125d733"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp312-cp312-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "ebf1cb3ea476e2fc7acab889e9a9d62a",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.11",
"size": 222474,
"upload_time": "2024-11-21T08:10:36",
"upload_time_iso_8601": "2024-11-21T08:10:36.862375Z",
"url": "https://files.pythonhosted.org/packages/90/99/61ebf3f76bf929f4e0752d27d1f8e4a353421634746bd004a95196cebcaa/pyrsdameraulevenshtein-1.1.0-cp312-cp312-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f0d1c49c9ff869d6a68bae998092d8698498078518a11c1a93faabc3e1bb5019",
"md5": "570d30466f01a638f7895f87ccad85ed",
"sha256": "365f5ee779d1ed39f796015799d2000e2f5d3047d5e33fc8e71c6be38c78be6d"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "570d30466f01a638f7895f87ccad85ed",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.11",
"size": 220757,
"upload_time": "2024-11-21T08:10:34",
"upload_time_iso_8601": "2024-11-21T08:10:34.462839Z",
"url": "https://files.pythonhosted.org/packages/f0/d1/c49c9ff869d6a68bae998092d8698498078518a11c1a93faabc3e1bb5019/pyrsdameraulevenshtein-1.1.0-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "35cd6f17ea8dcd17bf07b0b966748516abdde2fb16ce433e657756a26b78e394",
"md5": "194dd5947834b2e769b896b28fe29b4b",
"sha256": "6590f0c0ca97d570c4497e59aa87e5798c11788df5d7032366c7d479f93e769f"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "194dd5947834b2e769b896b28fe29b4b",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.11",
"size": 249933,
"upload_time": "2024-11-21T08:10:13",
"upload_time_iso_8601": "2024-11-21T08:10:13.488091Z",
"url": "https://files.pythonhosted.org/packages/35/cd/6f17ea8dcd17bf07b0b966748516abdde2fb16ce433e657756a26b78e394/pyrsdameraulevenshtein-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e4b31e942d0f4adfb84eabe1d97ac9858b631da41d5b1233d10fd3ba767d96c2",
"md5": "95d459a5e62cb6c5a16553333e3764a4",
"sha256": "045c85cb44f6bdb0c6abb34ef7bd67c7e66afed27a7644e61a1a5c7f632fbb6b"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"has_sig": false,
"md5_digest": "95d459a5e62cb6c5a16553333e3764a4",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.11",
"size": 254577,
"upload_time": "2024-11-21T08:10:16",
"upload_time_iso_8601": "2024-11-21T08:10:16.394595Z",
"url": "https://files.pythonhosted.org/packages/e4/b3/1e942d0f4adfb84eabe1d97ac9858b631da41d5b1233d10fd3ba767d96c2/pyrsdameraulevenshtein-1.1.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "acd948f9f99903919e3826f9b9dc31e0f7152f6925403f83d62323942156986b",
"md5": "13d8a5230e232320dd38148b8491e63c",
"sha256": "2aa036d2501ec7fd863c317a0d3da7e68764537ec37b87ff1c78febb66c51e82"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "13d8a5230e232320dd38148b8491e63c",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.11",
"size": 292777,
"upload_time": "2024-11-21T08:10:19",
"upload_time_iso_8601": "2024-11-21T08:10:19.520708Z",
"url": "https://files.pythonhosted.org/packages/ac/d9/48f9f99903919e3826f9b9dc31e0f7152f6925403f83d62323942156986b/pyrsdameraulevenshtein-1.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2844673208521a4822288e905b21176aa2712ce17831d3bd8b4a2e027c752242",
"md5": "8cd39245a358eb6294fca2b173cedd67",
"sha256": "1150b7589a42afd636155f10f47d4bf9023c5e1c8ddf4d31a11f93415ea0d0e3"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "8cd39245a358eb6294fca2b173cedd67",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.11",
"size": 285919,
"upload_time": "2024-11-21T08:10:23",
"upload_time_iso_8601": "2024-11-21T08:10:23.506409Z",
"url": "https://files.pythonhosted.org/packages/28/44/673208521a4822288e905b21176aa2712ce17831d3bd8b4a2e027c752242/pyrsdameraulevenshtein-1.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b3c03fc8e1a8ed3cb3d7974f849040df748bbe082fc7e2ded02a3ce331390b18",
"md5": "da345eb2c54d5f1edfc816129da3fc9c",
"sha256": "f909fcb6196f511f07a3724d83b39bfb080f2d3a8dbee8d3f38ba272e9418aca"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "da345eb2c54d5f1edfc816129da3fc9c",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.11",
"size": 249615,
"upload_time": "2024-11-21T08:10:31",
"upload_time_iso_8601": "2024-11-21T08:10:31.519586Z",
"url": "https://files.pythonhosted.org/packages/b3/c0/3fc8e1a8ed3cb3d7974f849040df748bbe082fc7e2ded02a3ce331390b18/pyrsdameraulevenshtein-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "643eb4136d3a371246b6e9218975dbf1bb95655a257dd8e85f5b53fdd15943a7",
"md5": "6dd31e3fb0619b18aa06c828682bbdd7",
"sha256": "dac9b5a9e235a23d127a67ac5d63bfc298cfa7751ae2bae822d25c25f3f56946"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl",
"has_sig": false,
"md5_digest": "6dd31e3fb0619b18aa06c828682bbdd7",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.11",
"size": 262966,
"upload_time": "2024-11-21T08:10:27",
"upload_time_iso_8601": "2024-11-21T08:10:27.709243Z",
"url": "https://files.pythonhosted.org/packages/64/3e/b4136d3a371246b6e9218975dbf1bb95655a257dd8e85f5b53fdd15943a7/pyrsdameraulevenshtein-1.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "11a426f49a1282bc455017e680d445bd1383b8b6cf0737de1143c80e56289813",
"md5": "4ad9cfe23669de3a5677164bbdebac6d",
"sha256": "6ccfa34bd9a9d8c5b9783ca8579a7a16f66454a0748e0ed47cc406e2da854da5"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "4ad9cfe23669de3a5677164bbdebac6d",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.11",
"size": 434123,
"upload_time": "2024-11-21T08:10:39",
"upload_time_iso_8601": "2024-11-21T08:10:39.300853Z",
"url": "https://files.pythonhosted.org/packages/11/a4/26f49a1282bc455017e680d445bd1383b8b6cf0737de1143c80e56289813/pyrsdameraulevenshtein-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "135cd9290bc25a51cfbb92ce189612244edb8151f1a4443cfb70865db15eb73a",
"md5": "531202c0e4d8076c5735db42d3661022",
"sha256": "6007d4a22621c94dc8e295ead56e99d8d8b593c2dd9e4171bee6e3a2dff0e1ba"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp312-cp312-musllinux_1_2_armv7l.whl",
"has_sig": false,
"md5_digest": "531202c0e4d8076c5735db42d3661022",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.11",
"size": 515033,
"upload_time": "2024-11-21T08:10:41",
"upload_time_iso_8601": "2024-11-21T08:10:41.905006Z",
"url": "https://files.pythonhosted.org/packages/13/5c/d9290bc25a51cfbb92ce189612244edb8151f1a4443cfb70865db15eb73a/pyrsdameraulevenshtein-1.1.0-cp312-cp312-musllinux_1_2_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b18ca8974579ff2c02b89639bad64ee0c815265a3830557461b5a852ebdfbbe5",
"md5": "9f36da8b718331268bd1b1237ad17c6d",
"sha256": "7472ce75746f9cbcf237c11f5c7d86e842b6be8f6e20a28e81427428a556ac93"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp312-cp312-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "9f36da8b718331268bd1b1237ad17c6d",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.11",
"size": 438690,
"upload_time": "2024-11-21T08:10:44",
"upload_time_iso_8601": "2024-11-21T08:10:44.468435Z",
"url": "https://files.pythonhosted.org/packages/b1/8c/a8974579ff2c02b89639bad64ee0c815265a3830557461b5a852ebdfbbe5/pyrsdameraulevenshtein-1.1.0-cp312-cp312-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "24018c0e54d6613dcc7718f5e049b9805b431b3ef764b79a66dc7457177adc03",
"md5": "dc9f4092a298d91b7987da4f4cb660e8",
"sha256": "fd523787cf742685de036375cb55bdc4763110274f66a32cfee3aa645c83c313"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "dc9f4092a298d91b7987da4f4cb660e8",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.11",
"size": 415455,
"upload_time": "2024-11-21T08:10:48",
"upload_time_iso_8601": "2024-11-21T08:10:48.198072Z",
"url": "https://files.pythonhosted.org/packages/24/01/8c0e54d6613dcc7718f5e049b9805b431b3ef764b79a66dc7457177adc03/pyrsdameraulevenshtein-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "fdaf240d330e1f8de07564310e8299bf819a05c0ba9ffdab699f937c4a72716d",
"md5": "2fbc31508d6af74e55ea1dc1852efa3c",
"sha256": "21753237dcfdfa523f93f3c423d0d46f42d8fe89bb0c9a1ca71cca4ade8de14c"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp312-none-win32.whl",
"has_sig": false,
"md5_digest": "2fbc31508d6af74e55ea1dc1852efa3c",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.11",
"size": 117949,
"upload_time": "2024-11-21T08:10:53",
"upload_time_iso_8601": "2024-11-21T08:10:53.500305Z",
"url": "https://files.pythonhosted.org/packages/fd/af/240d330e1f8de07564310e8299bf819a05c0ba9ffdab699f937c4a72716d/pyrsdameraulevenshtein-1.1.0-cp312-none-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1dd4e14d5d0f8e7e7e22be3853d017f2bcba93306c6e29c4fc34fdb9e9fd5938",
"md5": "823a9f1598bf91b507a1a3ea378048f2",
"sha256": "5830c21fdc1166b72562e22f0fa9a35350736a9e6a6898fb55413025da292fae"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0-cp312-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "823a9f1598bf91b507a1a3ea378048f2",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.11",
"size": 123195,
"upload_time": "2024-11-21T08:10:51",
"upload_time_iso_8601": "2024-11-21T08:10:51.499200Z",
"url": "https://files.pythonhosted.org/packages/1d/d4/e14d5d0f8e7e7e22be3853d017f2bcba93306c6e29c4fc34fdb9e9fd5938/pyrsdameraulevenshtein-1.1.0-cp312-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "261802885896126b78c30e86a5040f4001c45c4165972fee8915b1ed00c87d81",
"md5": "20faacd56d778b067aa31751ad07d9a5",
"sha256": "84743c40b648750f5cd37060047074717db05acb8ed740e899a2f6e707f7233a"
},
"downloads": -1,
"filename": "pyrsdameraulevenshtein-1.1.0.tar.gz",
"has_sig": false,
"md5_digest": "20faacd56d778b067aa31751ad07d9a5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 20541,
"upload_time": "2024-11-21T08:10:49",
"upload_time_iso_8601": "2024-11-21T08:10:49.278427Z",
"url": "https://files.pythonhosted.org/packages/26/18/02885896126b78c30e86a5040f4001c45c4165972fee8915b1ed00c87d81/pyrsdameraulevenshtein-1.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-21 08:10:49",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "joleaf",
"github_project": "pyrsdameraulevenshtein",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "maturin",
"specs": [
[
"==",
"1.7.4"
]
]
},
{
"name": "pyxDamerauLevenshtein",
"specs": [
[
"==",
"1.7.1"
]
]
},
{
"name": "textdistance",
"specs": [
[
"==",
"4.5.0"
]
]
},
{
"name": "jellyfish",
"specs": [
[
"==",
"0.9.0"
]
]
}
],
"lcname": "pyrsdameraulevenshtein"
}