| .. image:: https://img.shields.io/pypi/v/jsonschema.svg |
| :target: https://pypi.python.org/pypi/jsonschema |
| .. image:: https://travis-ci.org/Julian/jsonschema.svg?branch=master |
| :target: https://travis-ci.org/Julian/jsonschema |
| .. image:: https://img.shields.io/pypi/l/jsonschema.svg |
| :target: https://pypi.python.org/pypi/jsonschema |
| |
| ========== |
| jsonschema |
| ========== |
| |
| ``jsonschema`` is an implementation of `JSON Schema <http://json-schema.org>`_ |
| for Python (supporting 2.6+ including Python 3). |
| |
| .. code-block:: python |
| |
| >>> from jsonschema import validate |
| |
| >>> # A sample schema, like what we'd get from json.load() |
| >>> schema = { |
| ... "type" : "object", |
| ... "properties" : { |
| ... "price" : {"type" : "number"}, |
| ... "name" : {"type" : "string"}, |
| ... }, |
| ... } |
| |
| >>> # If no exception is raised by validate(), the instance is valid. |
| >>> validate({"name" : "Eggs", "price" : 34.99}, schema) |
| |
| >>> validate( |
| ... {"name" : "Eggs", "price" : "Invalid"}, schema |
| ... ) # doctest: +IGNORE_EXCEPTION_DETAIL |
| Traceback (most recent call last): |
| ... |
| ValidationError: 'Invalid' is not of type 'number' |
| |
| |
| Features |
| -------- |
| |
| * Full support for |
| `Draft 3 <https://python-jsonschema.readthedocs.org/en/latest/validate/#jsonschema.Draft3Validator>`_ |
| **and** `Draft 4 <https://python-jsonschema.readthedocs.org/en/latest/validate/#jsonschema.Draft4Validator>`_ |
| of the schema. |
| |
| * `Lazy validation <https://python-jsonschema.readthedocs.org/en/latest/validate/#jsonschema.IValidator.iter_errors>`_ |
| that can iteratively report *all* validation errors. |
| |
| * Small and extensible |
| |
| * `Programmatic querying <https://python-jsonschema.readthedocs.org/en/latest/errors/#module-jsonschema>`_ |
| of which properties or items failed validation. |
| |
| |
| Release Notes |
| ------------- |
| |
| Version 2.5.0 is mainly a performance release. The interface for `RefResolver` |
| was extended to add methods that improve performance on CPython. |
| |
| Support for custom `RefResolver` objects with the legacy interface should *not* |
| be affected. If you notice something amiss please file an issue ticket. |
| |
| |
| Running the Test Suite |
| ---------------------- |
| |
| If you have ``tox`` installed (perhaps via ``pip install tox`` or your |
| package manager), running``tox`` in the directory of your source checkout will |
| run ``jsonschema``'s test suite on all of the versions of Python ``jsonschema`` |
| supports. Note that you'll need to have all of those versions installed in |
| order to run the tests on each of them, otherwise ``tox`` will skip (and fail) |
| the tests on that version. |
| |
| Of course you're also free to just run the tests on a single version with your |
| favorite test runner. The tests live in the ``jsonschema.tests`` package. |
| |
| |
| Community |
| --------- |
| |
| There's a `mailing list <https://groups.google.com/forum/#!forum/jsonschema>`_ |
| for this implementation on Google Groups. |
| |
| Please join, and feel free to send questions there. |
| |
| |
| Contributing |
| ------------ |
| |
| I'm Julian Berman. |
| |
| ``jsonschema`` is on `GitHub <http://github.com/Julian/jsonschema>`_. |
| |
| Get in touch, via GitHub or otherwise, if you've got something to contribute, |
| it'd be most welcome! |
| |
| You can also generally find me on Freenode (nick: ``tos9``) in various |
| channels, including ``#python``. |
| |
| If you feel overwhelmingly grateful, you can woo me with beer money on |
| `Gittip <https://www.gittip.com/Julian/>`_ or via Google Wallet with the email |
| in my GitHub profile. |