pyrsdameraulevenshtein


Namepyrsdameraulevenshtein JSON
Version 1.1.0 PyPI version JSON
download
home_pageNone
SummaryDamererau-Levenshtein implementation with Rust for high-performance.
upload_time2024-11-21 08:10:49
maintainerNone
docs_urlNone
authorNone
requires_python>=3.11
licenseGPL-3.0-or-later
keywords distance rust distance dameraulevenshtein damerau levenshtein
VCS
bugtrack_url
requirements maturin pyxDamerauLevenshtein textdistance jellyfish
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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"
}
        
Elapsed time: 4.85317s