{ "info": { "author": "Open Knowledge Foundation", "author_email": "info@okfn.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# JSON Table Schema\n\n[![Travis](https://travis-ci.org/frictionlessdata/jsontableschema-py.svg?branch=master)](https://travis-ci.org/frictionlessdata/jsontableschema-py)\n[![Coveralls](http://img.shields.io/coveralls/frictionlessdata/jsontableschema-py.svg?branch=master)](https://coveralls.io/r/frictionlessdata/jsontableschema-py?branch=master)\n[![PyPi](https://img.shields.io/pypi/v/jsontableschema.svg)](https://pypi.python.org/pypi/jsontableschema)\n[![SemVer](https://img.shields.io/badge/versions-SemVer-brightgreen.svg)](http://semver.org/)\n[![Gitter](https://img.shields.io/gitter/room/frictionlessdata/chat.svg)](https://gitter.im/frictionlessdata/chat)\n\nA utility library for working with [JSON Table Schema](http://dataprotocols.org/json-table-schema/) in Python.\n\n> With v0.7 renewed API has been introduced in backward-compatibility manner. Documentation for deprecated API could be found [here](https://github.com/frictionlessdata/jsontableschema-py/tree/0.6.5#json-table-schema). Deprecated API will be removed with v1 release.\n\n## Features\n\n- `Table` to work with data tables described by JSON Table Schema\n- `Schema` representing JSON Table Schema\n- `Field` representing JSON Table Schema field\n- `validate` to validate JSON Table Schema\n- `infer` to infer JSON Table Schema from data\n- built-in command-line interface to validate and infer schemas\n- storage/plugins system to connect tables to different storage backends like SQL Database\n\n## Gettings Started\n\n### Installation\n\n```bash\npip install jsontableschema\n```\n### Example\n\n```python\nfrom jsontableschema import Table\n\n# Create table\ntable = Table('path.csv', schema='schema.json')\n\n# Print schema descriptor\nprint(table.schema.descriptor)\n\n# Print cast rows in a dict form\nfor keyed_row in table.iter(keyed=True):\n print(keyed_row)\n```\n\n### Table\n\nTable represents data described by JSON Table Schema:\n\n```python\n# pip install sqlalchemy jsontableschema-sql\nimport sqlalchemy as sa\nfrom pprint import pprint\nfrom jsontableschema import Table\n\n# Data source\nSOURCE = 'https://raw.githubusercontent.com/okfn/jsontableschema-py/master/data/data_infer.csv'\n\n# Create SQL database\ndb = sa.create_engine('sqlite://')\n\n# Data processor\ndef skip_under_30(erows):\n for number, headers, row in erows:\n krow = dict(zip(headers, row))\n if krow['age'] >= 30:\n yield (number, headers, row)\n\n# Work with table\ntable = Table(SOURCE, post_cast=[skip_under_30])\ntable.schema.save('tmp/persons.json') # Save INFERRED schema\ntable.save('persons', backend='sql', engine=db) # Save data to SQL\ntable.save('tmp/persons.csv') # Save data to DRIVE\n\n# Check the result\npprint(Table('persons', backend='sql', engine=db).read(keyed=True))\npprint(Table('tmp/persons.csv').read(keyed=True))\n# Will print (twice)\n# [{'age': 39, 'id': 1, 'name': 'Paul'},\n# {'age': 36, 'id': 3, 'name': 'Jane'}]\n```\n\n### Schema\n\nA model of a schema with helpful methods for working with the schema and supported data. Schema instances can be initialized with a schema source as a filepath or url to a JSON file, or a Python dict. The schema is initially validated (see [validate](#validate) below), and will raise an exception if not a valid JSON Table Schema.\n\n```python\nfrom jsontableschema import Schema\n\n# Init schema\nschema = Schema('path.json')\n\n# Cast a row\nschema.cast_row(['12345', 'a string', 'another field'])\n```\n\nMethods available to `Schema` instances:\n\n- `descriptor` - return schema descriptor\n- `fields` - an array of the schema's Field instances\n- `headers` - an array of the schema headers\n- `primary_key` - the primary key field for the schema as an array\n- `foreignKey` - the foreign key property for the schema as an array\n- `get_field(name)` - return the field object for given name\n- `has_field(name)` - return a bool if the field exists in the schema\n- `cast_row(row, no_fail_fast=False)` - return row cast against schema\n- `save(target)` - save schema to filesystem\n\nWhere the option `no_fail_fast` is given, it will collect all errors it encouters and an exceptions.MultipleInvalid will be raised (if there are errors).\n\n### Field\n\n```python\nfrom jsontableschemal import Field\n\n# Init field\nfield = Field({'type': 'number'})\n\n# Cast a value\nfield.cast_value('12345') # -> 12345\n```\n\nData values can be cast to native Python objects with a Field instance. Type instances can be initialized with [field descriptors](http://dataprotocols.org/json-table-schema/#field-descriptors). This allows formats and constraints to be defined.\n\nCasting a value will check the value is of the expected type, is in the correct format, and complies with any constraints imposed by a schema. E.g. a date value (in ISO 8601 format) can be cast with a DateType instance. Values that can't be cast will raise an `InvalidCastError` exception.\n\nCasting a value that doesn't meet the constraints will raise a `ConstraintError` exception.\n\n### validate\n\nGiven a schema as JSON file, url to JSON file, or a Python dict, `validate` returns `True` for a valid JSON Table Schema, or raises an exception, `SchemaValidationError`. It validates only **schema**, not data against schema!\n\n```python\nimport io\nimport json\n\nfrom jsontableschema import validate\n\nwith io.open('schema_to_validate.json') as stream:\n descriptor = json.load(stream)\n\ntry:\n jsontableschema.validate(descriptor)\nexcept jsontableschema.exceptions.SchemaValidationError as exception:\n # handle error\n\n```\n\nIt may be useful to report multiple errors when validating a schema. This can be done with `no_fail_fast` flag set to True.\n\n```python\ntry:\n jsontableschema.validate(descriptor, no_fail_fast=True)\nexcept jsontableschema.exceptions.MultipleInvalid as exception:\n for error in exception.errors:\n # handle error\n```\n\n### infer\n\nGiven headers and data, `infer` will return a JSON Table Schema as a Python dict based on the data values. Given the data file, data_to_infer.csv:\n\n```\nid,age,name\n1,39,Paul\n2,23,Jimmy\n3,36,Jane\n4,28,Judy\n```\n\nCall `infer` with headers and values from the datafile:\n\n```python\nimport io\nimport csv\n\nfrom jsontableschema import infer\n\nfilepath = 'data_to_infer.csv'\nwith io.open(filepath) as stream:\n headers = stream.readline().rstrip('\\n').split(',')\n values = csv.reader(stream)\n\nschema = infer(headers, values)\n```\n\n`schema` is now a schema dict:\n\n```python\n{u'fields': [\n {\n u'description': u'',\n u'format': u'default',\n u'name': u'id',\n u'title': u'',\n u'type': u'integer'\n },\n {\n u'description': u'',\n u'format': u'default',\n u'name': u'age',\n u'title': u'',\n u'type': u'integer'\n },\n {\n u'description': u'',\n u'format': u'default',\n u'name': u'name',\n u'title': u'',\n u'type': u'string'\n }]\n}\n```\n\nThe number of rows used by `infer` can be limited with the `row_limit` argument.\n\n### CLI\n\n> It's a provisional API excluded from SemVer. If you use it as a part of other program please pin concrete `goodtables` version to your requirements file.\n\nJSON Table Schema features a CLI called `jsontableschema`. This CLI exposes the `infer` and `validate` functions for command line use.\n\nExample of `validate` usage:\n\n```\n$ jsontableschema validate path/to-schema.json\n```\n\nExample of `infer` usage:\n\n```\n$ jsontableschema infer path/to/data.csv\n```\n\nThe response is a schema as JSON. The optional argument `--encoding` allows a character encoding to be specified for the data file. The default is utf-8.\n\n### Storage\n\nThe library includes interface declaration to implement tabular `Storage`:\n\n![Storage](data/storage.png)\n\nAn implementor should follow `jsontableschema.Storage` interface to write his\nown storage backend. This backend could be used with `Table` class. See `plugins`\nsystem below to know how to integrate custom storage plugin.\n\n### plugins\n\nJSON Table Schema has a plugin system. Any package with the name like `jsontableschema_` could be imported as:\n\n```python\nfrom jsontableschema.plugins import \n```\n\nIf a plugin is not installed `ImportError` will be raised with a message describing how to install the plugin.\n\nA list of officially supported plugins:\n- BigQuery Storage - https://github.com/frictionlessdata/jsontableschema-bigquery-py\n- Pandas Storage - https://github.com/frictionlessdata/jsontableschema-pandas-py\n- SQL Storage - https://github.com/frictionlessdata/jsontableschema-sql-py\n\n## API Reference\n\n### Snapshot\n\n```\nTable(source, schema=None, post_cast=None, backend=None, **options)\n stream -> tabulator.Stream\n schema -> Schema\n name -> str\n iter(keyed/extended=False) -> (generator) (keyed/extended)row[]\n read(keyed/extended=False, limit=None) -> (keyed/extended)row[]\n save(target, backend=None, **options)\nSchema(descriptor)\n descriptor -> dict\n fields -> Field[]\n headers -> str[]\n primary_key -> str[]\n foreign_keys -> str[]\n get_field(name) -> Field\n has_field(name) -> bool\n cast_row(row, no_fail_fast=False) -> row\n save(target)\nField(descriptor)\n descriptor -> dict\n name -> str\n type -> str\n format -> str\n constraints -> dict\n cast_value(value, skip_constraints=False) -> value\n test_value(value, skip_constraints=False, constraint=None) -> bool\nvalidate(descriptor, no_fail_fast=False) -> bool\ninfer(headers, values) -> descriptor\nexceptions\n~cli\n---\nStorage(**options)\n buckets -> str[]\n create(bucket, descriptor, force=False)\n delete(bucket=None, ignore=False)\n describe(bucket, descriptor=None) -> descriptor\n iter(bucket) -> (generator) row[]\n read(bucket) -> row[]\n write(bucket, rows)\nplugins\n```\n\n### Detailed\n\n- [Docstrings](https://github.com/frictionlessdata/jsontableschema-py/tree/master/jsontableschema)\n- [Changelog](https://github.com/frictionlessdata/jsontableschema-py/commits/master)\n\n## Contributing\n\nPlease read the contribution guideline:\n\n[How to Contribute](CONTRIBUTING.md)\n\nThanks!", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/frictionlessdata/jsontableschema-py", "keywords": "frictionless data,open data,json schema,json table schema,data package,tabular data package", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "jsontableschema", "package_url": "https://pypi.org/project/jsontableschema/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/jsontableschema/", "project_urls": { "Homepage": "https://github.com/frictionlessdata/jsontableschema-py" }, "release_url": "https://pypi.org/project/jsontableschema/0.10.1/", "requires_dist": [ "click (>=3.3,<7.0)", "future (>=0.15,<1.0)", "isodate (>=0.5.4,<1.0)", "jsonschema (>=2.5,<3.0)", "python-dateutil (>=2.4,<3.0)", "requests (>=2.5,<3.0)", "rfc3986 (>=0.4,<1.0)", "tabulator (>=1.0.0a5,<2.0)", "unicodecsv (>=0.14,<1.0)", "pylama; extra == 'develop'", "tox; extra == 'develop'" ], "requires_python": "", "summary": "A utility library for working with JSON Table Schema in Python", "version": "0.10.1" }, "last_serial": 2897556, "releases": { "0.10.0": [ { "comment_text": "", "digests": { "md5": "8b12cedee1ac9c39753a1ae8ac222f45", "sha256": "381d41393209ae7dc4f839969417da9a6e6c7f09afe87700f44cd1e34374e3c1" }, "downloads": -1, "filename": "jsontableschema-0.10.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8b12cedee1ac9c39753a1ae8ac222f45", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 48558, "upload_time": "2017-03-25T09:28:10", "url": "https://files.pythonhosted.org/packages/25/8c/9d0f4e9dc00e69d1b343ecf7849102492df6da5f7c961517ee07057e079c/jsontableschema-0.10.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "257f1658b23111ca5909ca8add326f10", "sha256": "116c5c25f254c604d47a4f1042e1cb630e97c052cb8ee04edcbde10f307c53d9" }, "downloads": -1, "filename": "jsontableschema-0.10.0.tar.gz", "has_sig": false, "md5_digest": "257f1658b23111ca5909ca8add326f10", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32442, "upload_time": "2017-03-25T09:28:11", "url": "https://files.pythonhosted.org/packages/da/d4/cbeaa3a94bd8ffe7ae75f301366fdc95ffc0a51a8ef756015bb717a49cc8/jsontableschema-0.10.0.tar.gz" } ], "0.10.1": [ { "comment_text": "", "digests": { "md5": "2cd87f3fca607cdedab3463eec75d2f2", "sha256": "0cadcaf4f5b9196f5862e5528a20c85cf041fd29ab3d48c92fab8c4cee8498ab" }, "downloads": -1, "filename": "jsontableschema-0.10.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2cd87f3fca607cdedab3463eec75d2f2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 48562, "upload_time": "2017-05-25T08:22:20", "url": "https://files.pythonhosted.org/packages/8a/c3/69b70b67645a83c2723611ad2d744d2843f61c4ef73e71244c620b19b4f4/jsontableschema-0.10.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e25bf36ade5871fbdeddc3e281e17b15", "sha256": "71f35e5855c5284e18019f7b9db255b44c1da2341bc5dbe724e6d13f1bae4be7" }, "downloads": -1, "filename": "jsontableschema-0.10.1.tar.gz", "has_sig": false, "md5_digest": "e25bf36ade5871fbdeddc3e281e17b15", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32456, "upload_time": "2017-05-25T08:22:21", "url": "https://files.pythonhosted.org/packages/8c/a7/b697e0679a092add8f388bddc7ebee60a537707a272dbd7628048c24d156/jsontableschema-0.10.1.tar.gz" } ], "0.5.0": [], "0.5.1": [ { "comment_text": "", "digests": { "md5": "f77abe0835b7fed407f2652ecb5838e9", "sha256": "e934246c6cfb664ed37ed5252f297b4d608e636caa900cd005c2d70d1d4b2540" }, "downloads": -1, "filename": "jsontableschema-0.5.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f77abe0835b7fed407f2652ecb5838e9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 25681, "upload_time": "2015-11-03T15:27:44", "url": "https://files.pythonhosted.org/packages/80/f0/911bc1014f942e36a54bef34208da46d6c267a8dcba5ddb2824a81954dc0/jsontableschema-0.5.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "33381228d99f7d2cad83f3f14aec8cbe", "sha256": "28187ca6aed78b1773007f6fe200886cb131c99bd25e5a061ec981c732165f35" }, "downloads": -1, "filename": "jsontableschema-0.5.1.tar.gz", "has_sig": false, "md5_digest": "33381228d99f7d2cad83f3f14aec8cbe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17875, "upload_time": "2015-11-03T15:27:51", "url": "https://files.pythonhosted.org/packages/dd/90/9e0f3102e97b7d0f8c9f1a340359ad1ad1c74fd7cb76aa5a884c67b1f642/jsontableschema-0.5.1.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "8ddc8e301f267cab6806913b9ffc7639", "sha256": "28b3be058735255a4ad59cfe811a3277cde1ccd54347162108d95cb9170a3f62" }, "downloads": -1, "filename": "jsontableschema-0.6.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8ddc8e301f267cab6806913b9ffc7639", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 30053, "upload_time": "2016-03-29T13:11:53", "url": "https://files.pythonhosted.org/packages/23/e3/04b44f53d1d7bec9375c945382f55c0642e3396f7226e2ef7535389bcaa1/jsontableschema-0.6.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "932e6c1824cd8ec0b49270cac0eb7398", "sha256": "dc33b32429af54552200dc5dc7dae35f5673560866b9f8dc828fa6b91ed9a6c6" }, "downloads": -1, "filename": "jsontableschema-0.6.0.tar.gz", "has_sig": false, "md5_digest": "932e6c1824cd8ec0b49270cac0eb7398", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37320, "upload_time": "2016-03-29T13:12:01", "url": "https://files.pythonhosted.org/packages/41/a2/d25e0a312341fee856331887f7284e5e1eb68f629afaae477791bc2c1444/jsontableschema-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "9d33b5bf9d85e3f23d641c0afd48dbed", "sha256": "1c1698844938c8ef65dd9e7665775d903a6a245f56730f8e6ccf8533c8ded79d" }, "downloads": -1, "filename": "jsontableschema-0.6.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9d33b5bf9d85e3f23d641c0afd48dbed", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 41443, "upload_time": "2016-05-11T11:56:39", "url": "https://files.pythonhosted.org/packages/c9/ce/2bce74ef86be27d7ed3a0379f4c874dc8c83ec9254f30656801659c9527d/jsontableschema-0.6.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "99a0946fc63a8f1d4d4ecba898555e07", "sha256": "75fa0ec79f1e524b6d5c0e1efb770d774d1ce58b45e2945858f15fb3de544bf5" }, "downloads": -1, "filename": "jsontableschema-0.6.1.tar.gz", "has_sig": false, "md5_digest": "99a0946fc63a8f1d4d4ecba898555e07", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38917, "upload_time": "2016-05-11T11:56:47", "url": "https://files.pythonhosted.org/packages/75/ba/3832ede315f15283fc5c8f04f7144a7b45a1ed0d2d7bbe5dd424b3128014/jsontableschema-0.6.1.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "d09d709dd87c1e669222257135724216", "sha256": "c09c341254f3f0fd2bb8be7c72050fb77190ab7f7a82007421ba5d8dd8cdc266" }, "downloads": -1, "filename": "jsontableschema-0.6.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d09d709dd87c1e669222257135724216", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 41760, "upload_time": "2016-05-13T19:07:57", "url": "https://files.pythonhosted.org/packages/0b/63/f35bfc0ba4a7bb466b3a2083d974ce59c6974c47bfba34137ef4899562a7/jsontableschema-0.6.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bff7611e38b4db2cc95c45081777afb7", "sha256": "0a5aa27d1b294dee1010389f17457d33a18ba33bb69ee70d53c1175d84c40f44" }, "downloads": -1, "filename": "jsontableschema-0.6.2.tar.gz", "has_sig": false, "md5_digest": "bff7611e38b4db2cc95c45081777afb7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39191, "upload_time": "2016-05-13T19:08:21", "url": "https://files.pythonhosted.org/packages/15/94/ad96c689a565a36d6d63ebd4b42ab6e5c3f944a5774c13e3445725d3db91/jsontableschema-0.6.2.tar.gz" } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "9825cc4e97ddf59c26f6c50248cb7b29", "sha256": "4b729f48305f91f52c199d8535ffd89a5c395d825b278a68a01121d223833fc6" }, "downloads": -1, "filename": "jsontableschema-0.6.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9825cc4e97ddf59c26f6c50248cb7b29", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 41832, "upload_time": "2016-05-18T15:26:11", "url": "https://files.pythonhosted.org/packages/c8/b0/1429c09d63fdbf7cefe2b7639f2520be945f291e8ee4b67d0df04fb4f347/jsontableschema-0.6.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9d2800943c4a75a6f9232fb3bc69180a", "sha256": "a36fb1aa702f341a6e39c45b647538614c94dd86732a3a6798b48297c3eff997" }, "downloads": -1, "filename": "jsontableschema-0.6.3.tar.gz", "has_sig": false, "md5_digest": "9d2800943c4a75a6f9232fb3bc69180a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39235, "upload_time": "2016-05-18T15:26:27", "url": "https://files.pythonhosted.org/packages/dd/19/b78c004aeef62abb24dac057b890fd2a0a37f46f3fd786d4adfa6dfb5456/jsontableschema-0.6.3.tar.gz" } ], "0.6.4": [ { "comment_text": "", "digests": { "md5": "bed04bed89a926fa19707679fa47b7a6", "sha256": "72a1da2bc28d67eb129ea0a0688667388cf5938a21c16a20bfd689568f18e6b5" }, "downloads": -1, "filename": "jsontableschema-0.6.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bed04bed89a926fa19707679fa47b7a6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 41896, "upload_time": "2016-06-23T09:12:54", "url": "https://files.pythonhosted.org/packages/d8/0d/5b2bfb2f947d45b0489e39eaafc3d57a9812e50fe4477a31868a69c2d958/jsontableschema-0.6.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e6e6bff567616cf41c8a647af67ae942", "sha256": "8e1317cc005f742c914ad5772b3c79813fedc00e1d2cc1e5852c407081cc44cf" }, "downloads": -1, "filename": "jsontableschema-0.6.4.tar.gz", "has_sig": false, "md5_digest": "e6e6bff567616cf41c8a647af67ae942", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39317, "upload_time": "2016-06-23T09:13:01", "url": "https://files.pythonhosted.org/packages/13/29/99409f7b55bc6407fc1b4ae34b8dd91fe30d6ecfcf7c7897789a52bbed98/jsontableschema-0.6.4.tar.gz" } ], "0.6.5": [ { "comment_text": "", "digests": { "md5": "be03c8ce58568165a6b09c07c2309b21", "sha256": "51a093ca2c0672a4d05b508e793b85e38c9217b4d733028a708f274e6235b3e8" }, "downloads": -1, "filename": "jsontableschema-0.6.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "be03c8ce58568165a6b09c07c2309b21", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 41900, "upload_time": "2016-07-11T16:01:34", "url": "https://files.pythonhosted.org/packages/79/f4/d0fa544bbdd85f7c65be3f4960f9f3016b3274f53a4bff5c8dffa9359769/jsontableschema-0.6.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6fd1ffd12b6d1e618f40b467e6701ca0", "sha256": "210a860fdeec2b92c8d34a52ab9012a796587055a98d109d9707de2e6f7f3f47" }, "downloads": -1, "filename": "jsontableschema-0.6.5.tar.gz", "has_sig": false, "md5_digest": "6fd1ffd12b6d1e618f40b467e6701ca0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39277, "upload_time": "2016-07-11T16:01:39", "url": "https://files.pythonhosted.org/packages/26/83/f29941dc17efe1b4bd89b8cd57f9ec946e312c6abde0782ab94652375266/jsontableschema-0.6.5.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "a5f8fcbf12c1b3ec8a76cc73d509a14b", "sha256": "af5385f6970419c791c75ad8db2513b4d89054b1006787f7e798a36293b89740" }, "downloads": -1, "filename": "jsontableschema-0.7.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a5f8fcbf12c1b3ec8a76cc73d509a14b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 44899, "upload_time": "2016-10-03T21:42:58", "url": "https://files.pythonhosted.org/packages/d8/26/0707699496daf0891f84a8b732a79d3456930789986d49f829ed31e49d03/jsontableschema-0.7.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0a9bdc342c42abdf7598a69c39978557", "sha256": "baec3a0b5db2e4bb7ac76f0d687badad6cfd8e389cf6cbabb73c062ea8e20476" }, "downloads": -1, "filename": "jsontableschema-0.7.1.tar.gz", "has_sig": false, "md5_digest": "0a9bdc342c42abdf7598a69c39978557", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43788, "upload_time": "2016-10-03T21:43:00", "url": "https://files.pythonhosted.org/packages/da/fe/25ab77e79f3234b4bcf321e3213811516c83402c163937c8df02bc6df46f/jsontableschema-0.7.1.tar.gz" } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "7a611b11495d07da480c130ec3f0caea", "sha256": "bcfe0fef27bfcfbe6783010506d38620ecf35b37bb5aad63e316c9452bbe6733" }, "downloads": -1, "filename": "jsontableschema-0.7.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7a611b11495d07da480c130ec3f0caea", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 45528, "upload_time": "2016-10-11T12:31:30", "url": "https://files.pythonhosted.org/packages/00/2b/b4bc7893d13393d9deb1f7172764c09ca4c5ee68045591e074eb1988976f/jsontableschema-0.7.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dbe580dfa1b7dc24e5fc35a2f63c3022", "sha256": "4d5cd563d4cb2d325c28e54cd633db4fa3010caf54751223b71d2fbdbb5f4376" }, "downloads": -1, "filename": "jsontableschema-0.7.2.tar.gz", "has_sig": false, "md5_digest": "dbe580dfa1b7dc24e5fc35a2f63c3022", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44429, "upload_time": "2016-10-11T12:31:32", "url": "https://files.pythonhosted.org/packages/a0/02/e85d680cd72f07a656092da9658980636709b1065a0e71269fc25c02bf2c/jsontableschema-0.7.2.tar.gz" } ], "0.7.3": [ { "comment_text": "", "digests": { "md5": "8f47c29357e39933ad5fd7b0dbcfd18e", "sha256": "661ea1d08244d7370a19f4381926f555671a3848ad965506ecbd12ce6014d931" }, "downloads": -1, "filename": "jsontableschema-0.7.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8f47c29357e39933ad5fd7b0dbcfd18e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 45596, "upload_time": "2016-10-26T15:40:50", "url": "https://files.pythonhosted.org/packages/d5/4c/d77f16453dc4ac463998f40671916e730974139e821da0df746c5608bdb3/jsontableschema-0.7.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aff7c77ce9aef2cef2f5c759a69f8164", "sha256": "bc9977b1e1acd20b27a09449b78d97c155f8e55222d89720e1d7b690c546ea18" }, "downloads": -1, "filename": "jsontableschema-0.7.3.tar.gz", "has_sig": false, "md5_digest": "aff7c77ce9aef2cef2f5c759a69f8164", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44714, "upload_time": "2016-10-26T15:40:53", "url": "https://files.pythonhosted.org/packages/42/6c/61866ffabfb9e302f55950f53b0e7113e884a4c254af0a26f72c255830c0/jsontableschema-0.7.3.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "d9f88b1dd25410f719afd92d054c9da1", "sha256": "57babe04882dbca4248cbc6489ec341be0721f9bce278522a4e59bd6d2116ec8" }, "downloads": -1, "filename": "jsontableschema-0.8.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d9f88b1dd25410f719afd92d054c9da1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 46749, "upload_time": "2016-10-28T18:37:54", "url": "https://files.pythonhosted.org/packages/4b/7d/061b18bd6a9fe609c0e21b9847855b1ee7a5e6b69459141be2713379ac51/jsontableschema-0.8.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "896933b0ceb4f8d66aa0ded7bdd422d5", "sha256": "001279987fd027f921a4e5afdaa2a44b051bceddc7689fddfcccb7d052b9fd74" }, "downloads": -1, "filename": "jsontableschema-0.8.0.tar.gz", "has_sig": false, "md5_digest": "896933b0ceb4f8d66aa0ded7bdd422d5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46461, "upload_time": "2016-10-28T18:37:56", "url": "https://files.pythonhosted.org/packages/35/2d/9935e4c4a63f7bb71caf3729f1b2d4cacacbb8df5c486dc9d213e5898d6a/jsontableschema-0.8.0.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "3304b4b59a97eb36c11f306253f8e8f8", "sha256": "5775ceb79ddea28ab8d959539d62ec1684ec85738757c6be8e19c12896c40aac" }, "downloads": -1, "filename": "jsontableschema-0.8.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3304b4b59a97eb36c11f306253f8e8f8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 46670, "upload_time": "2016-10-28T19:42:01", "url": "https://files.pythonhosted.org/packages/a4/86/e78a48304981c02a9cdd29479cec98a1ba6367589c9aaf86bf0b225cfe45/jsontableschema-0.8.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ccafeff51c145e653b0649cf400273e3", "sha256": "44c1a65888630bda7dab3e596a0a506008107633905ac91be2ba805573fa0e36" }, "downloads": -1, "filename": "jsontableschema-0.8.1.tar.gz", "has_sig": false, "md5_digest": "ccafeff51c145e653b0649cf400273e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46237, "upload_time": "2016-10-28T19:42:04", "url": "https://files.pythonhosted.org/packages/68/40/c3b1549bd380f5d13b3118357dd918a5e75647d22221efe25d620b48c31b/jsontableschema-0.8.1.tar.gz" } ], "0.8.2": [ { "comment_text": "", "digests": { "md5": "57261f0884ff43f14ae8239fb3a5e1c3", "sha256": "baa7ff43070bce0f55800089f3f7ed16d4dabb676eee256d4f074f791d55624d" }, "downloads": -1, "filename": "jsontableschema-0.8.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "57261f0884ff43f14ae8239fb3a5e1c3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 46588, "upload_time": "2016-10-29T10:02:16", "url": "https://files.pythonhosted.org/packages/6c/6a/4fde377b29cc8cc05060f570ebafbc2443962e7d2bb10008aa8ab11d2ec2/jsontableschema-0.8.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8432ec7f20c1d2852ace19199801730e", "sha256": "b0f8762390b75fc1a4d78106b07cc842516d8068ea89575cf1c5f049dc1d79c3" }, "downloads": -1, "filename": "jsontableschema-0.8.2.tar.gz", "has_sig": false, "md5_digest": "8432ec7f20c1d2852ace19199801730e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46186, "upload_time": "2016-10-29T10:02:18", "url": "https://files.pythonhosted.org/packages/aa/59/a4781207da13cf86cd76befcd7c902d38d75fe56695a4319f2c281e978b6/jsontableschema-0.8.2.tar.gz" } ], "0.8.3": [ { "comment_text": "", "digests": { "md5": "b4e9fca88d322e755ae5bab8c81e2fab", "sha256": "82d7952c69e9a782220e1ec8e117af6023f32bee2ee2fff8959904bf73045c89" }, "downloads": -1, "filename": "jsontableschema-0.8.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b4e9fca88d322e755ae5bab8c81e2fab", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 46597, "upload_time": "2016-11-03T12:04:52", "url": "https://files.pythonhosted.org/packages/a8/3c/e71e591ce85b225f71cc04aed339629fe53351ff0c0844687fa49560471a/jsontableschema-0.8.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b52ec01ed6e7aad75d8d9378a32fd69b", "sha256": "4f2c058547cb19fe06e590451adfee9ebd7267efb290a0a48b31e2cb477c20f9" }, "downloads": -1, "filename": "jsontableschema-0.8.3.tar.gz", "has_sig": false, "md5_digest": "b52ec01ed6e7aad75d8d9378a32fd69b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45961, "upload_time": "2016-11-03T12:04:54", "url": "https://files.pythonhosted.org/packages/ba/c9/9357f230fcfb05264069b4fa7fa6f856a093d1862f69125f490385174e36/jsontableschema-0.8.3.tar.gz" } ], "0.8.4": [ { "comment_text": "", "digests": { "md5": "c3a75e38eedfde309e090644e1e4d0f4", "sha256": "959c3423ab709ffce740dbac448c26eb86ee7e733e6c06940b118b5e55b467f6" }, "downloads": -1, "filename": "jsontableschema-0.8.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c3a75e38eedfde309e090644e1e4d0f4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 46357, "upload_time": "2016-12-06T11:22:45", "url": "https://files.pythonhosted.org/packages/02/67/6621c320055e9f6746dd5159e1d809a5c577e448e9b0a5c6b8a832f115a2/jsontableschema-0.8.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "67c741a278d6e80be3ce22bc53bd7538", "sha256": "d6d13dc0b94685a0656023ea0ae29c23f85ba769d8ed56e04c312d966a6882ad" }, "downloads": -1, "filename": "jsontableschema-0.8.4.tar.gz", "has_sig": false, "md5_digest": "67c741a278d6e80be3ce22bc53bd7538", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31918, "upload_time": "2016-12-06T11:22:47", "url": "https://files.pythonhosted.org/packages/7a/3c/eea9fefb561ca01d50408fee962e74f2d8d21a04a8fdcd90c56d47df8be9/jsontableschema-0.8.4.tar.gz" } ], "0.8.5": [ { "comment_text": "", "digests": { "md5": "29efd9d179f592cf529c5cafa4310bd5", "sha256": "211fbb656f01886616eb5705cd0f1a1727bcee7e195c8767b5d163ac6aa761be" }, "downloads": -1, "filename": "jsontableschema-0.8.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "29efd9d179f592cf529c5cafa4310bd5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 46359, "upload_time": "2016-12-22T08:23:27", "url": "https://files.pythonhosted.org/packages/6e/7d/88f9c86c1ef1f3067355f7b7949f11f0e8e3f3ba67831f8e4542f8b05810/jsontableschema-0.8.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1807b3c6f786a5ec27d610c3d11ef7c8", "sha256": "0e5a04817488da88e49c8986d870f710825cd92dfcd02b7588a447a13fd44667" }, "downloads": -1, "filename": "jsontableschema-0.8.5.tar.gz", "has_sig": false, "md5_digest": "1807b3c6f786a5ec27d610c3d11ef7c8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31921, "upload_time": "2016-12-22T08:23:29", "url": "https://files.pythonhosted.org/packages/39/a8/24fc6ce414d84ab70bf5508c95e0fa296a7a99d3f6df4d65e5fe282f9db0/jsontableschema-0.8.5.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "8ad8d4f946080e0f85d4e1fa9fc81bd4", "sha256": "0da0cc7a9d7340bf2ab79773a122ef8069f1a209102cae5f4e5ca89362eac28b" }, "downloads": -1, "filename": "jsontableschema-0.9.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8ad8d4f946080e0f85d4e1fa9fc81bd4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 46452, "upload_time": "2017-01-17T16:49:54", "url": "https://files.pythonhosted.org/packages/59/ae/a03a3bac59b32ddb3ca3a7c998f6aec3af6f220ff5ca125dde763accec54/jsontableschema-0.9.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5f99280d0ecdbb173563e0ad7def3ab4", "sha256": "8f7b65d0c0f4bf906304c02f5cb5dd0ef94c0ee1f21cf7e6b2ce59506a76b9fe" }, "downloads": -1, "filename": "jsontableschema-0.9.0.tar.gz", "has_sig": false, "md5_digest": "5f99280d0ecdbb173563e0ad7def3ab4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31985, "upload_time": "2017-01-17T16:49:56", "url": "https://files.pythonhosted.org/packages/cb/9f/b92142224934bc929d034844710ed55692e2ca2a60ffc5984ba8a4e69f43/jsontableschema-0.9.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2cd87f3fca607cdedab3463eec75d2f2", "sha256": "0cadcaf4f5b9196f5862e5528a20c85cf041fd29ab3d48c92fab8c4cee8498ab" }, "downloads": -1, "filename": "jsontableschema-0.10.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2cd87f3fca607cdedab3463eec75d2f2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 48562, "upload_time": "2017-05-25T08:22:20", "url": "https://files.pythonhosted.org/packages/8a/c3/69b70b67645a83c2723611ad2d744d2843f61c4ef73e71244c620b19b4f4/jsontableschema-0.10.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e25bf36ade5871fbdeddc3e281e17b15", "sha256": "71f35e5855c5284e18019f7b9db255b44c1da2341bc5dbe724e6d13f1bae4be7" }, "downloads": -1, "filename": "jsontableschema-0.10.1.tar.gz", "has_sig": false, "md5_digest": "e25bf36ade5871fbdeddc3e281e17b15", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32456, "upload_time": "2017-05-25T08:22:21", "url": "https://files.pythonhosted.org/packages/8c/a7/b697e0679a092add8f388bddc7ebee60a537707a272dbd7628048c24d156/jsontableschema-0.10.1.tar.gz" } ] }