Skip to main content

A high-performance JSON Schema validator for Python

Project description

jsonschema-rs

Build Version Python versions License Supported Dialects

A high-performance JSON Schema validator for Python.

import jsonschema_rs

schema = {"maxLength": 5}
instance = "foo"

# One-off validation
try:
    jsonschema_rs.validate(schema, "incorrect")
except jsonschema_rs.ValidationError as exc:
    assert str(exc) == '''"incorrect" is longer than 5 characters

Failed validating "maxLength" in schema

On instance:
    "incorrect"'''

# Build & reuse (faster)
validator = jsonschema_rs.validator_for(schema)

# Iterate over errors
for error in validator.iter_errors(instance):
    print(f"Error: {error}")
    print(f"Location: {error.instance_path}")

# Boolean result
assert validator.is_valid(instance)

# Structured output (JSON Schema Output v1)
evaluation = validator.evaluate(instance)
for annotation in evaluation.annotations():
    print(f"Annotation at {annotation['schemaLocation']}: {annotation['annotations']}")

⚠️ Upgrading from older versions? Check our Migration Guide for key changes.

Migrating from jsonschema? See the jsonschema migration guide.

Highlights

  • 📚 Full support for popular JSON Schema drafts
  • 🌐 Remote reference fetching (network/file)
  • 🔧 Custom keywords and format validators
  • ✨ Meta-schema validation for schema documents

Supported drafts

The following drafts are supported:

  • Draft 2020-12
  • Draft 2019-09
  • Draft 7
  • Draft 6
  • Draft 4

You can check the current status on the Bowtie Report.

Installation

To install jsonschema-rs via pip run the following command:

pip install jsonschema-rs

Usage

If you have a schema as a JSON string, then you could pass it to validator_for to avoid parsing on the Python side:

import jsonschema_rs

validator = jsonschema_rs.validator_for('{"minimum": 42}')
...

You can use draft-specific validators for different JSON Schema versions:

import jsonschema_rs

# Automatic draft detection
validator = jsonschema_rs.validator_for({"minimum": 42})

# Draft-specific validators
validator = jsonschema_rs.Draft7Validator({"minimum": 42})
validator = jsonschema_rs.Draft201909Validator({"minimum": 42})
validator = jsonschema_rs.Draft202012Validator({"minimum": 42})

JSON Schema allows for format validation through the format keyword. While jsonschema-rs provides built-in validators for standard formats, you can also define custom format validators for domain-specific string formats.

To implement a custom format validator:

  1. Define a function that takes a str and returns a bool.
  2. Pass it with the formats argument.
  3. Ensure validate_formats is set appropriately (especially for Draft 2019-09 and 2020-12).
import jsonschema_rs

def is_currency(value):
    # The input value is always a string
    return len(value) == 3 and value.isascii()


validator = jsonschema_rs.validator_for(
    {"type": "string", "format": "currency"}, 
    formats={"currency": is_currency},
    validate_formats=True  # Important for Draft 2019-09 and 2020-12
)
validator.is_valid("USD")  # True
validator.is_valid("invalid")  # False

Custom Keywords

You can extend JSON Schema with custom keywords for domain-specific validation rules. Custom keywords are classes that receive the keyword value during schema compilation and validate instances at runtime:

import jsonschema_rs

class DivisibleBy:
    def __init__(self, parent_schema, value, schema_path):
        self.divisor = value

    def validate(self, instance):
        if isinstance(instance, int) and instance % self.divisor != 0:
            raise ValueError(f"{instance} is not divisible by {self.divisor}")


validator = jsonschema_rs.validator_for(
    {"type": "integer", "divisibleBy": 3},
    keywords={"divisibleBy": DivisibleBy},
)
validator.is_valid(9)   # True
validator.is_valid(10)  # False

Additional configuration options are available for fine-tuning the validation process:

  • validate_formats: Override the draft-specific default behavior for format validation.
  • ignore_unknown_formats: Control whether unrecognized formats should be reported as errors.
  • base_uri - a base URI for all relative $ref in the schema.

