{ "info": { "author": "Tim Savage", "author_email": "tim@savage.company", "bugtrack_url": null, "classifiers": [], "description": "=======\nOdinWeb\n=======\n\nA Restful API framework for Python that uses Odin Resources with native support for `Swagger `_\nand an integrated Swagger-UI.\n\n.. image:: https://img.shields.io/pypi/l/odinweb.svg?style=flat\n :target: https://pypi.python.org/pypi/odinweb/\n :alt: License\n\n.. image:: https://img.shields.io/pypi/v/odinweb.svg?style=flat\n :target: https://pypi.python.org/pypi/odinweb/\n\n.. image:: https://img.shields.io/travis/python-odin/odinweb/master.svg?style=flat\n :target: https://travis-ci.org/python-odin/odinweb\n :alt: Travis CI Status\n\n.. image:: https://codecov.io/gh/python-odin/odinweb/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/python-odin/odinweb\n :alt: Code cov\n\n.. image:: https://landscape.io/github/python-odin/odinweb/master/landscape.svg?style=flat\n :target: https://landscape.io/github/python-odin/odinweb/master\n :alt: Code Health\n\n.. image:: https://img.shields.io/requires/github/python-odin/odinweb.svg?style=flat\n :target: https://requires.io/github/python-odin/odinweb/requirements/?branch=master\n :alt: Requirements Status\n\n.. image:: https://img.shields.io/badge/gitterim-timsavage.odin-brightgreen.svg?style=flat\n :target: https://gitter.im/timsavage/odin\n :alt: Gitter.im\n\nThe initial development effort currently supports:\n\n- `Flask `_\n- `Bottle `_\n- `Django `_ - Odin/Django integration is already implemented with\n `baldr `_. Odin Web is an evolution of the design of baldr. Baldr still includes\n other integration between django and odin, once merged Baldr will be depreciated\n\nWith the following frameworks to be included once a stable API is established:\n\n- `Retort `_ - A Flask/Bottle like framework for AWS Lambda/API Gateway\n\nThere are no plans at this point for other libraries although I'm open to suggestions/contributions. The effort\nrequired to integrate other libraries is minimal as Odin Web was designed to be agnostic of the framework it is\nrunning within.\n\n.. note::\n Odin Web is being developed very much with a view to dropping support for Python 2.7 in the future, back-ported\n versions of several Python 3.x features are utilised in the design (eg :py:mod:`enum` :py:mod:`http`).\n\n\nInstallation\n============\n\nAn early Alpha release is on PyPI, the API has however undergone significant changes since this was first put out the\nbest option is to checkout a tagged release from GitHub until a beta is ready that will solidify the API\n\nInstall the core library::\n\n git clone git@github.com:python-odin/odinweb.git\n cd odinweb\n python setup.py install\n\nInstall your preferred web framework::\n\n git clone git@github.com:python-odin/odinweb.flask.git\n # or\n git clone git@github.com:python-odin/odinweb.bottle.git\n # or\n git clone git@github.com:python-odin/odinweb.django.git\n\n # Change into the appropriate directory then\n python setup.py install\n\n\nQuickstart\n==========\n\nOdin Web is very much oriented around Resources so first define your resources::\n\n import odin\n\n class User(odin.Resource):\n \"\"\"\n User resource\n \"\"\"\n id = odin.IntegerField()\n username = odin.StringField()\n first_name = odin.StringField()\n last_name = odin.StringField()\n email = odin.EmailField()\n\n\nNext define your API::\n\n from odinweb import api\n\n USERS = [\n User(1, 'pimpstar24', 'Bender', 'Rodreges', 'bender@ilovebender.com'),\n User(2, 'zoidberg', 'Zoidberg', '', 'zoidberg@freemail.web'),\n User(3, 'amylove79', 'Amy', 'Wong', 'awong79@marslink.web'),\n ]\n USER_ID = len(USERS)\n\n\n class UserApi(api.ResourceApi):\n resource = User\n tags = ['user']\n\n @api.listing\n def get_user_list(self, request, offset, limit):\n return USERS[offset:offset+limit], len(USERS)\n\n @api.create\n def create_user(self, request, user):\n global USER_ID\n\n # Add user to list\n USER_ID += 1\n user.id = USER_ID\n USERS.append(user)\n\n return user\n\n @api.detail\n def get_user(self, request, resource_id):\n \"\"\"\n Get a user object\n \"\"\"\n for user in USERS:\n if user.id == resource_id:\n return user\n\n raise api.Error.from_status(api.HTTPStatus.NOT_FOUND)\n\n @api.delete\n def delete_user(self, request, resource_id):\n for idx, user in enumerate(USERS):\n if user.id == resource_id:\n USERS.remove(user)\n return api.create_response(200)\n\n raise api.Error.from_status(api.HTTPStatus.NOT_FOUND)\n\nThis defines an API for listing, fetching and creating a users.\n\nFinally hookup to your web framework, in this case Flask and enable swagger spec::\n\n from flask import Flask\n from odinweb.flask import ApiBlueprint\n from odinweb.swagger import SwaggerSpec\n\n app = flask.Flask(__name__)\n\n app.register_blueprint(\n ApiBlueprint(\n # Use an API version\n api.ApiVersion(\n SwaggerSpec('Flask Example API', enable_ui=True), # Support for Swagger!\n UserApi(),\n ),\n debug_enabled=True, # Enable debug output\n ),\n )\n\nStart the flask app and you can browse to the swagger UI to try out the API::\n\n http://localhost:5000/api/v1/swagger/ui\n\n\n\nCORS\n====\n\nTo enable CORS your API Interface (for Flask this is `ApiBlueprint`) needs to\nbe wrapped with the CORS wrapper eg::\n\n from flask import Flask\n from odinweb.flask import ApiBlueprint\n from odinweb.cors import CORS, AnyOrigin\n\n app = flask.Flask(__name__)\n\n app.register_blueprint(\n CORS(\n ApiBlueprint(\n api.ApiVersion(\n UserApi()\n )\n ),\n origins=AnyOrigin\n )\n )\n\nFor customisation the CORS class can easily be inherited to customise how the\norigin is determined (handy if your application is behind a reverse proxy).\nThe CORS wrapper also accepts `max_age`, `allow_credentials`, `expose_headers`\nand `allow_headers` options.\n\n\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/python-odin/odinweb", "keywords": "web", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "odinweb", "package_url": "https://pypi.org/project/odinweb/", "platform": "", "project_url": "https://pypi.org/project/odinweb/", "project_urls": { "Homepage": "https://github.com/python-odin/odinweb" }, "release_url": "https://pypi.org/project/odinweb/0.5.2/", "requires_dist": [ "odin (>=1.4.0)", "typing; (python_version == '2.7')", "enum34; (python_version == '2.7')" ], "requires_python": "", "summary": "Toolkit for building web API's using Odin", "version": "0.5.2" }, "last_serial": 4784662, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "34191f5f94872f576e1f3e87e4e16f9f", "sha256": "9c40d5e17b5e92df26122145e99323359d03cdf14caa2ff8020b4f49dc3fdc9a" }, "downloads": -1, "filename": "odinweb-0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "34191f5f94872f576e1f3e87e4e16f9f", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 19497, "upload_time": "2017-07-13T14:01:47", "url": "https://files.pythonhosted.org/packages/51/86/7e4d5d14ebfa4b81585712d13f4f2b4eef4cd143c3931b2a22b4c8d280f2/odinweb-0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "31c926c8aee6bf7e3191a3e0f788c028", "sha256": "0152cf0ed0a9b79e151a2145ea83c7edcad264239e985fc63380c54fa6aa3bfe" }, "downloads": -1, "filename": "odinweb-0.1.tar.gz", "has_sig": false, "md5_digest": "31c926c8aee6bf7e3191a3e0f788c028", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14704, "upload_time": "2017-07-13T14:01:45", "url": "https://files.pythonhosted.org/packages/cf/fd/bb8cd550a5092a2f2d8d0ec3ed56f9b070b8b2a9ecd9f09d124c167e6198/odinweb-0.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "877203794e3ecb8993455903b7cf7827", "sha256": "0fc3da85e647cef5bf6583c3fcdbd4deb90a3acb3597aa090804694ba680475b" }, "downloads": -1, "filename": "odinweb-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "877203794e3ecb8993455903b7cf7827", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 455127, "upload_time": "2017-08-01T14:26:19", "url": "https://files.pythonhosted.org/packages/1f/d4/e97816f76f6c2735d1ef2ba74accc634489842d7c075bf969ce33cab6fb9/odinweb-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d4631130aac90e84ac63be7a4aa65b3f", "sha256": "0b8422f7baa81fcce09fc8ba82422a22e373adc656eccdef34d641d10be0a04d" }, "downloads": -1, "filename": "odinweb-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d4631130aac90e84ac63be7a4aa65b3f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 463303, "upload_time": "2017-08-01T14:26:10", "url": "https://files.pythonhosted.org/packages/73/91/f814b30166c7a7daed56b7ca2609c8625a440f1afb7f67395e12f36d3371/odinweb-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "6b5a3ff9e9c0137886e01c0b0902edda", "sha256": "5293bbfea45c750f549bb279b711f7cbefbd9b28880ed3d40ef15b124d18aad8" }, "downloads": -1, "filename": "odinweb-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6b5a3ff9e9c0137886e01c0b0902edda", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 456258, "upload_time": "2017-08-03T15:10:26", "url": "https://files.pythonhosted.org/packages/1e/b5/4d213b5c9fd3936774549396d0c57731f2983360eb5dff70940b09755ff1/odinweb-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f2079bcc04a826bae8540dba133804dc", "sha256": "43b17c2c16c56d824547368b82895e2aa45a6f83fb01c9f258d60e7d56400477" }, "downloads": -1, "filename": "odinweb-0.2.1.tar.gz", "has_sig": false, "md5_digest": "f2079bcc04a826bae8540dba133804dc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 469154, "upload_time": "2017-08-03T15:10:35", "url": "https://files.pythonhosted.org/packages/0e/48/0262a824985dea90ce692b1d87cab78c495992c301d39501462abc76a385/odinweb-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "58079825ef7a67391912d84411c51b47", "sha256": "29d4bb4486aceaf76eabf8c2d799ef73e647748bff9a60e6b83b7d30bac3bc03" }, "downloads": -1, "filename": "odinweb-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "58079825ef7a67391912d84411c51b47", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 460028, "upload_time": "2017-08-15T22:27:43", "url": "https://files.pythonhosted.org/packages/62/e5/362df865b6c807694d9be686227c566fba7a83545f80476e5cff398e5175/odinweb-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1d1503fcc828534ed2c427bbc75a7c2d", "sha256": "948afceba3e3fe3ae26c53cb0644d7353a9dd01dde51de883fbb56c3c9ce5ad1" }, "downloads": -1, "filename": "odinweb-0.3.0.tar.gz", "has_sig": false, "md5_digest": "1d1503fcc828534ed2c427bbc75a7c2d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 475872, "upload_time": "2017-08-15T22:27:56", "url": "https://files.pythonhosted.org/packages/02/61/4c4ef9b56f888a2598e81c8124afcd913b3b45658bec1f34f2e84d34bfcf/odinweb-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "1ccf5876815fe0b4db3557bdf58b3997", "sha256": "82fdc22eda0514de46fe82486b66470f94c7ed089ed535c3103924677298502b" }, "downloads": -1, "filename": "odinweb-0.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1ccf5876815fe0b4db3557bdf58b3997", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 460035, "upload_time": "2017-08-18T01:50:26", "url": "https://files.pythonhosted.org/packages/93/3f/78761ec99c87f47b07a8350fccff55e20646dc139554dd14ccceb06a14d0/odinweb-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "727b207f1fa16ccc2448dfeae3e005a4", "sha256": "47f453147bc6b1dd57bfeadc7e55a4c8e2dd50acf4a5cdf43aa22355d3547557" }, "downloads": -1, "filename": "odinweb-0.3.1.tar.gz", "has_sig": false, "md5_digest": "727b207f1fa16ccc2448dfeae3e005a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 476140, "upload_time": "2017-08-18T01:50:37", "url": "https://files.pythonhosted.org/packages/32/89/d5b0f554b41076529797fc64dd9d4225f8901a4d1e65ee8b2d0768c5f119/odinweb-0.3.1.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "178218111b38e458b4f7968196475d0f", "sha256": "db462c7bbae861fbf3b36f8f6a286bdba9fed35583027d701a92af5e514be921" }, "downloads": -1, "filename": "odinweb-0.3.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "178218111b38e458b4f7968196475d0f", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 459704, "upload_time": "2017-08-18T04:40:29", "url": "https://files.pythonhosted.org/packages/a6/bd/f1cd439d0601b2852d81f43f9306769e6124de794e62dae1f016cb92c608/odinweb-0.3.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5a77f66d5c94283e12bb55e1dfd10fc0", "sha256": "f057763e10520758f9cb0bcb530234dc7420519736a27be90599077d6fbbd2b5" }, "downloads": -1, "filename": "odinweb-0.3.3.tar.gz", "has_sig": false, "md5_digest": "5a77f66d5c94283e12bb55e1dfd10fc0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 476026, "upload_time": "2017-08-18T04:40:36", "url": "https://files.pythonhosted.org/packages/35/b2/5f3c84a7e57abf791bd852715cbac61a3025ec6ed70a25fefce7f6dc9d7f/odinweb-0.3.3.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "dcd90d9ea99663f47b32f351ef8d0b55", "sha256": "b3d463cff84142128ff21c1b3080c698311a288c3302a40993015df243547e41" }, "downloads": -1, "filename": "odinweb-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "dcd90d9ea99663f47b32f351ef8d0b55", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 459703, "upload_time": "2017-08-18T04:44:22", "url": "https://files.pythonhosted.org/packages/95/3f/b1e293b88ec75eb58efda9b99a53bf52e6dac20ac73056be49526b26a702/odinweb-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9500169b9d3b3848005e7757556d8486", "sha256": "97bca20d0350d3961540fe294b37450325210edac0fd2e0955e0c67ba4c79e99" }, "downloads": -1, "filename": "odinweb-0.4.0.tar.gz", "has_sig": false, "md5_digest": "9500169b9d3b3848005e7757556d8486", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 476042, "upload_time": "2017-08-18T04:44:28", "url": "https://files.pythonhosted.org/packages/01/7d/f3132a8ba38b37e7d4f12f7cb848efbf915cc347616fca8372a672c0f3e1/odinweb-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "596e5d8c971abde1cbc5cb08890800c5", "sha256": "b2bbd229df1e7804c850d9fb676367a229f9185a34ba87deab1a4784cf5ab35c" }, "downloads": -1, "filename": "odinweb-0.4.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "596e5d8c971abde1cbc5cb08890800c5", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 460771, "upload_time": "2017-08-27T14:16:56", "url": "https://files.pythonhosted.org/packages/0e/44/8665822d006dca3f222e321acbaacbf78d54189e802a32bf15088b495444/odinweb-0.4.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eb2570ed45df7b5dca619327a1d654da", "sha256": "9722d7291acf9e82ca7a84c7aa9194fd0fa96bdd2d07a4f81ad0b455b90d7922" }, "downloads": -1, "filename": "odinweb-0.4.1.tar.gz", "has_sig": false, "md5_digest": "eb2570ed45df7b5dca619327a1d654da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 476066, "upload_time": "2017-08-27T14:17:07", "url": "https://files.pythonhosted.org/packages/35/dd/0ebf4bb8a2425e0458a6972b224106247953af44ca56972f69e2e5abd290/odinweb-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "34a6eb08d30d03d36ce46c6abf247b8b", "sha256": "adb6d24a550ff2a30c5faf146ebf9e8d2f7f144b73e9fbcb2146303b0b13c70b" }, "downloads": -1, "filename": "odinweb-0.4.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "34a6eb08d30d03d36ce46c6abf247b8b", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 460164, "upload_time": "2017-09-01T14:27:37", "url": "https://files.pythonhosted.org/packages/ce/0c/95f5242a40d82ef9c5da6ce7a617682d7413a053eaf11adc2e01d82832f0/odinweb-0.4.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a669682b1e606d9ff4e58c118233f997", "sha256": "54b46ee316bdae97e8477f64a44451d57ae6e51efb7c77f62ab5642574e9f24a" }, "downloads": -1, "filename": "odinweb-0.4.2.tar.gz", "has_sig": false, "md5_digest": "a669682b1e606d9ff4e58c118233f997", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 476211, "upload_time": "2017-09-01T14:27:54", "url": "https://files.pythonhosted.org/packages/84/4a/34bcc80f12abb466b6e162a402cb9755b5bfabfcc6501facc02260596f10/odinweb-0.4.2.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "4b26dbec319757017fcccceee873d54d", "sha256": "6357ea2150cf46c6770f7b7c77cf5aeda7478e55b3b62875f95111732f3b8a41" }, "downloads": -1, "filename": "odinweb-0.4.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4b26dbec319757017fcccceee873d54d", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 461579, "upload_time": "2017-09-25T03:11:02", "url": "https://files.pythonhosted.org/packages/8c/7a/0fb9d87549ef331abdb21d509d246682bf3dee495199463af30bd1ff5bfc/odinweb-0.4.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8ebcdf512762abad83ae0f93227727c4", "sha256": "7fbbcf6c692d835948a8f30363f792e96f0cd4e5014321f62992f007da2f2f47" }, "downloads": -1, "filename": "odinweb-0.4.4.tar.gz", "has_sig": false, "md5_digest": "8ebcdf512762abad83ae0f93227727c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 477607, "upload_time": "2017-09-25T03:11:09", "url": "https://files.pythonhosted.org/packages/cb/22/ee5d3158b6bb78e24234a2212b15e13882dadc65e03ec8445062f45d8890/odinweb-0.4.4.tar.gz" } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "0196b886b4a66e22dd15815661d69d57", "sha256": "d1a7608a161eed40ad1a37cb12d32402becd8a76d06e42891b050f9f70d6df5e" }, "downloads": -1, "filename": "odinweb-0.4.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0196b886b4a66e22dd15815661d69d57", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 461952, "upload_time": "2018-04-24T04:30:58", "url": "https://files.pythonhosted.org/packages/83/43/303ef4151ed04a5a464eec36ee897b656def4ca87a438d3a6505a3be72bb/odinweb-0.4.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2d6756d219c4bf49e6275e6fd740d2b7", "sha256": "60e521f155b176e6d4939e5c8e093cad4c0b71cab7948c1f89eec3f7304f7037" }, "downloads": -1, "filename": "odinweb-0.4.5.tar.gz", "has_sig": false, "md5_digest": "2d6756d219c4bf49e6275e6fd740d2b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 478388, "upload_time": "2018-04-24T04:31:06", "url": "https://files.pythonhosted.org/packages/f5/fc/3b5222951b197344476d8f5ff4dd51980e12c0801d0104e87943d94d74bb/odinweb-0.4.5.tar.gz" } ], "0.4.6": [ { "comment_text": "", "digests": { "md5": "676baad767e20f2a94316d8005be3677", "sha256": "e4a650caef08dde11dd69a4a4fa57af33ffae3f44010f09edfc37abbbbe327c1" }, "downloads": -1, "filename": "odinweb-0.4.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "676baad767e20f2a94316d8005be3677", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 462332, "upload_time": "2018-05-09T04:40:21", "url": "https://files.pythonhosted.org/packages/71/64/efc424fe7cae52fa7a04b133a2aeddbb3d059b551c3b13fd1871eda93ada/odinweb-0.4.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7d1a2b4e063f33c6d82b0f6fcdabb088", "sha256": "5618cfba7ed45d23b4572e09ee14f2dda9e72e276ac98549a7e615aeef3ac10a" }, "downloads": -1, "filename": "odinweb-0.4.6.tar.gz", "has_sig": false, "md5_digest": "7d1a2b4e063f33c6d82b0f6fcdabb088", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 479060, "upload_time": "2018-05-09T04:40:29", "url": "https://files.pythonhosted.org/packages/78/6e/1eb6e7c2720f81f39917e732b865b592d15ce10df17ff2b997b927e59dc2/odinweb-0.4.6.tar.gz" } ], "0.4.7": [ { "comment_text": "", "digests": { "md5": "76582c3392e2a8eb0629b08d04e425b1", "sha256": "4af107694ff058a974824879510142ea1d90674278d233ae499e94ff1a394a89" }, "downloads": -1, "filename": "odinweb-0.4.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "76582c3392e2a8eb0629b08d04e425b1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 464290, "upload_time": "2018-05-15T03:45:17", "url": "https://files.pythonhosted.org/packages/1f/a5/cc22622f1b9e0a13bc509cb2824fca57a64239275d0b00ee7eb31c73810f/odinweb-0.4.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cadbc492233b51773798d8f84e1b58fd", "sha256": "3b2a3fca3f18b952226be42a2c26ca8dab13941cc83192e0947903bb2b1de677" }, "downloads": -1, "filename": "odinweb-0.4.7.tar.gz", "has_sig": false, "md5_digest": "cadbc492233b51773798d8f84e1b58fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 482599, "upload_time": "2018-05-15T03:45:22", "url": "https://files.pythonhosted.org/packages/b4/a5/8b79aa09563f3b1d298916884693864383632bd8183a211a6a171f4f3225/odinweb-0.4.7.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "738a1d4af6d6dc779cc94136c8f0efae", "sha256": "c8320f990b11b8f632b05e0c990cb77b488a9c70b14d9b19d5d6afce81082d31" }, "downloads": -1, "filename": "odinweb-0.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "738a1d4af6d6dc779cc94136c8f0efae", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 464780, "upload_time": "2018-05-16T15:13:18", "url": "https://files.pythonhosted.org/packages/d2/b6/743d7d6735d93db972e3ed28d3286e930e1bd2a77d95c0db80a1b8df2d95/odinweb-0.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cfcf3544321725bc796c7f3db03811ba", "sha256": "2adfc3bd54dbfa690923c2225c78bb6272616d5a6b3b0a8ec6792be4ece5496a" }, "downloads": -1, "filename": "odinweb-0.5.0.tar.gz", "has_sig": false, "md5_digest": "cfcf3544321725bc796c7f3db03811ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 482237, "upload_time": "2018-05-16T15:13:21", "url": "https://files.pythonhosted.org/packages/a9/c8/a2509214749bb0e61d1c6eb5fc52ba0e9c6f22bd135445a248f83cad2649/odinweb-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "495862767a1c607046cf7f70926cbba3", "sha256": "4185f30ed689ba6c8489a7ddcc08a1b22f4758623cd1dee507ca770969e1079e" }, "downloads": -1, "filename": "odinweb-0.5.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "495862767a1c607046cf7f70926cbba3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 465068, "upload_time": "2018-05-18T02:54:01", "url": "https://files.pythonhosted.org/packages/7d/fe/fd73dddc0cf2ddf97958f06a8f674819e2c557110836d2b2b5f79b1f90f9/odinweb-0.5.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4da28552bab4039cece4959d04d78cb4", "sha256": "598a5858ee680a37d557df4259e9af9b7065a6a90fb84b0b5c9636f30107ef34" }, "downloads": -1, "filename": "odinweb-0.5.1.tar.gz", "has_sig": false, "md5_digest": "4da28552bab4039cece4959d04d78cb4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 483592, "upload_time": "2018-05-18T02:54:06", "url": "https://files.pythonhosted.org/packages/0b/4c/d9fa5b2ce07d3e5b003a8f4ca8073d9a86c22bbfd3f13eaaa0c6383252fa/odinweb-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "3ca752d17150158818b36391537eaf78", "sha256": "58ddc15a38588f8635c226ae97e7cc5dc586090afa764b7fd09f009480390e37" }, "downloads": -1, "filename": "odinweb-0.5.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3ca752d17150158818b36391537eaf78", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 465371, "upload_time": "2019-02-06T02:04:44", "url": "https://files.pythonhosted.org/packages/d2/77/3c5742861669390f6d050407041f96305ec627130c8f73696903056e5a44/odinweb-0.5.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ab090df97e3e39d985292394944f841a", "sha256": "c1791c1a93c539700eed71387f7554ab5e289b02429d26f53b44a37d170e4b0c" }, "downloads": -1, "filename": "odinweb-0.5.2.tar.gz", "has_sig": false, "md5_digest": "ab090df97e3e39d985292394944f841a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 483952, "upload_time": "2019-02-06T02:04:51", "url": "https://files.pythonhosted.org/packages/8a/b1/55d4172d8c1234f6258f487e6552c361e158114e2db5c170c92fb8da8804/odinweb-0.5.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3ca752d17150158818b36391537eaf78", "sha256": "58ddc15a38588f8635c226ae97e7cc5dc586090afa764b7fd09f009480390e37" }, "downloads": -1, "filename": "odinweb-0.5.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3ca752d17150158818b36391537eaf78", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 465371, "upload_time": "2019-02-06T02:04:44", "url": "https://files.pythonhosted.org/packages/d2/77/3c5742861669390f6d050407041f96305ec627130c8f73696903056e5a44/odinweb-0.5.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ab090df97e3e39d985292394944f841a", "sha256": "c1791c1a93c539700eed71387f7554ab5e289b02429d26f53b44a37d170e4b0c" }, "downloads": -1, "filename": "odinweb-0.5.2.tar.gz", "has_sig": false, "md5_digest": "ab090df97e3e39d985292394944f841a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 483952, "upload_time": "2019-02-06T02:04:51", "url": "https://files.pythonhosted.org/packages/8a/b1/55d4172d8c1234f6258f487e6552c361e158114e2db5c170c92fb8da8804/odinweb-0.5.2.tar.gz" } ] }