{ "info": { "author": "Tim Savage", "author_email": "tim@savage.company", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "####\nOdin\n####\n\nOdin provides a declarative framework for defining resources (classes) and their relationships, validation of the fields\nthat make up the resources and mapping between objects (either a resource, or other python structures).\n\nOdin also comes with built in serialisation tools for importing and exporting data from resources.\n\n.. image:: https://img.shields.io/pypi/l/odin.svg?style=flat\n :target: https://pypi.python.org/pypi/odin/\n :alt: License\n\n.. image:: https://img.shields.io/pypi/v/odin.svg?style=flat\n :target: https://pypi.python.org/pypi/odin/\n\n.. image:: https://img.shields.io/travis/python-odin/odin/master.svg?style=flat\n :target: https://travis-ci.org/python-odin/odin\n :alt: Travis CI Status\n\n.. image:: https://codecov.io/gh/python-odin/odin/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/python-odin/odin\n :alt: Code cov\n\n.. image:: https://landscape.io/github/python-odin/odin/master/landscape.svg?style=flat\n :target: https://landscape.io/github/python-odin/odin/master\n :alt: Code Health\n \n.. image:: https://img.shields.io/requires/github/timsavage/odin.svg?style=flat\n :target: https://requires.io/github/timsavage/odin/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\nHighlights\n**********\n\n* Class based declarative style\n* Fields for building composite resources\n* Field and Resource level validation\n* Easy extension to support custom fields\n* Python 2.7 :sup:`1`, Python 2.7+, Python 3.5+ and PyPy :sup:`1` supported\n* Integration with Django (see `baldr `_)\n* Support for documenting resources with `Sphinx `_\n* Minimal dependencies (base functionality only requires *six*)\n\n:sup:`1` certain contrib items are not supported. Pint is not installable with PyPy.\n\nUse cases\n*********\n* Design, document and validate complex (and simple!) data structures\n* Convert structures to and from different formats such as JSON, YAML, MsgPack or CSV\n* Validate API inputs\n* Define message formats for communications protocols, like an RPC\n* Map API requests to ORM objects\n\nQuick links\n***********\n\n* `Documentation `_\n* `Project home `_\n* `Issue tracker `_\n\n\nUpcoming features\n*****************\n\n**In development**\n\n* XML Codec (export completed)\n* Complete documentation coverage\n* Improvements for CSV Codec (writing, reading multi resource CSV's)\n* RESTful interface with support for Flask and Django\n* Integration with other libraries (ie `Django `_ Models/Forms)\n* Integration with SQLAlchemy\n\n\nRequires\n********\n\n* six\n\n**Optional**\n\n* simplejson - Odin will use simplejson if it is available or fallback to the builtin json library\n* msgpack-python - To enable use of the msgpack codec\n* pyyaml - To enable use of the YAML codec\n\n**Contrib**\n\n* jinja2 >= 2.7 - For documentation generation\n* pint - Support for physical quantities using the `Pint `_ library.\n\n**Development**\n\n* pytest - Testing\n* pytest-cov - Coverage reporting\n\nExample\n*******\n\n**With definition**::\n\n import odin\n\n class Author(odin.Resource):\n name = odin.StringField()\n\n class Publisher(odin.Resource):\n name = odin.StringField()\n\n class Book(odin.Resource):\n title = odin.StringField()\n authors = odin.ArrayOf(Author)\n publisher = odin.DictAs(Publisher)\n genre = odin.StringField()\n num_pages = odin.IntegerField()\n\n::\n\n >>> b = Book(\n title=\"Consider Phlebas\",\n genre=\"Space Opera\",\n publisher=Publisher(name=\"Macmillan\"),\n num_pages=471\n )\n >>> b.authors.append(Author(name=\"Iain M. Banks\"))\n >>> from odin.codecs import json_codec\n >>> json_codec.dumps(b, indent=4)\n {\n \"$\": \"Book\",\n \"authors\": [\n {\n \"$\": \"Author\",\n \"name\": \"Iain M. Banks\"\n }\n ],\n \"genre\": \"Space Opera\",\n \"num_pages\": 471,\n \"publisher\": {\n \"$\": \"Publisher\",\n \"name\": \"Macmillan\"\n },\n \"title\": \"Consider Phlebas\"\n }\n\n\nAuthors\n*******\n\nTim Savage\n\n\nSpecial Mention\n***************\n\nI would like to acknowledge the strong influence on the design of Odin Resources from the Django ORM and it's notable\ncontributor Malcolm Tredinnick. He was a valued colleague who's untimely passing left a large void in our company and\nthe wider community.\n\n", "description_content_type": "", "docs_url": "https://pythonhosted.org/odin/", "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/python-odin/odin", "keywords": "data-structure\nvalidation\ndata-mapping", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "odin", "package_url": "https://pypi.org/project/odin/", "platform": "", "project_url": "https://pypi.org/project/odin/", "project_urls": { "Homepage": "https://github.com/python-odin/odin" }, "release_url": "https://pypi.org/project/odin/1.4.0/", "requires_dist": null, "requires_python": "", "summary": "Data-structure definition/validation/traversal, mapping and serialisation toolkit for Python", "version": "1.4.0" }, "last_serial": 3752444, "releases": { "0.10": [ { "comment_text": "", "digests": { "md5": "0f53c89b16f6e0ff31f9a1d0ae827ce9", "sha256": "5cb2423fcce4bbbb1b533323653ea152f8817fb9cfc013061ad20580d56ee0b0" }, "downloads": -1, "filename": "odin-0.10-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0f53c89b16f6e0ff31f9a1d0ae827ce9", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 98726, "upload_time": "2016-10-25T01:07:43", "url": "https://files.pythonhosted.org/packages/b3/c4/023aa8d35ed09abf1d7c524cf1adf7d59b6484ba9060ff8c225417d68c55/odin-0.10-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1e213a3b82cd57820034653e51c150d4", "sha256": "cc13ff5a3d60ba58ec74f7f677ea81a7b924d4587671ac0ae410626bb69f5a4c" }, "downloads": -1, "filename": "odin-0.10.tar.gz", "has_sig": false, "md5_digest": "1e213a3b82cd57820034653e51c150d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56532, "upload_time": "2016-11-01T00:50:11", "url": "https://files.pythonhosted.org/packages/29/03/be8cdc3727ffe8c32ab0d57b2cb9909a9080053a28dcf02dd38fc5649247/odin-0.10.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "f576caee5cdbafa1a2515fef9b35c807", "sha256": "612d9b4be4c2ff12985584f79516ccd9b157fbe34494669b5826c5c2c4b20352" }, "downloads": -1, "filename": "odin-0.4.1.tar.gz", "has_sig": false, "md5_digest": "f576caee5cdbafa1a2515fef9b35c807", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14650, "upload_time": "2013-11-29T15:46:03", "url": "https://files.pythonhosted.org/packages/2a/ad/f427a81afbca114b186be88c991946112f07ae5ddf8808729ed90ce9c57f/odin-0.4.1.tar.gz" } ], "0.4.1.1": [ { "comment_text": "", "digests": { "md5": "7ba770b01d276f0822a66ffe5285b636", "sha256": "e9f46b50396c0ba6400917f533dd4940dff435a5ef101f76da00fd4c7eb97506" }, "downloads": -1, "filename": "odin-0.4.1.1.tar.gz", "has_sig": false, "md5_digest": "7ba770b01d276f0822a66ffe5285b636", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17189, "upload_time": "2013-12-21T04:11:24", "url": "https://files.pythonhosted.org/packages/a3/35/90cd0f84cb0443d69efc5d7496fd438ab62dbc188891cb1356567defba75/odin-0.4.1.1.tar.gz" } ], "0.4.1.2": [ { "comment_text": "", "digests": { "md5": "88cc5a0648384956a6313201233d7284", "sha256": "fcff66b4c910df2d91a66388550c0082f72ff7ff6d37295498dfd94a46e4ffab" }, "downloads": -1, "filename": "odin-0.4.1.2.tar.gz", "has_sig": false, "md5_digest": "88cc5a0648384956a6313201233d7284", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17196, "upload_time": "2014-01-06T13:56:21", "url": "https://files.pythonhosted.org/packages/fb/47/d10db63fe8062d444af2b919d6eec63ed19581804fd7b4398352ac9fb5ad/odin-0.4.1.2.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "8bd46d175e5cbe1afdd81eaa0ca8589c", "sha256": "5fae44079a6e7ec6e5dee9327caa382108023c54e0912855275744b7c2ac72ec" }, "downloads": -1, "filename": "odin-0.4.2.tar.gz", "has_sig": false, "md5_digest": "8bd46d175e5cbe1afdd81eaa0ca8589c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18430, "upload_time": "2014-01-15T12:05:43", "url": "https://files.pythonhosted.org/packages/cb/bc/7d24fed50ca1683aad3592b3d46fc40b62bb3dc3c610fc771b234d284cba/odin-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "d74f8c3f24dc99d16bf98dc1c94fc4d3", "sha256": "fdc013f33ea1a2b51545a35295a39221e230c7043fbb8dc43770a6f896ac3339" }, "downloads": -1, "filename": "odin-0.4.3.tar.gz", "has_sig": false, "md5_digest": "d74f8c3f24dc99d16bf98dc1c94fc4d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24726, "upload_time": "2014-02-02T14:29:26", "url": "https://files.pythonhosted.org/packages/2e/bd/aceafec39342cb8238a1a85bf0c18062bea30a84f88d9dcfaf9ad42e2a13/odin-0.4.3.tar.gz" } ], "0.4.3.1": [ { "comment_text": "", "digests": { "md5": "3f89abafb48d8c52809e5c525fd6679f", "sha256": "fa71aa64b4a3a8199a260619f33327686428da0d563a274c579fb6ee4b7542eb" }, "downloads": -1, "filename": "odin-0.4.3.1.tar.gz", "has_sig": false, "md5_digest": "3f89abafb48d8c52809e5c525fd6679f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24777, "upload_time": "2014-02-15T02:25:52", "url": "https://files.pythonhosted.org/packages/3c/44/b1da2fbab2d7cc9b8a03e2ad6241d13a23900e1cc32c5925926dafe7c917/odin-0.4.3.1.tar.gz" } ], "0.4.3.2": [ { "comment_text": "", "digests": { "md5": "4159d0658536764a6a78307a1e9c82c9", "sha256": "960b30e138d6154193d14258f838841213c3120002b9ecb5ccd7aede4a91c29c" }, "downloads": -1, "filename": "odin-0.4.3.2.tar.gz", "has_sig": false, "md5_digest": "4159d0658536764a6a78307a1e9c82c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23103, "upload_time": "2014-02-19T07:25:53", "url": "https://files.pythonhosted.org/packages/a5/8d/8ea8b7640adeff2e516bef02db18a3b7c2df444c508e22e8d5ba401c123e/odin-0.4.3.2.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "a0a1d6c475cb5a9b313bd3e31664f84c", "sha256": "12f05f7a188b85a89f3f456e418a121b2cac12a6f476db5152251ec77144e84e" }, "downloads": -1, "filename": "odin-0.5.tar.gz", "has_sig": false, "md5_digest": "a0a1d6c475cb5a9b313bd3e31664f84c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28280, "upload_time": "2014-06-19T16:06:21", "url": "https://files.pythonhosted.org/packages/ba/40/7c13cf7ba4b3d98e338fabe803cbe587c37598108f5bbe93a5f3068e63a0/odin-0.5.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "a7554e3019b8b301c6bd254373e5ec83", "sha256": "c5726da49378abe84c0ee0ba08ecb0d144c14aa391adb3e36742344be455a8e9" }, "downloads": -1, "filename": "odin-0.5.2.tar.gz", "has_sig": false, "md5_digest": "a7554e3019b8b301c6bd254373e5ec83", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42493, "upload_time": "2014-08-18T05:03:01", "url": "https://files.pythonhosted.org/packages/ba/a0/3bf45bd621c69e1d256a7b631fc71e826bc056a895fd480a8c65bc63509d/odin-0.5.2.tar.gz" } ], "0.5.5": [ { "comment_text": "", "digests": { "md5": "572f0cc17d5416c4ae7cdde612daffb5", "sha256": "7a7308cb6b39cd4af7989032915c005def9e7fe94024b23aaf0f9c28eaf9eb85" }, "downloads": -1, "filename": "odin-0.5.5.tar.gz", "has_sig": false, "md5_digest": "572f0cc17d5416c4ae7cdde612daffb5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55102, "upload_time": "2014-10-15T01:00:28", "url": "https://files.pythonhosted.org/packages/c0/17/5773b3d99e0fbf9cfcdf7efddc9a1c42df284d31e4364bd2d76b653110a9/odin-0.5.5.tar.gz" } ], "0.5.6": [ { "comment_text": "", "digests": { "md5": "989dae366941ffe3db17c45fcc040fab", "sha256": "9c36385dbeb8b9864f7d9760260c78c48ac786a60c74cbd248ade051204a1273" }, "downloads": -1, "filename": "odin-0.5.6.tar.gz", "has_sig": false, "md5_digest": "989dae366941ffe3db17c45fcc040fab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55568, "upload_time": "2015-02-10T05:46:49", "url": "https://files.pythonhosted.org/packages/c6/71/5fba9a850309069758573341e9602106ee00fad8709239f0dfa7ddd61176/odin-0.5.6.tar.gz" } ], "0.5.7.1": [ { "comment_text": "", "digests": { "md5": "94f31f35554cdc4698a3e0e28bc83d94", "sha256": "1598289fe466a397fb58faf1b9240ff009fbca93094fa465abdf9702ba7f12e5" }, "downloads": -1, "filename": "odin-0.5.7.1.tar.gz", "has_sig": false, "md5_digest": "94f31f35554cdc4698a3e0e28bc83d94", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58065, "upload_time": "2015-04-16T15:40:04", "url": "https://files.pythonhosted.org/packages/ca/98/d510c5f63ac44e7b555159030a05e912c406519416346546809be1a52be9/odin-0.5.7.1.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "cd98ccc128aebd4e6109706fa139d9bb", "sha256": "d84c695938c2cb4b84ed8320d362c70d84fd5a7e13787f79b3e1c1455672c113" }, "downloads": -1, "filename": "odin-0.6.tar.gz", "has_sig": false, "md5_digest": "cd98ccc128aebd4e6109706fa139d9bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57721, "upload_time": "2015-09-02T02:04:06", "url": "https://files.pythonhosted.org/packages/77/c1/16f33ce6112316cb8244440a5847c42331f07857fb22798896d741ec7ab6/odin-0.6.tar.gz" } ], "0.6.0.1": [ { "comment_text": "", "digests": { "md5": "dfc144ab55b5efe05bee84a648465d74", "sha256": "a35536baafb9565cec5cc229a0c079b00a97903eac22a7740738c1c89cbb20e1" }, "downloads": -1, "filename": "odin-0.6.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "dfc144ab55b5efe05bee84a648465d74", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 77812, "upload_time": "2015-09-02T04:14:40", "url": "https://files.pythonhosted.org/packages/a0/72/eeb798718ea6e3f2a9ec93d6c72087a9ecca3f94a8db28cf6ac6b6da32ca/odin-0.6.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "11ddc78581b2411c318c6eee07f63446", "sha256": "d98424c883f3c27fce378d09ec721cebd7514273cbb515e1f25204984f59cdbd" }, "downloads": -1, "filename": "odin-0.6.0.1.tar.gz", "has_sig": false, "md5_digest": "11ddc78581b2411c318c6eee07f63446", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57741, "upload_time": "2015-09-02T04:15:02", "url": "https://files.pythonhosted.org/packages/bc/54/9b6da97e729171d08f9458b8dab07ae1342e09693560e9ef8ee1a8f93bde/odin-0.6.0.1.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "0e7d1215839c271b3dc4df8a1d0328be", "sha256": "672f262beb45b190b9316299b76756090f880c5f470b045310be954e83373073" }, "downloads": -1, "filename": "odin-0.7.tar.gz", "has_sig": false, "md5_digest": "0e7d1215839c271b3dc4df8a1d0328be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66794, "upload_time": "2016-03-03T18:30:15", "url": "https://files.pythonhosted.org/packages/7c/4f/e8104f9ff2d9210a96cb5a8992e64d38bcaada5ce86951a21cd769202880/odin-0.7.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "9d311dbf9787cf8b7ff37fdaa0c43c2f", "sha256": "247e106691cfab9e57d6497877c17d851682e8ee139a486766fe3fad1507455c" }, "downloads": -1, "filename": "odin-0.7.1.tar.gz", "has_sig": false, "md5_digest": "9d311dbf9787cf8b7ff37fdaa0c43c2f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66569, "upload_time": "2016-03-07T12:48:47", "url": "https://files.pythonhosted.org/packages/8e/a2/4736ab96bda6603663ccd12db7b26942c0f4b440937fc43f79c3659e68cd/odin-0.7.1.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "43c7cfb73bcde24618481a4c882fbb22", "sha256": "e91a30c79317763e1827c0271b16689bfe6f106f2cc17b6c30ad8884b87e2376" }, "downloads": -1, "filename": "odin-0.8.tar.gz", "has_sig": false, "md5_digest": "43c7cfb73bcde24618481a4c882fbb22", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68461, "upload_time": "2016-04-04T06:39:08", "url": "https://files.pythonhosted.org/packages/df/03/f95d8ab2802e3b3734369c02aab466c8d611d93bf30f37e8b41edd840397/odin-0.8.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "938452c42767dd0a902517225fa74b35", "sha256": "91e64ce3ca7fabd2b75699d55de1a0804d6550becdfcc5dd822b6639783c40cc" }, "downloads": -1, "filename": "odin-0.8.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "938452c42767dd0a902517225fa74b35", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 91389, "upload_time": "2016-04-07T04:28:23", "url": "https://files.pythonhosted.org/packages/30/99/f997004f74e0fda8d2adc44d1adebae119f1864ee000b4261366f299d569/odin-0.8.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cf370eac2113e16f5da0d21286ac0d5c", "sha256": "d6397a3f5bea512decf8f81d2c7e5e6d34125362302f7513b3ac1cd5603af22f" }, "downloads": -1, "filename": "odin-0.8.1.tar.gz", "has_sig": false, "md5_digest": "cf370eac2113e16f5da0d21286ac0d5c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 72312, "upload_time": "2016-04-07T04:27:59", "url": "https://files.pythonhosted.org/packages/7b/2f/de6943f153b34a1dd1e914341e7c4cd5ce17f0cb095d60f09818b34e5767/odin-0.8.1.tar.gz" } ], "0.8.2": [ { "comment_text": "", "digests": { "md5": "b434ae1d10e5eee399b5957794b949ac", "sha256": "a789cc3f1e41ad0ba0c16f44b4d8226182b07607e98cbf3d48ca207c13f7280f" }, "downloads": -1, "filename": "odin-0.8.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b434ae1d10e5eee399b5957794b949ac", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 93739, "upload_time": "2016-06-23T04:35:04", "url": "https://files.pythonhosted.org/packages/e4/ff/9138557c3da0233ba26b2c3a57bd7984003e25b599d8076c5bf2dfe95fca/odin-0.8.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f4904ebcade481d9ff38b5f3a4c81922", "sha256": "6063e08a7a1fa69847c75af51181dec31d11477b2b6a2c3fb40c909e6ef318c4" }, "downloads": -1, "filename": "odin-0.8.2.tar.gz", "has_sig": false, "md5_digest": "f4904ebcade481d9ff38b5f3a4c81922", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69613, "upload_time": "2016-06-23T04:34:57", "url": "https://files.pythonhosted.org/packages/6b/64/27325d03845892e6994f94b95d4cf0805a4dc116f4385c6089194c2e7c57/odin-0.8.2.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "bef2f596b6720dfa32b8178c4f4b71af", "sha256": "73ed530a89e81b38534a398b86e2c37ee3c8bc24853a2fc3b5ed2249ac34f9a6" }, "downloads": -1, "filename": "odin-0.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bef2f596b6720dfa32b8178c4f4b71af", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 94498, "upload_time": "2016-09-02T07:51:35", "url": "https://files.pythonhosted.org/packages/5f/da/4e9e95a14bcb0a58a09d2fcb2d9968a4b3628dfdd4310db6d96bfe1090d5/odin-0.9-py2.py3-none-any.whl" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "b06c92864c187a07064586575c96666e", "sha256": "f792d16f74192d8ece8d4f9892ed6b51111f64c5c8a233a1955d3a025c6526c5" }, "downloads": -1, "filename": "odin-1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b06c92864c187a07064586575c96666e", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 77392, "upload_time": "2017-04-26T05:04:34", "url": "https://files.pythonhosted.org/packages/61/1a/520f214a8b973a6196616c604bb33011941f1a82bcb0f20be37c14c10670/odin-1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7ff371df1fd384b6b7da3b64fabbac0d", "sha256": "e040e9acc49a04fe9bd05d3456c1f5ca49880df9306da2a11a32edb97950e900" }, "downloads": -1, "filename": "odin-1.0.tar.gz", "has_sig": false, "md5_digest": "7ff371df1fd384b6b7da3b64fabbac0d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60815, "upload_time": "2017-04-26T05:04:38", "url": "https://files.pythonhosted.org/packages/86/9f/ebd6870166a082262e33ba79bbec2933817995c1c1ef062a5a6f0f82811e/odin-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "89c75f11acbe061e7e16b9c5aaf2b34b", "sha256": "40a9604ffb7f3ae110caf601c4a8d645b747779f77017fade47c72a0a9185321" }, "downloads": -1, "filename": "odin-1.1-py2-none-any.whl", "has_sig": false, "md5_digest": "89c75f11acbe061e7e16b9c5aaf2b34b", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 80456, "upload_time": "2017-07-11T04:06:43", "url": "https://files.pythonhosted.org/packages/6a/f2/1189af6ec6b232cbfb3255690f40ee374a610360f4d0db8267819b6165b7/odin-1.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1076ee0b4b44f20e300e2a95ee9a4e16", "sha256": "5708854e31cf20fa8994a4553d63139987482dbf940c3b52ee469ec46d59de1b" }, "downloads": -1, "filename": "odin-1.1.tar.gz", "has_sig": false, "md5_digest": "1076ee0b4b44f20e300e2a95ee9a4e16", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 266495, "upload_time": "2017-07-11T04:06:40", "url": "https://files.pythonhosted.org/packages/76/82/e920a69043f871d051aa52fc937f4c97e9926965ab45ce37221ded49c1bb/odin-1.1.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "f65d6201939eb2a5b17a290ddbd9ab49", "sha256": "f95e7ad652f38f80294d1e5151bc4f3b48532bc255d2237528fb3ce42d2afe18" }, "downloads": -1, "filename": "odin-1.1.1-py2-none-any.whl", "has_sig": false, "md5_digest": "f65d6201939eb2a5b17a290ddbd9ab49", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 82402, "upload_time": "2017-08-01T13:07:07", "url": "https://files.pythonhosted.org/packages/02/cb/a097c4d23e6377be5312051bf5a35a6dfbdd9b81f45b432bf34b5654cc27/odin-1.1.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "61d072d3c083308eeb8b76be1322e6c7", "sha256": "19a16a721cb5e1b05103dee213fc33f28d7df046cb74d5523fb80d017daa7850" }, "downloads": -1, "filename": "odin-1.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "61d072d3c083308eeb8b76be1322e6c7", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 82406, "upload_time": "2017-08-01T13:09:56", "url": "https://files.pythonhosted.org/packages/a0/c4/1f118e9c77ae34ae6b214e7cdc1b65d357bd916e3e596e70cb18370a15d2/odin-1.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "36ac625644319eac65f8f58dff923507", "sha256": "0b4d30f05e44adca6fad437d6ff486ce45e5dc6d8099c2a9387fc58489c9f02b" }, "downloads": -1, "filename": "odin-1.1.1.tar.gz", "has_sig": false, "md5_digest": "36ac625644319eac65f8f58dff923507", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 268695, "upload_time": "2017-08-01T13:06:50", "url": "https://files.pythonhosted.org/packages/1f/6b/0da592d7c8f416e6c1f9a495b4c76674bb9571988dc2cea859b055e172c2/odin-1.1.1.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "8e24591736d99d87c2bf4ffee56e8d2c", "sha256": "c19de6bc22b82218431c260ec511d21ac4c5df62c68890ef5dbea060aee8016d" }, "downloads": -1, "filename": "odin-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8e24591736d99d87c2bf4ffee56e8d2c", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 87566, "upload_time": "2017-11-14T14:25:44", "url": "https://files.pythonhosted.org/packages/0e/26/44f23c3f2ba042ad0cd374f18fd0e90d24745003a8513a26730ef968094d/odin-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d5106f3ae0088101d763b4a780c4a021", "sha256": "2a0c8600a315bd71aeb57a08cda48ec5e5b9fcb51f09c9b3d0b1390264971600" }, "downloads": -1, "filename": "odin-1.2.0.tar.gz", "has_sig": false, "md5_digest": "d5106f3ae0088101d763b4a780c4a021", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 274655, "upload_time": "2017-11-14T14:25:50", "url": "https://files.pythonhosted.org/packages/73/04/6f1070490ce5e2e5c4842b4d4a6d29a95d00654ea71f697bfcc02482f7d2/odin-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "91245c37495faea19cbbfe9b2fbce0df", "sha256": "7f0db5e974ed4c4bc7f55e441dad412ac506e9e3463f8719c56d4588227997f0" }, "downloads": -1, "filename": "odin-1.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "91245c37495faea19cbbfe9b2fbce0df", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 87957, "upload_time": "2018-02-05T10:58:16", "url": "https://files.pythonhosted.org/packages/3a/7d/bb82f5d66e62e6856403da0389f1a117b3e18dfbcd87b725b39dd90e8e41/odin-1.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0e9e3b820b1e7cf2f30518d7f7699679", "sha256": "2e099d982548c320faf424936233d5aa2392f0844ec9bc8979444fa0ee88e044" }, "downloads": -1, "filename": "odin-1.3.0.tar.gz", "has_sig": false, "md5_digest": "0e9e3b820b1e7cf2f30518d7f7699679", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 276394, "upload_time": "2018-02-05T10:58:26", "url": "https://files.pythonhosted.org/packages/b0/c8/6e7d28c06e6957e61e210a8e0b84db7a74f85c9dc9b762b4c56db32aa4dd/odin-1.3.0.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "32e0fddb0df6df17839f29835378c8aa", "sha256": "f655ba57b05801ba39a26f6ec377441634a7569cd1f76aeed89b25b9b095e5b3" }, "downloads": -1, "filename": "odin-1.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "32e0fddb0df6df17839f29835378c8aa", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 111967, "upload_time": "2018-04-10T14:50:48", "url": "https://files.pythonhosted.org/packages/3a/02/576f7e2ecde20959e4fb47b9b502c70c1eda10d87129d6913ac46864b55f/odin-1.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "772b2a91186418be1f81cff3838da99a", "sha256": "390e761e0f881e4be34f586546efb9bf1eff5eba5578f4c52221c0f963bda952" }, "downloads": -1, "filename": "odin-1.4.0.tar.gz", "has_sig": false, "md5_digest": "772b2a91186418be1f81cff3838da99a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 277753, "upload_time": "2018-04-10T14:50:51", "url": "https://files.pythonhosted.org/packages/b4/a6/827d6ba26f791f8f1bc4a837ed5c6efe6059d3ea5f1a0d6d5359d8d1b6c1/odin-1.4.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "32e0fddb0df6df17839f29835378c8aa", "sha256": "f655ba57b05801ba39a26f6ec377441634a7569cd1f76aeed89b25b9b095e5b3" }, "downloads": -1, "filename": "odin-1.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "32e0fddb0df6df17839f29835378c8aa", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 111967, "upload_time": "2018-04-10T14:50:48", "url": "https://files.pythonhosted.org/packages/3a/02/576f7e2ecde20959e4fb47b9b502c70c1eda10d87129d6913ac46864b55f/odin-1.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "772b2a91186418be1f81cff3838da99a", "sha256": "390e761e0f881e4be34f586546efb9bf1eff5eba5578f4c52221c0f963bda952" }, "downloads": -1, "filename": "odin-1.4.0.tar.gz", "has_sig": false, "md5_digest": "772b2a91186418be1f81cff3838da99a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 277753, "upload_time": "2018-04-10T14:50:51", "url": "https://files.pythonhosted.org/packages/b4/a6/827d6ba26f791f8f1bc4a837ed5c6efe6059d3ea5f1a0d6d5359d8d1b6c1/odin-1.4.0.tar.gz" } ] }