Example usage of these options:

import jsonschema_rs

validator = jsonschema_rs.Draft202012Validator(
    {"type": "string", "format": "date"},
    validate_formats=True,
    ignore_unknown_formats=False
)

# This will validate the "date" format
validator.is_valid("2023-05-17")  # True
validator.is_valid("not a date")  # False

# With ignore_unknown_formats=False, using an unknown format will raise an error
invalid_schema = {"type": "string", "format": "unknown"}
try:
    jsonschema_rs.Draft202012Validator(
        invalid_schema, validate_formats=True, ignore_unknown_formats=False
    )
except jsonschema_rs.ValidationError as exc:
    assert str(exc) == '''Unknown format: 'unknown'. Adjust configuration to ignore unrecognized formats

Failed validating "format" in schema

On instance:
    "unknown"'''

Structured Output with evaluate

When you need more than a boolean result, use the evaluate API to access the JSON Schema Output v1 formats:

import jsonschema_rs

schema = {
    "type": "array",
    "prefixItems": [{"type": "string"}],
    "items": {"type": "integer"},
}
evaluation = jsonschema_rs.evaluate(schema, ["hello", "oops"])

assert evaluation.flag() == {"valid": False}
assert evaluation.list() == {
    "valid": False,
    "details": [
        {
            "evaluationPath": "",
            "instanceLocation": "",
            "schemaLocation": "",
            "valid": False,
        },
        {
            "valid": True,
            "evaluationPath": "/type",
            "instanceLocation": "",
            "schemaLocation": "/type",
        },
        {
            "valid": False,
            "evaluationPath": "/items",
            "instanceLocation": "",
            "schemaLocation": "/items",
            "droppedAnnotations": True,
        },
        {
            "valid": False,
            "evaluationPath": "/items",
            "instanceLocation": "/1",
            "schemaLocation": "/items",
        },
        {
            "valid": False,
            "evaluationPath": "/items/type",
            "instanceLocation": "/1",
            "schemaLocation": "/items/type",
            "errors": {"type": '"oops" is not of type "integer"'},
        },
        {
            "valid": True,
            "evaluationPath": "/prefixItems",
            "instanceLocation": "",
            "schemaLocation": "/prefixItems",
            "annotations": 0,
        },
        {
            "valid": True,
            "evaluationPath": "/prefixItems/0",
            "instanceLocation": "/0",
            "schemaLocation": "/prefixItems/0",
        },
        {
            "valid": True,
            "evaluationPath": "/prefixItems/0/type",
            "instanceLocation": "/0",
            "schemaLocation": "/prefixItems/0/type",
        },
    ],
}

hierarchical = evaluation.hierarchical()
assert hierarchical == {
    "valid": False,
    "evaluationPath": "",
    "instanceLocation": "",
    "schemaLocation": "",
    "details": [
        {
            "valid": True,
            "evaluationPath": "/type",
            "instanceLocation": "",
            "schemaLocation": "/type",
        },
        {
            "valid": False,
            "evaluationPath": "/items",
            "instanceLocation": "",
            "schemaLocation": "/items",
            "droppedAnnotations": True,
            "details": [
                {
                    "valid": False,
                    "evaluationPath": "/items",
                    "instanceLocation": "/1",
                    "schemaLocation": "/items",
                    "details": [
                        {
                            "valid": False,
                            "evaluationPath": "/items/type",
                            "instanceLocation": "/1",
                            "schemaLocation": "/items/type",
                            "errors": {"type": '"oops" is not of type "integer"'},
                        }
                    ],
                }
            ],
        },
        {
            "valid": True,
            "evaluationPath": "/prefixItems",
            "instanceLocation": "",
            "schemaLocation": "/prefixItems",
            "annotations": 0,
            "details": [
                {
                    "valid": True,
                    "evaluationPath": "/prefixItems/0",
                    "instanceLocation": "/0",
                    "schemaLocation": "/prefixItems/0",
                    "details": [
                        {
                            "valid": True,
                            "evaluationPath": "/prefixItems/0/type",
                            "instanceLocation": "/0",
                            "schemaLocation": "/prefixItems/0/type",
                        }
                    ],
                }
            ],
        },
    ],
}

