{ "info": { "author": "George Y. Kussumoto", "author_email": "contato@georgeyk.com.br", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Topic :: System :: Distributed Computing" ], "description": "\nLoafer\n======\n\n|PyPI latest| |PyPI Version| |PyPI License| |Docs|\n\n|CI Build Status| |Coverage Status| |Requirements Status|\n|Scrutinizer Code Quality| |Code Climate|\n\n|Olist Sponsor|\n\n----\n\nLoafer is an asynchronous message dispatcher for concurrent tasks processing.\n\n**Currently, only AWS SQS is supported**\n\n\nFeatures:\n\n* Encourages decoupling from message providers and consumers\n* Easy to extend and customize\n* Easy error handling, including integration with sentry\n* Easy to create one or multiple services\n* Generic Handlers\n* Amazon SQS integration\n\n\nIt requires Python 3.5+ and is very experimental at the moment, expect a lot\nof changes until the first major version.\n\n\nExample\n~~~~~~~\n\nA simple message forwader, from ``source-queue`` to ``destination-queue``:\n\n.. code:: python\n\n from loafer.ext.aws.handlers import SQSHandler\n from loafer.ext.aws.routes import SQSRoute\n from loafer.managers import LoaferManager\n\n\n routes = [\n SQSRoute('source-queue', handler=SQSHandler('destination-queue')),\n ]\n\n\n if __name__ == '__main__':\n manager = LoaferManager(routes)\n manager.run()\n\n\nDocumentation\n~~~~~~~~~~~~~\n\nCheck out the latest **Loafer** full documentation at `Read the Docs`_ website.\n\n\n.. _`Read the Docs`: http://loafer.readthedocs.org/\n\n\n\n.. |Docs| image:: https://readthedocs.org/projects/loafer/badge/?version=latest\n :target: http://loafer.readthedocs.org/en/latest/?badge=latest\n.. |CI Build Status| image:: https://circleci.com/gh/georgeyk/loafer.svg?style=svg\n :target: https://circleci.com/gh/georgeyk/loafer\n.. |Coverage Status| image:: https://codecov.io/gh/georgeyk/loafer/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/georgeyk/loafer\n.. |Requirements Status| image:: https://requires.io/github/georgeyk/loafer/requirements.svg?branch=master\n :target: https://requires.io/github/georgeyk/loafer/requirements/?branch=master\n.. |Scrutinizer Code Quality| image:: https://scrutinizer-ci.com/g/georgeyk/loafer/badges/quality-score.png?b=master\n :target: https://scrutinizer-ci.com/g/georgeyk/loafer/?branch=master\n.. |Code Climate| image:: https://codeclimate.com/github/georgeyk/loafer/badges/gpa.svg\n :target: https://codeclimate.com/github/georgeyk/loafer\n.. |PyPI Version| image:: https://img.shields.io/pypi/pyversions/loafer.svg?maxAge=2592000\n :target: https://pypi.python.org/pypi/loafer\n.. |PyPI License| image:: https://img.shields.io/pypi/l/loafer.svg?maxAge=2592000\n :target: https://pypi.python.org/pypi/loafer\n.. |PyPI latest| image:: https://img.shields.io/pypi/v/loafer.svg?maxAge=2592000\n :target: https://pypi.python.org/pypi/loafer\n.. |Olist Sponsor| image:: https://img.shields.io/badge/sponsor-olist-53b5f6.svg?style=flat-square\n :target: http://opensource.olist.com/\n\n\nChangelog:\n----------\n\n1.3.2 (2019-04-27)\n------------------\n\n* Improve message processing (#48 by @lamenezes)\n* Improve error logging (#39 by @wiliamsouza)\n* Refactor in message dispatcher and event-loop shutdown\n* Minor fixes and improvements\n\n1.3.1 (2017-10-22)\n------------------\n\n* Improve performance (#35 by @allisson)\n* Fix requirement versions resolution\n* Minor fixes and improvements\n\n1.3.0 (2017-09-26)\n------------------\n\n* Refactor tasks dispatching, it should improve performance\n* Refactor SQSProvider to ignore HTTP 404 errors when deleting messages\n* Minor fixes and improvements\n\n1.2.1 (2017-09-11)\n------------------\n\n* Bump boto3 version (by @daneoshiga)\n\n1.2.0 (2017-08-15)\n------------------\n\n* Enable provider parameters (boto client options)\n\n1.1.1 (2017-06-14)\n------------------\n\n* Bugfix: fix SNS prefix value in use for topic name wildcard (by @lamenezes)\n\n1.1.0 (2017-05-01)\n------------------\n\n* Added initial contracsts for class-based handlers\n* Added generic handlers: SQSHandler/SNSHander\n* Improve internal error handling\n* Improve docs\n\n1.0.2 (2017-04-13)\n------------------\n\n* Fix sentry error handler integration\n\n1.0.1 (2017-04-09)\n------------------\n\n* Add tox and execute tests for py36\n* Update aiohttp/aiobotocore versions\n* Minor fixes and enhancements\n\n\n1.0.0 (2017-03-27)\n------------------\n\n* Major code rewrite\n* Remove CLI\n* Add better support for error handlers, including sentry/raven\n* Refactor exceptions\n* Add message metadata information\n* Update message lifecycle with handler/error handler return value\n* Enable execution of one service iteration (by default, it still runs \"forever\")\n\n\n0.0.3 (2016-04-24)\n------------------\n\n* Improve documentation\n* Improve package metadata and dependencies\n* Add loafer.aws.message_translator.SNSMessageTranslator class\n* Fix ImportError exceptions for configuration that uses loafer.utils.import_callable\n\n\n0.0.2 (2016-04-18)\n------------------\n\n* Fix build hardcoding tests dependencies\n\n\n0.0.1 (2016-04-18)\n------------------\n\n* Initial release\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/georgeyk/loafer/releases", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/georgeyk/loafer/", "keywords": "asynchronous asyncio message dispatcher tasks microservices", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "loafer", "package_url": "https://pypi.org/project/loafer/", "platform": "", "project_url": "https://pypi.org/project/loafer/", "project_urls": { "Download": "https://github.com/georgeyk/loafer/releases", "Homepage": "https://github.com/georgeyk/loafer/" }, "release_url": "https://pypi.org/project/loafer/1.3.2/", "requires_dist": [ "aiobotocore[boto3] (>=0.9.4)", "cached-property (>=1.3.0)" ], "requires_python": "", "summary": "Asynchronous message dispatcher for concurrent tasks processing", "version": "1.3.2" }, "last_serial": 5197663, "releases": { "0.0.2": [ { "comment_text": "", "digests": { "md5": "bad555514e7c0a10986205f68770a471", "sha256": "5dfd3ffc5c9237a287e6b9d2844cfc7fef73af814a255c7639dc3b91d240be15" }, "downloads": -1, "filename": "loafer-0.0.2-py35-none-any.whl", "has_sig": false, "md5_digest": "bad555514e7c0a10986205f68770a471", "packagetype": "bdist_wheel", "python_version": "py35", "requires_python": null, "size": 15173, "upload_time": "2016-04-18T16:28:42", "url": "https://files.pythonhosted.org/packages/67/56/5803007495281ad75ad3254271cad4c731d42ac2c805101b3218270e8f40/loafer-0.0.2-py35-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b77defbb4157d84efc5fbdb65f3a41d8", "sha256": "59e5b92ad85117761312fc7210d87f6d2a1084b56ec2ed61cedc0dc8a38b44d1" }, "downloads": -1, "filename": "loafer-0.0.2.tar.gz", "has_sig": false, "md5_digest": "b77defbb4157d84efc5fbdb65f3a41d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10792, "upload_time": "2016-04-18T16:28:49", "url": "https://files.pythonhosted.org/packages/a7/16/ae2d1cc2f3b3e14087b500b5912a7133516e97b2a54184db9aab9b87b9a7/loafer-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "ee43f1b19d824d03c2a63f0a4fd8b0d7", "sha256": "6a5aeaa919c06b83c975a929534cea6a2b39d13ea6b880d2f5e72382bab0b16e" }, "downloads": -1, "filename": "loafer-0.0.3-py35-none-any.whl", "has_sig": false, "md5_digest": "ee43f1b19d824d03c2a63f0a4fd8b0d7", "packagetype": "bdist_wheel", "python_version": "py35", "requires_python": null, "size": 14856, "upload_time": "2016-04-24T22:08:26", "url": "https://files.pythonhosted.org/packages/8b/4b/5d058710d9ae5eab7d38468ee2bff3f598ee498e5affe519873786bf2fa0/loafer-0.0.3-py35-none-any.whl" }, { "comment_text": "", "digests": { "md5": "19f3a8c2897c0652dd72ab132e897d03", "sha256": "ef4ea5d76b999a231a688bcdd81a5b75f408dcb77bb17ed10488500739183fc6" }, "downloads": -1, "filename": "loafer-0.0.3.tar.gz", "has_sig": false, "md5_digest": "19f3a8c2897c0652dd72ab132e897d03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11028, "upload_time": "2016-04-24T22:08:31", "url": "https://files.pythonhosted.org/packages/5f/41/abb7b9e1a8e3c084a62e065ce55b4e17cb2c6a14bb51e284340a1190bf76/loafer-0.0.3.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "2367d6e01e2dad50d9afd758bca1f6c8", "sha256": "0c46353d11fcd6da9a7ecdd3f21d088cd362b83945747197d4dbff72c2641252" }, "downloads": -1, "filename": "loafer-1.0.0-py35-none-any.whl", "has_sig": false, "md5_digest": "2367d6e01e2dad50d9afd758bca1f6c8", "packagetype": "bdist_wheel", "python_version": "py35", "requires_python": null, "size": 12075, "upload_time": "2017-03-27T23:03:05", "url": "https://files.pythonhosted.org/packages/5a/e8/b903314485c2cf3e5d78b6771259b7b179b6ba572b11d24906bd517a3ef3/loafer-1.0.0-py35-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a238fbde1dbe8d3ed0622eabd6d0fbb0", "sha256": "bd9d80dd32f86f416865f738ad1201437aa0d74a10d1673b82bf38d603f3d0ea" }, "downloads": -1, "filename": "loafer-1.0.0.tar.gz", "has_sig": false, "md5_digest": "a238fbde1dbe8d3ed0622eabd6d0fbb0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9178, "upload_time": "2017-03-27T23:03:06", "url": "https://files.pythonhosted.org/packages/e8/c1/4991b5e9a938fd6d7c1a62198aa1cb08151aa1bd820a83687238dbd63017/loafer-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "a03056d95a6ae6b8c962348150f186b7", "sha256": "52d1589f4d4819390eddc3c8077d83125a6461288d4d0481ece55c2f81526ed0" }, "downloads": -1, "filename": "loafer-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a03056d95a6ae6b8c962348150f186b7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12213, "upload_time": "2017-04-09T21:32:41", "url": "https://files.pythonhosted.org/packages/75/3e/6fb73b80893013b47f0e34fb1ea2bbe9a744734c8cbd708a0711b2c42c23/loafer-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3fb365147aa91e613cda0f7e3ba87c7c", "sha256": "d667f983b5ba3646ee8c09875fea36989f89fd84e615e2ffea8bf0bb1120acb1" }, "downloads": -1, "filename": "loafer-1.0.1.tar.gz", "has_sig": false, "md5_digest": "3fb365147aa91e613cda0f7e3ba87c7c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9340, "upload_time": "2017-04-09T21:32:42", "url": "https://files.pythonhosted.org/packages/32/49/990ba6f856189282994b94619e9fab2753fd14d1bf714e9c682c5a1b4a48/loafer-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "d18d24f5f0158f15c99687d8d1987b8b", "sha256": "56f53112c1962349e456802e6733280dcbeb3d3ad39be3d3f68427457ee18e46" }, "downloads": -1, "filename": "loafer-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "d18d24f5f0158f15c99687d8d1987b8b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12249, "upload_time": "2017-04-13T15:03:37", "url": "https://files.pythonhosted.org/packages/f3/f1/94e922fcf429f321fb03f2ceaa05b3b15e979e87a3c330f2625e2f33136a/loafer-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0d567fdd5c71f9ffb1bf67d188721828", "sha256": "f62039128cf80c0db145bc77b965675bfe75d49f4a45ebac62f582857eaaba1c" }, "downloads": -1, "filename": "loafer-1.0.2.tar.gz", "has_sig": false, "md5_digest": "0d567fdd5c71f9ffb1bf67d188721828", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9388, "upload_time": "2017-04-13T15:03:39", "url": "https://files.pythonhosted.org/packages/a5/f6/af14ef6ce6d39ad9c6e6a7fa0b57927762a9e321a210650cdc6b0858cfea/loafer-1.0.2.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "c958abd8355f2d123aa2644817806232", "sha256": "7191144b96597c0d8b0b26d0b30e548a249618dd93d425abf7c9976119334b5f" }, "downloads": -1, "filename": "loafer-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c958abd8355f2d123aa2644817806232", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14660, "upload_time": "2017-05-01T18:36:16", "url": "https://files.pythonhosted.org/packages/3e/6d/e4afcd48dc57f6f7205359d63b1b907b063163c6b2e04442e36817339735/loafer-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5c123548c5fade14974b9ffb245a2d98", "sha256": "491d60bbaf250089e8726d6bfd1efb526d8f3e793576c66f13e969a54d469cc0" }, "downloads": -1, "filename": "loafer-1.1.0.tar.gz", "has_sig": false, "md5_digest": "5c123548c5fade14974b9ffb245a2d98", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11293, "upload_time": "2017-05-01T18:36:18", "url": "https://files.pythonhosted.org/packages/2c/03/347b85a8303eb49c680f42ddcb2538ab8dbae7ce8673dddcf330b741b56d/loafer-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "490ebbe63355b92d5375565a74dab753", "sha256": "6f875091de45af0b2410a2817d3a6cd970326e5ed080233198a26016d52db534" }, "downloads": -1, "filename": "loafer-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "490ebbe63355b92d5375565a74dab753", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14795, "upload_time": "2017-06-14T17:27:22", "url": "https://files.pythonhosted.org/packages/21/7e/79c290474967480468e9a8d91030a1a1e7667474ccd1040721217c0ce4fa/loafer-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dfeb9e77ce346fb2b4e6d9c3b8ced33d", "sha256": "371964400de955e3c49fc6ddbbf7c05d050c6d9068e8ba8f1acc8fe367cd912d" }, "downloads": -1, "filename": "loafer-1.1.1.tar.gz", "has_sig": false, "md5_digest": "dfeb9e77ce346fb2b4e6d9c3b8ced33d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11433, "upload_time": "2017-06-14T17:27:25", "url": "https://files.pythonhosted.org/packages/78/be/a3b9bc28b1564d759a7cea59b5489dd4e987c6af0de72ac3cd678c4a0bd3/loafer-1.1.1.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "93e460eb4586adc43e581076f3736e53", "sha256": "1aded4b22baeece0ba8152117c1a989fdde2801ee32c33e18925389dba4029b5" }, "downloads": -1, "filename": "loafer-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "93e460eb4586adc43e581076f3736e53", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15013, "upload_time": "2017-08-16T00:02:36", "url": "https://files.pythonhosted.org/packages/a9/60/66d322fc5ddfecebea4302565804d0c0a43780742345cbd9ee352bc3aa3a/loafer-1.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f4d1c235e819c150369220cc6c15a67b", "sha256": "1dc1a2855837e3684dc81d08e4ed9d8aa9bfc6f1ebd72a791a466a61568bd6d8" }, "downloads": -1, "filename": "loafer-1.2.0.tar.gz", "has_sig": false, "md5_digest": "f4d1c235e819c150369220cc6c15a67b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11641, "upload_time": "2017-08-16T00:02:37", "url": "https://files.pythonhosted.org/packages/a2/f2/f9ea7923ceb14595ecef3cc03b408f9a522385e8e58f7e19963af23683ef/loafer-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "e2c41bc4ac2cb67fc43ea6ee3b0ac10e", "sha256": "ae8429577aae4970d830242994e1c8555395e2a79a430861de275672658316ed" }, "downloads": -1, "filename": "loafer-1.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "e2c41bc4ac2cb67fc43ea6ee3b0ac10e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15103, "upload_time": "2017-09-11T20:13:00", "url": "https://files.pythonhosted.org/packages/e7/0f/82f980351c5d6ac1b1ca7dc03acab6b27f7f28b41bb685f9426ea2526f4f/loafer-1.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "552cf95796bc4a61f71f18acdd0ef432", "sha256": "aff5301f6ffd07cbc530adff7ec571ff02484cbdfece3902fc18440c476dff34" }, "downloads": -1, "filename": "loafer-1.2.1.tar.gz", "has_sig": false, "md5_digest": "552cf95796bc4a61f71f18acdd0ef432", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11747, "upload_time": "2017-09-11T20:13:04", "url": "https://files.pythonhosted.org/packages/24/7a/4b9a28c810c2829b3277714e08c0aafa9e23fab235cb8380b7e893375b78/loafer-1.2.1.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "9aaedd4613c5ed9bba819096b755e6cf", "sha256": "340923b94b5ddcdd8789c67246f2189701a28275f2ff38003be1a063f4a73aa6" }, "downloads": -1, "filename": "loafer-1.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9aaedd4613c5ed9bba819096b755e6cf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15428, "upload_time": "2017-09-27T00:43:13", "url": "https://files.pythonhosted.org/packages/91/1c/a31e0655f07f5b0150038f57df10b968d7b00acdf723e51bce603dabe4f0/loafer-1.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d79e0882ff16d71f03547989364ca94d", "sha256": "ba9f98aacb6a619bc3a6169eddd22c5c8ab3591457a23314224b91f7955cc4c7" }, "downloads": -1, "filename": "loafer-1.3.0.tar.gz", "has_sig": false, "md5_digest": "d79e0882ff16d71f03547989364ca94d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12051, "upload_time": "2017-09-27T00:43:15", "url": "https://files.pythonhosted.org/packages/d9/d9/68c31952fb474b440b37208e902666e499eb8a36eac203b82c43ea480f73/loafer-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "9361971dcee55f9fcde700647004e3f5", "sha256": "8d42d16da02ac745e8e8d26f5d3bfc35c54a2ea968309f89f98ad145fe49aa23" }, "downloads": -1, "filename": "loafer-1.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "9361971dcee55f9fcde700647004e3f5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15572, "upload_time": "2017-10-22T20:26:37", "url": "https://files.pythonhosted.org/packages/6f/ba/682afc90cc85256f88639ec86f234b5e1c0981c546e39c7b4079fe584c96/loafer-1.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2e1a0afee8364abd8692a57206d2b33b", "sha256": "e3bebb61bb7378d05f47fea804c6cd7ca8e32961b5d7a2105af737e4ed10d539" }, "downloads": -1, "filename": "loafer-1.3.1.tar.gz", "has_sig": false, "md5_digest": "2e1a0afee8364abd8692a57206d2b33b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12234, "upload_time": "2017-10-22T20:26:39", "url": "https://files.pythonhosted.org/packages/18/d7/533f813b7a3c9e01ffcfef236523737a7d694f45d8b91663cd38e6949a49/loafer-1.3.1.tar.gz" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "58658ae02e9774bf6aa2d92e0a1394e1", "sha256": "6e7575e6d6c97b6aeae09872d2fd07bf7dc1e23f00379c49d34e87c3fc79fb41" }, "downloads": -1, "filename": "loafer-1.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "58658ae02e9774bf6aa2d92e0a1394e1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13173, "upload_time": "2019-04-27T19:56:53", "url": "https://files.pythonhosted.org/packages/83/ab/efbc47c7a70f1537c878bddb6e8eeca265f6f0a1df17f09a8b85ac293fad/loafer-1.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3b27dccb4165cc20e115e22d3c7da215", "sha256": "91326dfea0afff6186e6667362f605e4759ebb35ec7fbbf6f0b983aadc1b940e" }, "downloads": -1, "filename": "loafer-1.3.2.tar.gz", "has_sig": false, "md5_digest": "3b27dccb4165cc20e115e22d3c7da215", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12833, "upload_time": "2019-04-27T19:56:55", "url": "https://files.pythonhosted.org/packages/ca/7c/486fdc73c5d1a323abde94364fec57bf5784568245b3fb1bf7adf279c847/loafer-1.3.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "58658ae02e9774bf6aa2d92e0a1394e1", "sha256": "6e7575e6d6c97b6aeae09872d2fd07bf7dc1e23f00379c49d34e87c3fc79fb41" }, "downloads": -1, "filename": "loafer-1.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "58658ae02e9774bf6aa2d92e0a1394e1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13173, "upload_time": "2019-04-27T19:56:53", "url": "https://files.pythonhosted.org/packages/83/ab/efbc47c7a70f1537c878bddb6e8eeca265f6f0a1df17f09a8b85ac293fad/loafer-1.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3b27dccb4165cc20e115e22d3c7da215", "sha256": "91326dfea0afff6186e6667362f605e4759ebb35ec7fbbf6f0b983aadc1b940e" }, "downloads": -1, "filename": "loafer-1.3.2.tar.gz", "has_sig": false, "md5_digest": "3b27dccb4165cc20e115e22d3c7da215", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12833, "upload_time": "2019-04-27T19:56:55", "url": "https://files.pythonhosted.org/packages/ca/7c/486fdc73c5d1a323abde94364fec57bf5784568245b3fb1bf7adf279c847/loafer-1.3.2.tar.gz" } ] }