%define scl rh-python36 %{?scl:%scl_package %{name}} %{!?scl:%global pkg_name %{name}} %define name jsonschema %define version 3.2.0 %define unmangled_version 3.2.0 %define unmangled_version 3.2.0 %define release 1 Summary: An implementation of JSON Schema validation for Python %{?scl:Requires: %{scl}-runtime} %{?scl:BuildRequires: %{scl}-runtime} Name: %{?scl_prefix}%{pkg_name} Version: %{version} Release: %{release} Source0: jsonschema-%{unmangled_version}.tar.gz License: MIT Group: Development/Libraries BuildRoot: %{_tmppath}/%{pkg_name}-%{version}-%{release}-buildroot Prefix: %{_prefix} BuildArch: noarch Vendor: Julian Berman Packager: Martin Juhl Url: http://github.com/Julian/jsonschema BuildRequires: %{?scl_prefix}vcversioner %description .. 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 `_ for Python (supporting 2.7+ 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' It can also be used from console: .. code-block:: bash $ jsonschema -i sample.json sample.schema Features -------- * Full support for `Draft 3 `_ **and** `Draft 4 `_ of the schema. * `Lazy validation `_ that can iteratively report *all* validation errors. * Small and extensible * `Programmatic querying `_ 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 `_ for this implementation on Google Groups. Please join, and feel free to send questions there. Contributing ------------ I'm Julian Berman. ``jsonschema`` is on `GitHub `_. 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 `_ or via Google Wallet with the email in my GitHub profile. %prep %{?scl:scl enable %{scl} - << \EOF} set -ex %setup -n jsonschema-%{unmangled_version} -n jsonschema-%{unmangled_version} %{?scl:EOF} %build %{?scl:scl enable %{scl} - << \EOF} set -ex python3 setup.py build %{?scl:EOF} %install %{?scl:scl enable %{scl} - << \EOF} set -ex python3 setup.py install --single-version-externally-managed -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES %{?scl:EOF} %clean %{?scl:scl enable %{scl} - << \EOF} set -ex rm -rf $RPM_BUILD_ROOT %{?scl:EOF} %files -f INSTALLED_FILES %defattr(-,root,root)