for error in evaluation.errors():
    print(error["instanceLocation"], error["error"])

for annotation in evaluation.annotations():
    print(annotation["schemaLocation"], annotation["annotations"])

Arbitrary-Precision Numbers

The Python bindings always include the arbitrary-precision support from the Rust validator, so numeric values are exposed to Python using the most accurate type available:

  • Integers, regardless of size, are returned as regular int objects.
  • Floating-point literals that fit into IEEE-754 become Python floats.
  • Floating-point literals that don't fit in float (for example 1e10000 or extremely precise decimals) fall back to decimal.Decimal using their original JSON string representation.

This means ValidationError.kind attributes may contain Decimal instances for very large numbers. Import Decimal from the standard library if you need to compare against or serialize those values exactly:

from decimal import Decimal
from jsonschema_rs import ValidationError, validator_for

validator = validator_for('{"const": 1e10000}')
try:
    validator.validate(0)
except ValidationError as exc:
    assert exc.kind.expected_value == Decimal("1e10000")

# Extremely large exponents (beyond ~10^1_000_000) are clamped internally to keep parsing
# predictable, matching the Rust implementation's guardrails.

Meta-Schema Validation

JSON Schema documents can be validated against their meta-schemas to ensure they are valid schemas. jsonschema-rs provides this functionality through the meta module:

import jsonschema_rs

# Valid schema
schema = {
    "type": "object",
    "properties": {
        "name": {"type": "string"},
        "age": {"type": "integer", "minimum": 0}
    },
    "required": ["name"]
}

# Validate schema (draft is auto-detected)
assert jsonschema_rs.meta.is_valid(schema)
jsonschema_rs.meta.validate(schema)  # No error raised

# Invalid schema
invalid_schema = {
    "minimum": "not_a_number"  # "minimum" must be a number
}

try:
    jsonschema_rs.meta.validate(invalid_schema)
except jsonschema_rs.ValidationError as exc:
    assert 'is not of type "number"' in str(exc)

Regular Expression Configuration

When validating schemas with regex patterns (in pattern or patternProperties), you can configure the underlying regex engine:

import jsonschema_rs
from jsonschema_rs import FancyRegexOptions, RegexOptions

# Default fancy-regex engine with backtracking limits
# (supports advanced features but needs protection against DoS)
validator = jsonschema_rs.validator_for(
    {"type": "string", "pattern": "^(a+)+$"},
    pattern_options=FancyRegexOptions(backtrack_limit=10_000)
)

# Standard regex engine for guaranteed linear-time matching
# (prevents regex DoS attacks but supports fewer features)
validator = jsonschema_rs.validator_for(
    {"type": "string", "pattern": "^a+$"},
    pattern_options=RegexOptions()
)

# Both engines support memory usage configuration
validator = jsonschema_rs.validator_for(
    {"type": "string", "pattern": "^a+$"},
    pattern_options=RegexOptions(
        size_limit=1024 * 1024,   # Maximum compiled pattern size
        dfa_size_limit=10240      # Maximum DFA cache size
    )
)

The available options:

  • FancyRegexOptions: Default engine with lookaround and backreferences support

    • backtrack_limit: Maximum backtracking steps
    • size_limit: Maximum compiled regex size in bytes
    • dfa_size_limit: Maximum DFA cache size in bytes
  • RegexOptions: Safer engine with linear-time guarantee

    • size_limit: Maximum compiled regex size in bytes
    • dfa_size_limit: Maximum DFA cache size in bytes

