{ "info": { "author": "Arcelik Asista Team", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# Arcelik Asista Smart Assistant AWS Lambda Python Library\n\n*Simple Python API wrapper for Arcelik Asista Smart Assistant AWS Lambda handlers.*\n\n---\n\n**pyasista** is an easy to use Python package to help developers implement their AWS lambda function with ease.\n\n## Installation\n\nTo install pyasista, simply use [pip](https://pypi.org/project/pyasista/).\n\n```bash\npip install pyasista\n```\n\n## Usage\n\nJust import *pyasista* into your project and use the wrapper classes for easily implementing your lambda functions.\n\n```python\nfrom pyasista import AsistaInput\nfrom pyasista import AsistaOutput\nfrom pyasista import Command\nfrom pyasista import CommandType\n\n\n# Sample lambda handler to make Asista say `Hello, my name is Asista.`.\ndef lambda_handler(event, context):\n asista_input = AsistaInput(event)\n asista_output = AsistaOutput()\n command = Command(CommandType.PLAY_ANNOUNCE, 'Hello, my name is Asista.')\n asista_output.push_command(command)\n return dict(asista_output)\n```\n\n## Documentation\n\n### AsistaInput\n\nArcelik Asista Smart Assistant Lambda function has a standard event format. *AsistaInput* class is a wrapper for the lambda function input. Just use the *event* of the lambda function while initializing the object.\n\n```python\n...\n\ndef lambda_handler(event, context):\n asista_input = AsistaInput(event)\n ...\n```\n\nAsistaInput has the following properties and methods:\n\n- **customer_confirmed**: ``True`` if the customer responded *yes*; ``False`` if the customer responded *no*; ``None`` if the customer has not responded to a *Yes/No* question.\n- **environment**: Environment (DEVELOPMENT, TESTING or PRODUCTION). (See: [Environment](#Environment))\n- **ext_node_id**: Node id of the detected NLP tree.\n- **serial_number**: Serial number of the physical Asista device.\n- **session**: A dictionary of the session variables.\n- **slot_values**: A dictionary of detected dynamic variables. Slot values stored in lists, with the same order as it appeared in the event.\n- **sr_text**: Actual speech detected with speech recognition.\n- **timeout**: While waiting for user to respond your query, the Asista device timeouts after 10 seconds if it could not detect any speech. In that case, lambda function will be fed with timeout parameter is set to True.\n- **token**: A helper object for holding OAuth2 token and refreshing the token. (See: [AsistaToken](#AsistaToken))\n- **user_guide()**: Retrieves the user guide of the skill. Returns ``None`` if the method encounters an error.\n\nAll properties of AsistaInput are immutable.\n\n```python\n...\n\ndef lambda_handler(event, context):\n asista_input = AsistaInput(event)\n print(asista_input.serial_number) # Print the serial number of the device\n asista_input.serial_number = 'QWERTY123' # Raise an AttributeError\n```\n\nIf your lambda strictly requires more of those parameters, you can pass them to the constructor and raise an error if the event lack any of those arguments.\n\n```python\n...\n\ndef lambda_handler(event, context):\n # If serial_number and token keys are missing in the event, raise an error.\n asista_input = AsistaInput(event, required_parameters=['serial_number', 'token'])\n ...\n```\n\n### AsistaOutput\n\nA wrapper for Arcelik Asista Smart Assistant Lambda function standard output.\n\n```python\nfrom pyasista import AsistaInput\nfrom pyasista import AsistaOutput\n\n\ndef lambda_handler(event, context):\n asista_input = AsistaInput(event)\n asista_output = AsistaOutput()\n return dict(asista_output)\n```\n\nDue to the non-serializable structure of AsistaOutput, lambda functions should return ```dict(asista_output)```. [Under revision]\n\nAsistaOutput has the following methods:\n\n- **push_command(command)**: Add a command for Asista to perform. (See: [Command](#Command))\n- **session(dict)**: A dictionary containing the session information. [default=dict()]\n- **session_continue(bool)**: ``True`` if the session should continue; else``False``. [default=False]\n\n### AsistaToken\n\nFor the applications requiring OAuth2 access token, Asista lambda input contains the access token and all the required information on refreshing them. You can access the token from the *AsistaInput*.\n\nAsistaToken has the following property and methods:\n\n- **access_token**: The property holds the actual access token. It is an immutable variable, trying to set it will raise an AttributeError.\n- **is_valid()**: Checks whether the AsistaToken class structually valid. It is important to note that this method does not check whether the token itself is valid or not. It only checks whether the AsistaToken instance has access_token set and all the data present to refresh it.\n- **refresh()**: Refreshs the access token. Return ``True`` if the token is refreshed successfully, else ``False``.\n\nExample usage of the AsistaToken as follows:\n\n```python\nfrom pyasista import AsistaInput\nfrom pyasista import AsistaToken\n\n\ndef lambda_handler(event, context):\n asista_input = AsistaInput(event)\n asista_token = asista_input.token # The AsistaToken object\n\n if asista_token.is_valid(): # Checks access_token is structually valid\n print(asista_token.access_token) # Print the access_token\n if asista_token.refresh(): # Refresh the access_token\n print(asista_token.access_token) # Print the new access_token\n else:\n print('Cannot refresh access token') # Error in refresh\n else:\n print('Event does not have the token object')\n\n ...\n```\n\n### Command\n\nArcelik Asista Smart Assistant is capable of converting a text to speech using a TTS engine and play it out loud, and playing an audio stream for the customer. AsistaOutput has an array of commands for Asista to perform. *Command* is a wrapper class for this purpose.\n\nBasically initialize the class with type (See: [CommandType](#CommandType)) and the data (either the text to be spoken or the stream to be streamed) and add it to the output using *AsistaOutput.push_command(command)* method.\n\nAn example usage of Command is below:\n\n```python\nfrom pyasista import AsistaOutput\nfrom pyasista import Command\nfrom pyasista import CommandType\n\n\ndef lambda_handler(event, context):\n # Parse event using AsistaInput\n # Implement your business logic\n ...\n asista_output = AsistaOutput()\n\n # Create a command to make Asista say 'Hello, my name is Asista.'\n command = Command(CommandType.PLAY_ANNOUNCE, 'Hello, my name is Asista.')\n asista_output.push_command(command)\n return dict(asista_output)\n```\n\n### CommandType\n\nAn enumeration of supported command types that Asista can perform:\n\n- **CommandType.PLAY_ANNOUNCE**: Read a text out loud using TTS engine.\n- **CommandType.PLAY_STREAM**: Stream an audio from a URL.\n- **CommandType.STOP**: Stop Asista.\n- **CommandType.NOACTION**: Make Asista take no action at all.\n\n### Environment\n\nAn enumeration of supported environments that current event of the lambda function is executed.\n\nSupported environments are:\n\n- **Environment.DEVELOPMENT**: Development environment.\n- **Environment.TESTING**: Test environment.\n- **Environment.PROD**: Production environment.\n\nAccessing the environment is easy:\n\n```python\nfrom pyasista import AsistaInput\nfrom pyasista import Environment\n\n\ndef lambda_handler(event, context):\n asista_input = AsistaInput(event)\n environment = asista_input.environment\n if environment == Environment.DEVELOPMENT:\n # Do tasks for development\n elif environment == Environment.TESTING:\n # Do tasks for test\n elif environment == Environment.PROD:\n # Do tasks for production\n else:\n # Undetermined environment\n```\n\n## EXAMPLES\n\nLooking for more examples? Check out the [examples](https://github.com/Arcelik/pyasista/tree/master/examples) folder.\n\n\n# Release History\n\n## 1.1.2 (2018-11-22)\n\n- *user_guide()* method is added to the **AsistaInput**.\n\n## 1.1.1 (2018-10-22)\n\n- *timeout* property is added to the **AsistaInput**.\n\n## 1.1.0 (2018-09-25)\n\n- Environment string for Environment.PROD changed from *PROD* to *PRODUCTION*. If you are using **Environment** you should update your *pyasista* version to keep things working.\n\n## 1.0.1 (2018-08-13)\n\n- Following static methods are added to *AsistaOutput* to create lambda outputs easier:\n - **AsistaOutput.with_stream(data):** Creates an instance of *AsistaOutput* with command PLAY_STREAM.\n - **AsistaOutput.with_announce(data):** Creates an instance of *AsistaOutput* with command PLAY_ANNOUNCE.\n - **AsistaOutput.with_stop():** Creates an instance of *AsistaOutput* with command STOP.\n - **AsistaOutput.with_noaction():** Creates an instance of *AsistaOutput* with command NOACTION.\n\n## 1.0.0 (2018-08-10)\n\n- Birth!\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/Arcelik/pyasista", "keywords": "", "license": "Apache 2.0", "maintainer": "", "maintainer_email": "", "name": "pyasista", "package_url": "https://pypi.org/project/pyasista/", "platform": "", "project_url": "https://pypi.org/project/pyasista/", "project_urls": { "Homepage": "https://github.com/Arcelik/pyasista" }, "release_url": "https://pypi.org/project/pyasista/1.1.2/", "requires_dist": null, "requires_python": ">=3.4", "summary": "Arcelik Asista Smart Assistant AWS Lambda Python Library", "version": "1.1.2" }, "last_serial": 4515563, "releases": { "0.3.0": [ { "comment_text": "", "digests": { "md5": "7a19a40849a8d34fe76087406ab51a9a", "sha256": "04a820b8a85fc3d15a3fc14afc86fe1fd7925e4fd052ac2162331c18fdc01451" }, "downloads": -1, "filename": "pyasista-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "7a19a40849a8d34fe76087406ab51a9a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 9708, "upload_time": "2018-08-03T13:28:50", "url": "https://files.pythonhosted.org/packages/b7/c7/ee8fee686887663815191e81a03920d6cc516d1847b4b9707af2aaf8e20b/pyasista-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4f55f4aa7735ada5e2f05d467200d2c8", "sha256": "ccf650279b654484b6e3357378c388382d7af7142bbb1d73f3cc56e03a8e0a01" }, "downloads": -1, "filename": "pyasista-0.3.0.tar.gz", "has_sig": false, "md5_digest": "4f55f4aa7735ada5e2f05d467200d2c8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 9375, "upload_time": "2018-08-03T13:28:51", "url": "https://files.pythonhosted.org/packages/00/54/5d548d1d2b7b887b192397b9154e3b379d2aec60e274ff2cfa98f7b9c510/pyasista-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "b9c152668693c013ac5d17b605cbc4b2", "sha256": "4adec9409af5be3dda54ca5c2be6800fb9847b7d1741a51c30b0516c305c29d7" }, "downloads": -1, "filename": "pyasista-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b9c152668693c013ac5d17b605cbc4b2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 9960, "upload_time": "2018-08-08T08:48:38", "url": "https://files.pythonhosted.org/packages/d4/28/5c7c12e8b303e8b1a7d0b415ffaf7e5baec41169d3cd90d3c1f7e94f247c/pyasista-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "14ac7f18085808e3ee4c0ac7948071ee", "sha256": "bc4510b9a2dea8cb3223ee9eef865bd28804d913602afcd5cbe5b6c0fbbc4e4c" }, "downloads": -1, "filename": "pyasista-0.4.0.tar.gz", "has_sig": false, "md5_digest": "14ac7f18085808e3ee4c0ac7948071ee", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 9614, "upload_time": "2018-08-08T08:48:40", "url": "https://files.pythonhosted.org/packages/3f/58/3f6d1e8730505945d4e209e8b0185231b1c382fadb78619b70cf0f642b1c/pyasista-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "adf6d8ff87b4984285c78666146ef2a6", "sha256": "bfbd7bfe207c7c632b337f39e2fa91860d0a0dc406aaa023d96dfd562740be57" }, "downloads": -1, "filename": "pyasista-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "adf6d8ff87b4984285c78666146ef2a6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 10010, "upload_time": "2018-08-10T07:43:28", "url": "https://files.pythonhosted.org/packages/10/84/7af687a02d6f1f0ff0c3ffa30928edee0c1162f7afbe9d4ed1a890d83727/pyasista-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ab0063136842aa81439c4f2dd0a1ce3d", "sha256": "a169aaac606a149ee45fbfabf0a63fde0349c7715241af6aaced708168278904" }, "downloads": -1, "filename": "pyasista-0.5.0.tar.gz", "has_sig": false, "md5_digest": "ab0063136842aa81439c4f2dd0a1ce3d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 9671, "upload_time": "2018-08-10T07:43:30", "url": "https://files.pythonhosted.org/packages/df/74/df9370c74843376307ea993a2176cac5cd026d52f4eea5d1766635e4f24c/pyasista-0.5.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "0ed653c5ec464b293bc934562d8b26cb", "sha256": "8decbb69f46361ea91f921b549674d0a531a0470d599aecd5c4a3b4347cb79bc" }, "downloads": -1, "filename": "pyasista-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0ed653c5ec464b293bc934562d8b26cb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 10027, "upload_time": "2018-08-10T07:53:54", "url": "https://files.pythonhosted.org/packages/b8/39/3584e845cd3d04df653115f0a9cc67d85489c296e22b37107c4ddc529c6e/pyasista-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c781c30a9d1950d8ec5b19fcf9a7daa2", "sha256": "4e25c5f46dfb0eb1c705ee382a24125d49d1bcfe09031b90f5fc84b60abf8518" }, "downloads": -1, "filename": "pyasista-1.0.0.tar.gz", "has_sig": false, "md5_digest": "c781c30a9d1950d8ec5b19fcf9a7daa2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 9661, "upload_time": "2018-08-10T07:53:55", "url": "https://files.pythonhosted.org/packages/33/cc/324d2981a7cd2fb4aad3f7311ab839ffcd768b0bc554d3282929971a5581/pyasista-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "a6da9dc439708006dc96308942b2ca85", "sha256": "98e0367d66c64cec8f58ffc784f058e4ab4fb173f0c5cc335c768b67c476ce46" }, "downloads": -1, "filename": "pyasista-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a6da9dc439708006dc96308942b2ca85", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 9759, "upload_time": "2018-08-13T12:28:06", "url": "https://files.pythonhosted.org/packages/ba/2d/69f5a015f1ccbe8e878ce797038a8365c71617a7b7b0c4cd8c1765792723/pyasista-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6087e380c7a75b27cefd28d04d336640", "sha256": "e27e4dce9bb1437c6b89248b7e032e3085354ed6a47a186c95424fc0b02d9517" }, "downloads": -1, "filename": "pyasista-1.0.1.tar.gz", "has_sig": false, "md5_digest": "6087e380c7a75b27cefd28d04d336640", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 16564, "upload_time": "2018-08-13T12:28:08", "url": "https://files.pythonhosted.org/packages/12/96/1f65c325f0d330b5855fee0c0b9a2b1a22f3e1dc7d6f81b12569ef6a8235/pyasista-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "90bdfa4539e1d2a898d75c43dced1f63", "sha256": "4621b1baf5f46f1cf30293bd2b144debaa6e3e7fd9f13b95d8d8b3fbf9a7b220" }, "downloads": -1, "filename": "pyasista-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "90bdfa4539e1d2a898d75c43dced1f63", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 9785, "upload_time": "2018-08-16T06:44:48", "url": "https://files.pythonhosted.org/packages/54/1f/7e1fac9c002e5e02bbb5580be58b9d03d7e89b5d3946ae39b8a9788f3b54/pyasista-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a6191ed5325b4b35741875342f3280cc", "sha256": "37455611a9f833fb0a352f4bc46cc830993b9ec96fe29e63accb634ca48d209f" }, "downloads": -1, "filename": "pyasista-1.0.2.tar.gz", "has_sig": false, "md5_digest": "a6191ed5325b4b35741875342f3280cc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 16725, "upload_time": "2018-08-16T06:44:50", "url": "https://files.pythonhosted.org/packages/f8/79/3b36ca5d979fac4fe9c40b95ea3cfa1a11341c00581c992d81eae39d80c4/pyasista-1.0.2.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "e7433af71f20b0acdc4794a965c39f7a", "sha256": "f70fb9a11eac59f4b33507169cf066a4ea2bc5e16346b7a9baf4038e63b268c6" }, "downloads": -1, "filename": "pyasista-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e7433af71f20b0acdc4794a965c39f7a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 9881, "upload_time": "2018-09-25T15:30:03", "url": "https://files.pythonhosted.org/packages/c0/8e/9319a8a65d466ac6ffce3f4ed50bccfc589a5f55e83f86b526e7b2518403/pyasista-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bfe298a12bedc3917d189a5d1c985c7d", "sha256": "22194c1aa5633c875521f24e7a1237045fb687fc842f0d08ac8b7b06633078ff" }, "downloads": -1, "filename": "pyasista-1.1.0.tar.gz", "has_sig": false, "md5_digest": "bfe298a12bedc3917d189a5d1c985c7d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 16908, "upload_time": "2018-09-25T15:30:04", "url": "https://files.pythonhosted.org/packages/f0/a2/020f361b50fa63612cdb99ee8233796fa42cc0a504be198050825ee909c9/pyasista-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "ef5fb1d1618a391f001b2505038a3fb7", "sha256": "ace08d8ad6dd813f6d90d13a6581cd75eb7fbb6b9de586dd0772f581493e7068" }, "downloads": -1, "filename": "pyasista-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ef5fb1d1618a391f001b2505038a3fb7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 10102, "upload_time": "2018-10-19T14:52:12", "url": "https://files.pythonhosted.org/packages/99/df/6f9e7802c0cb3521f0f7e3dda9b08a807b8a9ba26a193bfda45166fb122b/pyasista-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3f9d48d21ac18d35004dd9a6ba4ce0b8", "sha256": "02a18e66c208ae268412a722effc676da06df02f10bafc37b3ff3a06bf64903b" }, "downloads": -1, "filename": "pyasista-1.1.1.tar.gz", "has_sig": false, "md5_digest": "3f9d48d21ac18d35004dd9a6ba4ce0b8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 17246, "upload_time": "2018-10-19T14:52:15", "url": "https://files.pythonhosted.org/packages/46/db/db09452a4023177d2c2fb7edd3ada9e7215eb9d88805af4b21b30aa22986/pyasista-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "737fd709be95bc46f06e47a5abc37ed3", "sha256": "cf09c318f6bbc8eb68c4524cece4b66f791d662d47308cae724e06adc5d37d8f" }, "downloads": -1, "filename": "pyasista-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "737fd709be95bc46f06e47a5abc37ed3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 10311, "upload_time": "2018-11-22T06:20:10", "url": "https://files.pythonhosted.org/packages/e8/64/d5d4efb918891812f44dc68d698947a127858e0b0645676f67830a3cd5f8/pyasista-1.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f6782db823f0dbed57fc39e715390319", "sha256": "d0158aa23bf9dafd08ad33b7fec67a89320f67f0abb6d71e1049f27a2cfad7ed" }, "downloads": -1, "filename": "pyasista-1.1.2.tar.gz", "has_sig": false, "md5_digest": "f6782db823f0dbed57fc39e715390319", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 17689, "upload_time": "2018-11-22T06:20:11", "url": "https://files.pythonhosted.org/packages/5a/e6/bc58d02d9027e3e5b9a7ca0caa54ed3c2c9c3564c0b0aeca9f36f03ba9c8/pyasista-1.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "737fd709be95bc46f06e47a5abc37ed3", "sha256": "cf09c318f6bbc8eb68c4524cece4b66f791d662d47308cae724e06adc5d37d8f" }, "downloads": -1, "filename": "pyasista-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "737fd709be95bc46f06e47a5abc37ed3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 10311, "upload_time": "2018-11-22T06:20:10", "url": "https://files.pythonhosted.org/packages/e8/64/d5d4efb918891812f44dc68d698947a127858e0b0645676f67830a3cd5f8/pyasista-1.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f6782db823f0dbed57fc39e715390319", "sha256": "d0158aa23bf9dafd08ad33b7fec67a89320f67f0abb6d71e1049f27a2cfad7ed" }, "downloads": -1, "filename": "pyasista-1.1.2.tar.gz", "has_sig": false, "md5_digest": "f6782db823f0dbed57fc39e715390319", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 17689, "upload_time": "2018-11-22T06:20:11", "url": "https://files.pythonhosted.org/packages/5a/e6/bc58d02d9027e3e5b9a7ca0caa54ed3c2c9c3564c0b0aeca9f36f03ba9c8/pyasista-1.1.2.tar.gz" } ] }