{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [], "description": "Home-page: https://github.com/nanvel/tornado-botocore\nAuthor: Oleksandr Polieno\nAuthor-email: polyenoom@gmail.com\nLicense: The MIT License\nDescription: Tornado botocore\n ================\n \n This module lets you use botocore with tornado's AsyncHTTPClient, so you can write asynchronous code in tornado for interacting with Amazon Web Services.\n \n For async file upload to S3 see: https://gist.github.com/nanvel/c489761a11ec2db184c5\n \n See also: https://github.com/qudos-com/botocore-tornado\n \n Another option is aiohttp and aiobotocore: https://github.com/aio-libs/aiobotocore\n \n And one another option, http client agnostic:\n \n .. code-block:: python\n \n from types import MethodType\n \n from botocore.endpoint import Endpoint\n import botocore.session\n \n \n class BotocoreRequest(Exception):\n \n def __init__(self, request, *args, **kwargs):\n super(BotocoreRequest, self).__init__(*args, **kwargs)\n self.method = request.method\n # https://github.com/twisted/treq/issues/185\n self.url = request.url.replace('https://', 'http://')\n self.headers = dict(request.headers)\n self.body = request.body and request.body.read()\n \n \n def _send_request(self, request_dict, operation_model):\n request = self.create_request(request_dict, operation_model)\n raise BotocoreRequest(request=request)\n \n \n class MyAWSClient:\n def __init__(self, service, access_key, secret_key, region, timeout=30):\n session = botocore.session.get_session()\n session.set_credentials(\n access_key=access_key,\n secret_key=secret_key\n )\n self.client = session.create_client(service, region_name=region)\n endpoint = self.client._endpoint\n endpoint._send_request = MethodType(_send_request, endpoint)\n self.timeout = timeout\n \n def request(self, method, **kwargs):\n try:\n getattr(self.client, method)(**kwargs)\n except BotocoreRequest as e:\n return MyFavouriteHTTPClient(\n method=e.method,\n url=e.url,\n body=e.body,\n headers=e.headers\n )\n \n Installation\n ------------\n \n Requirements:\n - `botocore `__\n - `tornado `__\n - `pycurl `__, optional, required for proxy support\n \n Versions:\n - tornado-botocore==0.0.3 (botocore==0.60.0)\n - tornado-botocore==0.1.0 (botocore==0.65.0)\n - tornado-botocore==1.0.0 (botocore==1.2)\n - tornado-botocore==1.2 (botocore>=1.2,<1.6)\n - tornado-botocore==1.4.0 (botocore 1.8+)\n - tornado-botocore==1.5.0 (botocore 1.12+)\n \n .. code-block:: bash\n \n pip install tornado-botocore\n \n \n Example\n -------\n \n A Simple EC2 Example from `botocore docs `__:\n \n .. code-block:: python\n \n import botocore.session\n \n \n if __name__ == '__main__':\n session = botocore.session.get_session()\n client = session.create_client('ec2', region_name='us-west-2')\n \n for reservation in client.describe_instances()['Reservations']:\n for instance in reservation['Instances']:\n print(instance['InstanceId'])\n \n \n Using tornado-botocore:\n \n .. code-block:: python\n \n from tornado.ioloop import IOLoop\n from tornado_botocore import Botocore\n \n \n def on_response(response):\n for reservation in response['Reservations']:\n for instance in reservation['Instances']:\n print(instance['InstanceId'])\n \n \n if __name__ == '__main__':\n ec2 = Botocore(\n service='ec2',\n operation='DescribeInstances',\n region_name='us-east-1'\n )\n ec2.call(callback=on_response)\n IOLoop.instance().start()\n \n \n If a callback is not specified, it works synchronously:\n \n .. code-block:: python\n \n from tornado_botocore import Botocore\n \n \n if __name__ == '__main__':\n ec2 = Botocore(\n service='ec2',\n operation='DescribeInstances',\n region_name='us-east-1'\n )\n print ec2.call()\n \n \n Another example - deactivate SNS endpoint:\n \n .. code-block:: python\n \n from tornado import gen\n from tornado.ioloop import IOLoop\n from tornado_botocore import Botocore\n \n \n def on_response(response):\n print(response)\n # {'ResponseMetadata': {'RequestId': '056eb19e-3d2e-53e7-b897-fd176c3bb7f2'}}\n \n \n if __name__ == '__main__':\n sns_operation = Botocore(\n service='sns',\n operation='SetEndpointAttributes',\n region_name='us-west-2'\n )\n sns_operation.call(\n callback=on_response,\n Endpoint='arn:aws:sns:us-west-2:...',\n Attributes={'Enabled': 'false'}\n )\n IOLoop.instance().start()\n \n Send email using SES service and tonado.gen:\n \n .. code-block:: python\n \n @gen.coroutine\n def send(self, ...):\n ses_send_email = Botocore(\n service='ses',\n operation='SendEmail',\n region_name='us-east-1'\n )\n source = 'example@mail.com'\n message = {\n 'Subject': {\n 'Data': 'Example subject'.decode('utf-8'),\n },\n 'Body': {\n 'Html': {\n 'Data': 'Example content'.decode('utf-8'),\n },\n 'Text': {\n 'Data': 'Example content'.decode('utf-8'),\n }\n }\n }\n destination = {'ToAddresses': ['target@mail.com']}\n res = yield gen.Task(\n ses_send_email.call,\n Source=source,\n Message=message,\n Destination=destination\n )\n raise gen.Return(res)\n \n Usage\n -----\n \n Session: I think it makes sense to keep one global session object instead of create one for every request.\n \n Credentials: You can specify credentials once on session object creation (pass to get_session method).\n \n Testing: endpoint_url argument is useful for testing (use DynamoDBLocal).\n \n Contribute\n ----------\n \n If you want to contribute to this project, please perform the following steps:\n \n .. code-block:: bash\n \n # Fork this repository\n # Clone your fork\n $ virtualenv .env --no-site-packages\n $ source .env/bin/activate\n $ pip install -r requirements.txt\n \n $ git co -b feature_branch master\n # Implement your feature\n $ git add . && git commit\n $ git push -u origin feature_branch\n # Send us a pull request for your feature branch\n \nKeywords: tornado,botocore,async boto,amazon,aws\nPlatform: OS Independent\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "tornado-botocore", "package_url": "https://pypi.org/project/tornado-botocore/", "platform": "", "project_url": "https://pypi.org/project/tornado-botocore/", "project_urls": null, "release_url": "https://pypi.org/project/tornado-botocore/1.5.0/", "requires_dist": [ "botocore (>=1.8)", "tornado" ], "requires_python": "", "summary": "Use tornado's AsyncHTTPClient inside botocore.", "version": "1.5.0" }, "last_serial": 4382329, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "4e08004676b98a11041e81f11649796b", "sha256": "01445ff3e976666c8de6307f20e41745f88a90658cdc5042a1988402d73f72b2" }, "downloads": -1, "filename": "tornado-botocore-0.0.1.tar.gz", "has_sig": false, "md5_digest": "4e08004676b98a11041e81f11649796b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4032, "upload_time": "2014-08-30T22:14:01", "url": "https://files.pythonhosted.org/packages/97/42/e80abab29a3e19de0d4e586038247f25851042c48c23775853da5da96674/tornado-botocore-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "bb288c0f12fb7d6f53d599a87b77109f", "sha256": "fc86e3947923896bd938382cb067aedf297a65f049ff4025c8aaa0e1ed0160e0" }, "downloads": -1, "filename": "tornado-botocore-0.0.2.tar.gz", "has_sig": false, "md5_digest": "bb288c0f12fb7d6f53d599a87b77109f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4210, "upload_time": "2014-09-07T18:31:55", "url": "https://files.pythonhosted.org/packages/c2/28/8bf52750c525b2a4f14ab151f45cd338eb1330ccf950e6b74dae94a9546f/tornado-botocore-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "29fa3ee36453a880420c54d0e5a1e560", "sha256": "385dcbbdecbc34bfd0f2a2d6d15b9deef9abaa2cde2b4b0a73116efb42ce683f" }, "downloads": -1, "filename": "tornado-botocore-0.0.3.tar.gz", "has_sig": false, "md5_digest": "29fa3ee36453a880420c54d0e5a1e560", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4517, "upload_time": "2014-09-09T20:41:00", "url": "https://files.pythonhosted.org/packages/ee/5c/3c2e0f04167f1b484a19bf30bfd2c4bc83067fa6326818a2cdc902f2783c/tornado-botocore-0.0.3.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "e02b863bd19f7b509f6fc5c9f6c329f4", "sha256": "373427512df006f83026f2d42a2d3ce429b0f8620af8fe8f72209f95d4831dfe" }, "downloads": -1, "filename": "tornado-botocore-0.1.0.tar.gz", "has_sig": false, "md5_digest": "e02b863bd19f7b509f6fc5c9f6c329f4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5057, "upload_time": "2014-10-11T13:45:53", "url": "https://files.pythonhosted.org/packages/e5/da/1439be251ea13841944ec9be99dbc3a25a2a92d91bca44543e85b56922b7/tornado-botocore-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "fbd2bd4a3352dd987566eec36a9d56f7", "sha256": "d7f3cd6f83a656d07e9f006d30ea74d3286775e154798ef1c7c7b0c06039e53a" }, "downloads": -1, "filename": "tornado-botocore-0.1.1.tar.gz", "has_sig": false, "md5_digest": "fbd2bd4a3352dd987566eec36a9d56f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5134, "upload_time": "2014-10-11T19:58:16", "url": "https://files.pythonhosted.org/packages/2b/2c/e4e9ad7ca6031ce0b901a51d855e1b81e95a87d6572838b3e58fae76eead/tornado-botocore-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "8fe40ae27150a82afcca0d95a56c371d", "sha256": "ed16f50fbf2123af49d76abdd696589519bb4473af080b1686d44b02c51916c8" }, "downloads": -1, "filename": "tornado-botocore-0.1.2.tar.gz", "has_sig": false, "md5_digest": "8fe40ae27150a82afcca0d95a56c371d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5147, "upload_time": "2014-10-11T20:12:14", "url": "https://files.pythonhosted.org/packages/ac/6b/10e89a205361375fafd3be2c1f274036ad2fef506f11b82c97ebf29887a0/tornado-botocore-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "b04be2c1ce27d170c3f084f8d8cb791b", "sha256": "503ea6237f7de25b06999a22cc1fc7f7ec88cb89d826f46e449346cd3e882c8b" }, "downloads": -1, "filename": "tornado-botocore-0.1.3.tar.gz", "has_sig": false, "md5_digest": "b04be2c1ce27d170c3f084f8d8cb791b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5145, "upload_time": "2014-10-11T20:23:52", "url": "https://files.pythonhosted.org/packages/9a/fb/ff2eb609aad015dbb864deefa3398c38a0cccc989768ee46f341a0637c26/tornado-botocore-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "ef64bd61ab3d21c910a2f252652d5d56", "sha256": "7accf886fd736aba58fff9851c5a3dd858793484e866b9d611be7b848c2a4906" }, "downloads": -1, "filename": "tornado-botocore-0.1.4.tar.gz", "has_sig": false, "md5_digest": "ef64bd61ab3d21c910a2f252652d5d56", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5159, "upload_time": "2014-10-11T20:36:54", "url": "https://files.pythonhosted.org/packages/ea/ef/6e68ee02a9d2c920a7cde1d25c51c99e0888ccf319a1b1f3a5c2ae5b70a8/tornado-botocore-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "ade7818e34b25eaecf0a0bee157c315f", "sha256": "d1702a090842fd2a1933652cf6b6ee83cff9aac67b7646b61ad84f6b85101abf" }, "downloads": -1, "filename": "tornado-botocore-0.1.5.tar.gz", "has_sig": false, "md5_digest": "ade7818e34b25eaecf0a0bee157c315f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5345, "upload_time": "2014-10-11T22:39:28", "url": "https://files.pythonhosted.org/packages/b7/ce/d1c7cb94f4832220f8c7179005651918ea442479b877691a077ef5ebe29b/tornado-botocore-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "2b1b7416541a54b739e55141d3211787", "sha256": "6e55963963ffc0f873264d201fb8f63dcc028f57662a16ab0725ff5046b63015" }, "downloads": -1, "filename": "tornado-botocore-0.1.6.tar.gz", "has_sig": false, "md5_digest": "2b1b7416541a54b739e55141d3211787", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5386, "upload_time": "2015-02-06T03:13:00", "url": "https://files.pythonhosted.org/packages/c3/44/cfb8dcda8998da8fc3ef7444b3be8c766f9b87435b0ee1a59c170b60dd83/tornado-botocore-0.1.6.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "8772f47899b58d21a654a5129f6d8765", "sha256": "2b3f8af577dde8193f65c33f93c7f9622487903915402f0fbc724fb4eb9dd2b8" }, "downloads": -1, "filename": "tornado-botocore-1.0.0.tar.gz", "has_sig": false, "md5_digest": "8772f47899b58d21a654a5129f6d8765", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5830, "upload_time": "2015-09-11T16:02:02", "url": "https://files.pythonhosted.org/packages/2a/a6/21b2c5422fcdc46e1ecdfbc1b45c7caab0581394211faedfd7b5aaca08d3/tornado-botocore-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "6a2e8cd922a9d17d6d1aec1f5eed0861", "sha256": "c712259882a62549611c6df4351d97210c9793fd3c44c77802e0d2197eab5211" }, "downloads": -1, "filename": "tornado-botocore-1.0.1.tar.gz", "has_sig": false, "md5_digest": "6a2e8cd922a9d17d6d1aec1f5eed0861", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5841, "upload_time": "2015-09-11T16:05:05", "url": "https://files.pythonhosted.org/packages/c3/f6/af4a25ff10185302a545e78143707d30f76d94d4b13866c84845fb73d378/tornado-botocore-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "91f403aa7730cda6e988c06479c65f98", "sha256": "3e5bd8beeb439a994f7498cc3ea4c207b768f44b5c87732800088c8b1aad38d4" }, "downloads": -1, "filename": "tornado-botocore-1.0.2.tar.gz", "has_sig": false, "md5_digest": "91f403aa7730cda6e988c06479c65f98", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6094, "upload_time": "2015-09-17T06:14:50", "url": "https://files.pythonhosted.org/packages/35/35/65434dd70a524c9bffc8c24c3c549573887c741f82bf33b8dc2bed696d88/tornado-botocore-1.0.2.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "7065990eb79424c33d4b0ae7ec205114", "sha256": "25a98ffd4b3d69a258c6a53f3154035d33b8134626c1bd957bb078e477965768" }, "downloads": -1, "filename": "tornado-botocore-1.1.0.tar.gz", "has_sig": false, "md5_digest": "7065990eb79424c33d4b0ae7ec205114", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6453, "upload_time": "2017-02-26T11:01:30", "url": "https://files.pythonhosted.org/packages/12/21/8a8cb1c7c78dc48338283744bef2bc3bce4028cda09b904c907f0a4db50d/tornado-botocore-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "564f1bca4f9de08d54e8c88b210db555", "sha256": "60fc84473e7a6c0783f1287c90b39b39480542991f5cd192d3904059679bbe83" }, "downloads": -1, "filename": "tornado-botocore-1.1.1.tar.gz", "has_sig": false, "md5_digest": "564f1bca4f9de08d54e8c88b210db555", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6529, "upload_time": "2017-05-17T01:08:40", "url": "https://files.pythonhosted.org/packages/c6/e8/2b668871b61501c643ed65f70f159d8874e13dd8de77b4277ac1e470e489/tornado-botocore-1.1.1.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "375a5598f9238cb50171ae2af5735c6d", "sha256": "e729df6d410b1b18e5910af0d8a4a19ec680900fc3f5574916dc071b27683226" }, "downloads": -1, "filename": "tornado-botocore-1.2.0.tar.gz", "has_sig": false, "md5_digest": "375a5598f9238cb50171ae2af5735c6d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6604, "upload_time": "2017-05-21T11:08:39", "url": "https://files.pythonhosted.org/packages/3b/d4/346894cbf5d4322825f8cfde388988a01c7bd5157c809031bf2b952ed9ff/tornado-botocore-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "fc8c7a7ba95245b4290495152f65b019", "sha256": "476aa472326ef447fd2fddeded263a383cc2998c5ce3bc07adb4059d5a2ff0cf" }, "downloads": -1, "filename": "tornado-botocore-1.3.0.tar.gz", "has_sig": false, "md5_digest": "fc8c7a7ba95245b4290495152f65b019", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7232, "upload_time": "2018-02-02T02:38:52", "url": "https://files.pythonhosted.org/packages/bb/ec/4512d7d2eb4b55ccc121296e2563253d04719b6ee6d13d6d68014eecf525/tornado-botocore-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "c6ae345cb531996e75a9f8052bb1f199", "sha256": "8d039b868bab526d9a3cf36bc720bac3e5a7299e89dd30c4c6967c43397e0409" }, "downloads": -1, "filename": "tornado-botocore-1.3.1.tar.gz", "has_sig": false, "md5_digest": "c6ae345cb531996e75a9f8052bb1f199", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7198, "upload_time": "2018-02-12T16:07:14", "url": "https://files.pythonhosted.org/packages/a5/12/945e236f955b8a51b444b0c0efe2322d5d7cb0c13c1f13f7d0c208ca514e/tornado-botocore-1.3.1.tar.gz" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "abb04f3851333044bd259f861da58a48", "sha256": "2662aa6149dd09a7bfe404b966967cc13fa2fb65d9d6565eef9b954e2b713445" }, "downloads": -1, "filename": "tornado-botocore-1.3.2.tar.gz", "has_sig": false, "md5_digest": "abb04f3851333044bd259f861da58a48", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7301, "upload_time": "2018-05-19T02:12:42", "url": "https://files.pythonhosted.org/packages/b0/bb/c0127b1e23614935c37de60197ae3e16806c80d2c2fd98d8ced535202d02/tornado-botocore-1.3.2.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "ff5d773c78282df49a818dae86551737", "sha256": "0728a993ac23c1b95af0d8b1892ff6a565e8f612df2f8f7aafff5fcd87b29f28" }, "downloads": -1, "filename": "tornado-botocore-1.4.0.tar.gz", "has_sig": false, "md5_digest": "ff5d773c78282df49a818dae86551737", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7446, "upload_time": "2018-06-08T04:42:43", "url": "https://files.pythonhosted.org/packages/20/60/af50fb133503ff9514717a28bc4b9aec3a52f64c1bb451861101d6332163/tornado-botocore-1.4.0.tar.gz" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "93d9b61388c8eb62179b7268604ecd80", "sha256": "3113072ddf8b996316118562543b6826ffe628bd6afdadfe641555c45da450e7" }, "downloads": -1, "filename": "tornado_botocore-1.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "93d9b61388c8eb62179b7268604ecd80", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6757, "upload_time": "2018-10-16T16:10:08", "url": "https://files.pythonhosted.org/packages/05/03/7c41ea71d0b3c1dd5c327965bf8c5ebb548dcb716ac8da6c631a71f17513/tornado_botocore-1.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "28db6ae3902ff170fc4dab83c0d0d3df", "sha256": "6e3894840aaf1edc76eccfc4e180b9b5c26487b690fc596e581d42f4219e47df" }, "downloads": -1, "filename": "tornado-botocore-1.5.0.tar.gz", "has_sig": false, "md5_digest": "28db6ae3902ff170fc4dab83c0d0d3df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7457, "upload_time": "2018-10-16T16:10:10", "url": "https://files.pythonhosted.org/packages/5b/9d/d16f22e759ae038bc868b30d341c597ea32315da1910594b23e039b18922/tornado-botocore-1.5.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "93d9b61388c8eb62179b7268604ecd80", "sha256": "3113072ddf8b996316118562543b6826ffe628bd6afdadfe641555c45da450e7" }, "downloads": -1, "filename": "tornado_botocore-1.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "93d9b61388c8eb62179b7268604ecd80", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6757, "upload_time": "2018-10-16T16:10:08", "url": "https://files.pythonhosted.org/packages/05/03/7c41ea71d0b3c1dd5c327965bf8c5ebb548dcb716ac8da6c631a71f17513/tornado_botocore-1.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "28db6ae3902ff170fc4dab83c0d0d3df", "sha256": "6e3894840aaf1edc76eccfc4e180b9b5c26487b690fc596e581d42f4219e47df" }, "downloads": -1, "filename": "tornado-botocore-1.5.0.tar.gz", "has_sig": false, "md5_digest": "28db6ae3902ff170fc4dab83c0d0d3df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7457, "upload_time": "2018-10-16T16:10:10", "url": "https://files.pythonhosted.org/packages/5b/9d/d16f22e759ae038bc868b30d341c597ea32315da1910594b23e039b18922/tornado-botocore-1.5.0.tar.gz" } ] }