# PrefixTrie
[](https://pypi.org/project/PrefixTrie/)
[](https://github.com/austinv11/PrefixTrie/actions)
[](https://github.com/austinv11/PrefixTrie/blob/master/LICENSE)
This is a straightforward, read-only, implementation of a Prefix Trie to perform efficient fuzzy string matches.
Note that this is intentionally kept simple and does not include more advanced optimizations (like considering semantic character differences).
Originally, this was meant to only deal with RNA barcode matching. As a result, keep in mind the following:
1. The implementation does not attempt to support non-ASCII characters. It may work in some cases, but I won't make any behavioral guarantees.
2. We assume that insertion/deletions are rare compared to substitutions, so if you enable indel support, you may get suboptimal results when there are multiple possible matches.
## Implementation details in short
We optimize for read-only use cases, so when Tries are initialized, they do some preprocessing to make searches faster.
This comes at the cost of slightly higher memory usage and longer initialization times. Since this is meant to be read-only,
we don't implement methods to re-optimize the trie. Feel free to make a PR if you need that functionality, but I don't intend to add mutability.
The main optimizations are:
1. Each node recalls collapsed terminal nodes if there is a trivial exact path.
2. The search aggressively caches results of subproblems to avoid redundant searches.
3. Best case search is performed first, so we assume that most searches should not require complex processing.
4. We assume that insertions/deletions are slightly less likely than substitutions so we prioritize substitutions over indels when both are enabled.
## Basic Usage
```python
from prefixtrie import PrefixTrie
trie = PrefixTrie(["ACGT", "ACGG", "ACGC"], allow_indels=True)
print(trie.search("ACGT"))
>> ("ACGT", True) # Exact match
print(trie.search("ACGA", max_substitutions=1))
>> ("ACGT", False) # One substitution away
print(trie.search("ACG", max_substitutions=1))
>> ("ACGT", False) # One insertion away
print(trie.search("ACGTA", max_substitutions=1))
>> ("ACGT", False) # One deletion away
print(trie.search("AG", max_substitutions=1))
>> None # No match
```
## Installation
Pip (Recommended):
```bash
pip install PrefixTrie
```
From Source (ensure you have a C++ compiler and Cython installed):
```bash
git clone https://github.com/austinv11/PrefixTrie.git
cd PrefixTrie
# With UV (preferred)
uv sync --group dev
uv pip install -e .
# Without UV
pip install -e .
```
## Testing
To run the tests, ensure you have `pytest` installed and run:
```bash
uv sync --group test
uv pip install -e .
pytest tests/
```
Raw data
{
"_id": null,
"home_page": null,
"name": "prefixtrie",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": "Austin Varela <austinv11@gmail.com>",
"keywords": "trie, prefix-trie, fuzzy-matching, string-matching, bioinformatics",
"author": null,
"author_email": "Austin Varela <austinv11@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/51/9e/fc7eb25196d29249efc43c13bf30b0c497bf0d48a9f63f44d4e00e6f09d2/prefixtrie-0.2.1.tar.gz",
"platform": null,
"description": "# PrefixTrie\n\n[](https://pypi.org/project/PrefixTrie/)\n[](https://github.com/austinv11/PrefixTrie/actions)\n[](https://github.com/austinv11/PrefixTrie/blob/master/LICENSE)\n\nThis is a straightforward, read-only, implementation of a Prefix Trie to perform efficient fuzzy string matches.\n\n\nNote that this is intentionally kept simple and does not include more advanced optimizations (like considering semantic character differences).\nOriginally, this was meant to only deal with RNA barcode matching. As a result, keep in mind the following:\n\n1. The implementation does not attempt to support non-ASCII characters. It may work in some cases, but I won't make any behavioral guarantees.\n2. We assume that insertion/deletions are rare compared to substitutions, so if you enable indel support, you may get suboptimal results when there are multiple possible matches.\n\n\n## Implementation details in short\nWe optimize for read-only use cases, so when Tries are initialized, they do some preprocessing to make searches faster.\nThis comes at the cost of slightly higher memory usage and longer initialization times. Since this is meant to be read-only,\nwe don't implement methods to re-optimize the trie. Feel free to make a PR if you need that functionality, but I don't intend to add mutability.\nThe main optimizations are:\n1. Each node recalls collapsed terminal nodes if there is a trivial exact path.\n2. The search aggressively caches results of subproblems to avoid redundant searches.\n3. Best case search is performed first, so we assume that most searches should not require complex processing.\n4. We assume that insertions/deletions are slightly less likely than substitutions so we prioritize substitutions over indels when both are enabled.\n\n## Basic Usage\n\n```python\nfrom prefixtrie import PrefixTrie\ntrie = PrefixTrie([\"ACGT\", \"ACGG\", \"ACGC\"], allow_indels=True)\nprint(trie.search(\"ACGT\"))\n>> (\"ACGT\", True) # Exact match\nprint(trie.search(\"ACGA\", max_substitutions=1))\n>> (\"ACGT\", False) # One substitution away\nprint(trie.search(\"ACG\", max_substitutions=1))\n>> (\"ACGT\", False) # One insertion away\nprint(trie.search(\"ACGTA\", max_substitutions=1))\n>> (\"ACGT\", False) # One deletion away\nprint(trie.search(\"AG\", max_substitutions=1))\n>> None # No match\n```\n\n## Installation\n\nPip (Recommended):\n```bash\npip install PrefixTrie\n```\n\nFrom Source (ensure you have a C++ compiler and Cython installed):\n```bash\ngit clone https://github.com/austinv11/PrefixTrie.git\ncd PrefixTrie\n# With UV (preferred)\nuv sync --group dev\nuv pip install -e .\n# Without UV\npip install -e .\n```\n\n## Testing\nTo run the tests, ensure you have `pytest` installed and run:\n```bash\nuv sync --group test\nuv pip install -e .\npytest tests/\n```\n\n\n",
"bugtrack_url": null,
"license": null,
"summary": "A cython implementation of a read-only prefix trie data structure.",
"version": "0.2.1",
"project_urls": {
"Bug Tracker": "https://github.com/austinv11/PrefixTrie/issues",
"Changelog": "https://github.com/austinv11/PrefixTrie/releases",
"Documentation": "https://github.com/austinv11/PrefixTrie#readme",
"Homepage": "https://github.com/austinv11/PrefixTrie",
"Repository": "https://github.com/austinv11/PrefixTrie"
},
"split_keywords": [
"trie",
" prefix-trie",
" fuzzy-matching",
" string-matching",
" bioinformatics"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "2ada3fb18a005f4c88cba82167ce48417eb35643de16f65c1c75ba1cd4846b8e",
"md5": "f2d9d4930d23b94c925503bb59266cfd",
"sha256": "eddbcbf0319d3519c0d52ded547f6c601b4c1e6f14789ed80784fcf7f7d73674"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "f2d9d4930d23b94c925503bb59266cfd",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 43253,
"upload_time": "2025-08-12T15:31:55",
"upload_time_iso_8601": "2025-08-12T15:31:55.875633Z",
"url": "https://files.pythonhosted.org/packages/2a/da/3fb18a005f4c88cba82167ce48417eb35643de16f65c1c75ba1cd4846b8e/prefixtrie-0.2.1-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "bdac3803686b27d437c6b94f3dd724fb96708ec509f5fb6754d0c049c2f49430",
"md5": "9215252bdeb999b72a2c1c1f0737538f",
"sha256": "d5c3c80b679fbd1cc57700beaba2fe8df0904fad36b80c85506348e2516c125a"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "9215252bdeb999b72a2c1c1f0737538f",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 54322,
"upload_time": "2025-08-12T15:31:56",
"upload_time_iso_8601": "2025-08-12T15:31:56.992433Z",
"url": "https://files.pythonhosted.org/packages/bd/ac/3803686b27d437c6b94f3dd724fb96708ec509f5fb6754d0c049c2f49430/prefixtrie-0.2.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "17ecb60eba1c4216c11538434d40e6ddd198aedd33d5a3dc2afa5ba993f975cd",
"md5": "4bb619c4f2edf374f28c4d420ee72c9a",
"sha256": "c4457eb2d532355079df750da2139928ca9566a8caae2efda1702cf649799884"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp310-cp310-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "4bb619c4f2edf374f28c4d420ee72c9a",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 1084674,
"upload_time": "2025-08-12T15:31:58",
"upload_time_iso_8601": "2025-08-12T15:31:58.284725Z",
"url": "https://files.pythonhosted.org/packages/17/ec/b60eba1c4216c11538434d40e6ddd198aedd33d5a3dc2afa5ba993f975cd/prefixtrie-0.2.1-cp310-cp310-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "184d34072ee9a2757f9be15f64a11888c98c3c3482ad4053055d50647da91c2b",
"md5": "9ed294a39f1a6b8eec70a585789be931",
"sha256": "42513d9b59f9140d41008c84c85caaa756a8a6de346635a8560e9abbbb72f9de"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp310-cp310-win32.whl",
"has_sig": false,
"md5_digest": "9ed294a39f1a6b8eec70a585789be931",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 37707,
"upload_time": "2025-08-12T15:31:59",
"upload_time_iso_8601": "2025-08-12T15:31:59.849941Z",
"url": "https://files.pythonhosted.org/packages/18/4d/34072ee9a2757f9be15f64a11888c98c3c3482ad4053055d50647da91c2b/prefixtrie-0.2.1-cp310-cp310-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ab1fdd6c2ace9419778e6da0c2f95c76a5913ad4cc60db42fc2543549d588c8f",
"md5": "c5ccf377585b6fbf35b0f1dd441f7ad0",
"sha256": "6744e2d9b95245fc27e1630ca3eac7ac1e33929dad57948e6114e9e4b7196ab6"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "c5ccf377585b6fbf35b0f1dd441f7ad0",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 127432,
"upload_time": "2025-08-12T15:32:00",
"upload_time_iso_8601": "2025-08-12T15:32:00.845480Z",
"url": "https://files.pythonhosted.org/packages/ab/1f/dd6c2ace9419778e6da0c2f95c76a5913ad4cc60db42fc2543549d588c8f/prefixtrie-0.2.1-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5141c6563b0ce332bcd5cc9a69ae6bab763c0a4a8ac2657be147f86e474f003b",
"md5": "c263471657a978caa75094bf6b216987",
"sha256": "646e99310ffcd5d8f919c93d150c6cde35f63df1c10234ff8574f52e006f3989"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "c263471657a978caa75094bf6b216987",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 128554,
"upload_time": "2025-08-12T15:32:01",
"upload_time_iso_8601": "2025-08-12T15:32:01.886801Z",
"url": "https://files.pythonhosted.org/packages/51/41/c6563b0ce332bcd5cc9a69ae6bab763c0a4a8ac2657be147f86e474f003b/prefixtrie-0.2.1-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f9732090460cc5323ebaca8a76e3e6773640c87c7575fa33ed9bc6165f0348ee",
"md5": "6d1c449165b1de32b930f86932e39362",
"sha256": "d65d328343b68a8c97c7f8a00171662ff5509ffc042f8137c5ff8b4c10677feb"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "6d1c449165b1de32b930f86932e39362",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 139767,
"upload_time": "2025-08-12T15:32:03",
"upload_time_iso_8601": "2025-08-12T15:32:03.495381Z",
"url": "https://files.pythonhosted.org/packages/f9/73/2090460cc5323ebaca8a76e3e6773640c87c7575fa33ed9bc6165f0348ee/prefixtrie-0.2.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "282fef09d5154d83edbe0b29e911e24ed0a5ddba2d90d9e2cde62e44fa720f14",
"md5": "795d2b5a4d762a036c7bd74b4c35bcd8",
"sha256": "6716542bceee48759e79c488992898f1712672db79df7645871230a3cf4067c2"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp311-cp311-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "795d2b5a4d762a036c7bd74b4c35bcd8",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 1169988,
"upload_time": "2025-08-12T15:32:04",
"upload_time_iso_8601": "2025-08-12T15:32:04.734732Z",
"url": "https://files.pythonhosted.org/packages/28/2f/ef09d5154d83edbe0b29e911e24ed0a5ddba2d90d9e2cde62e44fa720f14/prefixtrie-0.2.1-cp311-cp311-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "88164ee076ad2742bfb936a20a852541122e041b6d17f6d97aa70e4451a5b02f",
"md5": "6093e7a65af7113ff64ac2aa415917e9",
"sha256": "dccbc66f6925dddcb462bad328fb1a1546370928dfa754eb42b358145031bef6"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp311-cp311-win32.whl",
"has_sig": false,
"md5_digest": "6093e7a65af7113ff64ac2aa415917e9",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 123636,
"upload_time": "2025-08-12T15:32:06",
"upload_time_iso_8601": "2025-08-12T15:32:06.332368Z",
"url": "https://files.pythonhosted.org/packages/88/16/4ee076ad2742bfb936a20a852541122e041b6d17f6d97aa70e4451a5b02f/prefixtrie-0.2.1-cp311-cp311-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9cdba353fd536bcdf58fab3759976ce839b7afc0df86848a39b2096a9e56be2e",
"md5": "41a04831185a624df038327b974f5364",
"sha256": "cb0cc5eb2c3aed9cf2a06c4cb16b5f8bed1daaffa9e1abaee6a7e98cafc7edc3"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "41a04831185a624df038327b974f5364",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 127520,
"upload_time": "2025-08-12T15:32:07",
"upload_time_iso_8601": "2025-08-12T15:32:07.388786Z",
"url": "https://files.pythonhosted.org/packages/9c/db/a353fd536bcdf58fab3759976ce839b7afc0df86848a39b2096a9e56be2e/prefixtrie-0.2.1-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4374ed27fcb803aaca0a6d03b7597b3397f4034cd5c5b2bc549cc26cc98cf646",
"md5": "6a6c904abeea206a6aff7b2b7f036653",
"sha256": "9151af167e2d1091d09bca2d8f57cf0c26709eb963d3ce834cf85d52af764833"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "6a6c904abeea206a6aff7b2b7f036653",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 130266,
"upload_time": "2025-08-12T15:32:08",
"upload_time_iso_8601": "2025-08-12T15:32:08.840057Z",
"url": "https://files.pythonhosted.org/packages/43/74/ed27fcb803aaca0a6d03b7597b3397f4034cd5c5b2bc549cc26cc98cf646/prefixtrie-0.2.1-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b58820bc8fa8a49fc2f65f5be8d95463f2850b6a1e77f10b48c20dd294708b6d",
"md5": "f65464f12ea30c08ff9e48893096874b",
"sha256": "ca48518e3dabeddb05660182da8e77a68eaa9ba5c13d33c28b1cb951da2b89c1"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "f65464f12ea30c08ff9e48893096874b",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 139250,
"upload_time": "2025-08-12T15:32:09",
"upload_time_iso_8601": "2025-08-12T15:32:09.895356Z",
"url": "https://files.pythonhosted.org/packages/b5/88/20bc8fa8a49fc2f65f5be8d95463f2850b6a1e77f10b48c20dd294708b6d/prefixtrie-0.2.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ac950b262a633748534a0230e9fc3b14761cfd5f735a7595ac0ffae58608eb61",
"md5": "c16c88ffbf70fb12b3298ddce86e1015",
"sha256": "9983a942b7f55b461e1707b1dbe02c25d5246cec57a5f18ac39b766a97aa0682"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp312-cp312-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "c16c88ffbf70fb12b3298ddce86e1015",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 1169648,
"upload_time": "2025-08-12T15:32:11",
"upload_time_iso_8601": "2025-08-12T15:32:11.007983Z",
"url": "https://files.pythonhosted.org/packages/ac/95/0b262a633748534a0230e9fc3b14761cfd5f735a7595ac0ffae58608eb61/prefixtrie-0.2.1-cp312-cp312-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f4cdefc3bbfb1859581e23f0ea1d410b43be9aa60b727c4d9001af1fc4e5e97b",
"md5": "8ccdb70e420ea0880923fcb64d196c03",
"sha256": "7533bf3c5c462b783c590fbfa0c35e1fca289a8c3858bc3b0008bdf4d2a5e6e7"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp312-cp312-win32.whl",
"has_sig": false,
"md5_digest": "8ccdb70e420ea0880923fcb64d196c03",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 124013,
"upload_time": "2025-08-12T15:32:12",
"upload_time_iso_8601": "2025-08-12T15:32:12.188010Z",
"url": "https://files.pythonhosted.org/packages/f4/cd/efc3bbfb1859581e23f0ea1d410b43be9aa60b727c4d9001af1fc4e5e97b/prefixtrie-0.2.1-cp312-cp312-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d904e3d13fd5e5d7b5cd300e7f65924e88810adf8a53aab8689c7f151f8c497c",
"md5": "a06986900690b02ba0df44c23bf0cce9",
"sha256": "33a04135a62a30211fc72638d291e5652796b12964c4fdec56008d379b4e996e"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "a06986900690b02ba0df44c23bf0cce9",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 128010,
"upload_time": "2025-08-12T15:32:13",
"upload_time_iso_8601": "2025-08-12T15:32:13.653547Z",
"url": "https://files.pythonhosted.org/packages/d9/04/e3d13fd5e5d7b5cd300e7f65924e88810adf8a53aab8689c7f151f8c497c/prefixtrie-0.2.1-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6dc550a425865374d5e2981ed96a95ac4015de331118b0bfdab2085c57637c3b",
"md5": "59fa361eb06d9460f245330847372d71",
"sha256": "b89000040b8b1ebf064888d2dcfdd8177a8fdcf0fbd7c0c0a3c3dce10cfea8f3"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "59fa361eb06d9460f245330847372d71",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 129504,
"upload_time": "2025-08-12T15:32:14",
"upload_time_iso_8601": "2025-08-12T15:32:14.945001Z",
"url": "https://files.pythonhosted.org/packages/6d/c5/50a425865374d5e2981ed96a95ac4015de331118b0bfdab2085c57637c3b/prefixtrie-0.2.1-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "afeee3a12c2cf82470a2659c27bff96c523d5e08e53745bcc0113c35a227149b",
"md5": "e103825a825cf6c63795cc381421faab",
"sha256": "a9d87e00b659128d7a208835e4cfb8f1b5fa1062f8769c745d95fbba21e9714d"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "e103825a825cf6c63795cc381421faab",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 138588,
"upload_time": "2025-08-12T15:32:16",
"upload_time_iso_8601": "2025-08-12T15:32:16.431322Z",
"url": "https://files.pythonhosted.org/packages/af/ee/e3a12c2cf82470a2659c27bff96c523d5e08e53745bcc0113c35a227149b/prefixtrie-0.2.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "eaa80aada7b498e1a39120a2a93466beb241e0435dda3bfe90377a4bd89c2f04",
"md5": "5aa7467e1c1191f272b4efdd419631f6",
"sha256": "f91163d0540d7ce9a5be20ff77ce7cd52433e4f87a37f830fc400ba3bb2dc0f0"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "5aa7467e1c1191f272b4efdd419631f6",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 1169080,
"upload_time": "2025-08-12T15:32:17",
"upload_time_iso_8601": "2025-08-12T15:32:17.940431Z",
"url": "https://files.pythonhosted.org/packages/ea/a8/0aada7b498e1a39120a2a93466beb241e0435dda3bfe90377a4bd89c2f04/prefixtrie-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d1e86e900ac907fb554cb31aafa0e35d68b059e65da22e38f5c5bf75c8bf7e54",
"md5": "e11623e05a02aa47f8511a5aec34fcac",
"sha256": "aed19a99eaa3cc936727ec1fc9e70b2c35c0833f278daf9ee19fe60c164f4948"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp313-cp313-win32.whl",
"has_sig": false,
"md5_digest": "e11623e05a02aa47f8511a5aec34fcac",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 123626,
"upload_time": "2025-08-12T15:32:19",
"upload_time_iso_8601": "2025-08-12T15:32:19.164491Z",
"url": "https://files.pythonhosted.org/packages/d1/e8/6e900ac907fb554cb31aafa0e35d68b059e65da22e38f5c5bf75c8bf7e54/prefixtrie-0.2.1-cp313-cp313-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f880ab286ca7424c7b89a0fc365bac530bd6498764f06a506015abcf2f515aa2",
"md5": "c8f74b7a470dfc88be3242931e4aed85",
"sha256": "b0a4f4dc971d4d6c095eefd7b21c743ca2c654bc93aaa249cc09dfbae8c6184f"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp313-cp313-win_amd64.whl",
"has_sig": false,
"md5_digest": "c8f74b7a470dfc88be3242931e4aed85",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 127334,
"upload_time": "2025-08-12T15:32:20",
"upload_time_iso_8601": "2025-08-12T15:32:20.564538Z",
"url": "https://files.pythonhosted.org/packages/f8/80/ab286ca7424c7b89a0fc365bac530bd6498764f06a506015abcf2f515aa2/prefixtrie-0.2.1-cp313-cp313-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3d46239af06132e7679d1e8254af476c21679bc288c7bf9bd91ec0342df3a15b",
"md5": "267dbc85e9e0d0c8c9af8dc1786ccd2e",
"sha256": "6715cd7061fa26a2f3f34527bd6ff8ee1ad2f524756e1abeb3ea63287d33cfd3"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp314-cp314-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "267dbc85e9e0d0c8c9af8dc1786ccd2e",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.10",
"size": 129719,
"upload_time": "2025-08-12T15:32:22",
"upload_time_iso_8601": "2025-08-12T15:32:22.002620Z",
"url": "https://files.pythonhosted.org/packages/3d/46/239af06132e7679d1e8254af476c21679bc288c7bf9bd91ec0342df3a15b/prefixtrie-0.2.1-cp314-cp314-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "65e91964146143cdd541a80e3123fb21ad4ca294fa065203fb0a170922c83384",
"md5": "4121d9e53247c5dd08b0f13364d9fd66",
"sha256": "a65f9227ddd06900b113bcb11a96057e3de93cbaa21d57a20dee96b4e7b86bab"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "4121d9e53247c5dd08b0f13364d9fd66",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.10",
"size": 139015,
"upload_time": "2025-08-12T15:32:23",
"upload_time_iso_8601": "2025-08-12T15:32:23.012105Z",
"url": "https://files.pythonhosted.org/packages/65/e9/1964146143cdd541a80e3123fb21ad4ca294fa065203fb0a170922c83384/prefixtrie-0.2.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "bdd48d02f9f9cd1e04566baf97c6b2fdbdcff2a7e419606b3c7546d981b87a3c",
"md5": "b6dd1fcc05eab0363b3447a0e404244e",
"sha256": "8dfcb57ad614b50ff390201626b6993b044a9ce8eaa3b3b6cb985856ed746f97"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp314-cp314-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "b6dd1fcc05eab0363b3447a0e404244e",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.10",
"size": 1169272,
"upload_time": "2025-08-12T15:32:24",
"upload_time_iso_8601": "2025-08-12T15:32:24.579774Z",
"url": "https://files.pythonhosted.org/packages/bd/d4/8d02f9f9cd1e04566baf97c6b2fdbdcff2a7e419606b3c7546d981b87a3c/prefixtrie-0.2.1-cp314-cp314-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e6aa836b42247520f6af54c3c6d7700a06e614bb2175141ccbcbe74deed3e594",
"md5": "69e4cd59ecec2b401ff2c2a91ca09f95",
"sha256": "4c1f3462157813bdba7ef81642537d25380d3044df6e02777ccbe6dbe0218736"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp314-cp314t-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "69e4cd59ecec2b401ff2c2a91ca09f95",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.10",
"size": 131923,
"upload_time": "2025-08-12T15:32:28",
"upload_time_iso_8601": "2025-08-12T15:32:28.003692Z",
"url": "https://files.pythonhosted.org/packages/e6/aa/836b42247520f6af54c3c6d7700a06e614bb2175141ccbcbe74deed3e594/prefixtrie-0.2.1-cp314-cp314t-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f3a42e616be5aeb4f5951068964cdc7b62241510dfc093682d3fb804dcd15f3b",
"md5": "850079216344b8b9d7b2ef4ad010c651",
"sha256": "24e42a9801dc74ba16833b03d8af90851026e1a392889cc59c5f033212a53a64"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "850079216344b8b9d7b2ef4ad010c651",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.10",
"size": 143286,
"upload_time": "2025-08-12T15:32:29",
"upload_time_iso_8601": "2025-08-12T15:32:29.483703Z",
"url": "https://files.pythonhosted.org/packages/f3/a4/2e616be5aeb4f5951068964cdc7b62241510dfc093682d3fb804dcd15f3b/prefixtrie-0.2.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "534ab9d5feb7cdece99acf10b8c0d3aa7f306f1dcef147e718802d17ee8c8101",
"md5": "d5916499d6530ec39b216da269cf91e4",
"sha256": "4ad8dd671a31282fa162cbbe8d2a954e7c4e71217b5ec7c1b42cd64ae4fb3daa"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp314-cp314t-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "d5916499d6530ec39b216da269cf91e4",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.10",
"size": 1173637,
"upload_time": "2025-08-12T15:32:30",
"upload_time_iso_8601": "2025-08-12T15:32:30.976928Z",
"url": "https://files.pythonhosted.org/packages/53/4a/b9d5feb7cdece99acf10b8c0d3aa7f306f1dcef147e718802d17ee8c8101/prefixtrie-0.2.1-cp314-cp314t-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "fbef70de143c09bdca59c61bf7f280beadf5b0a35203945874e522d0704f16af",
"md5": "6dc851e7e1f0d28641164d206d3cf156",
"sha256": "e5eec312bcc187e6eb4f5eb31a03e9a29a2c1c62ce63e4ae7a39fef523527d4f"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp314-cp314t-win32.whl",
"has_sig": false,
"md5_digest": "6dc851e7e1f0d28641164d206d3cf156",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.10",
"size": 127162,
"upload_time": "2025-08-12T15:32:32",
"upload_time_iso_8601": "2025-08-12T15:32:32.320425Z",
"url": "https://files.pythonhosted.org/packages/fb/ef/70de143c09bdca59c61bf7f280beadf5b0a35203945874e522d0704f16af/prefixtrie-0.2.1-cp314-cp314t-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1ed63cc9f6c559a102004de2c9c89326b2a5c6e610694f3eed8d37525ea7bb5c",
"md5": "f278b3a5dfde0f54381a39c4162e52aa",
"sha256": "21bba9ee1af3325e73d5441d34fec8d3ea80c9070358bf2a72f948868c4b3425"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp314-cp314t-win_amd64.whl",
"has_sig": false,
"md5_digest": "f278b3a5dfde0f54381a39c4162e52aa",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.10",
"size": 131793,
"upload_time": "2025-08-12T15:32:34",
"upload_time_iso_8601": "2025-08-12T15:32:34.316735Z",
"url": "https://files.pythonhosted.org/packages/1e/d6/3cc9f6c559a102004de2c9c89326b2a5c6e610694f3eed8d37525ea7bb5c/prefixtrie-0.2.1-cp314-cp314t-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4eb14d90c18d6df366d2e228ea23f9acdeae0944bc54078e13d10e7df1d4c988",
"md5": "f188fb64cb7d0ba38870b9c3f5cd51bd",
"sha256": "988dc5d05c1c5f45e7faa539be0afd6a5635bca346351407db90464c4a3159e2"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp314-cp314-win32.whl",
"has_sig": false,
"md5_digest": "f188fb64cb7d0ba38870b9c3f5cd51bd",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.10",
"size": 123861,
"upload_time": "2025-08-12T15:32:25",
"upload_time_iso_8601": "2025-08-12T15:32:25.850268Z",
"url": "https://files.pythonhosted.org/packages/4e/b1/4d90c18d6df366d2e228ea23f9acdeae0944bc54078e13d10e7df1d4c988/prefixtrie-0.2.1-cp314-cp314-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "adcf3d3af56604e7cdebed6c1688ddd2fcd8d79e71b6156c7eec723facb46ad0",
"md5": "a7a5fd723e1067c3925df83f3d82a2fa",
"sha256": "a25e738777764d9ff9cb582ba602eeaa2671cd4314f75f44e3126e9246b27f4b"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1-cp314-cp314-win_amd64.whl",
"has_sig": false,
"md5_digest": "a7a5fd723e1067c3925df83f3d82a2fa",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.10",
"size": 127390,
"upload_time": "2025-08-12T15:32:26",
"upload_time_iso_8601": "2025-08-12T15:32:26.937911Z",
"url": "https://files.pythonhosted.org/packages/ad/cf/3d3af56604e7cdebed6c1688ddd2fcd8d79e71b6156c7eec723facb46ad0/prefixtrie-0.2.1-cp314-cp314-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "519efc7eb25196d29249efc43c13bf30b0c497bf0d48a9f63f44d4e00e6f09d2",
"md5": "0490d29d24b3fadda25268ffaa96a1a5",
"sha256": "26274019f4b786b4398974ed73813029d6fcc2cda18b44392b33a9b61c491a1b"
},
"downloads": -1,
"filename": "prefixtrie-0.2.1.tar.gz",
"has_sig": false,
"md5_digest": "0490d29d24b3fadda25268ffaa96a1a5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 45569,
"upload_time": "2025-08-12T15:32:35",
"upload_time_iso_8601": "2025-08-12T15:32:35.671927Z",
"url": "https://files.pythonhosted.org/packages/51/9e/fc7eb25196d29249efc43c13bf30b0c497bf0d48a9f63f44d4e00e6f09d2/prefixtrie-0.2.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-12 15:32:35",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "austinv11",
"github_project": "PrefixTrie",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "prefixtrie"
}