{ "info": { "author": "Sep Dehpour", "author_email": "sep@zepworks.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Topic :: Software Development" ], "description": "# Fast Autocomplete 0.9.0\n\n[zepworks.com](https://zepworks.com)\n\nFast autocomplete using Directed Word Graph (DWG) and Levenshtein Edit Distance.\n\nThe results are cached via LFU (Least Frequently Used).\n\n# Why\n\nRead about why fast-autocomplete was built here: \n\nThis library was written when we came to the conclusion that Elasticsearch's Autocomplete suggestor is not fast enough and doesn't do everything that we need:\n\n1. Once we switched to Fast Autocomplete, our average latency went from 120ms to 30ms so an improvement of 3-4x in performance and errors went down to zero.\n2. Elasticsearch's Autocomplete suggestor does not handle any sort of combination of the words you have put in. For example Fast Autocomplete can handle `2018 Toyota Camry in Los Angeles` when the words `2018`, `Toyota Camry`, `Los Angeles` are seperately fed into it. While Elasticsearch's autocomplete needs that whole sentence to be fed to it to show it in Autocomplete results.\n\nYou might say:\n\n1. Regarding #1: Yes, but you are using caching. Answer: shhh Yes, keep it quiet. We are also doing Levenshtein Edit distance using a C library so it improves there too.\n2. Regarding #2: Cool. Answer: Ok, now we are talking.\n\n# How\n\nRead about how fast-autocomplete works here: \n\nIn a nutshell, what the fast Autocomplete does is:\n\n1. Populate the DWG with your words.\n2. Follow the graph nodes letter by letter until it finds nodes that have words in them.\n3. Continue after words are found on the graph until it reaches the leaf node.\n4. Restart from the root node again until it reaches a letter that doesn't exist on the graph.\n5. Depending on how much is left from the rest of the word, return all the descendant words from where it got stuck\n6. Or run Levenshtein edit distance to find closes words to what is left and the continue from there.\n\nBy doing so, it can tokenize a text such as:\n\n`2018 Toyota Camry in Los Angeles` into [`2018`, `toyota camry`, `in`, `los angeles`]\n\nAnd return Autocomplete results as you type.\n\n# Install\n\n`pip install fast-autocomplete`\n\n**Note: Fast Autocomplete only works with Python 3.6 and newer.**\n\nAre you still on Python 2? TIME TO UPGRADE.\n\n# Licence\n\nMIT\n\n# DWG\n\nThe data structure we use in this library is called Dawg.\n\nDWG stands for Directed Word Graph. Here is an example DWG based on the \"makes_models_short.csv\" that is provided in the tests:\n\n![dwg](tests/animation/short.gif)\n\n![dwg](tests/AutoCompleteWithSynonymsShort_Graph.svg)\n\n\n# Usage\n\nFirst of all lets start from your data. The library leaves it up to you how to prepare your data.\nIf you want to go straight to the factory function that lets you use the library in its easiest and most common case, skip all these and jump to the [sorting](#sorting) example.\n\n## Example 1\n\n```py\n>>> from fast_autocomplete import AutoComplete\n>>> words = {'book': {}, 'burrito': {}, 'pizza': {}, 'pasta':{}}\n>>> autocomplete = AutoComplete(words=words)\n>>> autocomplete.search(word='b', max_cost=3, size=3)\n[['book'], ['burrito']]\n>>> autocomplete.search(word='bu', max_cost=3, size=3)\n[['burrito']]\n>>> autocomplete.search(word='barrito', max_cost=3, size=3) # mis-spelling\n[['burrito']]\n```\n\nWords is a dictionary and each word can have a context. For example the \"count\", how to display the word, some other context around the word etc. In this example words didn't have any context.\n\n## Example 2\n\nImagine that we have a csv with the following content from vehicles' make and models:\n\n```csv\nmake,model\nacura,zdx\nalfa romeo,4c\nalfa romeo,4c coupe\nalfa romeo,giulia\nbmw,1 series\nbmw,2 series\n2007,2007\n2017,2017\n2018,2018\n```\n\nWhat we want to do is to convert this to a dictionary of words and their context.\n\n\n```py\nimport csv\nfrom fast_autocomplete.misc import read_csv_gen\n\n\ndef get_words(path):\n\n csv_gen = read_csv_gen(path, csv_func=csv.DictReader)\n\n words = {}\n\n for line in csv_gen:\n make = line['make']\n model = line['model']\n if make != model:\n local_words = [model, '{} {}'.format(make, model)]\n while local_words:\n word = local_words.pop()\n if word not in words:\n words[word] = {}\n if make not in words:\n words[make] = {}\n return words\n```\n\nthe `read_csv_gen` is just a helper function. You don't really need it. The whole point is that we are converting that csv to a dictionary that looks like this:\n\n```py\n>>> words = get_words('path to the csv')\n>>> words\n{'acura zdx': {},\n 'zdx': {},\n 'acura': {},\n 'alfa romeo 4c': {},\n '4c': {},\n 'alfa romeo': {},\n 'alfa romeo 4c coupe': {},\n '4c coupe': {},\n 'alfa romeo giulia': {},\n 'giulia': {},\n 'bmw 1 series': {},\n '1 series': {},\n 'bmw': {},\n 'bmw 2 series': {},\n '2 series': {},\n '2007': {},\n '2017': {},\n '2018': {}}\n```\n\nThis is a dictionary of words to their context. We have decided that we don't want any context for the words in this example so all the contexts are empty. However generally you will want some context around the words for more complicated logics. The context is used to convert the words \"keys\" into their context which is the value of the key in the words dictionary.\n\nIn addition to words, we usually want a dictionary of synonyms. Something like this:\n\n```py\nsynonyms = {\n \"alfa romeo\": [\"alfa\"],\n \"bmw\": [\"beemer\", \"bimmer\"],\n \"mercedes-benz\": [\"mercedes\", \"benz\"],\n \"volkswagen\": [\"vw\"]\n}\n```\n\nNote that synonyms are optional. Maybe in your use case you don't need synonyms.\n\nNow we can use the above to initialize Autocomplete\n\n```py\n\nfrom fast_autocomplete import AutoComplete\n\nautocomplete = AutoComplete(words=words, synonyms=synonyms)\n```\n\nAt this point, AutoComplete has created a [dwg](#DWG) structure.\n\nNow you can search!\n\n- word: the word to return autocomplete results for\n- max_cost: Maximum Levenshtein edit distance to be considered when calculating results\n- size: The max number of results to return\n\n```py\n>>> autocomplete.search(word='2018 bmw 1', max_cost=3, size=3)\n[['2018', 'bmw'], ['2018', 'bmw 1 series']]\n```\n\nNow what if we pressed a by mistake then? It still works. No problem.\n\n```py\n>>> autocomplete.search(word='2018 bmw 1a', max_cost=3, size=3)\n[['2018', 'bmw'], ['2018', 'bmw 1 series']]\n```\n\nOk let's search for Alfa now:\n\n```py\n>>> autocomplete.search(word='alfa', max_cost=3, size=3)\n[['alfa romeo'], ['alfa romeo 4c'], ['alfa romeo giulia']]\n```\n\nWhat if we don't know how to pronounce alfa and we type `alpha` ?\n\n```py\n>>> autocomplete.search(word='alpha', max_cost=3, size=3)\n[['alfa romeo'], ['alfa romeo 4c'], ['alfa romeo giulia']]\n```\n\nIt still works!\n\nFast-Autocomplete makes sure the results make sense!\n\nOk lets add the word `Los Angeles` there to the words:\n\n\n```py\n>>> words['los angeles'] = {}\n>>> words['in'] = {}\n>>> autocomplete.search(word='2007 alfa in los', max_cost=3, size=3)\n[['2007', 'alfa romeo', 'in'], ['2007', 'alfa romeo', 'in', 'los angeles']]\n```\n\nSo far we have not used the context. And this library leaves it up to you how to use the context. But basically if we giving a context to each one of those words, then the above response could easly be translated to the list of those contexts.\n\n## context\n\nIf our words dictionary was:\n\n```py\nwords = {\n 'in': {},\n 'alfa romeo': {'type': 'make'},\n '2007': {'type': 'year'},\n 'los angeles': {'type': 'location'},\n}\n```\n\nThen the `autocomplete.words` can be used to map the results into their context:\n\n```\n[['2007', 'alfa romeo', 'in'], ['2007', 'alfa romeo', 'in', 'los angeles']]\n\nconverted to contexts:\n\n[[{'year': '2007'}, {'make': alfa romeo'}], [{'year': '2007'}, {'make': alfa romeo'}, {'location': 'los angeles'}]]\n```\n\n## Sorting\n\nMost people who use Fast Autocomplete, want to control how results are sorted. If you don't control that, the results will be sorted based on the order that Autocomplete found the nodes in the graph that matched the criteria.\n\nThe easiest way to sort is to give each item a count. **Fast AutoComplete will use the count to sort items that are partial matches.**\n\nFor example:\n\n1. Make a json file that is a dictionary of words to their context.\n\nThe format of the file needs to be:\n\n```json\n\n{\n word: [\n context,\n display value,\n count\n ]\n}\n```\n\nAn example is included in the [sample_words.json](tests/fixtures/sample_words.json)\n\n```json\n{\n \"acura rlx\": [\n {\n \"model\": \"rlx\",\n \"make\": \"acura\"\n },\n \"Acura RLX\",\n 3132\n ],\n \"rlx\": [\n {\n \"model\": \"rlx\",\n \"make\": \"acura\"\n },\n \"Acura RLX\",\n 3132\n ],\n \"acura\": [\n {\n \"make\": \"acura\"\n },\n \"Acura\",\n 130123\n ],\n ...\n}\n```\n\nYou might be wondering why things are in this format. It is to save space when this json can become very big easily and the keys become repetitive. That's why we are using a list with predefined order of keys. For your use case for now you can leave the context and display values as None if you want. We will opensource other factory functions soon that will fully utilize those keys in the context.\n\n2. Launch Autocomplete via the factory function:\n\n```py\nfrom fast_autocomplete import autocomplete_factory\n\ncontent_files = {\n 'words': {\n 'filepath': path/to/sample_words.json,\n 'compress': True # means compress the graph data in memory\n }\n}\n\nautocomplete = autocomplete_factory(content_files=content_files)\n```\n\n3. You can use Autocomplete and the results are ordered by count!\n\n\n```py\n>>> autocomplete.search(word='acu')\n[['acura'], ['acura mdx'], ['acura rdx']]\n```\n\n4. How do we use the context and display value now?\n\nGreat question. You need to extend AutoComplete class to use these items. I will write a blog post about it.\n\nHere is a simple example without any extending:\n\n```py\n>>> autocomplete.words['acura']\nWordValue(context={'make': 'acura'}, display='Acura', count=130123, original_key=None)\n>>> autocomplete.words['acura'].display\nAcura\n```\n\n### Change the sorting by updating counts\n\nFast Autocomplete by default uses the \"count\" of the items to sort the items in the results. Think about these counts as a \"guide\" to Fast autocomplete so it can polish its results. Depending on whether or not Fast autocomplete finds exact matches to user's query, the counts will be used to refine the results. You can update the counts in an autocomplete object live.\n\nFor example, in the [sample csv of car makes and models](tests/fixtures/makes_models_from_wikipedia.csv) we have:\n\n```csv\nmake,model,count\nToyota,Aurion,6094\nToyota,Avalon,8803\nToyota,Avensis,1630\nToyota,Auris,4025\nToyota,Aygo,2115\n```\n\nIf we use the autocomplete to search:\n\n```py\n>>> auto_complete = AutoComplete(words=WIKIPEDIA_WORDS, synonyms=SYNONYMS, full_stop_words=['bmw', 'alfa romeo'])\n>>> autocomplete.search(word='toyota a')\n[['toyota'], ['toyota avalon'], ['toyota aurion'], ['toyota auris']]\n```\n\nHowever as you can notice `toyota aygo` had the count of 2115 and thus it didn't make it to the top 3 results.\n\nWe can set the count for `toyota aygo` to a higher number to boost it in the results using `update_count_of_word`.\n\nThe `update_count_of_word` can change the count via setting the word's count directly or by offsetting its current value.\n\n```py\n>>> auto_complete = AutoComplete(words=WIKIPEDIA_WORDS, synonyms=SYNONYMS, full_stop_words=['bmw', 'alfa romeo'])\n>>> auto_complete.update_count_of_word(word='toyota aygo', count=10000)\n10000\n```\n\nNow if we search:\n\n```py\n>>> autocomplete.search(word='toyota a')\n[['toyota'], ['toyota aygo'], ['toyota avalon'], ['toyota aurion']]\n```\n\nWe can double check the count of a node:\n\n```py\n>>> autocomplete.get_count_of_word('toyota aygo')\n10000\n```\n\nNow let's use the offset to offset the current count of a different node:\n\n\n```py\n>>> auto_complete.update_count_of_word(word='toyota aurion', offset=-6000)\n94\n```\n\nWhen we search, `toyota aurion` is not in the top 3 results anymore!\n\n```py\n>>> autocomplete.search(word='toyota a')\n[['toyota'], ['toyota aygo'], ['toyota avalon'], ['toyota auris']]\n```\n\n\n## Unicode\n\nBy default this package only accepts ASCII lowercase letters, a-z. However you can pass the characters that you want to be acceptable via `valid_chars_for_string` for strings, and `valid_chars_for_integer` for numbers. For example here we tell Autocomplete to consider the Farsi alphabet characters for string characters.\n\n```python\nAutoComplete(\n words=SHORT_WORDS_UNICODE,\n valid_chars_for_string='\u0627\u0622\u0628\u067e\u062a\u062b\u062c\u0686\u062d\u062e\u062f\u0630\u0631\u0632\u0698\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063a\u0641\u0642\u06a9\u06af\u0644\u0645\u0646\u0648\u0647\u06cc')\n```\n\nIf you want to pass other characters in addition to ASCII letters, such as punctuation marks, you need to set the `valid_chars_for_string` variable to include all of the characters you need. For example, the following code block sets ASCII letters a-z along with periods and apostrophes:\n\n```python\nvalid_chars = \".'\"\nvalid_chars += string.ascii_lowercase\nAutoComplete(\n words=WORDS_WITH_PUNCTUATION,\n valid_chars_for_string=valid_chars)\n```\n\n\n## Draw\n\nThis package can actually draw the dwgs as it is populating them or just once the dwg is populated for you!\nHere is the animation of populating the dwg with words from \"makes_models_short.csv\":\n\n\n### Draw animation of dwg populating\n\n```py\nfrom fast_autocomplete import AutoComplete, DrawGraphMixin\n\n\nclass AutoCompleteDraw(DrawGraphMixin, AutoComplete):\n DRAW_POPULATION_ANIMATION = True\n DRAW_POPULATION_ANIMATION_PATH = 'animation/short_.svg'\n DRAW_POPULATION_ANIMATION_FILENO_PADDING = 6\n\n\nautocomplete = AutoCompleteDraw(words=words, synonyms=synonyms)\n```\n\nAs soon as you initialize the above AutoCompleteDraw class, it will populate the dwg and generate the animation!\nFor an example of this code properly setup, take a look at the tests. In fact the animation in the [dwg](#dwg) section is generated the same way via unit tests!\n\nNote that if you have many words, the graph file will be big. Instead of drawing all frames as the dwg is being populated, you can just draw the final stage:\n\n### Draw the final graph\n\nTo draw just one graph that shows the final stage of the dwg, use the draw mixin and run the draw_graph function:\n\n```py\nfrom fast_autocomplete import AutoComplete, DrawGraphMixin\n\n\nclass AutoCompleteDraw(DrawGraphMixin, AutoComplete):\n pass\n\nautocomplete = AutoCompleteDraw(words=words, synonyms=synonyms)\nautocomplete.draw_graph('path to file')\n```\n\n## Demo\n\nIf you want to have a real-time interaction with Autocomplete results in your terminal, you can use the demo module:\n\nJust pass it an instance of the autocomplete and the search configs:\n\n```py\nfrom fast_autocomplete import demo\n\ndemo(autocomplete, max_cost=3, size=5)\n```\n\n#\n\n# Develop\n\n1. Clone the repo\n2. Make a virtualenv with Python 3.6 or newer\n3. `pip install -r requirements-dev.txt`\n\n## Run tests\n\n`pytest`\n\nWe try to maintain high standard in code coverage. Currently the `dwg` module's coverage is around 99%!\n\n## Releases\n\nWe use bump2version to bump and tag releases.\n\n```bash\ngit checkout master && git pull\nbump2version {patch|minor|major}\ngit push && git push --tags\n```\n\n# Authors\n\n- Autocomplete written by [Sep Dehpour](http://zepworks.com).\n- LFU Cache by [Shane Wang](https://medium.com/@epicshane)\n\n# Other ways of doing AutoComplete\n\n1. Elastic search. Yes, Elasticsearch generally is a *better* Autocomplete solution than this library. I said generally. In our specific use case, we wanted Autocomplete to be faster than Elasticsearch and handle combination of words. Otherwise Elasticsearch would have been perfect. Behind the scene Elasticsearch uses Finite State Transducer (FST) in Lucene to achive AutoComplete. FST is more complicated than what we have used in fast-autocomplete.\n\n2. If your autocomplete is supposed to return results based on a big blog of text (for example based on some book contents), then a better solution is to go with Markov chains and conditional probability. Yes, there is already a library out there for it! and it looks great. Disclaimer: we have not actually used it since it doesn't fit our specific use-case.\n\n\n# FAQ\n\n## Why DWG\nDWG stands for Directed Word Graph. Originally we were using Trie-Tree structure. But soon it was obvious that some branches needed to merge back to other branches. Such as `beemer` and `bmw` branches both need to end in the same node since they are synonyms. Thus we used DWG.\n\n## What are synonyms, clean synonyms and partial synonyms\nSynonyms are words that should produce the same results.\n\n- For example `beemer` and `bmw` should both give you `bmw`.\n- `alfa` and `alfa romeo` should both give you `alfa romeo`\n\nThe synonyms get divided into 2 groups:\n\n1. clean synonyms: The 2 words share little or no words. For example `beemer` vs. `bmw`.\n2. partial synonyms: One of the 2 words is a substring of the other one. For example `alfa` and `alfa romeo` or `gm` vs. `gmc`.\n\nInternally these 2 types of synonyms are treated differently but as a user of the library, you don't need to really care about it. You just provide the synonyms dictionary via defining the `get_synonyms` method.\n\n## Why do you have a whole subtree for partial synonyms\nQ: Partial synonym means the synonym is a part of the original word. Such as `alfa` is a partial synonym for `alfa romeo`.\nIn that case you are inserting both `alfa` and `alfa romeo` in the dwg. `alfa` will have `alfa 4c` and `alpha romeo` will have `alfa romeo 4c` branches. Why not just have `alfa` branches to be `alfa romeo` and from there you will have automatically all the sub branches of `alfa romeo`.\n\nAnswer: We use letters for edges. So `alfa` can have only one edge coming out of it that is space (` `). And that edge is going to a node that has sub-branches to `alfa romoe`, `alfa 4c` etc. It can't have a ` ` going to that node and another ` ` going to `alfa romeo`'s immediate child. That way when we are traversing the dwg for the input of `alfa 4` we get to the correct node.\n\n## I put Toyota in the Dawg but when I type `toy`, it doesn't show up.\n\nAnswer: If you put `Toyota` with capital T in the dwg, it expects the search word to start with capital T too. We suggest that you lower case everything before putting them in dwg. Fast-autocomplete does not automatically do that for you since it assumes the `words` dictionary is what you want to be put in the dwg. It is up to you to clean your own data before putting it in the dwg.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/seperman/fast-autocomplete", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "fast-autocomplete", "package_url": "https://pypi.org/project/fast-autocomplete/", "platform": "", "project_url": "https://pypi.org/project/fast-autocomplete/", "project_urls": { "Homepage": "https://github.com/seperman/fast-autocomplete" }, "release_url": "https://pypi.org/project/fast-autocomplete/0.9.0/", "requires_dist": [ "python-Levenshtein (>=0.12.2) ; extra == 'levenshtein'", "pylev (>=1.4.0) ; extra == 'pylev'" ], "requires_python": "", "summary": "Fast Autocomplete using Directed Word Graph", "version": "0.9.0", "yanked": false, "yanked_reason": null }, "last_serial": 11702428, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "2caa124333a9160353db163eef8cf35e", "sha256": "b99ace5da8563066574aa1f2af0bbd3e5132ae189fc5b2d04ef6c69d0d936420" }, "downloads": -1, "filename": "fast_autocomplete-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2caa124333a9160353db163eef8cf35e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13478, "upload_time": "2018-09-25T22:24:14", "upload_time_iso_8601": "2018-09-25T22:24:14.584027Z", "url": "https://files.pythonhosted.org/packages/45/a3/469f10d24b8095a2ed89c984fc164b51af25be0a19ec315270f905aa64a3/fast_autocomplete-0.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "67bfabbeb08185715e051c6b72869ed7", "sha256": "f0ac38d82f9c7d656e018a8ce54541a9af02d976a6c74592b6194ff97e053da0" }, "downloads": -1, "filename": "fast-autocomplete-0.1.0.tar.gz", "has_sig": false, "md5_digest": "67bfabbeb08185715e051c6b72869ed7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16791, "upload_time": "2018-09-25T22:24:16", "upload_time_iso_8601": "2018-09-25T22:24:16.660244Z", "url": "https://files.pythonhosted.org/packages/d4/f0/f6b740583ab34e56303ca27fa132be37c5ffcc2e95bf194b7e59c0844ac0/fast-autocomplete-0.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "208221611db19f588267e871e92aa5fe", "sha256": "67f4cdcd33d0f41121239851c4c8360de45dfe9bf2994b44aeaa8b84a5e12a4f" }, "downloads": -1, "filename": "fast_autocomplete-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "208221611db19f588267e871e92aa5fe", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13595, "upload_time": "2018-09-25T22:45:11", "upload_time_iso_8601": "2018-09-25T22:45:11.434054Z", "url": "https://files.pythonhosted.org/packages/0a/53/778c7fabdeb5d3b45ce1e08fc6ff22db1ca37fe226ecd9cca7a87fd4acd2/fast_autocomplete-0.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "4ec842f0d8f4e4b90a3a24dd7726b087", "sha256": "7d9715b1cc12b8864258439bf3c64dcc6776874d0d2eb87e781f3d8a73f36ef9" }, "downloads": -1, "filename": "fast-autocomplete-0.1.1.tar.gz", "has_sig": false, "md5_digest": "4ec842f0d8f4e4b90a3a24dd7726b087", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17010, "upload_time": "2018-09-25T22:45:13", "upload_time_iso_8601": "2018-09-25T22:45:13.007771Z", "url": "https://files.pythonhosted.org/packages/48/e0/2fd779b402cb47f0f836b29b043399cc00ef739d370c42c02571635a2d86/fast-autocomplete-0.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "bc3f5b47fcb67de500983af6a64f6803", "sha256": "64ccabecfb626d7c5b0029d4de48d8c2aa30e26be92d6312aab44736f59aa4ed" }, "downloads": -1, "filename": "fast_autocomplete-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "bc3f5b47fcb67de500983af6a64f6803", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14949, "upload_time": "2018-09-26T00:12:26", "upload_time_iso_8601": "2018-09-26T00:12:26.114490Z", "url": "https://files.pythonhosted.org/packages/8f/af/f66423c156efa269cc99bd4276e0388579e3d9a7666c0658a58c4c3dd450/fast_autocomplete-0.1.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6e90adee6b2d55c7b28d6f60755f65b4", "sha256": "c12f2ea0a42f6707ad4d1290236468f696b2cd8883700dc692476bbdfca6f24a" }, "downloads": -1, "filename": "fast-autocomplete-0.1.2.tar.gz", "has_sig": false, "md5_digest": "6e90adee6b2d55c7b28d6f60755f65b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18247, "upload_time": "2018-09-26T00:12:27", "upload_time_iso_8601": "2018-09-26T00:12:27.680984Z", "url": "https://files.pythonhosted.org/packages/64/fd/f0decde73ddc16ffab23cfb54d34d32b1706708674b12b085c8202835c7a/fast-autocomplete-0.1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "a9d9984142cb2824f829798d711b1aed", "sha256": "45374411964403abdcd65b09c6b3d310b7225c759b31434a3136034ee64dc1a5" }, "downloads": -1, "filename": "fast_autocomplete-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "a9d9984142cb2824f829798d711b1aed", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15039, "upload_time": "2018-10-01T22:34:49", "upload_time_iso_8601": "2018-10-01T22:34:49.723549Z", "url": "https://files.pythonhosted.org/packages/45/b7/d2f343e56807311e9a13baaffad672041c7524ad0886186627753b24715e/fast_autocomplete-0.1.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "65b96a0ea75cf2ba20de5c89916164d3", "sha256": "83091dbd5f02e7476df63008aa41cbbf8055c4d482e7d8c36eb69cca98b37844" }, "downloads": -1, "filename": "fast-autocomplete-0.1.3.tar.gz", "has_sig": false, "md5_digest": "65b96a0ea75cf2ba20de5c89916164d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18336, "upload_time": "2018-10-01T22:34:51", "upload_time_iso_8601": "2018-10-01T22:34:51.683642Z", "url": "https://files.pythonhosted.org/packages/bb/c8/f74e23d50132502fa3108c037d0cd9f98edbe00972eaa8fdb25cf6a7b219/fast-autocomplete-0.1.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "07c7d1370bd61d5cde7e01a90b7ce2f7", "sha256": "687ac437d94490ec6cce4749522096d58303d26b837d800520cb06d8e72f0163" }, "downloads": -1, "filename": "fast_autocomplete-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "07c7d1370bd61d5cde7e01a90b7ce2f7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15152, "upload_time": "2018-12-08T01:09:33", "upload_time_iso_8601": "2018-12-08T01:09:33.251039Z", "url": "https://files.pythonhosted.org/packages/41/19/693285b8da0c16b1573555dae4f05d57c1a720f047695b1d5b1fa0e448cb/fast_autocomplete-0.1.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "0fd15893405a1b07de56622321b8681d", "sha256": "50b4b901c9e6c129ae8e3b926d18c3b6103c0209097678ee0d5e27cfd7a7ebac" }, "downloads": -1, "filename": "fast-autocomplete-0.1.4.tar.gz", "has_sig": false, "md5_digest": "0fd15893405a1b07de56622321b8681d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18459, "upload_time": "2018-12-08T01:09:35", "upload_time_iso_8601": "2018-12-08T01:09:35.103424Z", "url": "https://files.pythonhosted.org/packages/2b/f8/12401954f4e43a706db22439a59c85dd2f25a7f18b71cbb430ed950534c5/fast-autocomplete-0.1.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "2f1eda5b3d8aa49848412a62ed5ad06b", "sha256": "cc735b1ae79d7b319ed09447d13d6300d25e65f0321f8f4dd8466356dd7b5ca3" }, "downloads": -1, "filename": "fast_autocomplete-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "2f1eda5b3d8aa49848412a62ed5ad06b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14940, "upload_time": "2018-12-11T01:01:53", "upload_time_iso_8601": "2018-12-11T01:01:53.290593Z", "url": "https://files.pythonhosted.org/packages/c8/05/89821804ee66e8f24c1ac60a9743c55c6bd24f0ba1184843d3b3a1533c0c/fast_autocomplete-0.1.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "4abe36c6e42b52c875f769e1fc2b094e", "sha256": "316e3bd2302f9d55dba78f7ddb8f68acfcebeb02bfa302905deb652c83d49b74" }, "downloads": -1, "filename": "fast-autocomplete-0.1.5.tar.gz", "has_sig": false, "md5_digest": "4abe36c6e42b52c875f769e1fc2b094e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18822, "upload_time": "2018-12-11T01:01:54", "upload_time_iso_8601": "2018-12-11T01:01:54.914232Z", "url": "https://files.pythonhosted.org/packages/05/a8/58bff2724c8c5c246664f01262130a1799afa83eaa5b383ba4b6fa9a6d35/fast-autocomplete-0.1.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "e82b5fda2fcdbd08963dae680ee62c7f", "sha256": "b1c36f3d48be33bba9bba714476cbc810fbb726355dccdf7670415c2ff31607b" }, "downloads": -1, "filename": "fast_autocomplete-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "e82b5fda2fcdbd08963dae680ee62c7f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15090, "upload_time": "2018-12-17T07:18:15", "upload_time_iso_8601": "2018-12-17T07:18:15.901251Z", "url": "https://files.pythonhosted.org/packages/88/6c/ab436b9facdd599fae14a9cd08a8281cfe8e9c53e9f875cf2fb1f9a70f56/fast_autocomplete-0.1.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f13759dcbcab135f43fc188fd6bc5f6f", "sha256": "714348ba819e6227e3623b24998b8167be589e940f2bfa14aa7863a331c011c4" }, "downloads": -1, "filename": "fast-autocomplete-0.1.7.tar.gz", "has_sig": false, "md5_digest": "f13759dcbcab135f43fc188fd6bc5f6f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18988, "upload_time": "2018-12-17T07:18:17", "upload_time_iso_8601": "2018-12-17T07:18:17.584299Z", "url": "https://files.pythonhosted.org/packages/fe/ef/22585c908826283ae74dec15238800abfa93428b1ff0d818f7093cd72391/fast-autocomplete-0.1.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "d6c1e9c9c852f13f3bfcdc44a8b744fd", "sha256": "f949d306fec4576678fb65473fb81a38a3615cb81f6a74043e5ff177c825365d" }, "downloads": -1, "filename": "fast_autocomplete-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d6c1e9c9c852f13f3bfcdc44a8b744fd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15502, "upload_time": "2018-12-19T21:53:55", "upload_time_iso_8601": "2018-12-19T21:53:55.578907Z", "url": "https://files.pythonhosted.org/packages/61/f7/7607653716ec3288491a87b6cfe1288bd605b2ce6353b409377811c9b27c/fast_autocomplete-0.2.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "df9b68bfda9c46558949de46098d52d8", "sha256": "8f676395ecfd4425e9aef22a6aaef6bdbd0dda558ad0774099530381dfc57e87" }, "downloads": -1, "filename": "fast-autocomplete-0.2.0.tar.gz", "has_sig": false, "md5_digest": "df9b68bfda9c46558949de46098d52d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19387, "upload_time": "2018-12-19T21:53:57", "upload_time_iso_8601": "2018-12-19T21:53:57.150920Z", "url": "https://files.pythonhosted.org/packages/43/fc/f4f1c88faa8eaec7d2b8c756f0f9a3525f05c4516c08a6765231c29c0167/fast-autocomplete-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "ad395bbf93dfaffe85f609f70f4997cc", "sha256": "83d8ec400803f27c07da6e863c353b05aae95101c333756f8c8a7a64743a98c7" }, "downloads": -1, "filename": "fast_autocomplete-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ad395bbf93dfaffe85f609f70f4997cc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15535, "upload_time": "2019-01-04T01:10:36", "upload_time_iso_8601": "2019-01-04T01:10:36.090900Z", "url": "https://files.pythonhosted.org/packages/fc/96/b733a5121a55fa6f3e109e44274bdc7d060788c744fcc9a440372210e4fb/fast_autocomplete-0.2.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "0dec8187d7500069efac30a38cf0fbee", "sha256": "89ff3fc422325e9e027bc0ed2e767f91210877606823548f3a105b14fac602d7" }, "downloads": -1, "filename": "fast-autocomplete-0.2.1.tar.gz", "has_sig": false, "md5_digest": "0dec8187d7500069efac30a38cf0fbee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19408, "upload_time": "2019-01-04T01:10:37", "upload_time_iso_8601": "2019-01-04T01:10:37.907756Z", "url": "https://files.pythonhosted.org/packages/61/d9/db0ebf626a7da970c4612175aa934b9b679753e342e8c267e69baa568808/fast-autocomplete-0.2.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "949c901a717a29b5ae1fe36621968f69", "sha256": "5b6e2bc12b76cfd3657b4daf1b5c9e29b15ec7e002302c5cd20a7b4ffa2941a0" }, "downloads": -1, "filename": "fast_autocomplete-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "949c901a717a29b5ae1fe36621968f69", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15798, "upload_time": "2019-01-09T00:38:49", "upload_time_iso_8601": "2019-01-09T00:38:49.066863Z", "url": "https://files.pythonhosted.org/packages/fa/b3/66fe211c4ba86a4a51d45533e65d33706f57707fd8d4eb6e6788eb9e517c/fast_autocomplete-0.2.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "5eec105ae77ee1c48ea09d8994e41fe0", "sha256": "620732fcdf87fdb9e320503b26eb151f3f56fc1f6fedc8fab22c7a15d23720d4" }, "downloads": -1, "filename": "fast-autocomplete-0.2.2.tar.gz", "has_sig": false, "md5_digest": "5eec105ae77ee1c48ea09d8994e41fe0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19609, "upload_time": "2019-01-09T00:38:51", "upload_time_iso_8601": "2019-01-09T00:38:51.175765Z", "url": "https://files.pythonhosted.org/packages/ad/1b/dde8b22ee0fd0f4d18ce5d7eec4122c961dd86c3d1a206cdc30ca160cfa6/fast-autocomplete-0.2.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "12dfbfa430ed33cf654f209c90dca1c0", "sha256": "1ec936e302277ac6c0d7798f28fd9a5d7d9a621fa7abb7239048a8b8ecb86c85" }, "downloads": -1, "filename": "fast_autocomplete-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "12dfbfa430ed33cf654f209c90dca1c0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15845, "upload_time": "2019-01-16T07:13:14", "upload_time_iso_8601": "2019-01-16T07:13:14.131370Z", "url": "https://files.pythonhosted.org/packages/46/77/e2a9a8c7295577bf552072393955f0676c05b0c574c55b639f4c93fddf32/fast_autocomplete-0.2.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c96f04591ff3d4b3a0a4a89642d6d008", "sha256": "634c6fdef0aea297391e9ad5155a242202ad37ef82608f297d09beeef5a87dc4" }, "downloads": -1, "filename": "fast-autocomplete-0.2.3.tar.gz", "has_sig": false, "md5_digest": "c96f04591ff3d4b3a0a4a89642d6d008", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19644, "upload_time": "2019-01-16T07:13:16", "upload_time_iso_8601": "2019-01-16T07:13:16.012723Z", "url": "https://files.pythonhosted.org/packages/e5/5e/731df71dd416d1bf45100031adfde5fcd80d2f24c652d2490178a414b632/fast-autocomplete-0.2.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "d6c4790d4c26f4455ae0d2cded1da25a", "sha256": "7eaf5d587f9aa5409c6905582cfc179957112be11919f2270d5ced4285527ce3" }, "downloads": -1, "filename": "fast_autocomplete-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "d6c4790d4c26f4455ae0d2cded1da25a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16475, "upload_time": "2019-01-30T07:07:35", "upload_time_iso_8601": "2019-01-30T07:07:35.589418Z", "url": "https://files.pythonhosted.org/packages/d0/81/353858643ef1b114cd863d32feff18ce3ecee12de687c3164a81a525fdcc/fast_autocomplete-0.2.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e59b0d4a7a0dcb645c6729999ca3c8c8", "sha256": "e11556c0f3a6cfcf30f05fc7178ba1e9e66c551a50b1776132e663c9d336aeee" }, "downloads": -1, "filename": "fast-autocomplete-0.2.4.tar.gz", "has_sig": false, "md5_digest": "e59b0d4a7a0dcb645c6729999ca3c8c8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20026, "upload_time": "2019-01-30T07:07:37", "upload_time_iso_8601": "2019-01-30T07:07:37.232806Z", "url": "https://files.pythonhosted.org/packages/7a/a7/bddd937cc4bf031bf56ff212d2539fa7c4ebd4492901cd35aa29af090073/fast-autocomplete-0.2.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "dab67c1da5790626d0c06950741fe041", "sha256": "a3568dd1dcd0472b4ab12ebf1e956b05a2c11b297d30b18f34a3316579a38b84" }, "downloads": -1, "filename": "fast_autocomplete-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "dab67c1da5790626d0c06950741fe041", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16611, "upload_time": "2019-01-30T08:03:45", "upload_time_iso_8601": "2019-01-30T08:03:45.167740Z", "url": "https://files.pythonhosted.org/packages/9f/fc/3d95d9884cb43e690ba7194c0263eadccf09617fe0911dc6899a0e793506/fast_autocomplete-0.2.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e8d004eb81e7235c07d1f44678e91421", "sha256": "ceb2e59510d686c00846f3207be930151b356ac9de9543a086837c6ed31faa7f" }, "downloads": -1, "filename": "fast-autocomplete-0.2.5.tar.gz", "has_sig": false, "md5_digest": "e8d004eb81e7235c07d1f44678e91421", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20242, "upload_time": "2019-01-30T08:03:46", "upload_time_iso_8601": "2019-01-30T08:03:46.676599Z", "url": "https://files.pythonhosted.org/packages/d0/e4/413d9ce6cd565734f331f59b8716b904530409934b3ec1edf53937d1e6ab/fast-autocomplete-0.2.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "ba4a253cff3efd2d265585c978321fd6", "sha256": "0742cf85b77936bbf0b7283b000a4cacb712ee6e7a9eb5a04e0cf588e550a711" }, "downloads": -1, "filename": "fast_autocomplete-0.2.7-py3-none-any.whl", "has_sig": false, "md5_digest": "ba4a253cff3efd2d265585c978321fd6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16705, "upload_time": "2019-01-30T21:11:48", "upload_time_iso_8601": "2019-01-30T21:11:48.588884Z", "url": "https://files.pythonhosted.org/packages/21/1b/cde9f8b628ac42670b3267f0e1d094fbf75634c5c7c34330c8c8bbd878ad/fast_autocomplete-0.2.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "090ab6e250b6a67993a0619bc7dc6686", "sha256": "7eab4ba08c6d63a8d0a968b27fc3f97994dab242f3bae4dd9a8931a92206791e" }, "downloads": -1, "filename": "fast-autocomplete-0.2.7.tar.gz", "has_sig": false, "md5_digest": "090ab6e250b6a67993a0619bc7dc6686", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20366, "upload_time": "2019-01-30T21:11:50", "upload_time_iso_8601": "2019-01-30T21:11:50.041611Z", "url": "https://files.pythonhosted.org/packages/40/b4/10d73eb92f26c134192bd02652ce9299b20c635d2a4630d5b45a2a3cf0da/fast-autocomplete-0.2.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "f70d416acf108698bb93a50a3faa15f2", "sha256": "5c11e4850998b97b3153fd8cc93c591ca3d6105d41ff5cd140261ac4b479d768" }, "downloads": -1, "filename": "fast_autocomplete-0.2.8-py3-none-any.whl", "has_sig": false, "md5_digest": "f70d416acf108698bb93a50a3faa15f2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16874, "upload_time": "2019-02-25T22:08:10", "upload_time_iso_8601": "2019-02-25T22:08:10.346426Z", "url": "https://files.pythonhosted.org/packages/0d/eb/4afa938c7fcd85e76e023423bd021466433811df124581f7daf2bc4c525e/fast_autocomplete-0.2.8-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b911766fbed38ea3ed1d0570bcc4489b", "sha256": "01afe1f37493e6cbb931b5f6a95e5aa976291a2f6fe6da558a924fd0738608de" }, "downloads": -1, "filename": "fast-autocomplete-0.2.8.tar.gz", "has_sig": false, "md5_digest": "b911766fbed38ea3ed1d0570bcc4489b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20496, "upload_time": "2019-02-25T22:08:12", "upload_time_iso_8601": "2019-02-25T22:08:12.042220Z", "url": "https://files.pythonhosted.org/packages/ac/b0/0166a6e54f6764abf7172afc298f79a7affbd2ac3bafe98f37d3da7ba442/fast-autocomplete-0.2.8.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "c0696580c4af6e8b6676dcc988a53eef", "sha256": "48e61ce681e7794db9742a3bc24eda98d3459e398527433a857d69c102cfc1d9" }, "downloads": -1, "filename": "fast_autocomplete-0.2.9-py3-none-any.whl", "has_sig": false, "md5_digest": "c0696580c4af6e8b6676dcc988a53eef", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16974, "upload_time": "2019-03-03T02:22:42", "upload_time_iso_8601": "2019-03-03T02:22:42.528234Z", "url": "https://files.pythonhosted.org/packages/86/6f/659bebdd8433fa7676c4ac9d8dd0ccf9024525d5182527337b2219c62768/fast_autocomplete-0.2.9-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "adec7e0bf272a73ce1bda86896d6277b", "sha256": "f3df9de48444d50cfaf3f9666e8bb928baa79e89553be59d962d3b9222b95272" }, "downloads": -1, "filename": "fast-autocomplete-0.2.9.tar.gz", "has_sig": false, "md5_digest": "adec7e0bf272a73ce1bda86896d6277b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20605, "upload_time": "2019-03-03T02:22:44", "upload_time_iso_8601": "2019-03-03T02:22:44.427724Z", "url": "https://files.pythonhosted.org/packages/a1/53/b3119665e6bf5bee8742a8166396bf5d9ba026dac1182e8eee52331429c3/fast-autocomplete-0.2.9.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "1dce6b22a1271cefb472daf75ecee402", "sha256": "05274eb70c70ed7d8b25c7204199898fcabd6d8bd60babe2be5169346374de88" }, "downloads": -1, "filename": "fast_autocomplete-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1dce6b22a1271cefb472daf75ecee402", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17012, "upload_time": "2019-03-06T00:33:47", "upload_time_iso_8601": "2019-03-06T00:33:47.685264Z", "url": "https://files.pythonhosted.org/packages/99/16/a8c248694a314d5964a529bb00a367fe847c7c6c990178d742ac7b5dd1ad/fast_autocomplete-0.3.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e99b9fcd6a2080a3ed77cc3500dd0729", "sha256": "41646805e94032d0022d2ff5c66f383430a6610e4473cd7bc3cf0aec97d5a6c7" }, "downloads": -1, "filename": "fast-autocomplete-0.3.0.tar.gz", "has_sig": false, "md5_digest": "e99b9fcd6a2080a3ed77cc3500dd0729", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20652, "upload_time": "2019-03-06T00:33:49", "upload_time_iso_8601": "2019-03-06T00:33:49.514211Z", "url": "https://files.pythonhosted.org/packages/cc/5e/1edb4ab65c863c0116d809f4f74a6220494b8e47f4a97661bb8285d6bc6f/fast-autocomplete-0.3.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "ab15d67e57748820e14d276897487aea", "sha256": "12c17dd763ea831ea483b86e5ed95bf359fdbb180dc7d1f544e5beeb1f04bc82" }, "downloads": -1, "filename": "fast_autocomplete-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ab15d67e57748820e14d276897487aea", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17272, "upload_time": "2019-03-19T20:50:39", "upload_time_iso_8601": "2019-03-19T20:50:39.078269Z", "url": "https://files.pythonhosted.org/packages/0d/99/c6e78ea9b7581169d01e8c12cbecef94a16017203def07f59024da4c3fc2/fast_autocomplete-0.4.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "db4a6e4967ffc97033dc48af21b7e003", "sha256": "3bc933493c24db135f86ec221b2a219aca97c26ac58919e76cd4513cf7b517d4" }, "downloads": -1, "filename": "fast-autocomplete-0.4.0.tar.gz", "has_sig": false, "md5_digest": "db4a6e4967ffc97033dc48af21b7e003", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20921, "upload_time": "2019-03-19T20:50:40", "upload_time_iso_8601": "2019-03-19T20:50:40.769661Z", "url": "https://files.pythonhosted.org/packages/e1/ff/bfdd7287aa8a58466b281d3b6425432b3247b5ab94ce54124179bb7f744f/fast-autocomplete-0.4.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "79944ff609c84564a127077809df4788", "sha256": "6630e41548122dc199e578c0800ae7f7f1827d3b2ddb40b54e884acf86b0c65d" }, "downloads": -1, "filename": "fast_autocomplete-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "79944ff609c84564a127077809df4788", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17579, "upload_time": "2019-06-04T00:53:14", "upload_time_iso_8601": "2019-06-04T00:53:14.070545Z", "url": "https://files.pythonhosted.org/packages/8b/42/34d6c4ded413f8f03716d750e437c9746f8cb7c675c218deafac4cb3522c/fast_autocomplete-0.4.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "613e86267b0766188161f99c6691179b", "sha256": "1fbdb9883ca85fe193283921efa9eb846fd4dfb8216d2b6af03002814321ab25" }, "downloads": -1, "filename": "fast-autocomplete-0.4.1.tar.gz", "has_sig": false, "md5_digest": "613e86267b0766188161f99c6691179b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21474, "upload_time": "2019-06-04T00:53:15", "upload_time_iso_8601": "2019-06-04T00:53:15.717683Z", "url": "https://files.pythonhosted.org/packages/62/72/9eb28b2bc241d10cab60f79d3c4113d5580b80c5e0c8f31d26f0522f997f/fast-autocomplete-0.4.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "3ded2b8612ad75f22e968ff7ae68efba", "sha256": "3b6ee4471d396af514bef2375f4bb115b94460e0c395927a182a66eba6501444" }, "downloads": -1, "filename": "fast_autocomplete-0.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3ded2b8612ad75f22e968ff7ae68efba", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17648, "upload_time": "2019-06-20T22:25:26", "upload_time_iso_8601": "2019-06-20T22:25:26.006890Z", "url": "https://files.pythonhosted.org/packages/86/f0/a91b1cc90934361ed37751dc1d3671fe44bd0cc39a3ca7cff14dec1da5a7/fast_autocomplete-0.4.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a21406b47c0bc28b53e6303da5ceeef3", "sha256": "7ee6cbdd371fdf083b1220cc9545f8ddc08fe7a06171719e7ccf1b1d761fdc88" }, "downloads": -1, "filename": "fast-autocomplete-0.4.2.tar.gz", "has_sig": false, "md5_digest": "a21406b47c0bc28b53e6303da5ceeef3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21509, "upload_time": "2019-06-20T22:25:28", "upload_time_iso_8601": "2019-06-20T22:25:28.452951Z", "url": "https://files.pythonhosted.org/packages/37/78/fdc554a05118fedea2afd6e01f440dcb921373e685c6292a6ca7fbfc2b46/fast-autocomplete-0.4.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "df84ed3c13bb7dd5a1fb7c56fc25776f", "sha256": "bfe8e867d310bdc93b433829aaf81b0e431ad42014d836c1eaaed1b7631c1ef7" }, "downloads": -1, "filename": "fast_autocomplete-0.4.3-py3-none-any.whl", "has_sig": false, "md5_digest": "df84ed3c13bb7dd5a1fb7c56fc25776f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17857, "upload_time": "2019-07-19T22:30:10", "upload_time_iso_8601": "2019-07-19T22:30:10.673342Z", "url": "https://files.pythonhosted.org/packages/e1/a5/3372da4b7e79fd1f1a0572e0b76cc0e46061215c8d9722585b18342dd83f/fast_autocomplete-0.4.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c21041287b2f1d35db160014c55a2125", "sha256": "c47117233ecd5f0d9e93e22244a36a6a048af7291fae43cec7977e77a70fe696" }, "downloads": -1, "filename": "fast-autocomplete-0.4.3.tar.gz", "has_sig": false, "md5_digest": "c21041287b2f1d35db160014c55a2125", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21701, "upload_time": "2019-07-19T22:30:12", "upload_time_iso_8601": "2019-07-19T22:30:12.506650Z", "url": "https://files.pythonhosted.org/packages/58/fd/80a18a24c32c6ba725fd1b80cb84b2e320473c6eaeae217dd236763a3b4c/fast-autocomplete-0.4.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "a660d0b1489db6e99a3f8b68974acc6a", "sha256": "84bb23e3c0c8e909c7c827789a15dbccda957f52c5e12c7ba980eaf3645dfae4" }, "downloads": -1, "filename": "fast_autocomplete-0.4.4-py3-none-any.whl", "has_sig": false, "md5_digest": "a660d0b1489db6e99a3f8b68974acc6a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19011, "upload_time": "2019-09-19T01:47:01", "upload_time_iso_8601": "2019-09-19T01:47:01.306242Z", "url": "https://files.pythonhosted.org/packages/a4/96/90fbe5ddfa7a9221a9631f7ccf61511cf0b483af868cacdb01fde80bc7d9/fast_autocomplete-0.4.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "9b8db0c3d10c61fe961123bc8402c5b9", "sha256": "fea86fe438496ddd899c0792dfda24f6a2ef50d8d3e6189066c5cf7167a7d50a" }, "downloads": -1, "filename": "fast-autocomplete-0.4.4.tar.gz", "has_sig": false, "md5_digest": "9b8db0c3d10c61fe961123bc8402c5b9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21708, "upload_time": "2019-09-19T01:47:03", "upload_time_iso_8601": "2019-09-19T01:47:03.110262Z", "url": "https://files.pythonhosted.org/packages/27/29/939da5ae3589e09c05aa8aff2fb5395afcf7cebd23c41ee27fa459cad1fa/fast-autocomplete-0.4.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "fefb7eaf9dc828b21462923669e35751", "sha256": "a19350b20b54671c6ec601bbe89ecf0afe825b16d8a18858a722cbaa71306407" }, "downloads": -1, "filename": "fast_autocomplete-0.4.5-py3-none-any.whl", "has_sig": false, "md5_digest": "fefb7eaf9dc828b21462923669e35751", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19037, "upload_time": "2019-09-19T02:32:50", "upload_time_iso_8601": "2019-09-19T02:32:50.711232Z", "url": "https://files.pythonhosted.org/packages/80/0f/c6b09a0977514a844e721987546c5a56d6990b90623d96338e863f0f47ba/fast_autocomplete-0.4.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "06f6fd20649c1993401432505b12f536", "sha256": "05b45bc081b8fe72fa8d54be191e6f262a5e67e826a8c91ae4fcf6645ca876fd" }, "downloads": -1, "filename": "fast-autocomplete-0.4.5.tar.gz", "has_sig": false, "md5_digest": "06f6fd20649c1993401432505b12f536", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21732, "upload_time": "2019-09-19T02:32:52", "upload_time_iso_8601": "2019-09-19T02:32:52.623063Z", "url": "https://files.pythonhosted.org/packages/f1/b9/d3f51a76de66109fcd71a347ba4a8e3e6deb160daf0d37ece8d0dcec3c13/fast-autocomplete-0.4.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.6": [ { "comment_text": "", "digests": { "md5": "a2754078305fe6e870de4ea35a9cb8cd", "sha256": "d0c79783d03d1417c118b0e7ac44c1385291587c4587a5d812cca105cf51490f" }, "downloads": -1, "filename": "fast_autocomplete-0.4.6-py3-none-any.whl", "has_sig": false, "md5_digest": "a2754078305fe6e870de4ea35a9cb8cd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19076, "upload_time": "2019-09-30T18:57:55", "upload_time_iso_8601": "2019-09-30T18:57:55.789446Z", "url": "https://files.pythonhosted.org/packages/ed/42/e4fcd6d1d39d16771440fe72567f4de31e41d3c17ce980166fd4819496d4/fast_autocomplete-0.4.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "58127719e4b420ab7cfddc47cdf85afc", "sha256": "63bfa4fd145c92046b85ed60e34168eb12e09af89b47d6a3e2ac2b47b2099a61" }, "downloads": -1, "filename": "fast-autocomplete-0.4.6.tar.gz", "has_sig": false, "md5_digest": "58127719e4b420ab7cfddc47cdf85afc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21762, "upload_time": "2019-09-30T18:57:58", "upload_time_iso_8601": "2019-09-30T18:57:58.385090Z", "url": "https://files.pythonhosted.org/packages/2d/57/6c95d288f5c35357564d17a677f920ecf61ea9eeca0bcfc818b8651f3841/fast-autocomplete-0.4.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "2ef3e49d5940a46c9d73468c917d7f62", "sha256": "b13d192c8d5b84c3bb36e108abe98ecfe43fa10a9e005a81b9f8c884906f9c6e" }, "downloads": -1, "filename": "fast_autocomplete-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2ef3e49d5940a46c9d73468c917d7f62", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21343, "upload_time": "2019-10-24T08:01:09", "upload_time_iso_8601": "2019-10-24T08:01:09.135397Z", "url": "https://files.pythonhosted.org/packages/b2/b9/c61e929e8f24a05967cac9f9a73182202819c848e9ce977f7737e57176fe/fast_autocomplete-0.5.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "156dd6fd27e2d5322cd475d9af8a38c1", "sha256": "da52ed37d4172f5b9aea891bc7bf998083a90fa0366782c3a20cbb4b425ac4fc" }, "downloads": -1, "filename": "fast-autocomplete-0.5.0.tar.gz", "has_sig": false, "md5_digest": "156dd6fd27e2d5322cd475d9af8a38c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24588, "upload_time": "2019-10-24T08:01:10", "upload_time_iso_8601": "2019-10-24T08:01:10.861224Z", "url": "https://files.pythonhosted.org/packages/4b/b1/79e7d8e0df1dc355f11e6344100d1372e9f86171a250b67366f71ed98296/fast-autocomplete-0.5.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "6b9f1d456890f80e4bbd71593f1c4eb4", "sha256": "e5be6801458395c243d938c541d61f1a6b8e2bd0dbf8319ac3c723de3a88614d" }, "downloads": -1, "filename": "fast_autocomplete-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "6b9f1d456890f80e4bbd71593f1c4eb4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 22249, "upload_time": "2019-12-10T21:31:55", "upload_time_iso_8601": "2019-12-10T21:31:55.468097Z", "url": "https://files.pythonhosted.org/packages/b6/68/333a49b3d1a483638ef2b4306f3af62ab87d006703e5a340874783fee4ce/fast_autocomplete-0.6.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "146d32a9199080de6271f679938e418d", "sha256": "62088635600627225262bbf2c848996d5da78b1d9b452930429249822032eb2d" }, "downloads": -1, "filename": "fast-autocomplete-0.6.0.tar.gz", "has_sig": false, "md5_digest": "146d32a9199080de6271f679938e418d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26299, "upload_time": "2019-12-10T21:31:57", "upload_time_iso_8601": "2019-12-10T21:31:57.330529Z", "url": "https://files.pythonhosted.org/packages/b0/ef/60e3b43465e81b76d571844bc89a661b6d26d5b179eccff2ef16894c140e/fast-autocomplete-0.6.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "accf2f204e7a7b5340c63413d7375b6a", "sha256": "ed9a0af91b229632438c568f9e94df42eb52e1678d0c6a0f414fe03eeb8686c1" }, "downloads": -1, "filename": "fast_autocomplete-0.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "accf2f204e7a7b5340c63413d7375b6a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 22951, "upload_time": "2021-01-19T20:38:22", "upload_time_iso_8601": "2021-01-19T20:38:22.069567Z", "url": "https://files.pythonhosted.org/packages/e7/68/7de9fda80d7ec92e667253ffb5f463331d826573020ec741fbc010eb4a1b/fast_autocomplete-0.7.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ae4df126036441217025bac6ebe957f7", "sha256": "e899cee9c1a25b085f4bca46864e36386938bfa557e27874880f9cf8fdccf75c" }, "downloads": -1, "filename": "fast-autocomplete-0.7.0.tar.gz", "has_sig": false, "md5_digest": "ae4df126036441217025bac6ebe957f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27708, "upload_time": "2021-01-19T20:38:24", "upload_time_iso_8601": "2021-01-19T20:38:24.093465Z", "url": "https://files.pythonhosted.org/packages/40/d3/627efec0f8fd08d66d69963f78cba0b5fa6eb90eb035aca7d24a57928f37/fast-autocomplete-0.7.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "11d43f97c90c73bafc9f0e2a319f9784", "sha256": "e785420f18286665f1f1f2d50fe23020fd92e18b7ee5b9c9948511075eabf515" }, "downloads": -1, "filename": "fast_autocomplete-0.7.1-py3-none-any.whl", "has_sig": false, "md5_digest": "11d43f97c90c73bafc9f0e2a319f9784", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23190, "upload_time": "2021-03-08T18:28:24", "upload_time_iso_8601": "2021-03-08T18:28:24.196840Z", "url": "https://files.pythonhosted.org/packages/de/70/eadfd20e2dc741809d7d2eed58dd343f8ecea4f64cdddbc9beedd1e3ea6c/fast_autocomplete-0.7.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "7c8803df5512a7bd74d9c2d2cd760fe6", "sha256": "acd63c0c569ac10c853d7b1ddc7bb3da3cc5b5ed3db9d31644aa5fdcd16586fa" }, "downloads": -1, "filename": "fast-autocomplete-0.7.1.tar.gz", "has_sig": false, "md5_digest": "7c8803df5512a7bd74d9c2d2cd760fe6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28238, "upload_time": "2021-03-08T18:28:26", "upload_time_iso_8601": "2021-03-08T18:28:26.372685Z", "url": "https://files.pythonhosted.org/packages/91/f8/e836ccb16a02b5cbecb8545f81875a2c36f1aa38d5840f0ab86f43cc8895/fast-autocomplete-0.7.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "c20bbd9d3bf26e1c3dcd640f79dbf8cb", "sha256": "1db1f20d673f77b04a39e60492e936b4983bce18b667b3e0c4a6d18bb8124437" }, "downloads": -1, "filename": "fast_autocomplete-0.7.2-py3-none-any.whl", "has_sig": false, "md5_digest": "c20bbd9d3bf26e1c3dcd640f79dbf8cb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23240, "upload_time": "2021-06-29T22:16:30", "upload_time_iso_8601": "2021-06-29T22:16:30.030507Z", "url": "https://files.pythonhosted.org/packages/8a/a9/2644c04ceec7ae7c005a9496ef3571f26e061586c9e207a3d756b23686b3/fast_autocomplete-0.7.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6957520ab915d29c61bb574cb85b191b", "sha256": "f652fa7ce74cd89e7d2f405839ed8d3f5a286859ba13a5aa6884aa4651ced45a" }, "downloads": -1, "filename": "fast-autocomplete-0.7.2.tar.gz", "has_sig": false, "md5_digest": "6957520ab915d29c61bb574cb85b191b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29110, "upload_time": "2021-06-29T22:16:32", "upload_time_iso_8601": "2021-06-29T22:16:32.196292Z", "url": "https://files.pythonhosted.org/packages/65/04/a17b443826e9321b5d8d0fece3265b2feeacff7d5b7712f782c5d69e5730/fast-autocomplete-0.7.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "842767454ec7d3665b4bb328b344cdb8", "sha256": "088f36b46366467e5faa2a172edf7602d631bb9697d995fb10dda261c86e72f3" }, "downloads": -1, "filename": "fast_autocomplete-0.9.0-py3-none-any.whl", "has_sig": false, "md5_digest": "842767454ec7d3665b4bb328b344cdb8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23433, "upload_time": "2021-10-12T19:23:01", "upload_time_iso_8601": "2021-10-12T19:23:01.151267Z", "url": "https://files.pythonhosted.org/packages/f0/f4/3f9f6ebd6547d685d3190faf80debc30a10e1ba099bd1eebe8209a7d38fa/fast_autocomplete-0.9.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "252b7b25873bfd4d931a8dc6387972d5", "sha256": "f700cba27e338fb1ce74a07be1a2370800004396678c19dd8675bdd022ced4d2" }, "downloads": -1, "filename": "fast-autocomplete-0.9.0.tar.gz", "has_sig": false, "md5_digest": "252b7b25873bfd4d931a8dc6387972d5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27857, "upload_time": "2021-10-12T19:23:03", "upload_time_iso_8601": "2021-10-12T19:23:03.190375Z", "url": "https://files.pythonhosted.org/packages/26/f9/c8cec29088a25c13e8625e044dc55469475d4fd3bb6a5b441bc369733836/fast-autocomplete-0.9.0.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "842767454ec7d3665b4bb328b344cdb8", "sha256": "088f36b46366467e5faa2a172edf7602d631bb9697d995fb10dda261c86e72f3" }, "downloads": -1, "filename": "fast_autocomplete-0.9.0-py3-none-any.whl", "has_sig": false, "md5_digest": "842767454ec7d3665b4bb328b344cdb8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23433, "upload_time": "2021-10-12T19:23:01", "upload_time_iso_8601": "2021-10-12T19:23:01.151267Z", "url": "https://files.pythonhosted.org/packages/f0/f4/3f9f6ebd6547d685d3190faf80debc30a10e1ba099bd1eebe8209a7d38fa/fast_autocomplete-0.9.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "252b7b25873bfd4d931a8dc6387972d5", "sha256": "f700cba27e338fb1ce74a07be1a2370800004396678c19dd8675bdd022ced4d2" }, "downloads": -1, "filename": "fast-autocomplete-0.9.0.tar.gz", "has_sig": false, "md5_digest": "252b7b25873bfd4d931a8dc6387972d5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27857, "upload_time": "2021-10-12T19:23:03", "upload_time_iso_8601": "2021-10-12T19:23:03.190375Z", "url": "https://files.pythonhosted.org/packages/26/f9/c8cec29088a25c13e8625e044dc55469475d4fd3bb6a5b441bc369733836/fast-autocomplete-0.9.0.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }