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 error in evaluation.errors():
    print(f"Error at {error['instanceLocation']}: {error['error']}")

⚠️ 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

When validate raises, the original exception is preserved as the __cause__ of the ValidationError, so callers can inspect it:

try:
    validator.validate(instance)
except jsonschema_rs.ValidationError as e:
    print(type(e.__cause__))   # <class 'ValueError'>
    print(e.__cause__)         # original message

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",
                        }
                    ],
                }
            ],
        },
    ],
}

assert evaluation.errors() == [
    {
        "schemaLocation": "/items/type",
        "absoluteKeywordLocation": None,
        "instanceLocation": "/1",
        "error": '"oops" is not of type "integer"',
    }
]

assert evaluation.annotations() == [
    {
        "schemaLocation": "/prefixItems",
        "absoluteKeywordLocation": None,
        "instanceLocation": "",
        "annotations": 0,
    }
]

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:

  • 43-240x faster than jsonschema for complex schemas and large instances
  • 1.8-440x 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.2.tar.gz (2.0 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.2-pp311-pypy311_pp73-win_amd64.whl (3.7 MB view details)

Uploaded PyPyWindows x86-64

jsonschema_rs-0.42.2-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl (3.6 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.42.2-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.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl (3.8 MB view details)

Uploaded PyPymacOS 10.12+ x86-64

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

Uploaded CPython 3.14tWindows x86-64

jsonschema_rs-0.42.2-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.2-cp314-cp314t-musllinux_1_2_aarch64.whl (3.7 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.42.2-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.2-cp314-cp314t-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

jsonschema_rs-0.42.2-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.2-cp313-cp313t-win_amd64.whl (3.7 MB view details)

Uploaded CPython 3.13tWindows x86-64

jsonschema_rs-0.42.2-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.2-cp313-cp313t-musllinux_1_2_aarch64.whl (3.7 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.13tmanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.42.2-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.2-cp313-cp313t-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

jsonschema_rs-0.42.2-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.2-cp310-abi3-win_amd64.whl (3.7 MB view details)

Uploaded CPython 3.10+Windows x86-64

jsonschema_rs-0.42.2-cp310-abi3-win32.whl (3.2 MB view details)

Uploaded CPython 3.10+Windows x86

jsonschema_rs-0.42.2-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.2-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.2-cp310-abi3-manylinux_2_28_aarch64.whl (3.6 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

jsonschema_rs-0.42.2-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.2-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.2-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.2-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.2.tar.gz.

File metadata

  • Download URL: jsonschema_rs-0.42.2.tar.gz
  • Upload date:
  • Size: 2.0 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.2.tar.gz
Algorithm Hash digest
SHA256 8029431510d0c2c20084f92ee797c41a4a5751a29cb0b102466ada09c328c708
MD5 5dee154e83cb7fcdeceaf378d33af979
BLAKE2b-256 f9c81f0f159a94373eda7eba5168dc690635557a3c8124179f3c71beb94435db

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 dc4305895f4aa2fe6e66a9df62e2abe72aa55d2a3559a0a8b15a3b4d525746d5
MD5 2651169315e4fabef3294f67e69566cf
BLAKE2b-256 50313d12a16696ba63ff2ec05e635ade52410ee9b9aa33fd0c345a6a59698141

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9cbbdad49c33bfa09c49ffa0821c2b61f7e47bf463da4630fbc53812f73719d3
MD5 6065e00caec28c6dc8846e629425f1d5
BLAKE2b-256 8dd010934173ed6794c0e7a1e955328f560aeef79588c8b094e2bcbdae685642

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 eef9995030208c7082dcf0c1b21642c2bf2ef3fbe0dab9c15e67e1486a4ad361
MD5 b882d8555390c2190c582fa9cd7719ee
BLAKE2b-256 4e971e6fa389e95b1567f06f167611538bae4eb0ed50c5ea63e3c321efc95591

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9e2d0c727a1c36316fc1c2ffd7ddbe6fb6ffb5cd17d75f6b986bda6e72a37527
MD5 08996a8b68dbc4049ce3ae57cde61ab1
BLAKE2b-256 13f5798aa23624aef65bb6d6b6fe025a0cb644b7e2358c3c943d9675bdb752e3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 e67bea24a8ea6cb0963b6a9fd2d9eba275e1db01cadb322ec90636ce5ed13222
MD5 600991dd012277fe019e884d33e9e882
BLAKE2b-256 a8d5bac7b5e4303151c410d92fd0112fe3f66eedb62e5adb93cd277a96fe75b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1591ac3a14bf8908e01d4cf8ebe042fa151225b61c8f180e89d6a2becb59989c
MD5 03f1f3d19adbccb24e1cb7955f30ede1
BLAKE2b-256 852ab65eb9400f37148c0f23f9382f5e867529f9027063a08e9bf5e562468e8f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 3998f3f0a41b3a275f69d51828afff3b27af10b23ba16dd977b6ae0a77b13a11
MD5 d7f0ad04882378b366e1df6a770d892f
BLAKE2b-256 455c22f805eb4e1a2e4d41b9fd2f70b342dadc75aac3ee9bdacb0ca7b8afe0c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 139cf8e87b1d9eb07ddd9817ddb5eec34a11858540594cc9840a03b27d2d48bb
MD5 36978093eea5bc32fe536e620058fec8
BLAKE2b-256 ba1985472b1c2b1bb86b9108c2b2fa599b4ffef6729e33fcc837f1124fbb8e96

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7e4d15b0c7723c7c9b147c49a9c751cc1bdb93e6e74a7a388652e42efaf9c8e2
MD5 04265d99fc95fa12c1610cc29e4d4582
BLAKE2b-256 bf9ce9738d257a9c4c7ec88b8b048bd2ee9dd6035f91ae1dca829461461ede1e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3b79c5c733dacc16d0b39c21fa25bb8f865f08763dfa1262c24d8425471c3b71
MD5 c55ce9ed968d4d63add4726cc25ba354
BLAKE2b-256 c608753b932b38edb6efa7cb3c1952379d907afe917fae3e2311f8f2a7d95a1b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-cp314-cp314t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7b2a4dc74c783789197395a4dab54370b075f2718706f54e77259c9ef1231462
MD5 8d7f993d34ad777706ceeb57b54d6b21
BLAKE2b-256 e6e8b4dc11a9f10814c8e816497c2385272a3563d0dd47e758863fe50526b7c0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 034b5bcfe2f9e5a5c6d7e6e0cdc60fe2dc72de8637b5f6cb1150d47bed24b8fa
MD5 585813a50164c5a93bad47a98e5a104b
BLAKE2b-256 1dadda9f211b019ef642d0a4cb2a28ae5e0ce19572a0d5bda7a8d43755caa69a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 337f959ec25dd810d4a7f3cb17383f74540a4ab4b6503faa273f8a94df7f5d4b
MD5 0ea56c9e72726a3294e28548c83f8654
BLAKE2b-256 201edd35bbf309dfd6cf94d6a9322c7a941b64c54075c1ae1a6423917e392806

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 33ad9725fc570747a9e5a8c736f403a7b66c27583580eb4cd8dac11a6cfb7e36
MD5 154b6570d4018f2108d6714db2636664
BLAKE2b-256 01633b4dc0a2a39dee64ac58b0892c586021e792b2490f7b429dbc40091b881b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-cp313-cp313t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9e35a179475d2822d4e85c5da0b112e6cf9bc683cc3c69bb2f7f4b0bdf1b72e2
MD5 57e168171ea85a9cadca910fbb991831
BLAKE2b-256 a6acb8988be70d7b1b25cc0403c6d2c8d841d1a59d589116b32bf439309c5dba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f20800c3cb445b856b638e47eb8d7677f6ef819d8593cf322b00659a4aaeef8f
MD5 d18e2a43f7fbe7053f4d84009adff4f7
BLAKE2b-256 ed07f8aecc04e1b68dda0bab568326da2db9b8313ad837644b0866e5c3357176

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 473e772e2c088850b9944407fc6aed56e0bacc98cc5efa744ba85e80d2f0526c
MD5 c301ad973027579401532423bd4a05a2
BLAKE2b-256 87cfcaee3852921a988a554209863fd6a7f9a18d7c08abb34eb2894ba4ff5898

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c0e2e16eb89609e7abde7e81baa9ddda376846ff4adf4bbc6ea9fbeae2b1b03e
MD5 91dca877dd078027fddbb4dc3fc62c00
BLAKE2b-256 6b51b0decb260e42845595f37f5a5e2fba5de6dcb43771f1695f275aa766302c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 1454aea84ff49ef0b69d53bb5205c93b6f17e4369d2a1f249a6f64bcc5a69433
MD5 f0720f21e77b61dadc0f82320206c4f7
BLAKE2b-256 a86cc48610479f50366f31235a54f2be01666a9fb9f2f8bdc2962cd5c0af6604

See more details on using hashes here.

File details

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

File metadata

  • Download URL: jsonschema_rs-0.42.2-cp310-abi3-win32.whl
  • Upload date:
  • Size: 3.2 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.2-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 25bfe247f0f3817651c511914c6565a35bcf044e5427eee34e6a1c14ed404c71
MD5 c7fce1af630155d2e4d4ab5d9190db2d
BLAKE2b-256 da7d445606db8009e57551a2b46ee7faea816e8e8589a574c316a9d8840b57e7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7f97a7eb448af45805dc7af6bd27ee370df73e56eaf3198a9ab0a1e654d129af
MD5 f91861e5f0bdaa3c2c41e2d7ab25ddb4
BLAKE2b-256 e138482bd00b655b28e407bacd8f0756f4aa8d7b4931b27b202f0a3e4ae6041d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 067f0a6f7147a2193b755032b95cf9e232bae609ecc2ebf664f36287f8e88894
MD5 ca71686740e1ad27732652195c3a2849
BLAKE2b-256 bb6c9aa4668ffff0d111ee495b0c3d6a4daf7704a9d564941b4335bb07fc2ef1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8ad0122261f961672a268da88f1cbf11be2e4b33fe541468fecbfe5f29f6aff0
MD5 1176234024e712b96d6132846cb685c0
BLAKE2b-256 bc0c2081d535b79e5b00a9aa6999b32e3d5969a20b65e424518b84d190775b2c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 38deb0cf1fc24ad3b97f73f7fbc118edbe548bf0c489f776c93e974c86a38a59
MD5 8af794875f35c74f2ae0166c44f3aed3
BLAKE2b-256 cfa74f69bc68a318cc97ecd99743f68dd3def3af8d31f67282af50cd8540aaf1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e13465a4e20898dc5897fe9e7f6630f0c21d3907f1914f86e528c82734d9bf83
MD5 bde0f878f03ec224b761e609dfef847c
BLAKE2b-256 11a1037f5f83f72f9a8d6ab349e179e6f468f9ee902bc03758b6329754aad625

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.2-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b57fc0e2662b9e4da447fb0bf6a272151e11a507953d3a2b183d176f73a3b4c0
MD5 144d1a61e8a6fc6119c3332536622b99
BLAKE2b-256 1f48e467a20f63a1a31a20225f0a5d088f25521543495c2fca2558d8331c3616

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.42.2-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.2-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 21927de23353e1bfd1ec248428d647c64e93e8f87c530b2b85980387e2f26205
MD5 33b9bdc8639f8c9314b494ca8961905c
BLAKE2b-256 9edb5d32a98132693bbb15ac8abb4fd72292b45fa3a5f1859f04a1bfbb5804b6

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