This configuration is crucial when working with untrusted schemas where attackers might craft malicious regex patterns.

Email Format Configuration

When validating email addresses using {"format": "email"}, you can customize the validation behavior beyond the default JSON Schema spec requirements:

import jsonschema_rs
from jsonschema_rs import EmailOptions

# Require a top-level domain (reject "user@localhost")
validator = jsonschema_rs.validator_for(
    {"format": "email", "type": "string"},
    validate_formats=True,
    email_options=EmailOptions(require_tld=True)
)
validator.is_valid("user@localhost")     # False
validator.is_valid("user@example.com")   # True

# Disallow IP address literals and display names
validator = jsonschema_rs.validator_for(
    {"format": "email", "type": "string"},
    validate_formats=True,
    email_options=EmailOptions(
        allow_domain_literal=False,  # Reject "user@[127.0.0.1]"
        allow_display_text=False     # Reject "Name <user@example.com>"
    )
)

# Require minimum domain segments
validator = jsonschema_rs.validator_for(
    {"format": "email", "type": "string"},
    validate_formats=True,
    email_options=EmailOptions(minimum_sub_domains=3)  # e.g., user@sub.example.com
)

Available options:

  • require_tld: Require a top-level domain (e.g., reject "user@localhost")
  • allow_domain_literal: Allow IP address literals like "user@[127.0.0.1]" (default: True)
  • allow_display_text: Allow display names like "Name user@example.com" (default: True)
  • minimum_sub_domains: Minimum number of domain segments required

External References

By default, jsonschema-rs resolves HTTP references and file references from the local file system. You can implement a custom retriever to handle external references. Here's an example that uses a static map of schemas:

import jsonschema_rs

def retrieve(uri: str):
    schemas = {
        "https://example.com/person.json": {
            "type": "object",
            "properties": {
                "name": {"type": "string"},
                "age": {"type": "integer"}
            },
            "required": ["name", "age"]
        }
    }
    if uri not in schemas:
        raise KeyError(f"Schema not found: {uri}")
    return schemas[uri]

schema = {
    "$ref": "https://example.com/person.json"
}

validator = jsonschema_rs.validator_for(schema, retriever=retrieve)

# This is valid
validator.is_valid({
    "name": "Alice",
    "age": 30
})

# This is invalid (missing "age")
validator.is_valid({
    "name": "Bob"
})  # False

Schema Registry

For applications that frequently use the same schemas, you can create a registry to store and reference them efficiently:

import jsonschema_rs

# Create a registry with schemas
registry = jsonschema_rs.Registry([
    ("https://example.com/address.json", {
        "type": "object",
        "properties": {
            "street": {"type": "string"},
            "city": {"type": "string"}
        }
    }),
    ("https://example.com/person.json", {
        "type": "object",
        "properties": {
            "name": {"type": "string"},
            "address": {"$ref": "https://example.com/address.json"}
        }
    })
])

# Use the registry with any validator
validator = jsonschema_rs.validator_for(
    {"$ref": "https://example.com/person.json"},
    registry=registry
)

# Validate instances
assert validator.is_valid({
    "name": "John",
    "address": {"street": "Main St", "city": "Boston"}
})

The registry can be configured with a draft version and a retriever for external references:

import jsonschema_rs

registry = jsonschema_rs.Registry(
    resources=[
        (
            "https://example.com/address.json",
            {}
        )
    ],  # Your schemas
    draft=jsonschema_rs.Draft202012,  # Optional
    retriever=lambda uri: {}  # Optional
)

Error Handling

jsonschema-rs provides detailed validation errors through the ValidationError class, which includes both basic error information and specific details about what caused the validation to fail:

import jsonschema_rs

schema = {"type": "string", "maxLength": 5}

try:
    jsonschema_rs.validate(schema, "too long")
