{ "info": { "author": "Scott Werner", "author_email": "scott.werner.vt@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Web Environment", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Topic :: Internet", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "=============\nCloud Storage\n=============\n\n\n\n`Cloud Storage`_ is a Python +3.4 package which creates a unified API for the\ncloud storage services: Amazon Simple Storage Service (S3),\nMicrosoft Azure Storage, Minio Cloud Storage, Rackspace Cloud Files,\nGoogle Cloud Storage, and the Local File System.\n\nCloud Storage is inspired by `Apache Libcloud `_.\nAdvantages to Apache Libcloud Storage are:\n\n* Full Python 3 support.\n* Generate temporary signed URLs for downloading and uploading files.\n* Support for request and response headers like Content-Disposition.\n* Pythonic! Iterate through all blobs in containers and all containers in\n storage using respective objects.\n\nUsage\n=====\n\n.. code-block:: python\n\n >>> from cloudstorage.drivers.amazon import S3Driver\n >>> storage = S3Driver(key='', secret='')\n\n >>> container = storage.create_container('avatars')\n >>> container.cdn_url\n 'https://avatars.s3.amazonaws.com/'\n\n >>> avatar_blob = container.upload_blob('/path/my-avatar.png')\n >>> avatar_blob.cdn_url\n 'https://s3.amazonaws.com/avatars/my-avatar.png'\n\n >>> avatar_blob.generate_download_url(expires=3600)\n 'https://avatars.s3.amazonaws.com/my-avatar.png?'\n 'AWSAccessKeyId='\n '&Signature='\n '&Expires=1491849102'\n\n >>> container.generate_upload_url('user-1-avatar.png', expires=3600)\n {\n 'url': 'https://avatars.s3.amazonaws.com/',\n 'fields': {\n 'key': 'user-1-avatar.png',\n 'AWSAccessKeyId': '',\n 'policy': '',\n 'signature': ''\n }\n }\n\nSupported Services\n==================\n\n* `Amazon S3`_\n* `Google Cloud Storage`_\n* `Microsoft Azure Storage`_\n* `Minio Cloud Storage`_\n* `Rackspace CloudFiles`_\n* Local File System\n\n\nInstallation\n============\n\nTo install Cloud Storage:\n\n.. code-block:: bash\n\n pip install cloudstorage\n\nAlso install the storage driver(s) you will be using:\n\n.. code-block:: bash\n\n pip install cloudstorage[amazon]\n pip install cloudstorage[google]\n pip install cloudstorage[local]\n pip install cloudstorage[microsoft]\n pip install cloudstorage[minio]\n pip install cloudstorage[rackspace]\n\n.. _`Amazon S3`: https://aws.amazon.com/s3/\n.. _`Blackblaze B2 Cloud Storage`: https://www.backblaze.com/b2/Cloud-Storage.html\n.. _`Google Cloud Storage`: https://cloud.google.com/storage/\n.. _`Microsoft Azure Storage`: https://azure.microsoft.com/services/storage/\n.. _`Minio Cloud Storage`: https://www.minio.io/\n.. _`Rackspace CloudFiles`: https://www.rackspace.com/cloud/files\n.. _`Cloud Storage`: https://github.com/scottwernervt/cloudstorage/\n\n.. :changelog:\n\nChangelog\n---------\n\n0.10.0 (2019-08-10)\n+++++++++++++++++++\n\nBugs\n\n* Azure ``get_blob`` raises ``TypeError`` when Content MD5 missing in remote (`#47 `_). Thanks @matt-carr.\n* ``AzureStorageDriver`` reads stream twice without rewinding (`#44 `_). Thanks @matt-carr.\n* Update package dependencies to fix tests (`#43 `_).\n\nChanges from 0.9.0:\n\n* Azure driver will issue a warning if Content MD5 is not populated.\n* Google driver tests will not run if credentials file is not present.\n\n0.9.0 (2018-11-29)\n++++++++++++++++++\n\nFeatures\n\n* Driver authentication can be verified using ``DriverName.validate_credentials()`` (`#34 `_).\n\nChanges from 0.8.0:\n\n* Initializing ``GoogleStorageDriver`` with an invalid credentials file will\n raise ``CredentialsError`` exception instead of ``CloudStorageError``.\n\n0.8.0 (2018-11-06)\n++++++++++++++++++\n\nFeatures\n\n* ``Blob`` and ``Container``'s ``meta_data`` is now a case insensitive dictionary.\n* Add new driver for Minio Cloud Storage (`#25 `_).\n Install driver requirements with: ``pip install cloudstorage[minio]``.\n\nOther\n\n* Move to ``src`` folder structure for package.\n\n0.7.0 (2018-10-03)\n++++++++++++++++++\n\nFeatures\n\n* ``Cache-Control`` supported for Amazon, Google, Local, and Microsoft (`#11 `_).\n* Each driver's package dependencies are now optional (`#4 `_).\n\nOther\n\n* Remove rackspace package dependency ``rfc6266_parser``.\n* Add ``flake8`` linting and ``sphinx`` doc building to tox and travis.\n\n0.6 (2018-07-24)\n++++++++++++++++\n\n* Copy metadata from ``setup.py`` to ``setup.cfg``\n* Add rate limit timeout when calling google cloud storage backend during tests.\n* Catch ``UnicodeDecodeError`` when decoding local file attribute values.\n* Upgrade dependencies and include ``requirements.txt`` and ``dev-requirements.txt``.\n\n0.5 (2018-02-26)\n++++++++++++++++\n\n* Update rackspacesdk to 0.7.5 and fix broken API calls (`#14 `_).\n\n0.4 (2017-08-29)\n++++++++++++++++\n\n* Implement Microsoft Azure Storage driver (`#1 `_).\n* Google upload_blob is failing for binary stream (`#7 `_ and `#8 `_).\n* Fixed type annotations using mypy.\n* Formatted code using flake8 recommendations.\n\n0.3 (2017-05-24)\n++++++++++++++++\n\n* Fixes `#6 `_: Add kwargs to each driver's init method.\n\n0.2 (2017-04-21)\n++++++++++++++++\n\n* Add pip cache to travis yml file to speed up tests.\n* Set wheel python-tag to py3 only\n* Set tox to pass all env variables to py.test\n* Add travis repo encrypted env variables for running tests.\n\n0.1 (2017-04-20)\n++++++++++++++++\n\n* First release.\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/scottwernervt/cloudstorage/", "keywords": "storage amazon aws s3 azure rackspace cloudfiles google cloudstorage gcs minio", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "cloudstorage", "package_url": "https://pypi.org/project/cloudstorage/", "platform": "", "project_url": "https://pypi.org/project/cloudstorage/", "project_urls": { "Homepage": "https://github.com/scottwernervt/cloudstorage/" }, "release_url": "https://pypi.org/project/cloudstorage/0.10.0/", "requires_dist": [ "inflection (>=0.3.1)", "python-dateutil (>=2.7.3)", "python-magic (>=0.4.15)", "typing; python_version < \"3.5\"", "httpstatus35; python_version < \"3.5\"", "boto3 (>=1.8.00); extra == 'amazon'", "sphinx; extra == 'docs'", "sphinx-rtd-theme; extra == 'docs'", "sphinx-autodoc-typehints; extra == 'docs'", "Pygments; extra == 'docs'", "google-cloud-storage (>=1.18.0); extra == 'google'", "requests (>=2.19.1); extra == 'google'", "filelock (>=3.0.0); extra == 'local'", "itsdangerous (>=1.1.0); extra == 'local'", "xattr (>=0.9.6); extra == 'local'", "azure (>=4.0.0); extra == 'microsoft'", "minio (>=4.0.0); extra == 'minio'", "openstacksdk (<=0.17.2); extra == 'rackspace'", "rackspacesdk (>=0.7.5); extra == 'rackspace'", "requests (>=2.19.1); extra == 'rackspace'" ], "requires_python": "", "summary": "Unified cloud storage API for storage services.", "version": "0.10.0" }, "last_serial": 5659802, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "8d9f50d64ee0ca3ff55b2c876f07847c", "sha256": "198b1f8e56a335c599297590824edd434b23b96ee2ed457675a0b1db8e813bbd" }, "downloads": -1, "filename": "cloudstorage-0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8d9f50d64ee0ca3ff55b2c876f07847c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 40333, "upload_time": "2017-04-21T14:07:32", "url": "https://files.pythonhosted.org/packages/9c/5d/8418ee7b484f0fa8acdc9a881158f44bbd56d737f59bb874755e6a746eca/cloudstorage-0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "afa9e840c5657de045648c7c2aa13e92", "sha256": "62a648897c98be870a35177db0fe7c9eef312b8fc7e3e6e26457d395e7becd7e" }, "downloads": -1, "filename": "cloudstorage-0.1.tar.gz", "has_sig": false, "md5_digest": "afa9e840c5657de045648c7c2aa13e92", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 98513, "upload_time": "2017-04-20T23:17:48", "url": "https://files.pythonhosted.org/packages/2d/55/8fa2568d6139a3648741e5c17c8c3f0515dc5c1e8a59db06546cbbb8b44b/cloudstorage-0.1.tar.gz" } ], "0.10.0": [ { "comment_text": "", "digests": { "md5": "c7626b5f8df72d1bf08b09434b39d238", "sha256": "7aec272583680cca9b9fb41af7e1db8e205ffb87934b53f04124fd1768b6ba2e" }, "downloads": -1, "filename": "cloudstorage-0.10.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c7626b5f8df72d1bf08b09434b39d238", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 50243, "upload_time": "2019-08-10T16:37:27", "url": "https://files.pythonhosted.org/packages/30/e9/b9d3c798fac14b256c7be17f25e38c1b6a7297f4b113eacebbf4f2f50618/cloudstorage-0.10.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "afd270e80dafd3bf3fa35c02a4240f41", "sha256": "b94e5228d5c6a21f54f0d0476fec121a31243c3553d409b2924e68b0c828571f" }, "downloads": -1, "filename": "cloudstorage-0.10.0.tar.gz", "has_sig": false, "md5_digest": "afd270e80dafd3bf3fa35c02a4240f41", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 111540, "upload_time": "2019-08-10T16:37:29", "url": "https://files.pythonhosted.org/packages/a7/4a/685241258f748fb7c1fb4d2751b230d9d455b70546a6ade897f62f83c3f6/cloudstorage-0.10.0.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "580844062702686c7c333b62e1e7525c", "sha256": "7dab88b75024b3bd8bfeaffb689c711ac907eaafdab9edeecc5c0ed0783b3d80" }, "downloads": -1, "filename": "cloudstorage-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "580844062702686c7c333b62e1e7525c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 40385, "upload_time": "2017-04-21T17:23:54", "url": "https://files.pythonhosted.org/packages/4f/3f/9a9f5a32b15abf4777e80ca61d38a844ef9a4b12aeef1669432a66e2450f/cloudstorage-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f4840e3ee212e9f40355ee57992cbdcf", "sha256": "ffc8cc020dcb87941a30827374415ced24beab9d5a437c0e5d582139c0a52bea" }, "downloads": -1, "filename": "cloudstorage-0.2.tar.gz", "has_sig": false, "md5_digest": "f4840e3ee212e9f40355ee57992cbdcf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 98995, "upload_time": "2017-04-21T17:23:59", "url": "https://files.pythonhosted.org/packages/16/bb/ecf2f4640714dcb09e90459b1b66b2da998e23137002c7842d20c1914f8e/cloudstorage-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "90e4fa53c1ae97ef425d01920ab0182e", "sha256": "15e993e5441cd061df90a691d4a94e079e0c82dd0ad98db10df833d6b6cd0bf5" }, "downloads": -1, "filename": "cloudstorage-0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "90e4fa53c1ae97ef425d01920ab0182e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 40563, "upload_time": "2017-05-24T15:39:35", "url": "https://files.pythonhosted.org/packages/cc/27/006e72bc8cd2d36b0e77656aec4e529855bdb2dda33fd100525fb481b2c2/cloudstorage-0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a90269b5a0dcc11881291ed342350818", "sha256": "237fcda87aa269654d17bdbe19359c8d74344127828020af5222c02faf65afaa" }, "downloads": -1, "filename": "cloudstorage-0.3.tar.gz", "has_sig": false, "md5_digest": "a90269b5a0dcc11881291ed342350818", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 99125, "upload_time": "2017-05-24T15:39:42", "url": "https://files.pythonhosted.org/packages/5f/d2/4e1635823f59e5bd0e1e03d6ad032e8e97967e342908d024adff455b226c/cloudstorage-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "c93e5e28f1ad5fad1127fc3f56d5b10b", "sha256": "b81308073be5a0f3d0f9bd9de5d7f3c922bcec8369538be895935d5123fe7445" }, "downloads": -1, "filename": "cloudstorage-0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "c93e5e28f1ad5fad1127fc3f56d5b10b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 45119, "upload_time": "2017-08-29T17:32:34", "url": "https://files.pythonhosted.org/packages/b6/fa/3ad5b508d6d8c23c294b5aa8a9af89c93907b8b0d109830caee84fc2be63/cloudstorage-0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6c727819cb43f6478eb32c4a7383d548", "sha256": "e94ce4056e0a4d140ff28509fccbcbf4caab58f39211bc7f0316da0a4f6ef4f5" }, "downloads": -1, "filename": "cloudstorage-0.4.tar.gz", "has_sig": false, "md5_digest": "6c727819cb43f6478eb32c4a7383d548", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 103151, "upload_time": "2017-08-29T17:32:39", "url": "https://files.pythonhosted.org/packages/7f/6d/7166369bf820b172257df943d7b6ca69b62301332fca2c36335de1b36619/cloudstorage-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "94994d8bef26ef40bc31c19bc9ac9471", "sha256": "17d92e4b4be062d893d7336e2c7f10707d1523262398ef74954db055f86efe8f" }, "downloads": -1, "filename": "cloudstorage-0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "94994d8bef26ef40bc31c19bc9ac9471", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 45003, "upload_time": "2018-02-26T18:25:52", "url": "https://files.pythonhosted.org/packages/87/4c/24b599d396101729b5f0a9409a7d2471adabea6f8757c244b299a7e83179/cloudstorage-0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e2bea5dd0f9eeb07ef40d222dd94171c", "sha256": "bfc780c79ad483fdfffd1a62884e965234fad00fc2e19fc8e4fe7d031351ecf9" }, "downloads": -1, "filename": "cloudstorage-0.5.tar.gz", "has_sig": false, "md5_digest": "e2bea5dd0f9eeb07ef40d222dd94171c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 103141, "upload_time": "2018-02-26T18:25:54", "url": "https://files.pythonhosted.org/packages/b4/c2/004e4f449ead9e5eead5b588a1f933cd30cef9cb6ed4d619827d5324f295/cloudstorage-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "f770fa9a10622defea564d3e59029fdc", "sha256": "8cba0dbe7c80fddb5fe4d6d2bf5563a9cc676102d3d29e589630fc55d09dbd16" }, "downloads": -1, "filename": "cloudstorage-0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "f770fa9a10622defea564d3e59029fdc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 41913, "upload_time": "2018-07-24T16:18:32", "url": "https://files.pythonhosted.org/packages/b2/2f/e953675455b5cf49a5ad361aeb1ae78345e47af9b61f52b1b6dc7024091b/cloudstorage-0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "75b29e6614ac7987d0043f720883a602", "sha256": "bff20385d62c8c692bd6821996e45ee7c3bc647e6a324c6a6e7373d28f8f0882" }, "downloads": -1, "filename": "cloudstorage-0.6.tar.gz", "has_sig": false, "md5_digest": "75b29e6614ac7987d0043f720883a602", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 102083, "upload_time": "2018-07-24T16:18:34", "url": "https://files.pythonhosted.org/packages/71/4a/b9167224f048a188a23baf309d09dab0ec09e6656d5778464ae2c77f08f8/cloudstorage-0.6.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "47eef796174f912f24b83163009af695", "sha256": "3adeb727ff898e3ebc3c17714ab5657bf509f2e9b2fd27e65b4b7a43fde3f32b" }, "downloads": -1, "filename": "cloudstorage-0.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "47eef796174f912f24b83163009af695", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 42855, "upload_time": "2018-10-03T22:57:22", "url": "https://files.pythonhosted.org/packages/53/25/87a14d8e2e937208a8548d53063d1e11b594b2299f681a6ae51fd43d68c2/cloudstorage-0.7.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fc45614e45dcac7d5ba214e7f6d187ef", "sha256": "c13270b1d0804e606030dd1e760ae1ea2c7f5ae19091f39825a554d7722d48b2" }, "downloads": -1, "filename": "cloudstorage-0.7.0.tar.gz", "has_sig": false, "md5_digest": "fc45614e45dcac7d5ba214e7f6d187ef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6296169, "upload_time": "2018-10-03T22:57:28", "url": "https://files.pythonhosted.org/packages/54/f9/45e812600e59aed5476eb28b99613712dd6fc665a6969a173ad45f4710cd/cloudstorage-0.7.0.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "1fda2c59aa8953d66073b29b40e24e68", "sha256": "67a2725d9a04f343f6126b380c4f41288ae8279e2f3e4f3fa595f1b4695da362" }, "downloads": -1, "filename": "cloudstorage-0.8.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1fda2c59aa8953d66073b29b40e24e68", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 49261, "upload_time": "2018-11-06T18:51:26", "url": "https://files.pythonhosted.org/packages/bb/98/f1e36b331ed23758f6bdcf6c881d98f3b2b5df6416638fe7a4396c4f495d/cloudstorage-0.8.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aa9aa2bf69ea8eff078b9b068f7149a8", "sha256": "3be68e4eb745b2a487275ceeba2561561f481ffac42109c9aceaa17194f8e12d" }, "downloads": -1, "filename": "cloudstorage-0.8.0.tar.gz", "has_sig": false, "md5_digest": "aa9aa2bf69ea8eff078b9b068f7149a8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 111344, "upload_time": "2018-11-06T18:51:28", "url": "https://files.pythonhosted.org/packages/79/ec/43e14e94e2f659d222cd16c21ab920afc1b41586aa3ad20e7982181ca7db/cloudstorage-0.8.0.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "8fd6e1574608a640349ec7f7bd2a90c9", "sha256": "92e75d161df28e5cacec92e6a0fadcf5b1fc2ba9971d80122b3214e1ec9547e6" }, "downloads": -1, "filename": "cloudstorage-0.9.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8fd6e1574608a640349ec7f7bd2a90c9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 49920, "upload_time": "2018-11-29T23:21:30", "url": "https://files.pythonhosted.org/packages/33/e4/bdfeabdfec580c4ddb9b6f2cfc3e32b6767308d3cee0cb84a85cf63599f1/cloudstorage-0.9.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "17f370fa8a793d98358aa9ed9f5fa349", "sha256": "d96e0b42f9b84e3cd7af08fb5f6533a1c9528f6c7b0088e32cd5ae3c7c2b0397" }, "downloads": -1, "filename": "cloudstorage-0.9.0.tar.gz", "has_sig": false, "md5_digest": "17f370fa8a793d98358aa9ed9f5fa349", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 110866, "upload_time": "2018-11-29T23:21:32", "url": "https://files.pythonhosted.org/packages/16/1e/822adfc22c8c919078e611b8cf60b7037bd91d53b88bb912ff8758725e32/cloudstorage-0.9.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c7626b5f8df72d1bf08b09434b39d238", "sha256": "7aec272583680cca9b9fb41af7e1db8e205ffb87934b53f04124fd1768b6ba2e" }, "downloads": -1, "filename": "cloudstorage-0.10.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c7626b5f8df72d1bf08b09434b39d238", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 50243, "upload_time": "2019-08-10T16:37:27", "url": "https://files.pythonhosted.org/packages/30/e9/b9d3c798fac14b256c7be17f25e38c1b6a7297f4b113eacebbf4f2f50618/cloudstorage-0.10.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "afd270e80dafd3bf3fa35c02a4240f41", "sha256": "b94e5228d5c6a21f54f0d0476fec121a31243c3553d409b2924e68b0c828571f" }, "downloads": -1, "filename": "cloudstorage-0.10.0.tar.gz", "has_sig": false, "md5_digest": "afd270e80dafd3bf3fa35c02a4240f41", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 111540, "upload_time": "2019-08-10T16:37:29", "url": "https://files.pythonhosted.org/packages/a7/4a/685241258f748fb7c1fb4d2751b230d9d455b70546a6ade897f62f83c3f6/cloudstorage-0.10.0.tar.gz" } ] }