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:

  • 45-240x faster than jsonschema for complex schemas and large instances
  • 1.9-433x 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.42.0.tar.gz (1.9 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.42.0-pp311-pypy311_pp73-win_amd64.whl (3.7 MB view details)

Uploaded PyPyWindows x86-64

jsonschema_rs-0.42.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl (3.5 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.42.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.9 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

jsonschema_rs-0.42.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl (3.8 MB view details)

Uploaded PyPymacOS 10.12+ x86-64

jsonschema_rs-0.42.0-cp314-cp314t-win_amd64.whl (3.7 MB view details)

Uploaded CPython 3.14tWindows x86-64

jsonschema_rs-0.42.0-cp314-cp314t-musllinux_1_2_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

jsonschema_rs-0.42.0-cp314-cp314t-musllinux_1_2_aarch64.whl (3.7 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

jsonschema_rs-0.42.0-cp314-cp314t-manylinux_2_28_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.42.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

jsonschema_rs-0.42.0-cp314-cp314t-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

jsonschema_rs-0.42.0-cp314-cp314t-macosx_10_12_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.14tmacOS 10.12+ x86-64

jsonschema_rs-0.42.0-cp313-cp313t-win_amd64.whl (3.7 MB view details)

Uploaded CPython 3.13tWindows x86-64

jsonschema_rs-0.42.0-cp313-cp313t-musllinux_1_2_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

jsonschema_rs-0.42.0-cp313-cp313t-musllinux_1_2_aarch64.whl (3.7 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

jsonschema_rs-0.42.0-cp313-cp313t-manylinux_2_28_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.42.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ x86-64

jsonschema_rs-0.42.0-cp313-cp313t-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

jsonschema_rs-0.42.0-cp313-cp313t-macosx_10_12_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.13tmacOS 10.12+ x86-64

jsonschema_rs-0.42.0-cp310-abi3-win_amd64.whl (3.7 MB view details)

Uploaded CPython 3.10+Windows x86-64

jsonschema_rs-0.42.0-cp310-abi3-win32.whl (3.1 MB view details)

Uploaded CPython 3.10+Windows x86

jsonschema_rs-0.42.0-cp310-abi3-musllinux_1_2_x86_64.whl (4.1 MB view details)

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

jsonschema_rs-0.42.0-cp310-abi3-musllinux_1_2_aarch64.whl (3.7 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

jsonschema_rs-0.42.0-cp310-abi3-manylinux_2_28_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

jsonschema_rs-0.42.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.9 MB view details)

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

jsonschema_rs-0.42.0-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (3.5 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ i686

jsonschema_rs-0.42.0-cp310-abi3-macosx_10_12_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

jsonschema_rs-0.42.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (7.3 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.42.0.tar.gz.

File metadata

  • Download URL: jsonschema_rs-0.42.0.tar.gz
  • Upload date:
  • Size: 1.9 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.42.0.tar.gz
Algorithm Hash digest
SHA256 cef0de688894a95ef8ffcae59d582ed678dd9d55c1be126b98ed533ceaefcabf
MD5 fde19be8d692a49bc3d5fefdf68aca05
BLAKE2b-256 b419650eff4894807b1c9d8b63c225c010b4b5b8795a9ddc4e52b44e91ca263e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 5bf4fc67de5b46c315ee80ca2f623f2bbea90fd1af5ec0bbf9be80db1855a0ff
MD5 97e1f4eb9a306d289ceccccd0a938955
BLAKE2b-256 57107542044b2a608f61afb6c34db7e4d0a3b1c7e9f5fd73365a482acb099d1c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5e03a1c1162a9dcbbd34555971fadbe491979fd2bcb9993b7eda0b6eb02ac745
MD5 f6db46947d0af28bc068d207bd2d5026
BLAKE2b-256 ab9f66c2eb82686c24ccdf3c57db5bda8423a1f94a45ac5741e2392391e23426

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ca8e12a4150a28800daaad04d9ca3f5fdfd074e1bdf65da4767c56478f963793
MD5 7843a41f3cbf6564438e301571c59d72
BLAKE2b-256 fd26a0b709ca922eb9a0b04e7aae00ba23d1551dbee13bcb9ec8adc9d5d76527

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a0fbe9ba2d329f5c08e5770d384752b5462f3b89b009ecb22b6c3d752a4b0bc3
MD5 ea5e81976faf292d9d0344193e9f24f0
BLAKE2b-256 793d458a27f199cda72fb2e8b3d98bf7919772d57d165f43c76e97ba0b078203

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 d4c42211f6cea9b381c1ff3e42645d46a20a251bfda72c34bb647bf3ba0be447
MD5 78c2a63755aa74bc29f53b84b86baca9
BLAKE2b-256 e778c73a69ff060be2ef66fe9eb2c18aa82e1f7d4acdf282320960a2cd619ceb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e873d416fdd3005b4e20c7d959508672da1749a68a622f53758d01f2f7c09039
MD5 ad32d12e8c68c95aa15b2460c0b7377d
BLAKE2b-256 f01274130eda48883c320472b972d5957acaaa902d41b56b26bd14f6e190e52f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1ea3b782953e53a2a507d4def311eade02a409c0fbfb86e9fa173630699aad91
MD5 4ef14b6e7e1e07c880af80de3bea7fcc
BLAKE2b-256 ae0a8619b3c9a5794bf90c0e98ea1655cffd8edc7244ea525f334e48f4279c1b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 160a566ce17e7d0d165f1c180401e8b11740c53c7cb7862907cf3178d4a17fdb
MD5 23c92aa42c0b4fa2aacac7102e46953d
BLAKE2b-256 42a1ad79e61382376b0149e8fe8effad305bc1ac7cf884d6d2a750637d676be0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fd0361d25ff8c415e4d54d02c8e62a2ad417eed27b5d25179f09766ebabf954f
MD5 d55bc7cadf3d907c38d00a9b6c1218bc
BLAKE2b-256 3da75233c5b6f9db15f1b18c9abd6e162c9d61725b32c8e14c02e62b132c90a3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 38dd167c4c0dc38ffe82b25eb2d7d7a3993d9db0f13ab3a49f51ab6b8bf37de4
MD5 0284ac620dab841816bf6517cdbe4d3c
BLAKE2b-256 4a436be70361f822da1cba870e784d7e87e8e06236c00cc6b68c7878db86f587

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-cp314-cp314t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4afa1ede729276a660fcf7e2333aaec53ddf474648a22d1d2a2db7a7a12ab027
MD5 fa71f61905977232d8402ed809efcc6d
BLAKE2b-256 2e7e1d5dcfe1683f878fa5de035df03499fdc96b59923c3858e64aaba7e02f8f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 e45261b8865d3184b884db808452fbaebbe0aee1f1985d94fe9aa83ce3eed4ca
MD5 e37059a49da4234ce44b5eab9404b09b
BLAKE2b-256 780a330f0b39fcbd2ec797819bbd65707cf042bf6f4fee0b66c0286b97212913

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a16befe26f33831f8353069c3337942ba2203d47d11ebadefcb6cb6761c40135
MD5 a35e2faa5c7aecf181b31600979450f4
BLAKE2b-256 24981a45f8d5d5cdf43b9479e31bfe94c7aa0b44a227a0175cac8daabaec5f76

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 eb8d1d340f5d73cf4de17a8b9e7b8089f8914154e83a0da87f00594df589464e
MD5 6dbf599d17025efb337452f05bb6290e
BLAKE2b-256 2a2b6ad9cd528859853b3655b3de4b259936a1860a2152f584028f6d60ae400d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-cp313-cp313t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 40d41d91571f3795a510aafc9459a7361e06f4860a033d85119c919c06ec01ed
MD5 2b0980518ef85d4f4c12f5437f1e97a7
BLAKE2b-256 1fe1b78fd771d0d2504ffa30665413a6a08a8eba81e8735f0dea818cd17d86d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d432b0365ddb4c1f182c865b0397eb15e064e6c17c036c4f9456e4d8a53b9c53
MD5 96b0da8a77030afe7f6bfb83b6df8d8b
BLAKE2b-256 f68a610b37827613b5e445917bf1a53eb88e975a89e8be33a669644a9d80ae76

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 24c27ad4fe10e0cc761588dabbeed23e7f0077f3d5c06701776797382125f9e1
MD5 77ef7efed39006d33416b9768eaccaee
BLAKE2b-256 0ee515ea9f30d0404e58e0b869ea2e4f01ed0fb4f6f8c290a0d4dc9d7fe63b25

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8d33ada3c2a43e87783febc92d6bbe42e8f3690ea1274c90cf52501dfe57e9fa
MD5 ed9b7c031dc9630202da9b2baf46d465
BLAKE2b-256 5fdce8cbbc5e2778c33644b002d2291386d782f1f686371272fb8d522fd0e430

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 64159dd81b280b03261caa24119fda0600394ed92d2424f244357f6b4bf01566
MD5 183be3ebe4909be4a77a7e234cfd69f6
BLAKE2b-256 e5c948cc1177150dd2a6da593c6ebbbfe327efaacd9d38720c8e2360803e4773

See more details on using hashes here.

File details

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

File metadata

  • Download URL: jsonschema_rs-0.42.0-cp310-abi3-win32.whl
  • Upload date:
  • Size: 3.1 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.42.0-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 e5bd1c514a118ad9f2d76a1b7326f1b8f88276e4c33189648f58fad8491d8266
MD5 3d509f97a4c4f206cfa6489070d738e6
BLAKE2b-256 986adce6254dda132e9103d7f3a770ef0a818fd2da21c27dd267c11013021c5b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 796141972306d771278b3b8ebc3689bacd47a183d75bf2629c5805b5db606d8d
MD5 6e871a471fc5b95958730f6267e62b0b
BLAKE2b-256 5696ed82de89c6bfaa7456ea460b0f8284cab37b3fdcf4b40234405467402d0f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6aa493abac7173c0f57d2e626a384063688d3b84a4e6bab2b13e815db02582c1
MD5 3a662ec277a7f1d114ec4b622d948773
BLAKE2b-256 cc418faa5b40e5062adf820298181398ace3f3fafbaab1cf38eda97dc4b36f9b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c5f1d302161cb9575ed490eb457c2b6ce64f9d514a2572965d9992319678b5a9
MD5 c40ca198e90a888151d2e0e3e5cf7d31
BLAKE2b-256 e4eb37b99cf0a352d89921fba1db09ca6af0730773b054d812fabf4b8d28bdbe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2fe4d6977a7ca707535cd5e8fd76712c10a5e7b5f523a6e6de63ed20eba797a0
MD5 0417b269d72cd98c9edb6f38357fb5b1
BLAKE2b-256 b565ec0d33c9af0c1c48e9034b7d856affbfee587971443cdf70311304513ca5

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.42.0-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 80e6df5e2d78cc109275299c580c1d256c1470baee044a6161599c4c7e485ea8
MD5 bd1eb8d47ff100ed7c234582fb0e423d
BLAKE2b-256 e5681b0d63b8d6bdf9ec408b5c038cf25b4fa8fa9adbfaa5303e6198b23d403d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.0-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c5f9b8fdb204932967164970d05791cb3fe2a1aa67ec53fae0e14119dee4a63d
MD5 ae3fb2919c9ab91b15f7109826e5ce8b
BLAKE2b-256 8a469209a1dde36398d110454afec6a22d252ee070fb8551655f9ae03474535d

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.42.0-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.42.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 23e718da3060ddd98ea891e7c13a47cf7dc4607c89ac8f1f8a003a5d211bbc46
MD5 53e875e68cba47b6784778f4eb0bb32b
BLAKE2b-256 d19a9428b2354e6e6e665d08172326e4516a475466323adee2eb54ea478468a2

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