except jsonschema_rs.ValidationError as error:
    # Basic error information
    print(error.message)       # '"too long" is longer than 5 characters'
    print(error.instance_path) # Location in the instance that failed
    print(error.schema_path)   # Location in the schema that failed

    # Detailed error information via `kind`
    if isinstance(error.kind, jsonschema_rs.ValidationErrorKind.MaxLength):
        assert error.kind.limit == 5
        print(f"Exceeded maximum length of {error.kind.limit}")

For a complete list of all error kinds and their attributes, see the type definitions file

Error Kind Properties

Each error has a kind property with convenient accessors:

for error in jsonschema_rs.iter_errors({"minimum": 5}, 3):
    print(error.kind.name)      # "minimum"
    print(error.kind.value)     # 5
    print(error.kind.as_dict()) # {"limit": 5}

Pattern matching (Python 3.10+):

for error in jsonschema_rs.iter_errors({"minimum": 5}, 3):
    match error.kind:
        case jsonschema_rs.ValidationErrorKind.Minimum(limit=limit):
            print(f"Value below {limit}")
        case jsonschema_rs.ValidationErrorKind.Type(types=types):
            print(f"Expected one of {types}")

Error Message Masking

When working with sensitive data, you might want to hide actual values from error messages. You can mask instance values in error messages by providing a placeholder:

import jsonschema_rs

schema = {
    "type": "object",
    "properties": {
        "password": {"type": "string", "minLength": 8},
        "api_key": {"type": "string", "pattern": "^[A-Z0-9]{32}$"}
    }
}

# Use default masking (replaces values with "[REDACTED]")
validator = jsonschema_rs.validator_for(schema, mask="[REDACTED]")

try:
    validator.validate({
        "password": "123",
        "api_key": "secret_key_123"
    })
except jsonschema_rs.ValidationError as exc:
    assert str(exc) == '''[REDACTED] does not match "^[A-Z0-9]{32}$"

Failed validating "pattern" in schema["properties"]["api_key"]

On instance["api_key"]:
    [REDACTED]'''

Performance

jsonschema-rs is designed for high performance, outperforming other Python JSON Schema validators in most scenarios:

  • 40-230x faster than jsonschema for complex schemas and large instances
  • 1.7-290x faster than fastjsonschema on CPython

For detailed benchmarks, see our full performance comparison.

Python support

jsonschema-rs supports CPython 3.10 through 3.14 and PyPy 3.10+.

Pre-built wheels are available for:

  • Linux: x86_64, i686, aarch64 (glibc and musl)
  • macOS: x86_64, aarch64, universal2
  • Windows: x64, x86

Troubleshooting

If you encounter linking errors when building from source on Linux (e.g., undefined symbol errors related to ring or crypto), try using the mold linker:

RUSTFLAGS="-C link-arg=-fuse-ld=mold" pip install jsonschema-rs --no-binary :all:

Acknowledgements

This library draws API design inspiration from the Python jsonschema package. We're grateful to the Python jsonschema maintainers and contributors for their pioneering work in JSON Schema validation.

Support

If you have questions, need help, or want to suggest improvements, please use GitHub Discussions.

Sponsorship

If you find jsonschema-rs useful, please consider sponsoring its development.

Contributing

We welcome contributions! Here's how you can help:

See CONTRIBUTING.md for more details.

License

