{ "info": { "author": "Sam Havens", "author_email": "sam.havens@writer.com", "bugtrack_url": null, "classifiers": [ "License :: Other/Proprietary License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9" ], "description": "# library.qai.utilities\n\nHelper functions and classes for interacting with the rest of the Writer platform. The main components are:\n\n- `qai.issues.make_issue`: makes a dictionary that conforms to Writer platform standards\n- `qai.spacy_factor.SpacyFactor`: a helper class which turns a spaCy Span into an issue\n- `qai.server.QRest`: a helper class which builds a Sanic REST server for you\n- `qai.validation.Validator`: a simple validator class that can be used to skip segments without processing them, e.g. for being empty or having HTML. You would only want to import this yourself if you aren't using `QRest`\n\nIf you are building a Sanic app without using `QRest`, you still may be interested in the following middleware:\n\n- `qai.server.set_valid_segments`: stores valid segments to `request.ctx.segments` and also sets `request.ctx.info`\n- `qai.server.postprocess_issues`: changes the string indexing to be utf-16 based, and filters no ops\n\n(See GitHub history for older docs - QAI used to do a lot more!)\n\n## Upgrading to v5\n\n- `Analyzer` class must now be callable. It will be passed `(segment: str, meta: dict, all_info: dict)` - `segment` is the string to analyze, `meta` is the `meta` object that was sent, or `{}` if none was sent, and `all_info` is the entire payload the server received - in case you need access to clientID or something. Feel free to define `def __call__(self, segment: str, meta: dict, _)` if you don't expect to need the request.\n- `QRest` can be passed a Sanic app, or be passed a dictionary which maps issue types to categories (in addition to the default behavior). This is useful for services that handle multiple categories, for which the default behavior doesn't work.\n- QAI has a simpler structure, so all imports look different\n- Configs, Strings, Storage, and Document are gone. The later 2 because they aren't needed anymore, the former 2 because you should manage that yourself. Whitelisting is also gone - just don't make the issues if you don't want them.\n- All issues are created in the v2 format (meaning, the format we switched to after new segmentation - defined [here](https://writerai.atlassian.net/wiki/spaces/HOME/pages/2115928140/NLP+Services+API+Contract+Meta))\n- By default, issue `from` and `until` keys are now based on UTF-16 indexing, to make things easier for JS. We add `_from_p` and `_until_p` keys for debugging, which are the Python string indexes. This happens as response middleware in QRest.\n\n## Usage\n\nYou can explicitly create a REST connection like this:\n\n```python\nfrom app import Analyzer\n\nfrom qai.server import QRest\n\n\n# setting the category / service name does nothing\n# we use the category passed on the request\ncategory = 'service_name'\nhost = '0.0.0.0'\nport = 5000\n\n\nif __name__ == '__main__':\n analyzer = Analyzer()\n rest_connection = QRest(\n analyzer,\n category=category,\n host=host,\n port=port\n )\n # create a blocking connection:\n rest_connection.connect()\n```\n\nThe above will create *as many workers as you have cores.* This is great, sometimes. For example, there is a known bug where AutoML crashes if you are using more than one worker. So pass `workers=1` if this happens\n\nThere is also a helper class for turning spaCy `Span`s into issues the rest of the platform can process:\n\n```python\nfrom spacy.tokens import Span\nfrom qai.spacy_factor import SpacyFactor\n\n\nMyFactor = SpacyFactor(\n \"subject_object_verb_spacing\",\n \"Keep the subject, verb, and object of a sentence close together to help the reader understand the sentence.\"\n)\n\nSpan.set_extension(\"score\", default=0)\nSpan.set_extension(\"suggestions\", default=[])\n\ndoc = nlp(\"Holders of the Class A and Class B-1 certificates will be entitled to receive on each Payment Date, to the extent monies are available therefor (but not more than the Class A Certificate Balance or Class B-1 Certificate Balance then outstanding), a distribution.\")\nscore = analyze(doc)\nif score is not None:\n span = Span(doc, 0, len(doc)) # or whichever tokens/spans are the issue (don't have to worry about character indexes)\n span._.score = score\n span._.suggestions = get_suggestions(doc)\n issue = MyFactor(span)\n```\n\n## Installation\n\n`pip install qai` or `poetry add qai`\n\n## Testing\n\nSee Confluence for docs on input format expectations.\n\n`scripts/test_qai.sh` has some helpful testing functions.\n\n### CI/CD\n\nGitHub Actions will push to PyPi when you merge into the `main` branch.\n\n### License\n\nThis software is not licensed. If you do not work at Writer, you are not legally allowed to use it. Also, it's just helper functions that really won't help you. If something in it does look interesting, and you would like access or our help, open an issue.\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "Proprietary", "maintainer": "", "maintainer_email": "", "name": "qai", "package_url": "https://pypi.org/project/qai/", "platform": "", "project_url": "https://pypi.org/project/qai/", "project_urls": null, "release_url": "https://pypi.org/project/qai/5.1.1/", "requires_dist": [ "sanic (>=21.3.4,<22.0.0)" ], "requires_python": ">=3.8,<4.0", "summary": "Helper functions and classes for interacting with the rest of the Writer platform", "version": "5.1.1", "yanked": false, "yanked_reason": null }, "last_serial": 11840536, "releases": { "2.0.0rc1": [ { "comment_text": "", "digests": { "md5": "924ae10944b84c9a6875019517ae9419", "sha256": "5730f50f5c14c106872c895e01f0cce35cd5c0605a1413b9e18443e7955f342b" }, "downloads": -1, "filename": "qai-2.0.0rc1.tar.gz", "has_sig": false, "md5_digest": "924ae10944b84c9a6875019517ae9419", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10298, "upload_time": "2019-08-23T00:10:59", "upload_time_iso_8601": "2019-08-23T00:10:59.939990Z", "url": "https://files.pythonhosted.org/packages/45/08/2e1cfa29a34c15b1d7dec9cdda30a18886af7ffaf298003bd00f9cca4f76/qai-2.0.0rc1.tar.gz", "yanked": false, "yanked_reason": null } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "d14a77e1d8aef9312253158cc6ba9047", "sha256": "ed79fbf9d79c65f5719d35a36bc7ab18ad99efcbc4cb81ac758202c1faa1889b" }, "downloads": -1, "filename": "qai-2.0.1.tar.gz", "has_sig": false, "md5_digest": "d14a77e1d8aef9312253158cc6ba9047", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10295, "upload_time": "2019-08-23T00:31:38", "upload_time_iso_8601": "2019-08-23T00:31:38.130238Z", "url": "https://files.pythonhosted.org/packages/05/bc/25ac73c987a42ac5b964ebc3e0be9295e8eb5d8c77cbf5e9a9d96f3eccc6/qai-2.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "d915971083e45e86ded22a92457ebcbd", "sha256": "b9887e977b95d8974e208230f80d1de1f616a7a0ea1fa9d74d491bcec32225fc" }, "downloads": -1, "filename": "qai-2.1.0.tar.gz", "has_sig": false, "md5_digest": "d915971083e45e86ded22a92457ebcbd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12058, "upload_time": "2019-08-23T19:43:33", "upload_time_iso_8601": "2019-08-23T19:43:33.374381Z", "url": "https://files.pythonhosted.org/packages/4d/57/f74b6c05a70a874f2e89ea79c244314311517d0bbe6f07a988e63f04d680/qai-2.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "2.1.1": [ { "comment_text": "", "digests": { "md5": "dacf6949e421e5d4dea41899eb8873e9", "sha256": "0e9b9927b41a2e484d38c3072d406638510cc1166a47fc4f5d511fca6613fbab" }, "downloads": -1, "filename": "qai-2.1.1.tar.gz", "has_sig": false, "md5_digest": "dacf6949e421e5d4dea41899eb8873e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12082, "upload_time": "2019-08-23T20:04:37", "upload_time_iso_8601": "2019-08-23T20:04:37.761328Z", "url": "https://files.pythonhosted.org/packages/bb/95/37c55c7b617a7cefc774aecbadaad6cbd315e9917c132a891494ee4e8083/qai-2.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "2.1.2": [ { "comment_text": "", "digests": { "md5": "0de6fb4a5f21cf4c43b4d30cc7676a0d", "sha256": "97edb84935a6d8e3e0c27e8456446ada36a56b67f9bae8e025276f4ad860d52c" }, "downloads": -1, "filename": "qai-2.1.2.tar.gz", "has_sig": false, "md5_digest": "0de6fb4a5f21cf4c43b4d30cc7676a0d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11886, "upload_time": "2019-08-23T20:08:48", "upload_time_iso_8601": "2019-08-23T20:08:48.090790Z", "url": "https://files.pythonhosted.org/packages/d7/1b/4b71b0a1d02455fbdaeeeca4a0186f5b404e8a566159143655091e1fcbc6/qai-2.1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "2.1.3": [ { "comment_text": "", "digests": { "md5": "491c84e5ff6a872eab51d141838fc0c7", "sha256": "d33b406a6889a74f9850a5c9a77ae5b55d357053852f32a808994989654748f9" }, "downloads": -1, "filename": "qai-2.1.3.tar.gz", "has_sig": false, "md5_digest": "491c84e5ff6a872eab51d141838fc0c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12597, "upload_time": "2019-08-23T20:18:36", "upload_time_iso_8601": "2019-08-23T20:18:36.330783Z", "url": "https://files.pythonhosted.org/packages/af/05/14d5f8ab61998fb88ba721d04f6cd66974d852b0f63117c33d64a3d8279c/qai-2.1.3.tar.gz", "yanked": false, "yanked_reason": null } ], "2.1.4": [ { "comment_text": "", "digests": { "md5": "887a214a11531998f759ae450e760460", "sha256": "b814ec9a638dce2296e455af9b872efff72270ba7dd709d2c464a95013f86572" }, "downloads": -1, "filename": "qai-2.1.4.tar.gz", "has_sig": false, "md5_digest": "887a214a11531998f759ae450e760460", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12678, "upload_time": "2019-08-23T20:24:50", "upload_time_iso_8601": "2019-08-23T20:24:50.572787Z", "url": "https://files.pythonhosted.org/packages/00/b9/6f3e4fce986da284ad8f097388a0ece5e35675498f59a76a2c62565996df/qai-2.1.4.tar.gz", "yanked": false, "yanked_reason": null } ], "2.1.5": [ { "comment_text": "", "digests": { "md5": "dd36673c70cfae2599ad5d555a487ced", "sha256": "192ec77d1cae42c50a04612e1438cf39199ca4b0ffcb472aa3cc314106dbad45" }, "downloads": -1, "filename": "qai-2.1.5.tar.gz", "has_sig": false, "md5_digest": "dd36673c70cfae2599ad5d555a487ced", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13667, "upload_time": "2019-08-23T20:33:23", "upload_time_iso_8601": "2019-08-23T20:33:23.284707Z", "url": "https://files.pythonhosted.org/packages/60/a0/ed8ee93a2ec046dd0ec2aa8b2fa18ac51e4276040ec927e7c7b5dc4378d9/qai-2.1.5.tar.gz", "yanked": false, "yanked_reason": null } ], "2.1.6": [ { "comment_text": "", "digests": { "md5": "37f1de61a4343d134cfc3ed1147e571e", "sha256": "3198831bc86bdafaf494a4734260284bff21e2e32643775b0df3feb023757102" }, "downloads": -1, "filename": "qai-2.1.6.tar.gz", "has_sig": false, "md5_digest": "37f1de61a4343d134cfc3ed1147e571e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13670, "upload_time": "2019-08-23T20:41:47", "upload_time_iso_8601": "2019-08-23T20:41:47.762667Z", "url": "https://files.pythonhosted.org/packages/10/96/e34da0d65b2c163d6f60bfedc52930529ac39e1e78abd4e0d8306ae513de/qai-2.1.6.tar.gz", "yanked": false, "yanked_reason": null } ], "2.1.8": [ { "comment_text": "", "digests": { "md5": "078f4e91135f9dc5271be8722c4eeb9c", "sha256": "6e90588c51d3c940c904072018c466d9503b5885642bd51d0a41c873f4f5ac56" }, "downloads": -1, "filename": "qai-2.1.8.tar.gz", "has_sig": false, "md5_digest": "078f4e91135f9dc5271be8722c4eeb9c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 13731, "upload_time": "2019-08-23T22:46:30", "upload_time_iso_8601": "2019-08-23T22:46:30.168720Z", "url": "https://files.pythonhosted.org/packages/51/06/88952bad61789620328412d0423813f3fd84fc1da1160eb11de383cabce1/qai-2.1.8.tar.gz", "yanked": false, "yanked_reason": null } ], "2.1.9": [ { "comment_text": "", "digests": { "md5": "748ff20a06658d95d624ec79fc13e0a7", "sha256": "907e98aae96a3382ee4ba17fff5e89aab993b425cca26c6dd9d05ab657b00808" }, "downloads": -1, "filename": "qai-2.1.9.tar.gz", "has_sig": false, "md5_digest": "748ff20a06658d95d624ec79fc13e0a7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 13811, "upload_time": "2019-08-23T22:53:55", "upload_time_iso_8601": "2019-08-23T22:53:55.798456Z", "url": "https://files.pythonhosted.org/packages/f8/1d/c3e43feb16f72b9d529378c76df31bbc5e131fea618fe7f0c4906837be52/qai-2.1.9.tar.gz", "yanked": false, "yanked_reason": null } ], "2.2.0": [ { "comment_text": "", "digests": { "md5": "f629fb9187dd3ddeafbfde31d79ab302", "sha256": "38435073493cd6c7dbf64726d6938a39cb61ee354aab1f1ec1d7520945e828d6" }, "downloads": -1, "filename": "qai-2.2.0.tar.gz", "has_sig": false, "md5_digest": "f629fb9187dd3ddeafbfde31d79ab302", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 13936, "upload_time": "2019-08-23T23:12:36", "upload_time_iso_8601": "2019-08-23T23:12:36.730994Z", "url": "https://files.pythonhosted.org/packages/34/9f/86052f3da443e59ae5efde0db11aba9d3cb1206dcac9b520abc29be4e507/qai-2.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "2.2.1": [ { "comment_text": "", "digests": { "md5": "2508eec9d65afd9721e22413025ba609", "sha256": "aac9f5fd7848c90d172e63bc6ed1e2e3093019434e0cd18389c3c13c9b305421" }, "downloads": -1, "filename": "qai-2.2.1.tar.gz", "has_sig": false, "md5_digest": "2508eec9d65afd9721e22413025ba609", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 13948, "upload_time": "2019-08-26T19:52:08", "upload_time_iso_8601": "2019-08-26T19:52:08.182043Z", "url": "https://files.pythonhosted.org/packages/0c/49/450aed6447e512d5f7c1eef46d5358304dbd4ee9dad44362fa8799f35f73/qai-2.2.1.tar.gz", "yanked": false, "yanked_reason": null } ], "2.2.2": [ { "comment_text": "", "digests": { "md5": "0eefd416efe79dd06e0b1da8fa10d26c", "sha256": "039ef31a95f53bb994b824c805170e7b587115281f7f3d48d0b3387b515cfd7d" }, "downloads": -1, "filename": "qai-2.2.2.tar.gz", "has_sig": false, "md5_digest": "0eefd416efe79dd06e0b1da8fa10d26c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 14148, "upload_time": "2019-09-06T18:04:08", "upload_time_iso_8601": "2019-09-06T18:04:08.650796Z", "url": "https://files.pythonhosted.org/packages/26/db/036a8a89a3b51832e182be7553f41e52de4cfe46edf38984e7024e32c790/qai-2.2.2.tar.gz", "yanked": false, "yanked_reason": null } ], "2.2.3": [ { "comment_text": "", "digests": { "md5": "8cc24487800016f2b6f0af71bb21f097", "sha256": "0d44a3d3aafefd7350a4f80df378065b0d77e960f2b0b2418a664fb615e31f13" }, "downloads": -1, "filename": "qai-2.2.3.tar.gz", "has_sig": false, "md5_digest": "8cc24487800016f2b6f0af71bb21f097", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 14237, "upload_time": "2019-09-06T18:13:04", "upload_time_iso_8601": "2019-09-06T18:13:04.821215Z", "url": "https://files.pythonhosted.org/packages/4a/67/90104374bf7e1534eeb26b56be6926c3bc3d2ea862dbb8334611f99f648d/qai-2.2.3.tar.gz", "yanked": false, "yanked_reason": null } ], "2.2.4": [ { "comment_text": "", "digests": { "md5": "5347e0dd3ea5afec9bdbc65fed590fd1", "sha256": "759c67c3ac80ec65705de07a0f065cac296897d9bf639f730937254255d01cc8" }, "downloads": -1, "filename": "qai-2.2.4.tar.gz", "has_sig": false, "md5_digest": "5347e0dd3ea5afec9bdbc65fed590fd1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 12251, "upload_time": "2019-09-06T21:40:32", "upload_time_iso_8601": "2019-09-06T21:40:32.192356Z", "url": "https://files.pythonhosted.org/packages/f1/67/a1760138991f63366dc1f152e412c658352dd72096a61b670644b70d5eb5/qai-2.2.4.tar.gz", "yanked": false, "yanked_reason": null } ], "2.2.5": [ { "comment_text": "", "digests": { "md5": "3e78194cbefe29de5d91ee02b7bc518d", "sha256": "a2eb244c4d9cd2ce1f34e951e98502f20446ea460f237b665e42ef2eae9576f0" }, "downloads": -1, "filename": "qai-2.2.5.tar.gz", "has_sig": false, "md5_digest": "3e78194cbefe29de5d91ee02b7bc518d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 12587, "upload_time": "2019-10-21T10:57:13", "upload_time_iso_8601": "2019-10-21T10:57:13.046240Z", "url": "https://files.pythonhosted.org/packages/ee/94/78458dae964d09a19fcf6743ccae1c264afa3ebeea66d54c65858e902204/qai-2.2.5.tar.gz", "yanked": false, "yanked_reason": null } ], "2.2.6": [ { "comment_text": "", "digests": { "md5": "b21d1789f77904758735e6b1b36de778", "sha256": "0fb268ed50d982ac4ff1c7a69bb24fe99ff84d017e748c87de64b21aa8fd89a9" }, "downloads": -1, "filename": "qai-2.2.6.tar.gz", "has_sig": false, "md5_digest": "b21d1789f77904758735e6b1b36de778", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 12699, "upload_time": "2019-10-21T12:07:01", "upload_time_iso_8601": "2019-10-21T12:07:01.836713Z", "url": "https://files.pythonhosted.org/packages/6a/de/8739442012e7fd5caae46f42385b94003a45f2214ec5b54b76a295622af4/qai-2.2.6.tar.gz", "yanked": false, "yanked_reason": null } ], "2.2.7": [ { "comment_text": "", "digests": { "md5": "69aa07dece8591c290eca029a8f2d3d6", "sha256": "30fbc8c9c3aa43a13cfc6d5824d9fa32482e7367ca2f8c50a8384720f2fe6ec2" }, "downloads": -1, "filename": "qai-2.2.7.tar.gz", "has_sig": false, "md5_digest": "69aa07dece8591c290eca029a8f2d3d6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 12738, "upload_time": "2019-10-21T13:22:31", "upload_time_iso_8601": "2019-10-21T13:22:31.224170Z", "url": "https://files.pythonhosted.org/packages/45/83/a3383f0cffe1250f3b9a087c0291f700527254385d46914e2eb14182279c/qai-2.2.7.tar.gz", "yanked": false, "yanked_reason": null } ], "2.2.8": [ { "comment_text": "", "digests": { "md5": "4a6ab370023f1d4cad82ef86c2e1b5d7", "sha256": "b4eba8fb274b5de127e5273a9ca9c0a25657be1092618b249a21f76c83e944f8" }, "downloads": -1, "filename": "qai-2.2.8.tar.gz", "has_sig": false, "md5_digest": "4a6ab370023f1d4cad82ef86c2e1b5d7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 12735, "upload_time": "2019-10-21T18:52:21", "upload_time_iso_8601": "2019-10-21T18:52:21.922643Z", "url": "https://files.pythonhosted.org/packages/9b/a3/9663155a05e40e01cbe1fb08c20906e59fe37a53c26749e7fc21eb099f14/qai-2.2.8.tar.gz", "yanked": false, "yanked_reason": null } ], "2.2.9": [ { "comment_text": "", "digests": { "md5": "bcb8413f08894624d779d6e7cbc4543a", "sha256": "9d1cd5cb03849679d97edc13d48b34068b2bc8826bbecc628a9b770eae65b78d" }, "downloads": -1, "filename": "qai-2.2.9.tar.gz", "has_sig": false, "md5_digest": "bcb8413f08894624d779d6e7cbc4543a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 12800, "upload_time": "2019-10-22T13:31:18", "upload_time_iso_8601": "2019-10-22T13:31:18.202405Z", "url": "https://files.pythonhosted.org/packages/70/85/84904776a52170310e5c0ff23e1f847d88ed3a1894affe8fed3f92f423f5/qai-2.2.9.tar.gz", "yanked": false, "yanked_reason": null } ], "2.3.0": [ { "comment_text": "", "digests": { "md5": "d3d935ed8e36808f7ac313259b4dfe65", "sha256": "f63a037b7870bb3a1b37d8e1cefdc3625e2c7b1873ba7f25f12a84522b92f0b5" }, "downloads": -1, "filename": "qai-2.3.0.tar.gz", "has_sig": false, "md5_digest": "d3d935ed8e36808f7ac313259b4dfe65", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 13016, "upload_time": "2019-10-29T12:31:38", "upload_time_iso_8601": "2019-10-29T12:31:38.222430Z", "url": "https://files.pythonhosted.org/packages/7f/06/91691e08f60b16221b7009bdad5ca1472bc4db743fc82a8166898920ceb9/qai-2.3.0.tar.gz", "yanked": false, "yanked_reason": null } ], "2.3.1": [ { "comment_text": "", "digests": { "md5": "72ecff30afc31af5353e184597a39d50", "sha256": "4fcfa879d4718be2f094aecf0b8bab274b8db3a4e2c6e9449499c0438aa212e2" }, "downloads": -1, "filename": "qai-2.3.1.tar.gz", "has_sig": false, "md5_digest": "72ecff30afc31af5353e184597a39d50", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 13021, "upload_time": "2019-10-29T16:18:56", "upload_time_iso_8601": "2019-10-29T16:18:56.719543Z", "url": "https://files.pythonhosted.org/packages/a4/f5/d338bf97bdc0191292c070dcb35251b55f8adbac879966c2667e8605a503/qai-2.3.1.tar.gz", "yanked": false, "yanked_reason": null } ], "2.3.2": [ { "comment_text": "", "digests": { "md5": "d5dc956098deb2429c26a9e4569e81cb", "sha256": "69faef6fce796ddd4cc321907ec0454272c6ddb0d839605f26ade3b4b9790a37" }, "downloads": -1, "filename": "qai-2.3.2.tar.gz", "has_sig": false, "md5_digest": "d5dc956098deb2429c26a9e4569e81cb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 12984, "upload_time": "2019-10-29T16:59:12", "upload_time_iso_8601": "2019-10-29T16:59:12.864184Z", "url": "https://files.pythonhosted.org/packages/e8/75/b95dc47cc2eeb8e5a29b07bd7eed75e932d4d9363d61c5b877c8c156d393/qai-2.3.2.tar.gz", "yanked": false, "yanked_reason": null } ], "2.3.3": [ { "comment_text": "", "digests": { "md5": "22a018e155c65d4ea20ad1e931d43364", "sha256": "ff28ea6481c2a49231d35b00212ba359c6fba7f05ea13cbfa55af251f9da07f3" }, "downloads": -1, "filename": "qai-2.3.3.tar.gz", "has_sig": false, "md5_digest": "22a018e155c65d4ea20ad1e931d43364", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 13420, "upload_time": "2019-10-30T20:25:08", "upload_time_iso_8601": "2019-10-30T20:25:08.755762Z", "url": "https://files.pythonhosted.org/packages/5f/b8/7c202caac43b9baa3d06e31fb9e4a0d6020df12b3a1d4bc4aeb74daba132/qai-2.3.3.tar.gz", "yanked": false, "yanked_reason": null } ], "2.3.4": [ { "comment_text": "", "digests": { "md5": "55a0492508f9cc1ebc8a5742fb536290", "sha256": "c9ff390c971740d4232f3b657828ba5a5744b89488c56ce020b7e8cc2284bfc4" }, "downloads": -1, "filename": "qai-2.3.4.tar.gz", "has_sig": false, "md5_digest": "55a0492508f9cc1ebc8a5742fb536290", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 13942, "upload_time": "2019-11-14T20:21:29", "upload_time_iso_8601": "2019-11-14T20:21:29.237159Z", "url": "https://files.pythonhosted.org/packages/2e/9d/6aa093372be8210e2721bf239884514e65df5412c36977082b5ea312aa83/qai-2.3.4.tar.gz", "yanked": false, "yanked_reason": null } ], "2.3.5": [ { "comment_text": "", "digests": { "md5": "dbe87b130db66eccf2973fca46d2f01b", "sha256": "75aa827bbfd7734fe402d58332f0984f4052561caef2125172f91df7ca40f8ca" }, "downloads": -1, "filename": "qai-2.3.5.tar.gz", "has_sig": false, "md5_digest": "dbe87b130db66eccf2973fca46d2f01b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 14207, "upload_time": "2019-11-14T22:11:16", "upload_time_iso_8601": "2019-11-14T22:11:16.193827Z", "url": "https://files.pythonhosted.org/packages/3e/37/9bd56e2621cf3c9834c78571e3d08dc02df9f9cafeca4132709a9b454e9f/qai-2.3.5.tar.gz", "yanked": false, "yanked_reason": null } ], "2.3.6": [ { "comment_text": "", "digests": { "md5": "b500a17c179cf36e3c2f1c6189e3883c", "sha256": "b8a9ed222dbc46b13aae84526a134fe907255fc9138eb73ce2e189b47e0244e4" }, "downloads": -1, "filename": "qai-2.3.6.tar.gz", "has_sig": false, "md5_digest": "b500a17c179cf36e3c2f1c6189e3883c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 14641, "upload_time": "2019-11-15T22:36:39", "upload_time_iso_8601": "2019-11-15T22:36:39.845111Z", "url": "https://files.pythonhosted.org/packages/e6/72/e74896f02d1384925b8da16ac2080513ed49181e03df6601a87f758bf153/qai-2.3.6.tar.gz", "yanked": false, "yanked_reason": null } ], "2.4.0": [ { "comment_text": "", "digests": { "md5": "25a61193568e7410577ded9872f910ec", "sha256": "74fff121f14e7f211cef18cb733b986cc19533d65825bb4f0e341877489ce198" }, "downloads": -1, "filename": "qai-2.4.0.tar.gz", "has_sig": false, "md5_digest": "25a61193568e7410577ded9872f910ec", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 18492, "upload_time": "2019-11-22T01:35:28", "upload_time_iso_8601": "2019-11-22T01:35:28.980260Z", "url": "https://files.pythonhosted.org/packages/f1/ed/d0b55ffdae251554debf0785a267401600483a9a6b2f33f3bb6833936a9b/qai-2.4.0.tar.gz", "yanked": false, "yanked_reason": null } ], "2.4.1": [ { "comment_text": "", "digests": { "md5": "32f8e231e3b54031a873a49ade5dc6c5", "sha256": "0a5adcca899cb1401ab83c924915a0de2ace6986f995fdd00e8ad2cec2417713" }, "downloads": -1, "filename": "qai-2.4.1.tar.gz", "has_sig": false, "md5_digest": "32f8e231e3b54031a873a49ade5dc6c5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 15690, "upload_time": "2019-11-22T16:18:09", "upload_time_iso_8601": "2019-11-22T16:18:09.477918Z", "url": "https://files.pythonhosted.org/packages/79/4b/3aa8f4686195904a0b7f5c38f757cee05c34cb0a227ef83fc03a8ffe2ceb/qai-2.4.1.tar.gz", "yanked": false, "yanked_reason": null } ], "2.4.2": [ { "comment_text": "", "digests": { "md5": "ac667a03e36a8f5d40504c0c846d1014", "sha256": "98b247a3717bddeb9c05f2aa6f495db33af3568767ef3a7abb92c24f883cdc9b" }, "downloads": -1, "filename": "qai-2.4.2.tar.gz", "has_sig": false, "md5_digest": "ac667a03e36a8f5d40504c0c846d1014", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 18526, "upload_time": "2019-12-02T23:12:07", "upload_time_iso_8601": "2019-12-02T23:12:07.866007Z", "url": "https://files.pythonhosted.org/packages/9c/06/24bb26e4dbc891ad1bd9fbec4d17d91bd08055156303389d3d989dab7c30/qai-2.4.2.tar.gz", "yanked": false, "yanked_reason": null } ], "2.5.3": [ { "comment_text": "", "digests": { "md5": "097b792d2da9375ac4bad0cb14990ad7", "sha256": "2972cd2df0809064892602ecba43ecf41b5661942fbdf37e559ede606186ec1a" }, "downloads": -1, "filename": "qai-2.5.3.tar.gz", "has_sig": false, "md5_digest": "097b792d2da9375ac4bad0cb14990ad7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 19384, "upload_time": "2019-12-12T20:16:53", "upload_time_iso_8601": "2019-12-12T20:16:53.388498Z", "url": "https://files.pythonhosted.org/packages/43/ce/4458d210e6e2ae71ee47292d19969a0eb3389decff825fb00ba810ebbe0a/qai-2.5.3.tar.gz", "yanked": false, "yanked_reason": null } ], "2.5.4": [ { "comment_text": "", "digests": { "md5": "9d6d26bb72f1decab97d7466f52f5c97", "sha256": "908e7ad1eddc48973be687b5ff5f28767d3434bdd951549bf7750e042c5a40b1" }, "downloads": -1, "filename": "qai-2.5.4.tar.gz", "has_sig": false, "md5_digest": "9d6d26bb72f1decab97d7466f52f5c97", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 19530, "upload_time": "2019-12-12T22:15:23", "upload_time_iso_8601": "2019-12-12T22:15:23.827095Z", "url": "https://files.pythonhosted.org/packages/32/ed/30f25b3c92e6062c556e994653fa9cf44ae9ce226cecf3043c5fc04ec83c/qai-2.5.4.tar.gz", "yanked": false, "yanked_reason": null } ], "2.5.5": [ { "comment_text": "", "digests": { "md5": "cf11866a256b1448e9866dd52b95e548", "sha256": "c28db55947bbbff0bfc221bdb7fccf164c0a88a33a5e0e61fa12f49a3717e9cd" }, "downloads": -1, "filename": "qai-2.5.5.tar.gz", "has_sig": false, "md5_digest": "cf11866a256b1448e9866dd52b95e548", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 16549, "upload_time": "2019-12-12T23:47:58", "upload_time_iso_8601": "2019-12-12T23:47:58.072877Z", "url": "https://files.pythonhosted.org/packages/fa/3e/14f8237de2dab39eb5c8582aca634e7d10753d2ed41007002c78fbf8cdf4/qai-2.5.5.tar.gz", "yanked": false, "yanked_reason": null } ], "2.5.6": [ { "comment_text": "", "digests": { "md5": "71fcbd1868c9605a8914799453d6b2ad", "sha256": "7b36e003abf67a7be174e968ef36f2bafa0f1519bd0d8658b3697832a114f96c" }, "downloads": -1, "filename": "qai-2.5.6.tar.gz", "has_sig": false, "md5_digest": "71fcbd1868c9605a8914799453d6b2ad", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 16428, "upload_time": "2019-12-13T00:05:04", "upload_time_iso_8601": "2019-12-13T00:05:04.699059Z", "url": "https://files.pythonhosted.org/packages/46/53/66eb3c77d1e32b57f042e2796b0e8b5c8897e8de0c098e42edc9152c0f84/qai-2.5.6.tar.gz", "yanked": false, "yanked_reason": null } ], "2.5.8": [ { "comment_text": "", "digests": { "md5": "2deda9ccd270c9202beb85083e6c031d", "sha256": "88f36d28f9cf74a8a668d08c17103992ead8eed50e959d45bf26cb760b12efd9" }, "downloads": -1, "filename": "qai-2.5.8.tar.gz", "has_sig": false, "md5_digest": "2deda9ccd270c9202beb85083e6c031d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 19680, "upload_time": "2020-01-02T22:23:03", "upload_time_iso_8601": "2020-01-02T22:23:03.757113Z", "url": "https://files.pythonhosted.org/packages/6a/44/b190cd3e6976389716632f1b9ac2b1f9d3062c8e14d38bff1e1810bb7e5b/qai-2.5.8.tar.gz", "yanked": false, "yanked_reason": null } ], "2.6.1": [ { "comment_text": "", "digests": { "md5": "645d739edc59a4dfeab009d18fdaf9d8", "sha256": "a4572f31aecd7fd6ad1bbaf85284ffafd6e9fdacee23158352ba72f8a8cd106c" }, "downloads": -1, "filename": "qai-2.6.1.tar.gz", "has_sig": false, "md5_digest": "645d739edc59a4dfeab009d18fdaf9d8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 20068, "upload_time": "2020-01-17T17:49:29", "upload_time_iso_8601": "2020-01-17T17:49:29.403479Z", "url": "https://files.pythonhosted.org/packages/b2/24/9d961604a0b2e1910d3b6e1eac72022b5189d9f6d4a0df89d3b0739ae808/qai-2.6.1.tar.gz", "yanked": false, "yanked_reason": null } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "3556bc2fc6f922badf66646dcab21756", "sha256": "18c499f241da04d3ca0b969b610aba1232576db9ee3b49bedae630dc260e376b" }, "downloads": -1, "filename": "qai-3.0.0.tar.gz", "has_sig": false, "md5_digest": "3556bc2fc6f922badf66646dcab21756", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 19859, "upload_time": "2020-03-26T20:54:40", "upload_time_iso_8601": "2020-03-26T20:54:40.469135Z", "url": "https://files.pythonhosted.org/packages/99/b2/5bc812acdc3d6c30865177424df6c1888fd5b14bca650da401091715a4e9/qai-3.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "4.0.0": [ { "comment_text": "", "digests": { "md5": "1aea289cb1914201012b230e1f09aa21", "sha256": "96ea6fe04d9f5acd619215c7ad3445329c941264e9a9e23604e7aec34b265a4d" }, "downloads": -1, "filename": "qai-4.0.0.tar.gz", "has_sig": false, "md5_digest": "1aea289cb1914201012b230e1f09aa21", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 20082, "upload_time": "2020-04-07T22:21:45", "upload_time_iso_8601": "2020-04-07T22:21:45.423849Z", "url": "https://files.pythonhosted.org/packages/dc/f4/9bf841fcef385bdda3891a6d6c3392838e457e0b5fbb94af6a9fba65456a/qai-4.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "4.0.1": [ { "comment_text": "", "digests": { "md5": "36501d6573f93ddede4d04386c09a9f3", "sha256": "de270da127b9ce47dc44a33c622b96701743e45700f35beb8bfb03259d1df7c2" }, "downloads": -1, "filename": "qai-4.0.1.tar.gz", "has_sig": false, "md5_digest": "36501d6573f93ddede4d04386c09a9f3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 20132, "upload_time": "2020-04-08T00:27:08", "upload_time_iso_8601": "2020-04-08T00:27:08.767033Z", "url": "https://files.pythonhosted.org/packages/d5/c9/be2262e218d3c50e93cb0d9ca80e9fbd785786a22994ad315fd79e141d03/qai-4.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "4.0.10": [ { "comment_text": "", "digests": { "md5": "6871c0ebbf39149adce08e9ab2f28a51", "sha256": "49da0f2506cc5985ab250c497cdbd2e9e2170e851e7a5da26ce3a5fa45a72fd5" }, "downloads": -1, "filename": "qai-4.0.10.tar.gz", "has_sig": false, "md5_digest": "6871c0ebbf39149adce08e9ab2f28a51", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 19665, "upload_time": "2020-08-12T22:14:22", "upload_time_iso_8601": "2020-08-12T22:14:22.245526Z", "url": "https://files.pythonhosted.org/packages/6a/21/b74d793dfa943cbb19336906b819246fae6f27103aa1800766e265e11d4c/qai-4.0.10.tar.gz", "yanked": false, "yanked_reason": null } ], "4.0.11": [ { "comment_text": "", "digests": { "md5": "998d2090b6923979f29426077f14ffc4", "sha256": "a1f5a51f34f7564ca1bea009a2e619864eff4c0a0ee89856dff943be648a6592" }, "downloads": -1, "filename": "qai-4.0.11.tar.gz", "has_sig": false, "md5_digest": "998d2090b6923979f29426077f14ffc4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 24147, "upload_time": "2020-08-20T12:56:55", "upload_time_iso_8601": "2020-08-20T12:56:55.866592Z", "url": "https://files.pythonhosted.org/packages/6f/b4/505a773fc2fbfd7c257048dbc3077e15cdffdad604db52bfbd3b70a536b1/qai-4.0.11.tar.gz", "yanked": false, "yanked_reason": null } ], "4.0.12": [ { "comment_text": "", "digests": { "md5": "0c1b7f065dbecd2583b6a7a2d8ee68b1", "sha256": "7a738f7b013e416eec1e9359b57ab2e2bdb82d4e7be167704c6ba16a124f8ed2" }, "downloads": -1, "filename": "qai-4.0.12.tar.gz", "has_sig": false, "md5_digest": "0c1b7f065dbecd2583b6a7a2d8ee68b1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 24238, "upload_time": "2020-08-20T15:21:15", "upload_time_iso_8601": "2020-08-20T15:21:15.648691Z", "url": "https://files.pythonhosted.org/packages/f0/fd/140f9fd06d5007859d1a286cb8aeb7315930653fe8b814862e39fe67bce2/qai-4.0.12.tar.gz", "yanked": false, "yanked_reason": null } ], "4.0.2": [ { "comment_text": "", "digests": { "md5": "5f9be04c7f7437da50b06e6c0f11db88", "sha256": "2e43efeb791dcc4fdba7838c6de5a84a4489ae6eae4deb822155b716b9ec7e70" }, "downloads": -1, "filename": "qai-4.0.2.tar.gz", "has_sig": false, "md5_digest": "5f9be04c7f7437da50b06e6c0f11db88", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 20163, "upload_time": "2020-04-08T16:36:28", "upload_time_iso_8601": "2020-04-08T16:36:28.882155Z", "url": "https://files.pythonhosted.org/packages/df/1e/e77487733c04ab700347874c6b9776ce34c8bf4fa217cb29291c4c96fb4c/qai-4.0.2.tar.gz", "yanked": false, "yanked_reason": null } ], "4.0.3": [ { "comment_text": "", "digests": { "md5": "b5dd82ecdef6b94f932f618a17f99006", "sha256": "e61ea32784d91ec5facfec225326b43b3625f11e4ad2a5edee02bdac21919830" }, "downloads": -1, "filename": "qai-4.0.3.tar.gz", "has_sig": false, "md5_digest": "b5dd82ecdef6b94f932f618a17f99006", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 19956, "upload_time": "2020-04-17T17:15:57", "upload_time_iso_8601": "2020-04-17T17:15:57.054482Z", "url": "https://files.pythonhosted.org/packages/da/3e/4fb6626c4001c9d9c9cb555bdd2a336eb06df988cb3420344e04f2c7ef51/qai-4.0.3.tar.gz", "yanked": false, "yanked_reason": null } ], "4.0.4": [ { "comment_text": "", "digests": { "md5": "6285fc1ebd7fd16ace4950cbefeaac46", "sha256": "a7f484e80dcdaf2cdb5be184ee27bf385cc06928a2490115ffbd84d8b6697326" }, "downloads": -1, "filename": "qai-4.0.4.tar.gz", "has_sig": false, "md5_digest": "6285fc1ebd7fd16ace4950cbefeaac46", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 17171, "upload_time": "2020-05-20T00:01:22", "upload_time_iso_8601": "2020-05-20T00:01:22.521351Z", "url": "https://files.pythonhosted.org/packages/0d/3a/476b5600c29ced99edbae4aa8f44743fa3d71912a8be3f297b4499e61aee/qai-4.0.4.tar.gz", "yanked": false, "yanked_reason": null } ], "4.0.5": [ { "comment_text": "", "digests": { "md5": "d0b14d96f288454941fb0cdb24d5b61c", "sha256": "c646669d983ec66351ec09e9bb764caaee4ba031466396225da7e5901c2454ba" }, "downloads": -1, "filename": "qai-4.0.5.tar.gz", "has_sig": false, "md5_digest": "d0b14d96f288454941fb0cdb24d5b61c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 17183, "upload_time": "2020-05-20T17:03:55", "upload_time_iso_8601": "2020-05-20T17:03:55.122554Z", "url": "https://files.pythonhosted.org/packages/60/1d/c1a771c4f952fd41cabdd2f7dc2aa112c8c400dc7a95b00c7e78447ee528/qai-4.0.5.tar.gz", "yanked": false, "yanked_reason": null } ], "4.0.9": [ { "comment_text": "", "digests": { "md5": "c8aac0d14affcbc8e5748dadd3710354", "sha256": "2a21140ab00e3f475de0b8db837bc743fef30610f131f65a13f0450f6bbc65a4" }, "downloads": -1, "filename": "qai-4.0.9.tar.gz", "has_sig": false, "md5_digest": "c8aac0d14affcbc8e5748dadd3710354", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 22161, "upload_time": "2020-07-31T19:17:48", "upload_time_iso_8601": "2020-07-31T19:17:48.334000Z", "url": "https://files.pythonhosted.org/packages/2e/e8/4e94fb570e7fcbc21f0274682a41f3363e8a67dcfe1833865b2f31d4d741/qai-4.0.9.tar.gz", "yanked": false, "yanked_reason": null } ], "4.1.0": [ { "comment_text": "", "digests": { "md5": "37bff3feb6a99889602cc5c43cef56d7", "sha256": "b748439a9c95a75e124c038bd5c5e2d286fe53b46aa6c3b7559b7ec05ed3d2b9" }, "downloads": -1, "filename": "qai-4.1.0.tar.gz", "has_sig": false, "md5_digest": "37bff3feb6a99889602cc5c43cef56d7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 26632, "upload_time": "2020-09-03T23:06:03", "upload_time_iso_8601": "2020-09-03T23:06:03.642410Z", "url": "https://files.pythonhosted.org/packages/63/13/f4dfe75ce6a3618feaef5a9e97a91ce2bc6a7a970f4045aa3689450db3e9/qai-4.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "4.2.0": [ { "comment_text": "", "digests": { "md5": "30484ff899a7aa1e5e4e384adf03f4a5", "sha256": "882d27fd8bb0060a22ecc2e82b8d5eb216d4329d9a6b912e30dde900651d621b" }, "downloads": -1, "filename": "qai-4.2.0.tar.gz", "has_sig": false, "md5_digest": "30484ff899a7aa1e5e4e384adf03f4a5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 27075, "upload_time": "2020-09-18T19:23:11", "upload_time_iso_8601": "2020-09-18T19:23:11.824819Z", "url": "https://files.pythonhosted.org/packages/6c/9a/d98749e1e872956a637c1231017f2a8289e64f2eb8ff3066dc8d57ccecca/qai-4.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "4.2.1": [ { "comment_text": "", "digests": { "md5": "a48d3b51a73692bc9699d7300386178b", "sha256": "4aa24285b97a7284b259f5f8c05f1ba57fcbc1da705f07f5b703fa7583b0f57d" }, "downloads": -1, "filename": "qai-4.2.1.tar.gz", "has_sig": false, "md5_digest": "a48d3b51a73692bc9699d7300386178b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 25958, "upload_time": "2020-10-06T12:49:15", "upload_time_iso_8601": "2020-10-06T12:49:15.346784Z", "url": "https://files.pythonhosted.org/packages/73/24/f8f455a125977e6a236f30b27b55a9622b5020f436e3cb9ff001f1d137e7/qai-4.2.1.tar.gz", "yanked": false, "yanked_reason": null } ], "4.2.2": [ { "comment_text": "", "digests": { "md5": "08a835789aca34979a72847c112b00be", "sha256": "01bc80202eb93765153b9b70b066a65d5c6ab465772fa6dd55aa3c4aa115cd2a" }, "downloads": -1, "filename": "qai-4.2.2.tar.gz", "has_sig": false, "md5_digest": "08a835789aca34979a72847c112b00be", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 26407, "upload_time": "2020-10-08T22:39:14", "upload_time_iso_8601": "2020-10-08T22:39:14.693117Z", "url": "https://files.pythonhosted.org/packages/91/02/9a7514d3af268204107bcf24de18e6c0275b91a2311a9953b3fc4b6d2264/qai-4.2.2.tar.gz", "yanked": false, "yanked_reason": null } ], "4.2.3": [ { "comment_text": "", "digests": { "md5": "7deb8de1b70b083b55ed158478ded22d", "sha256": "f48340f828e3d688dbb17fa028b46d5dd504f4db2e594fde80c0e2b4d342adca" }, "downloads": -1, "filename": "qai-4.2.3.tar.gz", "has_sig": false, "md5_digest": "7deb8de1b70b083b55ed158478ded22d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 26146, "upload_time": "2020-11-24T13:25:54", "upload_time_iso_8601": "2020-11-24T13:25:54.315851Z", "url": "https://files.pythonhosted.org/packages/7d/c8/10734f4560c237f9aee0b2ba4084e45a0ed6ae0d994bbde1d2ee188d5cc4/qai-4.2.3.tar.gz", "yanked": false, "yanked_reason": null } ], "4.2.4": [ { "comment_text": "", "digests": { "md5": "a813eb744f93ea70f288a83eb589177d", "sha256": "a71e2974d92ff29d2dc39caea2cd0af347c224fcf5762ffe9e08b19ec3636cdb" }, "downloads": -1, "filename": "qai-4.2.4.tar.gz", "has_sig": false, "md5_digest": "a813eb744f93ea70f288a83eb589177d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 26257, "upload_time": "2020-12-08T15:11:22", "upload_time_iso_8601": "2020-12-08T15:11:22.696469Z", "url": "https://files.pythonhosted.org/packages/2b/51/c49be67a09bd1154d5864fe3f6c4a10e9261c242df95c68600c438764d5f/qai-4.2.4.tar.gz", "yanked": false, "yanked_reason": null } ], "4.3.1": [ { "comment_text": "", "digests": { "md5": "ca77b49806ece02102850fa7c69db83d", "sha256": "ff63374b0498e13b9f1629d6a635bb3f1faa55673e6bb0924691dba3da9692c0" }, "downloads": -1, "filename": "qai-4.3.1.tar.gz", "has_sig": false, "md5_digest": "ca77b49806ece02102850fa7c69db83d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 27104, "upload_time": "2021-02-24T14:31:15", "upload_time_iso_8601": "2021-02-24T14:31:15.193005Z", "url": "https://files.pythonhosted.org/packages/22/38/44a67a7e589d673541c43b961de20fe3abcef862d755c98a00675940dd8b/qai-4.3.1.tar.gz", "yanked": false, "yanked_reason": null } ], "4.9.99": [ { "comment_text": "", "digests": { "md5": "2acd16da2a196703a49be439ca54f9e3", "sha256": "377929b546c157f457c6c7d8c511544d8660cdd3a0fff66789918840c766565b" }, "downloads": -1, "filename": "qai-4.9.99.tar.gz", "has_sig": false, "md5_digest": "2acd16da2a196703a49be439ca54f9e3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 28974, "upload_time": "2021-04-21T22:54:18", "upload_time_iso_8601": "2021-04-21T22:54:18.813438Z", "url": "https://files.pythonhosted.org/packages/5f/bc/7beab579534f78bb2dcaf23e55e13c4372a9abb234dd1c8f43242a51f109/qai-4.9.99.tar.gz", "yanked": false, "yanked_reason": null } ], "4.9.999": [ { "comment_text": "", "digests": { "md5": "eab21631f9abc5ccf059e8230f45d708", "sha256": "6eb1036f66706f49c594ea67ad85babda1b583eeb6a83c8b82f4b2393c32531b" }, "downloads": -1, "filename": "qai-4.9.999.tar.gz", "has_sig": false, "md5_digest": "eab21631f9abc5ccf059e8230f45d708", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 28983, "upload_time": "2021-04-23T19:09:33", "upload_time_iso_8601": "2021-04-23T19:09:33.757536Z", "url": "https://files.pythonhosted.org/packages/25/c2/07f391086f2119d76c16663cdbd2cc2ad477d4d8589bf8381004a271fbc5/qai-4.9.999.tar.gz", "yanked": false, "yanked_reason": null } ], "4.9.9999": [ { "comment_text": "", "digests": { "md5": "36e09ec570b85408028b41fab5d64c2a", "sha256": "1a7ec09d97e8c43760c8913088b88c53e60f859ae14fd14b592d59e3c0838004" }, "downloads": -1, "filename": "qai-4.9.9999.tar.gz", "has_sig": false, "md5_digest": "36e09ec570b85408028b41fab5d64c2a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 29057, "upload_time": "2021-04-27T19:48:11", "upload_time_iso_8601": "2021-04-27T19:48:11.637313Z", "url": "https://files.pythonhosted.org/packages/b6/0b/f93c88b20eea5b7bdffae368f15cd48d38da54058207bff35727ce7811f5/qai-4.9.9999.tar.gz", "yanked": false, "yanked_reason": null } ], "4.9.99991": [ { "comment_text": "", "digests": { "md5": "b2619596c5317dda12da98a4caa375d8", "sha256": "eca76982e1090b7cb67586d12339bc65d05becd40dc6a91bf486fc011810da77" }, "downloads": -1, "filename": "qai-4.9.99991.tar.gz", "has_sig": false, "md5_digest": "b2619596c5317dda12da98a4caa375d8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 29044, "upload_time": "2021-05-12T21:05:28", "upload_time_iso_8601": "2021-05-12T21:05:28.872128Z", "url": "https://files.pythonhosted.org/packages/db/92/5e8f5f3ad17acce4fd1b2fbdaf3aa2c2963585df72f131f38e5a7532daad/qai-4.9.99991.tar.gz", "yanked": false, "yanked_reason": null } ], "4.9.99999": [ { "comment_text": "", "digests": { "md5": "8c3cd232886f21bc25b862e6343a7818", "sha256": "9d544c1391ec8bb48794760a18ea2774567524fce75b199d8f1cd84d0d037415" }, "downloads": -1, "filename": "qai-4.9.99999.tar.gz", "has_sig": false, "md5_digest": "8c3cd232886f21bc25b862e6343a7818", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 29113, "upload_time": "2021-05-10T19:01:32", "upload_time_iso_8601": "2021-05-10T19:01:32.623118Z", "url": "https://files.pythonhosted.org/packages/cd/66/630e457b2eea495555a16a0de7ac50c886b07bc949b33708b5ecdb8d75d9/qai-4.9.99999.tar.gz", "yanked": false, "yanked_reason": null } ], "4.9.999991": [ { "comment_text": "", "digests": { "md5": "9fc158bf3f98426f949cb1bb12f0892a", "sha256": "c80b659864e466623f6ad57b58f5bd8bdbce69e06c4b34ad8794442e91456e34" }, "downloads": -1, "filename": "qai-4.9.999991.tar.gz", "has_sig": false, "md5_digest": "9fc158bf3f98426f949cb1bb12f0892a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.4", "size": 29074, "upload_time": "2021-05-19T05:48:57", "upload_time_iso_8601": "2021-05-19T05:48:57.373962Z", "url": "https://files.pythonhosted.org/packages/83/a6/c796d7fb32ff418c07e387eb0e08ccc62bb125a4210d662981b0254fbf3d/qai-4.9.999991.tar.gz", "yanked": false, "yanked_reason": null } ], "5.0.0": [ { "comment_text": "", "digests": { "md5": "220e83e2697ae14da2b7ebc0312b5470", "sha256": "8599104529f25bea35d646451375014ed6bd93ad4e1c52ab087a7ffadabc335f" }, "downloads": -1, "filename": "qai-5.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "220e83e2697ae14da2b7ebc0312b5470", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8,<4.0", "size": 12125, "upload_time": "2021-05-26T18:09:46", "upload_time_iso_8601": "2021-05-26T18:09:46.026799Z", "url": "https://files.pythonhosted.org/packages/dc/b8/734173fb4b163ce2cbe62ce50fa641fc57682e63b6e527e06e4181805b05/qai-5.0.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "50dfc88656544cb4d9150804a1b5d83d", "sha256": "394dc14c13b5733a3d7c74a87a8fc8ac5bf896f65e9d602bd8c0572c9c5e4c04" }, "downloads": -1, "filename": "qai-5.0.0.tar.gz", "has_sig": false, "md5_digest": "50dfc88656544cb4d9150804a1b5d83d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8,<4.0", "size": 12345, "upload_time": "2021-05-26T18:09:47", "upload_time_iso_8601": "2021-05-26T18:09:47.037858Z", "url": "https://files.pythonhosted.org/packages/02/fd/fd16bdc76a40e0f40ad2fd1c472247724834ef6ca8887ee853a729092622/qai-5.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "5.0.0rc1": [ { "comment_text": "", "digests": { "md5": "2a7f523f87be1691ab65ebc05f7ebc7c", "sha256": "21150b6bb6e2a3004c8c02f01f178b40f8c35185cfc2d477a7a06a1389176856" }, "downloads": -1, "filename": "qai-5.0.0rc1-py3-none-any.whl", "has_sig": false, "md5_digest": "2a7f523f87be1691ab65ebc05f7ebc7c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8,<4.0", "size": 12144, "upload_time": "2021-05-24T22:01:43", "upload_time_iso_8601": "2021-05-24T22:01:43.833941Z", "url": "https://files.pythonhosted.org/packages/f7/c1/78430f8f94303edf014b1cb526b1fecd23ab29f51d662215a5aa0f529cab/qai-5.0.0rc1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "90a14e4ea46b602eb485cdfa3c54bf65", "sha256": "cd0b6a161f348aa76d134de01c812d4549b7856eb3721d966992ef014e384e6b" }, "downloads": -1, "filename": "qai-5.0.0rc1.tar.gz", "has_sig": false, "md5_digest": "90a14e4ea46b602eb485cdfa3c54bf65", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8,<4.0", "size": 12457, "upload_time": "2021-05-24T22:01:45", "upload_time_iso_8601": "2021-05-24T22:01:45.897507Z", "url": "https://files.pythonhosted.org/packages/96/a1/78aa8eeb281f947620ad9f2a73773ea3dde240c9c71d2db4d897178a6221/qai-5.0.0rc1.tar.gz", "yanked": false, "yanked_reason": null } ], "5.1.0": [ { "comment_text": "", "digests": { "md5": "e23e35b132cce7582c739ed807a114b2", "sha256": "79d095cdecae11260d090ad58e2fe72e878b51a894fcd524e45574d27e594b41" }, "downloads": -1, "filename": "qai-5.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e23e35b132cce7582c739ed807a114b2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8,<4.0", "size": 12110, "upload_time": "2021-06-03T08:27:58", "upload_time_iso_8601": "2021-06-03T08:27:58.676286Z", "url": "https://files.pythonhosted.org/packages/00/f2/0b2812d41887bb6f3bbc1957c0043ed4367c924b94b77fb0ee2d8dad81c9/qai-5.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "574ffa5cd37001ae2c4124c6e0730122", "sha256": "c5d8e44d0c46c3fa7363be5f0d41bb3c8091e452079b9681a5defdc9acd3bdbc" }, "downloads": -1, "filename": "qai-5.1.0.tar.gz", "has_sig": false, "md5_digest": "574ffa5cd37001ae2c4124c6e0730122", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8,<4.0", "size": 12342, "upload_time": "2021-06-03T08:27:59", "upload_time_iso_8601": "2021-06-03T08:27:59.673231Z", "url": "https://files.pythonhosted.org/packages/d8/c7/bbaf0f899ffd2d3018bf41e76f10edb48f4ad288a17e25d729f7ca79bd82/qai-5.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "5.1.1": [ { "comment_text": "", "digests": { "md5": "5d9c7c3f3249d59dbb266c94f6bceefb", "sha256": "9a3b81494db9745b65661ff91355b4536e5e022594fea8574e899aad48be6487" }, "downloads": -1, "filename": "qai-5.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "5d9c7c3f3249d59dbb266c94f6bceefb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8,<4.0", "size": 12118, "upload_time": "2021-06-10T05:27:06", "upload_time_iso_8601": "2021-06-10T05:27:06.758937Z", "url": "https://files.pythonhosted.org/packages/51/e1/fedc5a3228a63c09b4cbef903d629de409a3190cb37ee034306c94e8afdd/qai-5.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6ee27b8877a22ebd9dc02daad558588b", "sha256": "b25b4ffbb9c7f80ddee08105b28e429a2b9143f31a26e3ffe3a8eee8624a86ae" }, "downloads": -1, "filename": "qai-5.1.1.tar.gz", "has_sig": false, "md5_digest": "6ee27b8877a22ebd9dc02daad558588b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8,<4.0", "size": 12346, "upload_time": "2021-06-10T05:27:07", "upload_time_iso_8601": "2021-06-10T05:27:07.999243Z", "url": "https://files.pythonhosted.org/packages/a7/43/63400be70d47e02b179c91fdfd7c62b73b4adcf62fc6342d6679a8ce80e3/qai-5.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "6.0.0rc4": [ { "comment_text": "", "digests": { "md5": "c6df42d5d7b4e21b17f5ea4379be3ba0", "sha256": "baadccd72955d99bea3fd885146c9e661d15d97ba8281586c7339c16935c51ad" }, "downloads": -1, "filename": "qai-6.0.0rc4-py3-none-any.whl", "has_sig": false, "md5_digest": "c6df42d5d7b4e21b17f5ea4379be3ba0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8,<4.0", "size": 15301, "upload_time": "2021-10-12T19:21:29", "upload_time_iso_8601": "2021-10-12T19:21:29.700877Z", "url": "https://files.pythonhosted.org/packages/37/62/525da5d4e4a8accb171b9a42158d3565faf1d724ba1b2ae3822e8be0dc5c/qai-6.0.0rc4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3ceb981bb1b9ba0f7f7b189efae3d68e", "sha256": "187e82b04e7b073bfcd35707160336c659b429e9061f92a5684d0532628346be" }, "downloads": -1, "filename": "qai-6.0.0rc4.tar.gz", "has_sig": false, "md5_digest": "3ceb981bb1b9ba0f7f7b189efae3d68e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8,<4.0", "size": 15546, "upload_time": "2021-10-12T19:21:31", "upload_time_iso_8601": "2021-10-12T19:21:31.614205Z", "url": "https://files.pythonhosted.org/packages/96/8c/18590316a13095a30f5b4c600897c15f7129dc80d7973d61440061a6d9b6/qai-6.0.0rc4.tar.gz", "yanked": false, "yanked_reason": null } ], "6.0.0rc6": [ { "comment_text": "", "digests": { "md5": "7e4d8bae92ee89766595cf9de1243c88", "sha256": "11f881e43e84dd52927060b65cfd463b0e5d38cdb1b22d8c4d2d4b1819184d5e" }, "downloads": -1, "filename": "qai-6.0.0rc6-py3-none-any.whl", "has_sig": false, "md5_digest": "7e4d8bae92ee89766595cf9de1243c88", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8,<4.0", "size": 16255, "upload_time": "2021-10-26T21:25:32", "upload_time_iso_8601": "2021-10-26T21:25:32.298293Z", "url": "https://files.pythonhosted.org/packages/5e/24/e9e19c742589982ab0d75de0d6d075eff205a4489b126a395c240a0aaf74/qai-6.0.0rc6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2799e909b0a7f09404e4bfbd43650ab4", "sha256": "6e25d8614bcab8c7f9bcd0ecbeceed903c8e964b1abbda02b81e4af8b256028a" }, "downloads": -1, "filename": "qai-6.0.0rc6.tar.gz", "has_sig": false, "md5_digest": "2799e909b0a7f09404e4bfbd43650ab4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8,<4.0", "size": 16631, "upload_time": "2021-10-26T21:25:35", "upload_time_iso_8601": "2021-10-26T21:25:35.951324Z", "url": "https://files.pythonhosted.org/packages/57/53/2afc24a5941180b19fdfe8a3e3d92cb24bb53a0197f2895f606187067b1b/qai-6.0.0rc6.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5d9c7c3f3249d59dbb266c94f6bceefb", "sha256": "9a3b81494db9745b65661ff91355b4536e5e022594fea8574e899aad48be6487" }, "downloads": -1, "filename": "qai-5.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "5d9c7c3f3249d59dbb266c94f6bceefb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8,<4.0", "size": 12118, "upload_time": "2021-06-10T05:27:06", "upload_time_iso_8601": "2021-06-10T05:27:06.758937Z", "url": "https://files.pythonhosted.org/packages/51/e1/fedc5a3228a63c09b4cbef903d629de409a3190cb37ee034306c94e8afdd/qai-5.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6ee27b8877a22ebd9dc02daad558588b", "sha256": "b25b4ffbb9c7f80ddee08105b28e429a2b9143f31a26e3ffe3a8eee8624a86ae" }, "downloads": -1, "filename": "qai-5.1.1.tar.gz", "has_sig": false, "md5_digest": "6ee27b8877a22ebd9dc02daad558588b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8,<4.0", "size": 12346, "upload_time": "2021-06-10T05:27:07", "upload_time_iso_8601": "2021-06-10T05:27:07.999243Z", "url": "https://files.pythonhosted.org/packages/a7/43/63400be70d47e02b179c91fdfd7c62b73b4adcf62fc6342d6679a8ce80e3/qai-5.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }