Metadata-Version: 2.1
Name: jsonschema-rs
Version: 0.4.2
Summary: Fast JSON Schema validation for Python implemented in Rust
Home-page: https://github.com/Stranger6667/jsonschema-rs/tree/master/python
Author: Dmitry Dygalo
Author-email: dadygalo@gmail.com
Maintainer: Dmitry Dygalo
Maintainer-email: dadygalo@gmail.com
License: MIT
Description: jsonschema-rs
        =============
        
        |Build| |Version| |Python versions| |License|
        
        Fast JSON Schema validation for Python implemented in Rust.
        
        Supported drafts:
        
        - Draft 7
        - Draft 6
        - Draft 4
        
        There are some notable restrictions at the moment:
        
        - The underlying crate doesn't support arbitrary precision integers yet, which may lead to ``SystemError`` when such value is used;
        - ``multipleOf`` keyword validation may produce false-negative results on some input. See `#84 <https://github.com/Stranger6667/jsonschema-rs/issues/84>`_ for more details
        
        Installation
        ------------
        
        To install ``jsonschema-rs`` via ``pip`` run the following command:
        
        .. code:: bash
        
            pip install jsonschema-rs
        
        Usage
        -----
        
        To check if the input document is valid:
        
        .. code:: python
        
            import jsonschema_rs
        
            validator = jsonschema_rs.JSONSchema({"minimum": 42})
            validator.is_valid(45)  # True
        
        or:
        
        .. code:: python
        
            import jsonschema_rs
        
            validator = jsonschema_rs.JSONSchema({"minimum": 42})
            validator.validate(41)  # raises ValidationError
        
        **NOTE**. This library is in early development.
        
        Performance
        -----------
        
        According to our benchmarks, ``jsonschema-rs`` is usually faster than existing alternatives in real-life scenarios.
        
        However, for single-keyword or boolean schemas it might be slower than ``fastjsonschema``.
        
        Compiled validators (when the input schema is compiled once and reused later)
        
        +----------------+------------------------+-----------------------+-------------------------+-------------------------+
        | library        | ``false``              |  ``{"minimum": 10}``  |  small                  | big                     |
        +================+========================+=======================+=========================+=========================+
        | jsonschema-rs  |              141.45 ns |             144.66 ns |               652.84 ns |                 4.89 ms |
        +----------------+------------------------+-----------------------+-------------------------+-------------------------+
        | fastjsonschema |   48.92 ns (**x0.34**) |  95.22 ns (**x0.65**) |        3.91 us (**x6**) | 554.74 ms (**x113.44**) |
        +----------------+------------------------+-----------------------+-------------------------+-------------------------+
        | jsonschema     |  204.94 ns (**x1.44**) |   1.52 us (**10.54**) |      57.44 us (**x88**) |    1.38 s (**x282.41**) |
        +----------------+------------------------+-----------------------+-------------------------+-------------------------+
        
        Validators are not compiled (``jsonschema``) or compiled on every validation:
        
        +----------------+------------------------+-------------------------+-------------------------+-------------------------+
        | library        | ``false``              | ``{"minimum": 10}``     |   small                 | big                     |
        +================+========================+=========================+=========================+=========================+
        | jsonschema-rs  |              328.86 ns |               448.03 ns |                 6.39 us |                 4.89 ms |
        +----------------+------------------------+-------------------------+-------------------------+-------------------------+
        | fastjsonschema | 55.29 us (**x168.07**) |  106.01 us (**x236.6**) |    1.3 ms (**x204.53**) | 557.35 ms (**x113.97**) |
        +----------------+------------------------+-------------------------+-------------------------+-------------------------+
        | jsonschema     | 45.95 us (**x139.69**) |  54.68 us (**x122.06**) |  758.8 us (**x118.74**) |    1.43 s (**x292.43**) |
        +----------------+------------------------+-------------------------+-------------------------+-------------------------+
        
        The bigger the input is the bigger is performance win.
        
        In the examples below, ``big`` and ``small`` schemas refer to more realistic schemas and input instances.
        You can take a look at benchmarks in ``benches/bench.py``. Ratios are given against ``jsonschema-rs``.
        Measured with stable Rust 1.44.1, Python 3.8.3 on i8700K (12 cores), 32GB RAM, Arch Linux.
        
        Python support
        --------------
        
        ``jsonschema-rs`` supports Python 3.6, 3.7, 3.8 and 3.9.
        
        License
        -------
        
        The code in this project is licensed under `MIT license`_.
        By contributing to ``jsonschema-rs``, you agree that your contributions
        will be licensed under its MIT license.
         
        .. |Build| image:: https://github.com/Stranger6667/jsonschema-rs/workflows/ci/badge.svg
           :target: https://github.com/Stranger6667/jsonschema-rs/actions
        .. |Version| image:: https://img.shields.io/pypi/v/jsonschema-rs.svg
           :target: https://pypi.org/project/jsonschema-rs/
        .. |Python versions| image:: https://img.shields.io/pypi/pyversions/jsonschema-rs.svg
           :target: https://pypi.org/project/jsonschema-rs/
        .. |License| image:: https://img.shields.io/pypi/l/jsonschema-rs.svg
           :target: https://opensource.org/licenses/MIT
        
        .. _MIT license: https://opensource.org/licenses/MIT
        
Keywords: jsonschema validation rust
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Rust
Requires-Python: >=3.6
Description-Content-Type: text/x-rst