Licensed under MIT License.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jsonschema_rs-0.40.4.tar.gz (1.8 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

jsonschema_rs-0.40.4-pp311-pypy311_pp73-win_amd64.whl (3.2 MB view details)

Uploaded PyPyWindows x86-64

jsonschema_rs-0.40.4-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl (2.9 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.40.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

jsonschema_rs-0.40.4-pp311-pypy311_pp73-macosx_10_12_x86_64.whl (3.0 MB view details)

Uploaded PyPymacOS 10.12+ x86-64

jsonschema_rs-0.40.4-cp314-cp314t-win_amd64.whl (3.2 MB view details)

Uploaded CPython 3.14tWindows x86-64

jsonschema_rs-0.40.4-cp314-cp314t-musllinux_1_2_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

jsonschema_rs-0.40.4-cp314-cp314t-musllinux_1_2_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

jsonschema_rs-0.40.4-cp314-cp314t-manylinux_2_28_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.40.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

jsonschema_rs-0.40.4-cp314-cp314t-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

jsonschema_rs-0.40.4-cp314-cp314t-macosx_10_12_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.14tmacOS 10.12+ x86-64

jsonschema_rs-0.40.4-cp313-cp313t-win_amd64.whl (3.2 MB view details)

Uploaded CPython 3.13tWindows x86-64

jsonschema_rs-0.40.4-cp313-cp313t-musllinux_1_2_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

jsonschema_rs-0.40.4-cp313-cp313t-musllinux_1_2_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

jsonschema_rs-0.40.4-cp313-cp313t-manylinux_2_28_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.40.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ x86-64

jsonschema_rs-0.40.4-cp313-cp313t-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

jsonschema_rs-0.40.4-cp313-cp313t-macosx_10_12_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.13tmacOS 10.12+ x86-64

jsonschema_rs-0.40.4-cp310-abi3-win_amd64.whl (3.2 MB view details)

Uploaded CPython 3.10+Windows x86-64

jsonschema_rs-0.40.4-cp310-abi3-win32.whl (2.7 MB view details)

Uploaded CPython 3.10+Windows x86

jsonschema_rs-0.40.4-cp310-abi3-musllinux_1_2_x86_64.whl (3.4 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ x86-64

jsonschema_rs-0.40.4-cp310-abi3-musllinux_1_2_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

jsonschema_rs-0.40.4-cp310-abi3-manylinux_2_28_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

jsonschema_rs-0.40.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

jsonschema_rs-0.40.4-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl (3.0 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.12+ i686

jsonschema_rs-0.40.4-cp310-abi3-macosx_10_12_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

jsonschema_rs-0.40.4-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (5.8 MB view details)

Uploaded CPython 3.10+macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

File details

Details for the file jsonschema_rs-0.40.4.tar.gz.

File metadata

  • Download URL: jsonschema_rs-0.40.4.tar.gz
  • Upload date:
  • Size: 1.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jsonschema_rs-0.40.4.tar.gz
Algorithm Hash digest
SHA256 5df98ebea2f853b09ef018aee81b01e73525fd78455cb2a8d1e65961cecd8229
MD5 9baec461b3675fcb15574eab852e579b
BLAKE2b-256 52d2e118515ec4494a50cc9f2367488cf8224f4e055b89931ccbe769dbbbba6d

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-pp311-pypy311_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 e8193fea40f06f039805443f84a4c992e79195d35a0b9ded7cce5150a2b07d27
MD5 03c98d40c9ded10d0970a7b1d767ef5a
BLAKE2b-256 88684b7b7cc939e32f1d2afbe7e1ff3ca3629b91d1944ba5cbe0fe4e01904edf

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 aa8d85cad844130b97a871f73207b149f9187c9341e570cf1624136f9bf98d44
MD5 b44c37d5947baf165868935ddb3a84a1
BLAKE2b-256 f2a8fc8d8e707b6a950e2c2613f591243060e77f8b64d096af75b22ebb225f20

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8f9cdd08ea21a250db0458024e6de96f57a3a4463d5cc3917ecce865ec4cf1df
MD5 2a88785e6db7a7abb0093b157a9e08bf
BLAKE2b-256 d2f797114ab67cc907ea1b78c3902ef1ae786c3abf2a8b1180ab12da01c95a34

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-pp311-pypy311_pp73-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-pp311-pypy311_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0cd134a83fecb422ded45e08d6f13f6a8352ccfe87799a7218f3e6bb1e36ba43
MD5 89444ed0d3ea992410bc762e62b75c59
BLAKE2b-256 72af5b36936ad2f7c937dbaf633d8a176ac6b111fc68bab0334a34e06152ccb0

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-cp314-cp314t-win_amd64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 c505bd9b3b08c1b9d436817b683912b5135206946fbcd18ee97e839718a391fb
MD5 0549b8a8d2e78a959c9679468622f7fa
BLAKE2b-256 17aa3ac82fa5ebe1681118cc07731b84650f1cf6cd8a4a5e8dd8dd46cd8fd280

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7dbc227494ffb20a4907e597144222ee059d035783687ac90bdb3f10a2327fef
MD5 bee042554f25e9832e2d90e35dbe11ab
BLAKE2b-256 197327d2c1c43f174be71aa879bc51b14cf8853c1ae6c114ec62cee8fbaca2ec

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5bfd1af5765a27c59bdcf1bffc1b7ec3e129851242ced3d11f2f2f5cb1e2f091
MD5 700dbd9fd3d0defe8b27cb1323221c43
BLAKE2b-256 1f471308a6060ef471280f110149ad5160e6a4a6947b1bee83a73e606a77858a

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-cp314-cp314t-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5288a2c9c3ab3b3a7504435c8e07826da88e8f56a522eaca6ffca4541799eb37
MD5 97db7fb360319d13e2592c2f33493f08
BLAKE2b-256 56a5a3fefb7a198a2565f28f879ddabd4799061a38e8036e10364e8a9e262db3

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c5ca452d7960cf97f10410c6a4f93e6f6959be295186ab6a15e0b0ce0a446ffd
MD5 f26bac192624892f9461bd7482956faa
BLAKE2b-256 cefe90ba2a2de7d0282e6bb5d1a5ce146fed53cc07f386d3c451683f56431ad1

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 992da9245c166c20429da418cd84711974f088b333fbf333e3ba67aac753b1cf
MD5 8aea82be84e9871fc9535abfbf6ed987
BLAKE2b-256 fec30731f0af9d80233f88fa74e5704033077d8dc0e2c4ce9a0f90128a8fb634

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-cp314-cp314t-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-cp314-cp314t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 37c377b073a914144ee2369d7ae3ea25d836e857196749ba8416c19a76f45cbc
MD5 f6fd6308dba300211cd11ad71621ee6f
BLAKE2b-256 00b8c7346ede5dbe0d6a016d6e1060d9b807250c6a09065573579a09aa77b2e9

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-cp313-cp313t-win_amd64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 eb419ee565243c4a2635fb3277593e3a12de3dd035d268faffbea714b39c7273
MD5 4e3ab029aca79a5aeb051c05d313fc9a
BLAKE2b-256 0f299bfe1e87d91c6a52e5019d7d27e8dc59991910aadf9f304ffd36188f0746

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-cp313-cp313t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 097aecc653e40dd89711d1552f605a942116e12a5595d7b2bfa64d9a2ede47ed
MD5 442cd3a671005d949fda96eecf8210fd
BLAKE2b-256 9aa3ff4e82262841edfdd80f33ae3a2287e57d4ae6b44295732f9dc40ff728dd

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-cp313-cp313t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f0eb6cfe7970feaba204af93beb5b5a9239c73b4714c70ceed6baa36f9c59c20
MD5 478ce107cba86ab7594f6ed0b14b36d7
BLAKE2b-256 89b139acb67652c21c219a0f217a6f7179a751fc76aefc7b09662fe0cb119bdb

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-cp313-cp313t-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-cp313-cp313t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 98433d98e9c1b9711d83c5abd2d3e0a8164cd40c038734c84fd8cd47a79d10e2
MD5 bf4cc2414f78789dec0c49b719055559
BLAKE2b-256 b2b75fbe7b85f149f14e1ceec5c63dbdb758af7aeccc009ecb3a138ca91fc5fb

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a08f654d3b0d9bc5dcc3a9a7ff6347fbdb14f8f4b70990a41054cf1f7f7accc2
MD5 9bde313a4c1a5e66bb5fec39dd68bcfd
BLAKE2b-256 cbaf37287a5c3756e85b4d254990d0bee4e1469b3b2b975126e284ebed852016

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-cp313-cp313t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6968bd4d6b67cf6743ea9cb3a0c354b35eae766771638ae5c748343e9c6c8fe6
MD5 6e4baaa86850b1a29d1e1075e824aceb
BLAKE2b-256 6cfd43aba65aa0c8b8b36b79e96703ebd9336e9e5d6a4d2231c967ed886be04c

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-cp313-cp313t-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0dbdfcf0ddee45a1532ebc41946b299b15e11f96ac484fd536c988c75a280d0d
MD5 8b1365511958abc25c4227cc5b157d07
BLAKE2b-256 f04ccbccdc1e8f4c537b80c10b9713af4589742ac77357d470f01ac785310271

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-cp310-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 a185d8b6028ccfda4aa6c73bb702d70047d3f6b292ff2b99f239afdcce04dc9d
MD5 1e25b6f68dd7d3b3bd91c5f0a3ed7bf1
BLAKE2b-256 24a8957383f628fc4eaf5be381c3b0b894f706cba1dbf97765c96b7e7b17b673

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-cp310-abi3-win32.whl.

File metadata

  • Download URL: jsonschema_rs-0.40.4-cp310-abi3-win32.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: CPython 3.10+, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jsonschema_rs-0.40.4-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 9d68659dce08debdb1a089a8f19d562c8cefaf50e3d20f461d56f7231d6353b7
MD5 1deff723f34b84fe12f9e3e1e863bb6e
BLAKE2b-256 0479d7d7e145bce25b88cbe4884da28fb8b6c37ec38de7d35d2687c1ce1a9b31

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f6eb9e8b0bd9561b82c7414a2ed26b126d7fbc79ad6621957b107517541735c4
MD5 4bb5068dae943586e238e6971f8dcf36
BLAKE2b-256 b8ff9df5b1e0a7835fd6af20f2bd2d72f55c6b39f713778620a1de06c3f49704

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-cp310-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6766c24e03261166e21a4e29ee9973338b34f360d2e58867cda2d0d5595c4237
MD5 e67c0046cddaa8e465ab8f3cef615493
BLAKE2b-256 97c8cd358788e9bba57b78a1639db33f7dfe7bdb1a830de5905997325dca86dd

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3b6a15c7f3f170f35db7827bfcb5d7e331fa723a51af6f5a295d51868fe56fdb
MD5 18112755badb0a5573e981f6c4828f65
BLAKE2b-256 02c167a752f78b144274b4473bd38840762842f04c12dfd5cfc762f4433fa460

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 665d344958589a8894c98dbb6051d64ee1f341b2a1dd3d9fd18c68308543336f
MD5 3008f884d945ad566fd4825fe4262aa4
BLAKE2b-256 be751a274f8fe5eea99021ec2f27a69328a46808aad2087ec8da30463d1f3708

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 94cd6dce8f842c6773fd9ec55604a8bcd563ed2485cca0a02f6418e96ec4c7fa
MD5 3efb12b4613975f260140f439acd7cc7
BLAKE2b-256 fafa47f605d839de3f9d46bb48693c75cd10e6c268ec0bdea8bf974a447fe151

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c3d21c2d616d0a93e45412ab907c217cea40346ae17a91500be5dcbb6275a4c3
MD5 6b87e897a70dc350c471ef6658ecb32f
BLAKE2b-256 b433c6ba97ee1e057a12ef8a8b608f99e9eff3bad96f3e80bea8a0fa4e2b180f

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.40.4-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.40.4-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 d2e7eca0b25e0b8c38dbd5dc277adae10e47d2bc0e96362be0fc07193de52149
MD5 3066152bb56711776019457fff9c592f
BLAKE2b-256 5af332fc4d8227543d02909bc2305e74e998d73141b2d409dcd4530499632f3d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page