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.41.0.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.41.0-pp311-pypy311_pp73-win_amd64.whl (3.2 MB view details)

Uploaded PyPyWindows x86-64

jsonschema_rs-0.41.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl (3.0 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.41.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

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

Uploaded PyPymacOS 10.12+ x86-64

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

Uploaded CPython 3.14tWindows x86-64

jsonschema_rs-0.41.0-cp314-cp314t-musllinux_1_2_x86_64.whl (3.4 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.41.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.14tmacOS 11.0+ ARM64

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

Uploaded CPython 3.14tmacOS 10.12+ x86-64

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

Uploaded CPython 3.13tWindows x86-64

jsonschema_rs-0.41.0-cp313-cp313t-musllinux_1_2_x86_64.whl (3.4 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.13tmanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.41.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.13tmacOS 11.0+ ARM64

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

Uploaded CPython 3.13tmacOS 10.12+ x86-64

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

Uploaded CPython 3.10+Windows x86-64

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

Uploaded CPython 3.10+Windows x86

jsonschema_rs-0.41.0-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.41.0-cp310-abi3-musllinux_1_2_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

jsonschema_rs-0.41.0-cp310-abi3-manylinux_2_28_aarch64.whl (3.0 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

jsonschema_rs-0.41.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

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

jsonschema_rs-0.41.0-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl (3.1 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.12+ i686

jsonschema_rs-0.41.0-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.41.0-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.41.0.tar.gz.

File metadata

  • Download URL: jsonschema_rs-0.41.0.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.41.0.tar.gz
Algorithm Hash digest
SHA256 8f58b5208f368b8abe39191030f33af0309a084469a06bc8a399f83120613ce3
MD5 c09bc6288380bb69d3f7cb7296f5bb41
BLAKE2b-256 540012eeb070f19d29ada6c43aa2c039c4bbd507ad893ae450846577ac7b3fba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 3a2506b81ccd7647cda170519c70567f198b26c22fecd72df4658426c20ac11d
MD5 58532be7b89f194b5d13731c1d9780aa
BLAKE2b-256 e5e409cdae1ed10041deb396f56e47b25c112ad034fee0bf3201b53680c60e4d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 91464c8aae93c9416c6636ce2ca9e053b9d82756e54a3cbf15e45c24171eaade
MD5 a67b121ebac01e86f5aacb596ffaee24
BLAKE2b-256 2101cb048a73051f5c1f9a1f6795e8e81f7358f0e010a7aa891699bfdcf102fc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 537fb4eb6466e7b6ad4323f9fe918f171eb061ed0915c47d1439514c7dd8506b
MD5 59694b7d92f0dd50eebb3196fe9486ca
BLAKE2b-256 d7304e355d00fcb62185fc308636dd4507ed74cb96062a666e073ea1798ecf22

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 81d62d2ac059c204fb6a254f1e573fe788f47a38574ed5ca1d5392c5ac84091a
MD5 627067feead6c05b58d9009ad3adf39c
BLAKE2b-256 1479443516410adca1291f6df667d9246d765520a252d469328c16ce889baabb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 0da65af06cc35e741d1d8295e8cf79c652c6715434e7113ae866bff4d3257590
MD5 46772e16566c5f830900d89b7ba6cef8
BLAKE2b-256 19596192dd79a71a8bf998ae01cc48d49c9573c709ffe50eb10d0f1156fa81ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8a19255561e94f58ad5cf24ffa187744c6fdedac97289979df993c1e7549b903
MD5 4fa951924c012da268ff24ab61dbffd2
BLAKE2b-256 a3ba2f1e1fa45a144a2fc9fcdabb649b2187cd794787581f553e40c984c0de13

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 fcfb6a0dbf2170dddef684f6cec274e4d2a41c6cb53c6ebc1d95290911364719
MD5 7dbd00a41a18d262dcbc878fd22bcc5d
BLAKE2b-256 d425fa240d00170378121121f07640bf656eab2e81e88de465eb8e5cefbd3370

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 589feafe805a7cd574d38d3a943baa722dd6308c0decb375d0a3cbe5a735cf6f
MD5 defa318c856e7fa381f693f2b429c204
BLAKE2b-256 5db26e677beb3f3e10afdb6e49b8f82fe42614d7a5822046e5b8d1af2776ca0d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 68b787cb6f651d5e9da56f54af91d7f8f5d2ba38342960b3e7941569bcda6567
MD5 84e9346e31a3004e3150c3ba31af1dd2
BLAKE2b-256 086c36d5852f4c6cc4b56b9e9afae12802d907e6b83942d33fe10f937990107a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 506c4751e1e383e0e15681fb5dda3ec08e664f1334ec1f7295b3300719967525
MD5 5ebbbd2f183ad333462b0cbb6507f8d2
BLAKE2b-256 a2436fdbade9019ed3878421b576f6b4e12ab185e419561aca43e87fed90a948

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-cp314-cp314t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f1e28e1cdcdfef805a343736626959cd793013e6ed20e34c8c241587609c175f
MD5 0c806400a3ef413c41c67c60aee08b36
BLAKE2b-256 9008093d76df5319716baee393b538ffeccef81051699ac73fc9109999e57222

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 7e3539add04fdd6cabab23f57bf49a99daeef966a064680b6583a9b30be144cc
MD5 d971e17340b9b7e4930adcecedcf4e13
BLAKE2b-256 08e7c89446af5309039d4bc112fbb4634c0e99dc7d5b177df0b2c514310a733f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 73ddffb5cf6211738bf364d2a45e7b8c64c47c83089e8b4a29c7a6621f211d08
MD5 634ff3ad3350a1fac07b5088b55a9c28
BLAKE2b-256 93b7a7d3db557a8cb860438822b5e44d0f868efe8145e037f202f7fa54f7e25a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2eeceb8a12b82d52335f94192759dfe5ca031721ff8a2a195fbc546f85070929
MD5 057f2eeef20435861503a86df34af508
BLAKE2b-256 de9ed0899b84ec65d4adb6e6e4b4129ca553ce90c9a93ae759d03e47579e330f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-cp313-cp313t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 316f8122a706ba327af57f18ac014ed84c1f247fcfa1be83cbbf43e3efa107f1
MD5 62b47f3f9ee4f2404304ea338689e753
BLAKE2b-256 d4f5dd1927e8e0c96828b8835570df921d577b2a9b3dd0671b1994238f32083d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 90a7ae5203796fe22f10e18e5c3d92d3794c3ab8002a4c6cc394495889a6920e
MD5 9dfb8372b85ace0d6346085e7a8fd4a2
BLAKE2b-256 f211f63563950b72430bccdaeb4646688d7456192751cd67f45564ce1cb63cd7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 50a0bcb1fe057892acfa37e8016af5e88a38d66de17217fd8e72a35e64754796
MD5 bde56163434d0a339615c92c31022da2
BLAKE2b-256 98c275f43d3efbdc74e689dfb5dd79b65e82d62e0ac5519061cd5a601e1fac9f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 957f21f9459d94e8cce71c2eef609d8952a0ea6db0d16c1ead81b12732a49188
MD5 fd0cb5b8fb71da267fe238dc19c284cb
BLAKE2b-256 6c6baddd0373f75dfe112577e6962353af4618b82edaf2c39a34926c938c4ca9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 090f3cce991e1680616ddac03c98d5a740d8b76f3608d0e1bf7d47168476a7dc
MD5 589ee585684d86b08531581e47cd1c36
BLAKE2b-256 b3a2664d80f573ed344ae7957399bacb512ef3bd04a4e51325dc738197d01ac6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: jsonschema_rs-0.41.0-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.41.0-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 aa98c6f164fbe2ef5b27bc4001aa278bf80aa945da82d4ec51658c8e99ac4f02
MD5 a3c7dcba89f3799f6f7431fb007f24e2
BLAKE2b-256 d018c732d301e08a2605a34e5e2a7bf2b07664e0dd69b3d4df7e53f2d82dfae7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e8b795f376f5e923e8f2fe5acdde0084130b86b166a9f2311e301e8d91c03933
MD5 67fcc83954f06df00e7f3cbf6c1e422e
BLAKE2b-256 b2ca8666f27bb85c37b17dbb6525274e473e020d803215c75f8c1d8ff70505a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 65d52c23d75ef5fc8c4c5e2ce9d6c7eed7f30058a50d8bf2643f81d9b3e7cd91
MD5 e0a8bc413c046c043c9b5ceeb43ead4d
BLAKE2b-256 62afae54a4d95b4d26e55b935522d9b904d3c7cf2969c26e43b4e912d5da36f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ea10a9db481e11a809c61ed7665b175eb3f2f55b5027b464fd8dd67b531a8352
MD5 c6d1830e0512530e1826698465568039
BLAKE2b-256 b58639918574387bd93a41f90ec3dba66f0acd9f69edcbcb3457efbf80b3e728

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cef690c39f8d673be30ce84811c106de330a211f8e9d14d790187de6c52cd572
MD5 fa807a9ffa92bc22c2d6320ed61da88b
BLAKE2b-256 7125239008288cf7a126107d948eb6798a33d8ddc0f9e138038443b419040a63

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 0f6bfd0ab3b5713b54a4f8b04dbdb55b34cf04de3a2a77e8a8c637b2ea3af8f3
MD5 27ff68fa8807c6c11456a439f28636aa
BLAKE2b-256 399152115371d0cf5a7fdb7006f275bea0c75e0f68ed6394bd027a60217aae1a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.41.0-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8bc55dd4044e34879a914fd1d0e821617752699e291ed617705626d767291152
MD5 822009d797e760351b818ca0eae9a1e2
BLAKE2b-256 dfc4467aa02d0a1012f93bd8d3fc3aa98ab84e9730546b819547ee705df5ab4c

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.41.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.41.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 27040d98be3cffc91e44d9b0fab2a0e3a2e4a28f8851d462aeee65e2be3693a7
MD5 35648658860f55eebc8c63b2e37f74e6
BLAKE2b-256 9e66d6ac4a0253ead5e36074c044c3dff5e193bbb47d39695825c263409adf47

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