{ "info": { "author": "b3j0f", "author_email": "ib3j0f@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: French", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.0", "Programming Language :: Python :: 3.1", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development", "Topic :: Utilities" ], "description": "Description\n-----------\n\nPython schema library agnostic from languages.\n\n.. image:: https://img.shields.io/pypi/l/b3j0f.schema.svg\n :target: https://pypi.python.org/pypi/b3j0f.schema/\n :alt: License\n\n.. image:: https://img.shields.io/pypi/status/b3j0f.schema.svg\n :target: https://pypi.python.org/pypi/b3j0f.schema/\n :alt: Development Status\n\n.. image:: https://img.shields.io/pypi/v/b3j0f.schema.svg\n :target: https://pypi.python.org/pypi/b3j0f.schema/\n :alt: Latest release\n\n.. image:: https://img.shields.io/pypi/pyversions/b3j0f.schema.svg\n :target: https://pypi.python.org/pypi/b3j0f.schema/\n :alt: Supported Python versions\n\n.. image:: https://img.shields.io/pypi/implementation/b3j0f.schema.svg\n :target: https://pypi.python.org/pypi/b3j0f.schema/\n :alt: Supported Python implementations\n\n.. image:: https://img.shields.io/pypi/wheel/b3j0f.schema.svg\n :target: https://travis-ci.org/b3j0f/schema\n :alt: Download format\n\n.. image:: https://travis-ci.org/b3j0f/schema.svg?branch=master\n :target: https://travis-ci.org/b3j0f/schema\n :alt: Build status\n\n.. image:: https://coveralls.io/repos/b3j0f/schema/badge.png\n :target: https://coveralls.io/r/b3j0f/schema\n :alt: Code test coverage\n\n.. image:: https://img.shields.io/pypi/dm/b3j0f.schema.svg\n :target: https://pypi.python.org/pypi/b3j0f.schema/\n :alt: Downloads\n\n.. image:: https://readthedocs.org/projects/b3j0fschema/badge/?version=master\n :target: https://readthedocs.org/projects/b3j0fschema/?badge=master\n :alt: Documentation Status\n\n.. image:: https://landscape.io/github/b3j0f/schema/master/landscape.svg?style=flat\n :target: https://landscape.io/github/b3j0f/schema/master\n :alt: Code Health\n\nLinks\n-----\n\n- `Homepage`_\n- `PyPI`_\n- `Documentation`_\n\nInstallation\n------------\n\npip install b3j0f.schema\n\nFeatures\n--------\n\nThis library provides an abstraction layer for manipulating schema from several languages.\n\nThe abstraction layer is a python object which can validate data (properties to validate are object attributes or dictionary items) and be dumped into a dictionary or specific language format.\n\nSupported languages are:\n\n- python\n- json\n- xsd\n\nIt is also possible to generate a schema from a dictionary. And validation rules are fully and easily customisable thanks to using a schema such as a property.\n\nExample\n-------\n\nData Validation\n~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n from b3j0f.schema import build, validate\n\n # json format with required subinteger property\n resource = '{\"title\": \"test\", \"properties\": {\"subname\": {\"type\": \"string\", \"default\": \"test\"}}, {\"subinteger\": {\"type\": \"integer\"}}, \"required\": [\"subinteger\"]}'\n Test = build(resource)\n\n test = Test(subname='example')\n\n assert test.subinteger == 0 # instanciation value\n assert Test.subinteger.default == 0 # default value\n assert test.subname == 'example' # instanciation value\n assert Test.subname.default == 'test' # instanciation value\n\n error = None\n try:\n test.subname = 2 # wrong setting because subname is not a string\n\n except TypeError as error:\n pass\n\n assert error is not None\n\n assert 'subname' in Test.getschemas()\n\n validate(Test.subinteger, 1) # validate property\n validate(test, {'subinteger': 1}) # validate dictionary\n\n class Sub(object): # object to validate with required subinteger\n subinteger = 1\n\n validate(test, Sub) # validate an object with required subinteger\n validate(test, Sub())\n\n wrongvalues = [\n '', # object without subinteger\n {'subinteger': ''}, # wrong data type for subinteger\n {} # dictionary without the required property subinteger\n ]\n\n for wrongvalue in wrongvalues:\n\n error = None\n try:\n validate(test, wrongvalues)\n\n except TypeError as error:\n pass\n\n assert error is not None\n\nSchema retrieving\n~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n from b3j0f.schema import register, getbyname, getbyuuid, data2schema\n\n assert getbyuuid(test.uuid) is None\n assert test not in getbyname(test.name)\n\n register(test)\n\n assert test is getbyuuid(test.uuid)\n\n assert test in getbyname(test.name)\n\n schema = data2schema(2, name='vint') # get an integer schema with 2 such as a default value and name vint\n\n assert schema.default == 2\n assert schema.name == 'vint'\n\n error = None\n try:\n schema.default = ''\n\n except TypeError as error:\n pass\n\n assert error is not None\n\nSchema definition\n~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n from b3j0f.schema import Schema, updatecontent\n\n @updatecontent # change public attributes/functionss to schemas\n class Test(Schema):\n\n subname = 'test' # specify inner schema such as a string schema with default value 'test'\n subinteger = 1 # speciy inner schema sub as an integer with default value 1\n\n test = Test()\n\n test = Test(subname='example')\n\n assert test.subname == 'example' # instanciation value\n assert Test.subname.default == 'test' # instanciation value\n assert test.subinteger == 1 # instanciation value\n assert Test.subinteger.default == 1 # default value\n\n error = None\n try:\n test.subname = 2 # wrong setting because subname is not a string\n\n except TypeError as error:\n pass\n\n assert error is not None\n\n assert 'subname' in Test.getschemas()\n\nComplex Schema definition\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n from b3j0f.schema import Schema, ThisSchema, RefSchema, build\n from random import random\n\n @build(foo=2) # transform a python class to a schema class with the additional property foo\n class Test(object):\n\n key = DynamicValue(lambda: random()) # generate a new key at each instanciation\n subtest = ThisSchema(key=3.) # use this schema such as inner schema\n ref = RefSchema() # ref is validated by this schema\n\n assert issubclass(Test, Schema)\n\n test1, test2 = Test(), Test()\n\n # check foo\n assert test1.foo == test2.foo == 2\n\n # check key and subtest properties\n assert test1.key != test2.key\n assert test1.subtest.key == test2.subtest.key == 3.\n\n # check ref\n assert test1.ref is None\n test1.ref = Test()\n\n error = None\n try:\n test.ref = 2\n\n except TypeError as error:\n pass\n\n assert error is not None\n\nFunction schema definition\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n from b3j0f.schema import FunctionSchema, ParamSchema, FloatSchema, BooleanSchema, StringSchema, ArraySchema, OneOfSchema\n\n @data2schema\n def test(a, b, c=2, d=None, e=None, f=None): # definition of a shema function. Parameter values and (function) types are defined in the signature and the docstring.\n \"\"\"\n :param float a: default 0.\n :type b: bool\n :type d: ints # list of int\n :type e: list of str #: list of str\n :type f: int,float #: one of (int, float)\n :rtype: str\n \"\"\"\n\n return a, b, c\n\n assert isinstance(test, FunctionSchema)\n assert isinstance(test.params, ArraySchema)\n assert isinstance(test.params[0], ParamSchema)\n assert len(test.params) == 6\n\n assert test.params[0].name == 'a'\n assert test.params[0].mandatory == True\n assert isinstance(test.params[0].ref, FloatSchema)\n assert test.params[0].default is 0.\n\n assert test.params[1].name == 'b'\n assert isinstance(test.params[1].ref, BooleanSchema)\n assert test.params[1].mandatory is True\n assert test.params[1].default is False\n\n assert test.params[2].name == 'c'\n assert isinstance(test.params[2].ref, IntegerSchema)\n assert test.params[2].mandatory is False\n assert test.params[2].default is 2\n\n assert test.params[3].name == 'd'\n assert isinstance(test.params[3].ref, ArraySchema)\n assert isinstance(test.params[3].ref.itemtype, IntegerSchema)\n assert test.params[3].mandatory is False\n assert test.params[3].default is None\n\n assert test.params[4].name == 'e'\n assert isinstance(test.params[4].ref, ArraySchema)\n assert isinstance(test.params[4].ref.itemtype, StringSchema)\n assert test.params[4].mandatory is False\n assert test.params[4].default is None\n\n assert test.params[5].name == 'f'\n assert isinstance(test.params[5].ref, OneOfSchema)\n assert isinstance(test.params[5].ref.schemas[0], IntegerSchema)\n assert isinstance(test.params[5].ref.schemas[1], FloatSchema)\n assert test.params[5].mandatory is False\n assert test.params[5].default is None\n\n assert test.rtype is StringSchema\n\n assert test(1, 2) == 'test'\n\nGenerate a schema from a data\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n from b3j0f.schema import data2schema\n\n data = { # data is a dict\n 'a': 1\n }\n\n schemacls = dict2schemacls(data, name='test')\n\n assert isinstance(schemacls.a, IntegerSchema)\n assert schemacls.a.default is 1\n assert isinstance(schemacls.name, StringSchema)\n assert schemacls.name.default == 'test'\n\n validate(schemacls(), data)\n\n class Test(object): # data is an object\n a = 1\n\n schemacls = dict2schemacls(data, name='test')\n\n assert isinstance(schemacls.a, IntegerSchema)\n assert schemacls.a.default is 1\n assert isinstance(schemacls.name, StringSchema)\n assert schemacls.name.default == 'test'\n\n validate(schemacls(), Test)\n validate(schemacls(), Test())\n\n\nSchema property getting/setting/deleting customisation such as a property\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n class Test(Schema):\n\n @Schema\n def test(self):\n self.op = 'get'\n return getattr(self, '_test', 1)\n\n @test.setter\n def test(self, value):\n self.op = 'set'\n self._test = value\n\n @test.deleter\n def test(self):\n self.op = 'del'\n del self._test\n\n test = Test()\n\n # check getter\n assert test.test == 1\n assert test.op == 'get'\n\n # check setter\n test.test = 2\n assert test.op == 'set'\n assert test.test == 2\n\n # check deleter\n del test.test\n assert test.op == 'del'\n assert test.test == 1\n\nPerspectives\n------------\n\n- wait feedbacks during 6 months before passing it to a stable version.\n- Cython implementation.\n\nDonation\n--------\n\n.. image:: https://liberapay.com/assets/widgets/donate.svg\n :target: https://liberapay.com/b3j0f/donate\n :alt: I'm grateful for gifts, but don't have a specific funding goal.\n\n.. _Homepage: https://github.com/b3j0f/schema\n.. _Documentation: http://b3j0fschema.readthedocs.org/en/master/\n.. _PyPI: https://pypi.python.org/pypi/b3j0f.schema/\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/b3j0f/schema", "keywords": "dynamic", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "b3j0f.schema", "package_url": "https://pypi.org/project/b3j0f.schema/", "platform": "", "project_url": "https://pypi.org/project/b3j0f.schema/", "project_urls": { "Homepage": "https://github.com/b3j0f/schema" }, "release_url": "https://pypi.org/project/b3j0f.schema/0.0.9/", "requires_dist": null, "requires_python": "", "summary": "Python schema library agnostic from languages.", "version": "0.0.9" }, "last_serial": 2427456, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "5aba0704baa24cebfa7d5b51dc3b2540", "sha256": "6cc059a9be56d8e3b57bc23d1e90917f7915ce6ad0a999ec40e7a4eddbcb2cd8" }, "downloads": -1, "filename": "b3j0f.schema-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5aba0704baa24cebfa7d5b51dc3b2540", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 19126, "upload_time": "2016-06-22T15:52:18", "url": "https://files.pythonhosted.org/packages/08/c1/ae12a5b1abaf451cdf67a2dccea3de2e39433bac8c6ef6910b903a311fdf/b3j0f.schema-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "16bb587217b73cdd119a2703f78fef4f", "sha256": "8f93f795f11f39201ffed48ece114ec39880e03c05e3b86ee047e3f79647aef4" }, "downloads": -1, "filename": "b3j0f.schema-0.0.1.tar.bz2", "has_sig": false, "md5_digest": "16bb587217b73cdd119a2703f78fef4f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7710, "upload_time": "2016-06-22T15:52:13", "url": "https://files.pythonhosted.org/packages/c7/6b/a29fdd88ce9cea6eaf1614c7de622304ffb11829a40e0574199011671e4c/b3j0f.schema-0.0.1.tar.bz2" }, { "comment_text": "", "digests": { "md5": "8541d61a3790b6776deba5ed5283d3bf", "sha256": "91e059fa8d22eae6ef6dcd49e4c360a2b5b2c10b57195ab0ad1d0f6cceeee099" }, "downloads": -1, "filename": "b3j0f.schema-0.0.1.tar.gz", "has_sig": false, "md5_digest": "8541d61a3790b6776deba5ed5283d3bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7572, "upload_time": "2016-06-22T15:52:03", "url": "https://files.pythonhosted.org/packages/27/c7/eb981033ae6a8ba08e0400d58468faaadffcf026fc57fe41eca139d18e2a/b3j0f.schema-0.0.1.tar.gz" }, { "comment_text": "", "digests": { "md5": "5d463a73a012a249dfeecfbeec999a35", "sha256": "8799129ca0ffeb042e03c0a92c51876d3f2b989c18d0161d14331566ef3d075d" }, "downloads": -1, "filename": "b3j0f.schema-0.0.1.zip", "has_sig": false, "md5_digest": "5d463a73a012a249dfeecfbeec999a35", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23010, "upload_time": "2016-06-22T15:51:58", "url": "https://files.pythonhosted.org/packages/48/60/abf9a9f8064c199d29a8cf922c8732766b4ff03000ff60a03a443d233a22/b3j0f.schema-0.0.1.zip" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "333bb9bc68b2479f63a479ae5763e32f", "sha256": "2b27ed9f3d531857c49b291fc9f6e914c41b8a5a68b91cd1edf702ca7fc7dc14" }, "downloads": -1, "filename": "b3j0f.schema-0.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "333bb9bc68b2479f63a479ae5763e32f", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 50895, "upload_time": "2016-10-14T00:19:43", "url": "https://files.pythonhosted.org/packages/9c/64/20290e9219f1ad9b6bcc813428ef9c59912d5bd475d8c3ae0d8cff52deb6/b3j0f.schema-0.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fbcbbca94aec40f6bea2f5d5092b07cb", "sha256": "c271e06eb5e971081a6805f639122b2352ff49fee4a0b614f9eaaf9035cc7b1a" }, "downloads": -1, "filename": "b3j0f.schema-0.0.2.tar.bz2", "has_sig": false, "md5_digest": "fbcbbca94aec40f6bea2f5d5092b07cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21965, "upload_time": "2016-10-14T00:19:40", "url": "https://files.pythonhosted.org/packages/45/a6/0e654c82e28c7a1207edd5dccf2270f56afa9daaa7e17b838587105bba48/b3j0f.schema-0.0.2.tar.bz2" }, { "comment_text": "", "digests": { "md5": "ee71075e80906a37f00386b34e1b0143", "sha256": "4528e9902c33cad75d38653a164c19802cfb69fabb2e1ca7d7940a9bd18592d9" }, "downloads": -1, "filename": "b3j0f.schema-0.0.2.tar.gz", "has_sig": false, "md5_digest": "ee71075e80906a37f00386b34e1b0143", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25337, "upload_time": "2016-10-14T00:19:37", "url": "https://files.pythonhosted.org/packages/84/34/e23ac15f17831eb60402dfd3365168d937a7cdb77d0adfe8ff812a9a33a5/b3j0f.schema-0.0.2.tar.gz" }, { "comment_text": "", "digests": { "md5": "6c6fe9fdf11bfba1a8685d12c31aebc3", "sha256": "a19cf1a59eab2b6904ec8fc239d998dedc47d8b62824fa7c73ca19d297878b13" }, "downloads": -1, "filename": "b3j0f.schema-0.0.2.zip", "has_sig": false, "md5_digest": "6c6fe9fdf11bfba1a8685d12c31aebc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 52262, "upload_time": "2016-10-14T00:19:34", "url": "https://files.pythonhosted.org/packages/7f/67/38a45c85ba202f723c4ebaa86e66589cd7a9d1ecbbfea4d3ee27c697f55a/b3j0f.schema-0.0.2.zip" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "971dd5f7bd7281e3379e622e917bf412", "sha256": "98693522f71c185d386d8805d52b8d98b79245f4235a71c18dfe75a28fa1c7aa" }, "downloads": -1, "filename": "b3j0f.schema-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "971dd5f7bd7281e3379e622e917bf412", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 50912, "upload_time": "2016-10-26T08:35:34", "url": "https://files.pythonhosted.org/packages/09/73/a5db40a4d4c665a1ad47519138a5ff126a17123b945e0f102867414cff81/b3j0f.schema-0.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "df8a22a4333b3a67a6917d1599c7270f", "sha256": "b707a6cd915f37dc5772e9cd18499be95cc437102000389e40f3dee065b498b8" }, "downloads": -1, "filename": "b3j0f.schema-0.0.3.tar.bz2", "has_sig": false, "md5_digest": "df8a22a4333b3a67a6917d1599c7270f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22010, "upload_time": "2016-10-26T08:35:32", "url": "https://files.pythonhosted.org/packages/05/f3/070a893cd24260421509c313cd1da1e756ca67c383b0d2d5eef209aef455/b3j0f.schema-0.0.3.tar.bz2" }, { "comment_text": "", "digests": { "md5": "3d771210d28519042b32cecd0a83c90f", "sha256": "2f7804f08748b03244f05a12404adef477d8770dfdcd175b1ca2d497d5c6a25f" }, "downloads": -1, "filename": "b3j0f.schema-0.0.3.tar.gz", "has_sig": false, "md5_digest": "3d771210d28519042b32cecd0a83c90f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25423, "upload_time": "2016-10-26T08:35:28", "url": "https://files.pythonhosted.org/packages/61/32/db70860b20686f9d12204441b551a3ab47ce2890c399605c18462a88d8db/b3j0f.schema-0.0.3.tar.gz" }, { "comment_text": "", "digests": { "md5": "8131bdee8bf32812d75faf78d00e3991", "sha256": "517fd2c08e78e2219737f59058fa1a3e7e6e444b6e539d3063698f0bfdabe39c" }, "downloads": -1, "filename": "b3j0f.schema-0.0.3.zip", "has_sig": false, "md5_digest": "8131bdee8bf32812d75faf78d00e3991", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 52322, "upload_time": "2016-10-26T08:35:25", "url": "https://files.pythonhosted.org/packages/23/7a/7e086d0cc63eff6a011d7a060e44641280a0c95e71b41367f62d4ee1022a/b3j0f.schema-0.0.3.zip" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "43f303e84e678cb82a7bdc870035e885", "sha256": "1e9695bcf64f56390ac9186afc548a4bcea9e9210a25914ede13dffcaacce1bf" }, "downloads": -1, "filename": "b3j0f.schema-0.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "43f303e84e678cb82a7bdc870035e885", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 51065, "upload_time": "2016-10-26T12:00:23", "url": "https://files.pythonhosted.org/packages/05/27/c5722aa8a44f60b79c04542745b6c97b207229fe659df5370bfa29256602/b3j0f.schema-0.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a9287fe723a90aaa39808459b105898f", "sha256": "88fda909e791715c36284e7ed4f0bbcff208b1e57750028780f5fdd0471c9367" }, "downloads": -1, "filename": "b3j0f.schema-0.0.4.tar.bz2", "has_sig": false, "md5_digest": "a9287fe723a90aaa39808459b105898f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22211, "upload_time": "2016-10-26T12:00:21", "url": "https://files.pythonhosted.org/packages/dc/a7/1b393481b2bd8f073719301a26f1356ba0278ae475c74bc57541dbf14fb9/b3j0f.schema-0.0.4.tar.bz2" }, { "comment_text": "", "digests": { "md5": "bb1cfd53a22c78205b79cb44d6445781", "sha256": "64530fbee37b3a696f6c3dc344f22b7558e4638e1d8636301e19038f6f14c72e" }, "downloads": -1, "filename": "b3j0f.schema-0.0.4.tar.gz", "has_sig": false, "md5_digest": "bb1cfd53a22c78205b79cb44d6445781", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25633, "upload_time": "2016-10-26T12:00:18", "url": "https://files.pythonhosted.org/packages/24/51/0217245feb625284f5e25cb2ec37d09184488f9b3f749524556280540b4b/b3j0f.schema-0.0.4.tar.gz" }, { "comment_text": "", "digests": { "md5": "d586afc53c38b944ef298166c9333645", "sha256": "18778ab7fb5cd8aa7d8c7124038484b49e85898cc38b79b131d3dfa11723dfd1" }, "downloads": -1, "filename": "b3j0f.schema-0.0.4.zip", "has_sig": false, "md5_digest": "d586afc53c38b944ef298166c9333645", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 52563, "upload_time": "2016-10-26T12:00:15", "url": "https://files.pythonhosted.org/packages/ff/70/2d9e555baf1328a7226f3904c45656ffc7f0391c9a66f8e829b13f38a5c1/b3j0f.schema-0.0.4.zip" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "b5d6e92edff51faff3852228eeb24ffd", "sha256": "c67fae0e5aa71215b4770650a8fc7a06951cf25213ffa302d78e77622198925b" }, "downloads": -1, "filename": "b3j0f.schema-0.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b5d6e92edff51faff3852228eeb24ffd", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 51249, "upload_time": "2016-10-26T16:17:30", "url": "https://files.pythonhosted.org/packages/a6/32/c74454ad82a065c862e89abaa7ee0c82082035771dc659a0cdb2b5158779/b3j0f.schema-0.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "493922cbe35492ec8ecab2e57879f1b2", "sha256": "2934c3d6459fa8dfd5f02731c7ebfc68db0ba55318349c7654bc1a801e4b063f" }, "downloads": -1, "filename": "b3j0f.schema-0.0.5.tar.bz2", "has_sig": false, "md5_digest": "493922cbe35492ec8ecab2e57879f1b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22390, "upload_time": "2016-10-26T16:17:27", "url": "https://files.pythonhosted.org/packages/7b/4e/849dbe60e9b8ba0ca5f442cc02660c2583a920981a80ce0ca2edb85a999d/b3j0f.schema-0.0.5.tar.bz2" }, { "comment_text": "", "digests": { "md5": "8a3eb61121cd443fa067933cf949e9c0", "sha256": "a39ef17496fc1fff9cc166ef394e613fe25ae786183773d2972da4ba9486d767" }, "downloads": -1, "filename": "b3j0f.schema-0.0.5.tar.gz", "has_sig": false, "md5_digest": "8a3eb61121cd443fa067933cf949e9c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25927, "upload_time": "2016-10-26T16:17:22", "url": "https://files.pythonhosted.org/packages/8c/63/7c05ea6976f9b50957da771b29722ba1a63b8e461d2a56d0d95118825231/b3j0f.schema-0.0.5.tar.gz" }, { "comment_text": "", "digests": { "md5": "e7fe792a968ebe608cc4920aef0aee9f", "sha256": "c446aeee93f518f520da8e6de6a3317e42e056d5a47804622585c4cd54250c81" }, "downloads": -1, "filename": "b3j0f.schema-0.0.5.zip", "has_sig": false, "md5_digest": "e7fe792a968ebe608cc4920aef0aee9f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 52778, "upload_time": "2016-10-26T16:17:19", "url": "https://files.pythonhosted.org/packages/e4/7d/29e6da079aef3a651946777ff454a64653b2674f5071acce69bcadd9a0b0/b3j0f.schema-0.0.5.zip" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "30c8153dc33d5438e42ef5bdf268c856", "sha256": "f433ce10655c11609da2048c6957fe380140043aacadcb61e96cc3361b738ccd" }, "downloads": -1, "filename": "b3j0f.schema-0.0.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "30c8153dc33d5438e42ef5bdf268c856", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 51273, "upload_time": "2016-10-27T00:34:47", "url": "https://files.pythonhosted.org/packages/7b/89/1cb08e6fa701211ff4a4e21e2523745f49b69db16d09a50d381ccb2c51c0/b3j0f.schema-0.0.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f576184be7cbe98cdfd867104bacad83", "sha256": "e948db5edd6ecb3beb36807c42150a4beb8c50d8ef90093db194a9baa4272d6e" }, "downloads": -1, "filename": "b3j0f.schema-0.0.6.tar.bz2", "has_sig": false, "md5_digest": "f576184be7cbe98cdfd867104bacad83", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22407, "upload_time": "2016-10-27T00:34:43", "url": "https://files.pythonhosted.org/packages/fa/d1/8fe2597428c025b4e58a009c6ed5634e5e09aac9e9c3f47ee2523a2cc3db/b3j0f.schema-0.0.6.tar.bz2" }, { "comment_text": "", "digests": { "md5": "960fedc8178348824fe0aa0532346bb1", "sha256": "c33fd87b4628ca4f677272e67d9d91a114d3aef409a1f18b1818a6ca918a42d9" }, "downloads": -1, "filename": "b3j0f.schema-0.0.6.tar.gz", "has_sig": false, "md5_digest": "960fedc8178348824fe0aa0532346bb1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25890, "upload_time": "2016-10-27T00:34:39", "url": "https://files.pythonhosted.org/packages/bc/b2/fc4ce8f624ebf983f3e5aa88ec905a028fddc02cf954ffd5d9105b0785d5/b3j0f.schema-0.0.6.tar.gz" }, { "comment_text": "", "digests": { "md5": "965fe51e9f45bbf86bab2c3e6d50d23b", "sha256": "9b1674bbe285694d2dd86584d1c877f442592047e878ad1e2d7d65dac6e07c38" }, "downloads": -1, "filename": "b3j0f.schema-0.0.6.zip", "has_sig": false, "md5_digest": "965fe51e9f45bbf86bab2c3e6d50d23b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 52857, "upload_time": "2016-10-27T00:34:35", "url": "https://files.pythonhosted.org/packages/14/8f/3cc850fbffd1bb9821a06d39635a294cbef39c1c2002881ec557db24daac/b3j0f.schema-0.0.6.zip" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "728868250da4133e6f1940dac180c3a0", "sha256": "4d6407d62102860b9397263072415257fe3a151d96bb375bfe5dac7f179f2895" }, "downloads": -1, "filename": "b3j0f.schema-0.0.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "728868250da4133e6f1940dac180c3a0", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 51388, "upload_time": "2016-10-27T03:37:03", "url": "https://files.pythonhosted.org/packages/f2/d7/a2d1ff4fdec217dc413c99244141163d70b7f49d64168f6035e67c8a45e3/b3j0f.schema-0.0.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "955fbb10a7770064f815adb38ac0e017", "sha256": "4de08bbb7aacbe6be5cd84318d037a3c708e77e5a7561496bcb9accccf865e02" }, "downloads": -1, "filename": "b3j0f.schema-0.0.7.tar.bz2", "has_sig": false, "md5_digest": "955fbb10a7770064f815adb38ac0e017", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22559, "upload_time": "2016-10-27T03:36:58", "url": "https://files.pythonhosted.org/packages/46/f4/31deed15c0e4b4a6ef9963d22350ec5a2e7450f78d8e7ffdedf7e827bff0/b3j0f.schema-0.0.7.tar.bz2" }, { "comment_text": "", "digests": { "md5": "66fe2a8125716653cf757fe1501b0e04", "sha256": "24bd7e7a021385fdaf236d44865e60c4e840ab5d8ef330d8959ff4629cfc1089" }, "downloads": -1, "filename": "b3j0f.schema-0.0.7.tar.gz", "has_sig": false, "md5_digest": "66fe2a8125716653cf757fe1501b0e04", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26132, "upload_time": "2016-10-27T03:36:53", "url": "https://files.pythonhosted.org/packages/da/03/ddfb8eac3738a2428e26fbad26be9d5b59978746956d9602f56bcae9b065/b3j0f.schema-0.0.7.tar.gz" }, { "comment_text": "", "digests": { "md5": "b3c02d04f83654c26ccb04af4756e125", "sha256": "8dc3841b8f2dc910137882cb5001cbbfef86cabd19b4530a9b6c54789b41f2e6" }, "downloads": -1, "filename": "b3j0f.schema-0.0.7.zip", "has_sig": false, "md5_digest": "b3c02d04f83654c26ccb04af4756e125", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53008, "upload_time": "2016-10-27T03:36:49", "url": "https://files.pythonhosted.org/packages/f3/31/a8ba8862aa59e67189d52373fe49d2c4ca1295c46edaf45c46fd464c1ef7/b3j0f.schema-0.0.7.zip" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "f65199c08ff0a9e602eea4b5ef36c1d8", "sha256": "db3de877f5b725c77eaf0fdb9d7c41b826fe0414028c1ab7fe3e77dabc72a1e0" }, "downloads": -1, "filename": "b3j0f.schema-0.0.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f65199c08ff0a9e602eea4b5ef36c1d8", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 52520, "upload_time": "2016-10-27T05:09:03", "url": "https://files.pythonhosted.org/packages/08/f7/590c352e5fe5802b41172261de498f7305d933dbd2804310b60d4d42acdf/b3j0f.schema-0.0.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1024f99b2e8c4c9156bd408cc459ca15", "sha256": "cdb22d88ca979a5dc18d4f43d999fc9fa5654edb2d4475665dddb85aee42dd41" }, "downloads": -1, "filename": "b3j0f.schema-0.0.8.tar.bz2", "has_sig": false, "md5_digest": "1024f99b2e8c4c9156bd408cc459ca15", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23417, "upload_time": "2016-10-27T05:09:00", "url": "https://files.pythonhosted.org/packages/95/fb/8abdb91dbed45a5f4d238dad7edd5851d3b78f0bcb2e4a597506d843924b/b3j0f.schema-0.0.8.tar.bz2" }, { "comment_text": "", "digests": { "md5": "45073ff5bf0475982d6737eff4409059", "sha256": "913f7d87df4e6429bda9903d3b85115757eaf5731ec188c86727aaa5a4d02a09" }, "downloads": -1, "filename": "b3j0f.schema-0.0.8.tar.gz", "has_sig": false, "md5_digest": "45073ff5bf0475982d6737eff4409059", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27115, "upload_time": "2016-10-27T05:08:57", "url": "https://files.pythonhosted.org/packages/ac/ef/e54b1447a944adbb567760930485b4d15b9de28944faaf0061049d941fed/b3j0f.schema-0.0.8.tar.gz" }, { "comment_text": "", "digests": { "md5": "6e67fc07f6716acf916b304024c009ff", "sha256": "224d2a80bb9d16cd19c53a3166efc4a8502e548f43b63b3795dbcaf8781b3947" }, "downloads": -1, "filename": "b3j0f.schema-0.0.8.zip", "has_sig": false, "md5_digest": "6e67fc07f6716acf916b304024c009ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 54351, "upload_time": "2016-10-27T05:08:54", "url": "https://files.pythonhosted.org/packages/ec/bb/eeff126d31da03a484d8bafa5d22a5ec39250a7211857606ba0f679d4d06/b3j0f.schema-0.0.8.zip" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "6b2bc2d09e781a6ca4f652f9aea12a17", "sha256": "070a7bf56147c195d439151442e5d5b24f247d001bb3e673db1d66146bfcbe88" }, "downloads": -1, "filename": "b3j0f.schema-0.0.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6b2bc2d09e781a6ca4f652f9aea12a17", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 52788, "upload_time": "2016-10-27T23:22:16", "url": "https://files.pythonhosted.org/packages/d1/80/5c8c733fa12173c130b5a54c2a5b12e58b8b1fb8bed4e586a5cb41bc30e3/b3j0f.schema-0.0.9-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6c0e25da8a64d59679d7a444319868e7", "sha256": "6a9e5259aa75461d08a6fb0ffa998c75c9b74e8a12929845afeb7d2c592df02f" }, "downloads": -1, "filename": "b3j0f.schema-0.0.9.tar.bz2", "has_sig": false, "md5_digest": "6c0e25da8a64d59679d7a444319868e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23649, "upload_time": "2016-10-27T23:22:12", "url": "https://files.pythonhosted.org/packages/32/d0/ac9d47dfccbfb29a1f1ca940b7a26546b6687bcdcbb444f6b904a3125b95/b3j0f.schema-0.0.9.tar.bz2" }, { "comment_text": "", "digests": { "md5": "cc1e8d3b07dc7202d72358c3b72ce2f0", "sha256": "330dabb41b7a37283e355c4c2d6ceec3b64ff0d273b03eb8703c9527822accab" }, "downloads": -1, "filename": "b3j0f.schema-0.0.9.tar.gz", "has_sig": false, "md5_digest": "cc1e8d3b07dc7202d72358c3b72ce2f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27505, "upload_time": "2016-10-27T23:22:10", "url": "https://files.pythonhosted.org/packages/12/be/c8bd1c55d07dafdadf754045044b9a3bcb63d6b7f96a39228476453c6b93/b3j0f.schema-0.0.9.tar.gz" }, { "comment_text": "", "digests": { "md5": "3ce4211010ce426f419705310c6915cd", "sha256": "3b135467e63b58ae1b78e08e6f7645496cda53368ad1a1ccfe0f79d2dba0653b" }, "downloads": -1, "filename": "b3j0f.schema-0.0.9.zip", "has_sig": false, "md5_digest": "3ce4211010ce426f419705310c6915cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 54681, "upload_time": "2016-10-27T23:22:06", "url": "https://files.pythonhosted.org/packages/19/59/fbfce4c0240d341dcd5985608b187acdef2dd1d7eb2436ecfe1c406a2490/b3j0f.schema-0.0.9.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6b2bc2d09e781a6ca4f652f9aea12a17", "sha256": "070a7bf56147c195d439151442e5d5b24f247d001bb3e673db1d66146bfcbe88" }, "downloads": -1, "filename": "b3j0f.schema-0.0.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6b2bc2d09e781a6ca4f652f9aea12a17", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 52788, "upload_time": "2016-10-27T23:22:16", "url": "https://files.pythonhosted.org/packages/d1/80/5c8c733fa12173c130b5a54c2a5b12e58b8b1fb8bed4e586a5cb41bc30e3/b3j0f.schema-0.0.9-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6c0e25da8a64d59679d7a444319868e7", "sha256": "6a9e5259aa75461d08a6fb0ffa998c75c9b74e8a12929845afeb7d2c592df02f" }, "downloads": -1, "filename": "b3j0f.schema-0.0.9.tar.bz2", "has_sig": false, "md5_digest": "6c0e25da8a64d59679d7a444319868e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23649, "upload_time": "2016-10-27T23:22:12", "url": "https://files.pythonhosted.org/packages/32/d0/ac9d47dfccbfb29a1f1ca940b7a26546b6687bcdcbb444f6b904a3125b95/b3j0f.schema-0.0.9.tar.bz2" }, { "comment_text": "", "digests": { "md5": "cc1e8d3b07dc7202d72358c3b72ce2f0", "sha256": "330dabb41b7a37283e355c4c2d6ceec3b64ff0d273b03eb8703c9527822accab" }, "downloads": -1, "filename": "b3j0f.schema-0.0.9.tar.gz", "has_sig": false, "md5_digest": "cc1e8d3b07dc7202d72358c3b72ce2f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27505, "upload_time": "2016-10-27T23:22:10", "url": "https://files.pythonhosted.org/packages/12/be/c8bd1c55d07dafdadf754045044b9a3bcb63d6b7f96a39228476453c6b93/b3j0f.schema-0.0.9.tar.gz" }, { "comment_text": "", "digests": { "md5": "3ce4211010ce426f419705310c6915cd", "sha256": "3b135467e63b58ae1b78e08e6f7645496cda53368ad1a1ccfe0f79d2dba0653b" }, "downloads": -1, "filename": "b3j0f.schema-0.0.9.zip", "has_sig": false, "md5_digest": "3ce4211010ce426f419705310c6915cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 54681, "upload_time": "2016-10-27T23:22:06", "url": "https://files.pythonhosted.org/packages/19/59/fbfce4c0240d341dcd5985608b187acdef2dd1d7eb2436ecfe1c406a2490/b3j0f.schema-0.0.9.zip" } ] }