{ "info": { "author": "Dan LaMotte", "author_email": "lamotte85@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Utilities" ], "description": "krankshaft\n==========\n\n.. image:: http://unmaintained.tech/badge.svg\n :target: http://unmaintained.tech/\n :alt: No Maintenance Intended\n\nA Web API Framework.\n\nCurrently only supports Django, but designed to work for\nother frameworks with some modification. At some point, other framework support\nwill be built in directly.\n\n.. image:: https://secure.travis-ci.org/dlamotte/krankshaft.png\n :target: http://travis-ci.org/dlamotte/krankshaft\n\n.. image:: https://coveralls.io/repos/dlamotte/krankshaft/badge.png\n :target: https://coveralls.io/r/dlamotte/krankshaft\n\n.. image:: https://img.shields.io/pypi/v/krankshaft.svg\n :target: https://pypi.python.org/pypi/krankshaft\n\n.. image:: https://d2weczhvl823v0.cloudfront.net/dlamotte/krankshaft/trend.png\n :alt: Bitdeli badge\n :target: https://bitdeli.com/free\n\nPurpose\n-------\n\nkrankshaft was designed to make the frustrating and unnecessarily complicated\nparts of Web APIs simple and beautiful by default. It's built in layers that\nallow the programmer to easily opt-in/out of. From \"Expose this model via\na web api and handle all the details\" to \"hands off my API, I'll opt-into the\nbasics as I need them\".\n\nkrankshaft is meant to be a framework to build Web APIs and grow with your\napplication.\n\nGoals:\n\n- simple and concise\n- keep the simple things simple\n- enable complex APIs without getting in the way\n- HTTP return codes are important, dont abstract them away\n- fail early\n- performance\n- no global state\n- easily extendable\n- suggests a pattern, but doesnt restrict you to it\n- secure by default\n\nExample\n-------\n\nThis is just a suggested file structure, there is no limitation here.\n\nIn ``app/apiv1.py``::\n\n from django.conf import settings\n from krankshaft import API\n\n apiv1 = API('v1', debug=settings.DEBUG)\n\nIn ``app/views.py``::\n\n from app.apiv1 import apiv1 as api\n\n @api\n def view(request):\n return api.serialize(request, 200, {\n 'key': 'value'\n })\n\nAt this point, you'll still need to wire up the common routing for your\nframework. In Django, it looks something like this:\n\nIn ``app/urls.py``::\n\n from django.conf.urls import patterns, include, url\n\n urlpatterns += patterns('app.views',\n url('^view/$', 'view'),\n )\n\nResource example\n----------------\n\nIn ``app/api.py``::\n\n from django.conf import settings\n\n api = API('v1', debug=settings.DEBUG)\n\n @api(url='^model/(?P\\d+)/$')\n class ModelResource(object):\n def get(self, request, id):\n ...\n\n def put(self, request, id):\n ...\n\n def delete(self, request, id):\n ...\n\nIn ``app/urls.py``::\n\n from django.conf.urls import patterns, include, url\n from .api import api\n\n urlpatterns = patterns('',\n url('^api/', include(api.urls)),\n )\n\nThis enables clients to make GET/PUT/DELETE requests to the endpoint::\n\n /api/v1/model//\n\nIf a POST is made, the client will receive the proper 405 response with the\nAllow header set to GET, PUT, DELETE.\n\nYou can customize resources even more. You can define your own routing scheme::\n\n class ModelResource(object):\n ...\n def route(self, request, id):\n # this is approximately the default\n try:\n view = getattr(self, request.method.lower())\n\n except AttributeError:\n return api.response(request, 405)\n\n else:\n return view(request, id)\n\nOr setup urls and multiple routes::\n\n class ModelResource(object):\n ...\n\n def get_list(self, request):\n ...\n\n def post_list(self, request):\n ...\n\n def put_list(self, request):\n ...\n\n def delete_list(self, request):\n ...\n\n def query(self, request):\n if request.method != 'POST':\n return api.response(request, 405, Allow='POST')\n ...\n\n def route(self, suffix, request, *args, **kwargs):\n # this is approximately the default\n try:\n view = getattr(self, request.method.lower() + suffix)\n\n except AttributeError:\n return api.response(request, 405)\n\n else:\n return view(request, *args, **kwargs)\n\n def route_list(self, request):\n return self.route('_list', request)\n\n def route_object(self, request, id):\n return self.route('', request, id)\n\n @property\n def urls(self):\n from django.conf.urls import patterns, url\n return patterns('', [\n url(r'^model/$', api.wrap(self.route_list)),\n url(r'^model/query/$', api.wrap(self.query)),\n url(r'^model/(?P\\d+)/$', api.wrap(self.route_object)),\n ])\n\nOr (instead of building your own) use the one built in::\n\n from krankshaft.resource import DjangoModelResource\n from app.models import Model\n from app.api import api\n\n @api\n class ModelResource(DjangoModelResource):\n model = Model\n\nThis resource implementation should be ideal for _most_ situations, but you're\nfree to reimplement parts or all of it. It's meant only as a pattern you can\nfollow and is not required by the framework at all.\n\nWhat works\n----------\n\n- simple authentication/authorization schemes (not OAuth at the moment)\n- serialization of primitive types respecting HTTP Accept Header\n- abort (raise-like http response return)\n- throttling\n- resource routing\n- query application (ie: ``?field__startswith=something&order_by=field``)\n with pagination support\n- deep data validation\n- Django ORM based Model Resource (with model serialization/deserialization)\n - Optimistic Concurrency Control option (``version_field``)\n\nInstallation\n------------\n\nAdd ``krankshaft`` to ``INSTALLED_APPS``::\n\n INSTALLED_APPS = (\n ...\n 'krankshaft',\n )\n\nTodo\n----\n\n- auto-documenting based on doc strings (plus bootstrap interactive UI)\n- caching\n- easy-etag support\n- flask support\n- OAuth (1 and 2)\n\nResources\n---------\n\n- `Code `_\n- `Docs `_\n- `Issues `_\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/dlamotte/krankshaft", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "krankshaft", "package_url": "https://pypi.org/project/krankshaft/", "platform": "", "project_url": "https://pypi.org/project/krankshaft/", "project_urls": { "Homepage": "https://github.com/dlamotte/krankshaft" }, "release_url": "https://pypi.org/project/krankshaft/0.3.18/", "requires_dist": null, "requires_python": "", "summary": "A Web API Framework (with Django, ...)", "version": "0.3.18" }, "last_serial": 3691765, "releases": { "0.2": [ { "comment_text": "", "digests": { "md5": "a154397083e606b4e3cf913568cb844f", "sha256": "54984ea2c9565afb2dbf3d2ec17486ac846543be2d8a588584a34951dbca295c" }, "downloads": -1, "filename": "krankshaft-0.2.tar.gz", "has_sig": false, "md5_digest": "a154397083e606b4e3cf913568cb844f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 52699, "upload_time": "2013-11-20T14:21:13", "url": "https://files.pythonhosted.org/packages/a5/ad/f2f71abd2bbb5024e067bde10fd45c674d55b3ced97ab0019d671a96856a/krankshaft-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "7698cb8cb55ba515c89674ff31cad08e", "sha256": "db5752d7867cf1f927562e9fdda25ac09bd0250add441ae1625b081df5dfc60d" }, "downloads": -1, "filename": "krankshaft-0.2.1.tar.gz", "has_sig": false, "md5_digest": "7698cb8cb55ba515c89674ff31cad08e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 52708, "upload_time": "2013-11-20T14:27:24", "url": "https://files.pythonhosted.org/packages/0b/df/12871ea80fd8046469689c09e6971f3d0c6312ed833dcbdad5022349defc/krankshaft-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "f7c066b3f76a6a139285b43ad2756b52", "sha256": "43f5d4c776f960f403c66706a916ad96069b671996fe200128ecf2bee5b24abe" }, "downloads": -1, "filename": "krankshaft-0.2.2.tar.gz", "has_sig": false, "md5_digest": "f7c066b3f76a6a139285b43ad2756b52", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53313, "upload_time": "2013-11-20T15:27:26", "url": "https://files.pythonhosted.org/packages/cc/ed/c25fb4b6b95f2a2539e9b003f1ade3be4c9f11a86024a384de09f91a9c19/krankshaft-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "eb1617c58809ed651eb340e0100dffbb", "sha256": "d0c800518be18a4ad4b8c8de830a3b4afc6deaf4d8bd52425e8565b175d90728" }, "downloads": -1, "filename": "krankshaft-0.2.3.tar.gz", "has_sig": false, "md5_digest": "eb1617c58809ed651eb340e0100dffbb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53583, "upload_time": "2013-11-21T21:29:38", "url": "https://files.pythonhosted.org/packages/23/fb/119f47683c79e84af8deba371f487efd5eca217449c51b1211c56b65e758/krankshaft-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "3efcf591390a91394031a81c179ec5c2", "sha256": "2729addda698c7fdb66b72dbb5b312df1677978002aed2777f29b9c04c60e1e9" }, "downloads": -1, "filename": "krankshaft-0.2.4.tar.gz", "has_sig": false, "md5_digest": "3efcf591390a91394031a81c179ec5c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53849, "upload_time": "2013-11-21T22:57:55", "url": "https://files.pythonhosted.org/packages/9e/ee/2d10334c2472b3f9bc72cf543be9039b32b68621f08df459650f40cfa8db/krankshaft-0.2.4.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "f517adc036cd5430e5ac5ff1ca5cabfd", "sha256": "9ed29712dedbd65eb7a1fa97794e7e7230504efe982b3437d448bbc9f1a11d19" }, "downloads": -1, "filename": "krankshaft-0.2.6.tar.gz", "has_sig": false, "md5_digest": "f517adc036cd5430e5ac5ff1ca5cabfd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56544, "upload_time": "2013-11-25T21:36:03", "url": "https://files.pythonhosted.org/packages/2b/95/b763e05f87a107138d9115b8090702157985548496f21ed123107057a789/krankshaft-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "c2728a861209331a554d9339d619dbee", "sha256": "03c31b44e4831113fc1e6403c71bdc15c276ff25d7e06b22423fa4f509d671fd" }, "downloads": -1, "filename": "krankshaft-0.2.7.tar.gz", "has_sig": false, "md5_digest": "c2728a861209331a554d9339d619dbee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57060, "upload_time": "2013-11-26T17:24:49", "url": "https://files.pythonhosted.org/packages/12/77/6d18b2d149c64ec8e717f8dec9a6e03578b2d31c06a6e39b981ea813f63a/krankshaft-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "c9d353a581c53522cb45086c4e53079e", "sha256": "209fdc297db737c607c0f236a44d0fd23ed54ddc6af3cb1362c874e72947e313" }, "downloads": -1, "filename": "krankshaft-0.2.8.tar.gz", "has_sig": false, "md5_digest": "c9d353a581c53522cb45086c4e53079e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58499, "upload_time": "2013-12-03T16:05:57", "url": "https://files.pythonhosted.org/packages/10/19/39a29a99ff7b1599b8573cc0751f92d1c5acb5b14e4be341ee0dc468b702/krankshaft-0.2.8.tar.gz" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "98e2686b02c7bf69326c726a5b5c45bb", "sha256": "a0bb19bea82ddc8de7c2c4f2396382c6baac7281021516bcf775b3ce30bd367d" }, "downloads": -1, "filename": "krankshaft-0.2.9.tar.gz", "has_sig": false, "md5_digest": "98e2686b02c7bf69326c726a5b5c45bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59740, "upload_time": "2013-12-03T22:13:30", "url": "https://files.pythonhosted.org/packages/bf/6f/c8da4e0a9cec766cb2a38cec7229ce83c54ac9bedf1bac5dc097900ec938/krankshaft-0.2.9.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "02cf8c7bd76620b975576ab0cf365285", "sha256": "1f4343e9fb5b9752a3b85c5b81dae883ce7c5e82affa428872faf77095c7c73d" }, "downloads": -1, "filename": "krankshaft-0.3.0.tar.gz", "has_sig": false, "md5_digest": "02cf8c7bd76620b975576ab0cf365285", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59821, "upload_time": "2013-12-04T21:59:27", "url": "https://files.pythonhosted.org/packages/43/76/37875a97aab6030b6f6a34b35c06552bca2bf67b0c5277bbe9f4dbad752d/krankshaft-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "a33bd086b797ff80ea453ebfc6f3530e", "sha256": "3f6431cbc3b05bc3988bbb800ba72cb86faf7fc621053d2b573f507ebb20d13f" }, "downloads": -1, "filename": "krankshaft-0.3.1.tar.gz", "has_sig": false, "md5_digest": "a33bd086b797ff80ea453ebfc6f3530e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60534, "upload_time": "2013-12-18T16:18:26", "url": "https://files.pythonhosted.org/packages/8a/a3/1a0798c337b1b6b3f9d9c6326e0fccc110387092e5bff8bc3b53e8ad9153/krankshaft-0.3.1.tar.gz" } ], "0.3.10": [ { "comment_text": "", "digests": { "md5": "f75aeb46834ac0c14b4a761fd7c05f1d", "sha256": "a30f04c6b20b77741b24847f7f3d26026f85589a28448409b7e5d7444539382c" }, "downloads": -1, "filename": "krankshaft-0.3.10.tar.gz", "has_sig": false, "md5_digest": "f75aeb46834ac0c14b4a761fd7c05f1d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 107050, "upload_time": "2014-10-15T19:33:51", "url": "https://files.pythonhosted.org/packages/50/ec/feaa86f974fa4707f1eed25a3c449bb67344beab800a7cde45561c48c7f3/krankshaft-0.3.10.tar.gz" } ], "0.3.11": [ { "comment_text": "", "digests": { "md5": "866640e014e2590320b84380568b25c9", "sha256": "90e8a11cb310550fdf2b127eab95b999cb1984dcc325860c9f01ac58f780642a" }, "downloads": -1, "filename": "krankshaft-0.3.11.tar.gz", "has_sig": false, "md5_digest": "866640e014e2590320b84380568b25c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 107170, "upload_time": "2014-11-25T21:09:51", "url": "https://files.pythonhosted.org/packages/85/d6/a61a2b084d02130bdd4506a39aed68a2c659ad914ae16cc5ddd71a007d9b/krankshaft-0.3.11.tar.gz" } ], "0.3.12": [ { "comment_text": "", "digests": { "md5": "d3775bb2f862574a78b804693aa5c5c4", "sha256": "8167c407acf0fd471fa594b45bc2b926d510995c3ee288a0f9ed8257ce962182" }, "downloads": -1, "filename": "krankshaft-0.3.12.tar.gz", "has_sig": false, "md5_digest": "d3775bb2f862574a78b804693aa5c5c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 107181, "upload_time": "2014-11-26T16:50:35", "url": "https://files.pythonhosted.org/packages/10/a0/809aa342ef7ad9a9fd2e4ae798fdb2fc34e794e6a08b096d798fd4076836/krankshaft-0.3.12.tar.gz" } ], "0.3.13": [ { "comment_text": "", "digests": { "md5": "d54591af1356d736a1d3b8a914b551f0", "sha256": "1f7fe08b644b984db10718a8a3a25a2d4fe4ae90c6bd58a7a5ccb163c0b90123" }, "downloads": -1, "filename": "krankshaft-0.3.13.tar.gz", "has_sig": false, "md5_digest": "d54591af1356d736a1d3b8a914b551f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 107369, "upload_time": "2014-12-18T16:48:45", "url": "https://files.pythonhosted.org/packages/f8/10/d84e29f62afd68a0b26d34783d50d397c63986176031943988dec82cb7e2/krankshaft-0.3.13.tar.gz" } ], "0.3.14": [ { "comment_text": "", "digests": { "md5": "314caa61c77d4ceac6363553caf8429e", "sha256": "591d8882b9e51d2933ae50cb0aadb2b6b30e0450614936c6e0f356e64a80223a" }, "downloads": -1, "filename": "krankshaft-0.3.14.tar.gz", "has_sig": false, "md5_digest": "314caa61c77d4ceac6363553caf8429e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 107331, "upload_time": "2015-10-09T20:34:13", "url": "https://files.pythonhosted.org/packages/b0/92/2be575ffb85d8f084f2b3741254aaee415f5a1d51baef71d16248e1e4f7b/krankshaft-0.3.14.tar.gz" } ], "0.3.15": [ { "comment_text": "", "digests": { "md5": "c08d4143efe5087feed74f059b661448", "sha256": "3f2bcf20a7d74b4735a33cdb9d282733e9b76e0d94ff9f11b244c88e3aea8415" }, "downloads": -1, "filename": "krankshaft-0.3.15.tar.gz", "has_sig": false, "md5_digest": "c08d4143efe5087feed74f059b661448", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 107472, "upload_time": "2016-03-17T21:45:01", "url": "https://files.pythonhosted.org/packages/b0/c1/b3838efc159e5d94a92d6ae5a199283c0fb2ae53c655d6d81e3393ad0ff7/krankshaft-0.3.15.tar.gz" } ], "0.3.16": [ { "comment_text": "", "digests": { "md5": "c0d9dfadcad177bdaf729e9e03eaf0e2", "sha256": "69c07dfe9efa73cfd5c63b62415473b736a009c7f0a7cc4bf9119d8ae1a19658" }, "downloads": -1, "filename": "krankshaft-0.3.16.tar.gz", "has_sig": false, "md5_digest": "c0d9dfadcad177bdaf729e9e03eaf0e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 107525, "upload_time": "2016-03-18T22:19:35", "url": "https://files.pythonhosted.org/packages/5f/ba/a0b96874294277c919924660f9839e7b128eba514c2df2c825912be89088/krankshaft-0.3.16.tar.gz" } ], "0.3.17": [ { "comment_text": "", "digests": { "md5": "2ba53daf9f4105839019ebc493c7208a", "sha256": "8358b60bb4f9647f80e04d4ea1ee9c4f3031d842fa9a537e564c12d9b1673673" }, "downloads": -1, "filename": "krankshaft-0.3.17.tar.gz", "has_sig": false, "md5_digest": "2ba53daf9f4105839019ebc493c7208a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 107445, "upload_time": "2016-03-28T15:12:21", "url": "https://files.pythonhosted.org/packages/c6/a4/052d5b32ee6bf016fee3908faac768a035ab0517d7e6c6e96890418698bd/krankshaft-0.3.17.tar.gz" } ], "0.3.18": [ { "comment_text": "", "digests": { "md5": "ae03ee32e684d0de5ba9129c62823ad4", "sha256": "346b28b39735dd597d3eb854e9ca8dcb80c2db7ce6039b4e46aec6d2ca40ce26" }, "downloads": -1, "filename": "krankshaft-0.3.18.tar.gz", "has_sig": false, "md5_digest": "ae03ee32e684d0de5ba9129c62823ad4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 118429, "upload_time": "2018-03-21T14:21:37", "url": "https://files.pythonhosted.org/packages/ad/33/0984be6758aa91c382b596779011491eda4f375444f3b1626f1442b4864f/krankshaft-0.3.18.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "a6b04522951278d88d32012a07d2d5b8", "sha256": "ccb9f240d4fd4520793e5eff5e17c1182e245dbee9e15e3bd6adf8951102387c" }, "downloads": -1, "filename": "krankshaft-0.3.2.tar.gz", "has_sig": false, "md5_digest": "a6b04522951278d88d32012a07d2d5b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 103900, "upload_time": "2013-12-18T16:27:24", "url": "https://files.pythonhosted.org/packages/e4/fe/be0545fa30ff228a773e8d5be327af6b6dad2939eb42769a3352a89f1868/krankshaft-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "a83d30045fc7c2cf01833586274dbbba", "sha256": "5ecc0b8c5c8f96159de924f2d58a7d6e5265e197ed8a54d4a7e35c4b69311f6a" }, "downloads": -1, "filename": "krankshaft-0.3.3.tar.gz", "has_sig": false, "md5_digest": "a83d30045fc7c2cf01833586274dbbba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 106752, "upload_time": "2014-02-20T18:25:09", "url": "https://files.pythonhosted.org/packages/28/97/80292eabe792885e4047cdee92b3a021f0394b846dc5c7e3fef3d42dba5a/krankshaft-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "9cd77ac0920f745fcfd8fbfb0f84fc5f", "sha256": "6394f56569a52f19c0d9d09298f7cf82a12d0156d282b30a1c94e47564eafee9" }, "downloads": -1, "filename": "krankshaft-0.3.4.tar.gz", "has_sig": false, "md5_digest": "9cd77ac0920f745fcfd8fbfb0f84fc5f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 106767, "upload_time": "2014-02-24T19:01:41", "url": "https://files.pythonhosted.org/packages/07/e2/af4393444f4eca7f9523f6b14cbaccc760fc95b9d56a5b346eccfb30aac8/krankshaft-0.3.4.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "cad08a38992648a8ae95f578a91489e6", "sha256": "07ca87f02590eea54c0763d071615b8cff8a7d3bdbaf997361822a8863b6090d" }, "downloads": -1, "filename": "krankshaft-0.3.5.tar.gz", "has_sig": false, "md5_digest": "cad08a38992648a8ae95f578a91489e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 106752, "upload_time": "2014-02-24T19:05:15", "url": "https://files.pythonhosted.org/packages/8f/45/53a447a1f67fadc8f88c3e0b76ae57d913c7bf300ded6238a37cd7dcd3c3/krankshaft-0.3.5.tar.gz" } ], "0.3.6": [ { "comment_text": "", "digests": { "md5": "50f144c4c73c768616df5a1ec98a7d9a", "sha256": "84ffb2e73d5b2bffae291f7e1eb4be956eed63ef0be9d250459f238721120200" }, "downloads": -1, "filename": "krankshaft-0.3.6.tar.gz", "has_sig": false, "md5_digest": "50f144c4c73c768616df5a1ec98a7d9a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 106794, "upload_time": "2014-03-07T19:48:37", "url": "https://files.pythonhosted.org/packages/f4/35/995ac7de40e52f601690908c2e218a89b7251f8cf71e145d1ce89e660f6a/krankshaft-0.3.6.tar.gz" } ], "0.3.7": [ { "comment_text": "", "digests": { "md5": "c86150ad457909eda4de52ca10116ba2", "sha256": "767ce4fb514529a826802e90a1aa32caf675e4313ffb92370b3943a9d0bdfc0c" }, "downloads": -1, "filename": "krankshaft-0.3.7.tar.gz", "has_sig": false, "md5_digest": "c86150ad457909eda4de52ca10116ba2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 81683, "upload_time": "2014-05-17T20:01:36", "url": "https://files.pythonhosted.org/packages/a1/f8/40020124423ffcea63db34cb8f20e0eeb4ea4fcdc62047e4a16a9460c019/krankshaft-0.3.7.tar.gz" } ], "0.3.8": [ { "comment_text": "", "digests": { "md5": "d839b89dd8107c81ec1e58a9fa34d6eb", "sha256": "ea62fd982dc51f6ee3350c42f18be363b011be83870de0354cca4e8e058ce585" }, "downloads": -1, "filename": "krankshaft-0.3.8.tar.gz", "has_sig": false, "md5_digest": "d839b89dd8107c81ec1e58a9fa34d6eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 81733, "upload_time": "2014-05-17T20:21:14", "url": "https://files.pythonhosted.org/packages/2d/28/2fea1f268f9f87575aa1461a49b7804554ff4d8240d964234545768fe759/krankshaft-0.3.8.tar.gz" } ], "0.3.9": [ { "comment_text": "", "digests": { "md5": "4df89167267fcb49237d22e4a31039ce", "sha256": "3d8083a623deaf3169e60dda92affa84074b4db41ca294fa4bd9356a5a7843cb" }, "downloads": -1, "filename": "krankshaft-0.3.9.tar.gz", "has_sig": false, "md5_digest": "4df89167267fcb49237d22e4a31039ce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 107004, "upload_time": "2014-10-15T19:07:55", "url": "https://files.pythonhosted.org/packages/a1/a8/c3da92d17a0f427e916534309f7a5b07b0a4b16069e8e7011c19b70f07a1/krankshaft-0.3.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ae03ee32e684d0de5ba9129c62823ad4", "sha256": "346b28b39735dd597d3eb854e9ca8dcb80c2db7ce6039b4e46aec6d2ca40ce26" }, "downloads": -1, "filename": "krankshaft-0.3.18.tar.gz", "has_sig": false, "md5_digest": "ae03ee32e684d0de5ba9129c62823ad4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 118429, "upload_time": "2018-03-21T14:21:37", "url": "https://files.pythonhosted.org/packages/ad/33/0984be6758aa91c382b596779011491eda4f375444f3b1626f1442b4864f/krankshaft-0.3.18.tar.gz" } ] }