corvus-json-schema-rs
A JSON Schema evaluator for Python (draft 4, 6, 7, 2019-09 and 2020-12) backed by the corvus-json-schema Rust crate, the Rust port of the Corvus.Text.Json V5 standalone evaluator. It has the same API as the pure-Python corvus-json-schema package, so either can be imported in place of the other.
- Conformant: passes the JSON-Schema-Test-Suite (required, optional and
optional/format, every draft) exceptdraft4/optional/zeroTerminatedFloats.json, which the C# and Rust evaluators exclude (they read1.0as an integer), and all of the suite's annotation tests. - Fast: instances are read in place through CPython's C API (dicts, lists and strings are not copied), so validating a Python object costs the evaluation alone. Over the jsonschema-benchmark corpora it takes 0.35 of the pure package's time and 0.72 of jsonschema-rs's (geometric means); see the pure package's Performance section for the figures.
- Every platform from one wheel per platform: the extension uses the stable ABI (abi3), so one wheel serves CPython 3.10 and every later version. Wheels are built for Linux (x86_64 and aarch64, glibc and musl), macOS (universal2: Intel and Apple silicon) and Windows (x64, and arm64 from Python 3.11, CPython's oldest arm64 Windows release), and CI tests each on its own platform.
Install
pip install corvus-json-schema-rs
Usage
import corvus_json_schema_rs as cjs
validate = cjs.compile({"type": "object", "required": ["id"], "properties": {"id": {"type": "integer"}}})
validate({"id": 3}) # True: a value as json.loads produces it, read in place
validate.is_valid_json('{"id": "3"}') # False: JSON text, parsed in Rust
compile takes the same options as the pure package (default_dialect, assert_format, formats,
resolve_document, base_uri, entry_point, max_depth and the rest, as keywords or a CompileOptions), and
evaluate, JsonSchemaResultsCollector, ResultsLevel and collect_annotations work as they do there. Custom
formats and document resolvers are Python callables, called from Rust.
What differs from the pure package:
- There is no generated source: no
Validator.sourceand nogenerate_module. is_valid_json(text)validates JSON text (strorbytes) without creating Python objects for it.- Subclasses of
dict,list,str,intandfloat(anOrderedDict, a string enum) are read as their bases, and tuples as arrays. - Integers beyond 64 bits are compared as the nearest double, as by a JSON parser without arbitrary precision.
- A string with a lone surrogate (which
json.loadscan produce) is read with U+FFFD in its place.
How it works
The crate compiles the schema once into its node graph and fail-fast plans (see
src-rs/corvus-json-schema). The evaluator is generic over an Instance
trait (a value shown as one of the six JSON kinds, with arrays and objects read in place). This package implements it
over Python objects through the stable C API: a dict is walked with PyDict_Next and searched by scanning its keys
(or, when large, by lookup), a string is read as the UTF-8 that CPython keeps with it (no copy for ASCII strings), and
a list is read by index. Anything the reader cannot take exactly (a tuple, a key that is not a string, a lone
surrogate, a number beyond a double, very deep nesting) makes the call convert the instance to a serde_json::Value
and evaluate that instead, so results never depend on which path ran.
Building
pip install maturin
maturin develop --release # into the active virtual environment
maturin build --release # a wheel for this platform
The Rust toolchain is pinned in ../rust-toolchain.toml. The tests are tests/test_binding.py and, through
--impl corvus_json_schema_rs, the pure package's suite and results tests.
Metadata
Release files for corvus-json-schema-rs 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| corvus_json_schema_rs-0.1.0.tar.gz | 129.2 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| corvus_json_schema_rs-0.1.0-cp310-abi3-win_arm64.whl | CPython 3.10 | abi3 | Windows ARM64 | Details |
| corvus_json_schema_rs-0.1.0-cp310-abi3-win_amd64.whl | CPython 3.10 | abi3 | Windows x86-64 | Details |
| corvus_json_schema_rs-0.1.0-cp310-abi3-musllinux_1_2_x86_64.whl | CPython 3.10 | abi3 | Linux musl 1.2+ x86-64 | Details |
| corvus_json_schema_rs-0.1.0-cp310-abi3-musllinux_1_2_aarch64.whl | CPython 3.10 | abi3 | Linux musl 1.2+ ARM64 | Details |
| corvus_json_schema_rs-0.1.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| corvus_json_schema_rs-0.1.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ ARM64 | Details |
| corvus_json_schema_rs-0.1.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl | CPython 3.10 | abi3 | macOS 11.0+ ARM64, macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64 | Details |
Total release size: 11.7 MB
Release files / corvus_json_schema_rs-0.1.0.tar.gz
| Download URL | corvus_json_schema_rs-0.1.0.tar.gz |
|---|---|
| Size | 129.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ec376ed786692884826501e431c6402111132a32856c79cb05344ca8d1a278d8
|
|
BLAKE2b-256 checksum How to use checksums |
5d4bb09a30cc28b02d6a79fbf33f793cbd75743f85dd40e6b202746943fb8925
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency logRelease files / corvus_json_schema_rs-0.1.0-cp310-abi3-win_arm64.whl
| Download URL | corvus_json_schema_rs-0.1.0-cp310-abi3-win_arm64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.10 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
9202d95caed4c7bc69b889c76c504ee8c365c87b15807eddbfc8e97abf7133d3
|
|
BLAKE2b-256 checksum How to use checksums |
b1550beae49031d3b53d9c16ed6732217dfa1d8e02bd75d00c32de8f2aa70c0a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency logRelease files / corvus_json_schema_rs-0.1.0-cp310-abi3-win_amd64.whl
| Download URL | corvus_json_schema_rs-0.1.0-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
fd330301be39d4741ba244b13f0829cf372c14672ff22d98422d13bc94ef83d0
|
|
BLAKE2b-256 checksum How to use checksums |
80a6a3e94e1f39a5f60ec5602aa06f0cc886932b66c2f0b7498e1d7fa752c95a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency logRelease files / corvus_json_schema_rs-0.1.0-cp310-abi3-musllinux_1_2_x86_64.whl
| Download URL | corvus_json_schema_rs-0.1.0-cp310-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
0e98a4119b7418ac0d683a491d9de665951442035d390646111dde699909b42b
|
|
BLAKE2b-256 checksum How to use checksums |
1ba3d782230da357c0bd1b55b66ff4670d272103d79cc2556f54019879eddb40
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency logRelease files / corvus_json_schema_rs-0.1.0-cp310-abi3-musllinux_1_2_aarch64.whl
| Download URL | corvus_json_schema_rs-0.1.0-cp310-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.10 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
0cf0f5f6df1eb2d2c2b4f7ff563afc1cc64dacd2cadce543d2c6390265f36477
|
|
BLAKE2b-256 checksum How to use checksums |
8877486a254f0af03042f56f3440a00739a3745360df80b1bbcfe808b3882cfe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency logRelease files / corvus_json_schema_rs-0.1.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | corvus_json_schema_rs-0.1.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
35b8bae7246486cada5daff3c77e62888beb096fe5fe4d21d3f892d6d6b4271c
|
|
BLAKE2b-256 checksum How to use checksums |
1edd7818cfade56871c2a3c42cd85eaf8226bf0cb118ce60aaf1511b70b2fb6b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency logRelease files / corvus_json_schema_rs-0.1.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | corvus_json_schema_rs-0.1.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
938424570793eef53e8f72b55cdabc1e6ec73295e555ae4dd7367892c79822dd
|
|
BLAKE2b-256 checksum How to use checksums |
6b2f8de11d3bb041efb0f533447a04d382d643190f945721ced08abaea009b8e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency logRelease files / corvus_json_schema_rs-0.1.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | corvus_json_schema_rs-0.1.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.10 abi3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
58d10925692a45023d49c3771e3e8b882995a0d7258628b4e8fca79b3f7adb03
|
|
BLAKE2b-256 checksum How to use checksums |
eb81f10cf3696e1f5176ddcd4322b428f91a30703736e4de8473cda5054c8d8a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency log