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

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:

  • 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.1.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.1-pp311-pypy311_pp73-win_amd64.whl (3.7 MB view details)

Uploaded PyPyWindows x86-64

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

Uploaded PyPymanylinux: glibc 2.28+ ARM64

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

Uploaded PyPymacOS 10.12+ x86-64

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

Uploaded CPython 3.14tWindows x86-64

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

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.14tmacOS 11.0+ ARM64

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

Uploaded CPython 3.13tWindows x86-64

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.13tmanylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.13tmacOS 11.0+ ARM64

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

Uploaded CPython 3.10+Windows x86-64

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

Uploaded CPython 3.10+Windows x86

jsonschema_rs-0.42.1-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.1-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.1-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.1-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.1-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.1-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.1-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.1.tar.gz.

File metadata

  • Download URL: jsonschema_rs-0.42.1.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.1.tar.gz
Algorithm Hash digest
SHA256 4144cd351d39ce457f2c7d45111e7225eb5ed1791e0226dec5b9099d78651e32
MD5 70a195876774b4de3ccab0b65e08b693
BLAKE2b-256 ad44da58fe3b9622a89d8a14cfa0b8f4ba34a773f2719c1d1fdf96577e605e23

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 3cf915dc8eeb304c045fb85e34a97d6d3f563aa75e13d8eb2ab6ebb145b3adc4
MD5 f043ab4e8d6ba863e8af406d03e603a9
BLAKE2b-256 22b475e915e798024674a26e41a3b581c63e991882bbff322ce17a8ac966cc26

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 dce9ddf7084bc7d2fbd1bab4a81d69f99413d001971b56ca26403bafd6da5432
MD5 7251b9104e4b5ffb146e5e511b5f13b2
BLAKE2b-256 17aaa4153b6ae4c603408ce82299c53981f0fa1f501cbc546d096a4a4d696c94

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ad9a5bfc34394d812f88d3e4b320236fbb9b66b34c88f9ec13f9143f97d562a6
MD5 708714b0ebaee40dc8aceeedbd7c3b52
BLAKE2b-256 f6249c652fc859436818ae6b632ff2105d309720023b2b85e0351f0ca19bbfd8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5844afa812db3a61b8994ec562f7a13a62208ec7f9806c34784fc22c945ac87c
MD5 cbfc178befde90d573e312648ea7a690
BLAKE2b-256 61c8080e1b414a446cb9866f06db0cce4dbe3736c5d1a94db816f7829af99e8b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 50bda44a74ddae8bdd1e35785d738c39847b54fcaf4e803f4b51ace095d94a51
MD5 967574b344fb92e01bf5c36fbcb7bdb5
BLAKE2b-256 548c4b9cf37c31e1c1282287682d624a2e08417dc8b4c3dc56042f144e5f483f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b6e795ee51b807eea75df5b43a4380f950c6ff3feb586e01b2423b4d31093881
MD5 56a51f7a1a53ef891d99ee308a6d11df
BLAKE2b-256 65e0637f0c70656264df46aea310836ec191ea2c67ca351ec103f51128e5859e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 cdbed80ae956fff192bf32b5be902f07a46788b12a038c8093928c1e80035a73
MD5 f7991a150737d61305da7f32fd24e922
BLAKE2b-256 7692852aa9a40cad78ed46fe7275f749650b367ccc7cb648bb744e11653de8f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1a7869a0c81a12bf7875235e0d4b95b68392655373c1f443fbbacd0e7cc9d289
MD5 270141a0b7ed99b6f3c275e622480d77
BLAKE2b-256 fb9bbb9bb584b68d3bed2d1fe66394e012371b6b2599d106d7e9c8ca2b8b8faf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 52afd2b1ebf7360a0e9ec40b23cda167b92d776ed8f14f1a6c78a0fc3070453d
MD5 cecc9211a6699904967e0aa62310ba84
BLAKE2b-256 5c43206154f35d6fdaed31dc4dca087aed48318f228f50fece828988f254365e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0d76660cd5b143e342c5d98bf9690258171dbe1beba7cdc6354bc736eb286f7e
MD5 47419794f76cabfbf6507eda1e471aa2
BLAKE2b-256 468ec78b3ebc795f71c850e51c8f2ff8e8dfded2aa19d91ff918bbe1feb9df1c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-cp314-cp314t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2fa26381601a32439ff46c7588476a0fc4d2a0b97a58da756196fd747b99bf01
MD5 b98ad54a59e337c75a7d127edb680d13
BLAKE2b-256 d04f67e146c043d80117bcc8e3bcc66ab2598f09ef931486dfca2c004966f1b5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 e20154d59e843b36e2e7d6b7415954ae3374e23d97a2ad11670a75fe0884c246
MD5 7da800309817aca0a530cfd32c0955a9
BLAKE2b-256 04c4ea5e5ab77af8905f0f8507140f365a9d3126833e2078e22145394c0de1a9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fbe6abf63a5523e13257a0e3a8cf58d15a46e00fcaaafc6f92c34c9109575529
MD5 153efa7737703bebe97bdca31be298d5
BLAKE2b-256 4289692ce0f62e4606a58b25a226e71fa072b900784ec85dade22210595d21c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f50e0baabb3d6d1b250ad776ade46c6bf3599c681e961f686a6a50e925322d64
MD5 dc018681171f3273340c112339190ce0
BLAKE2b-256 12367455412ac12c803a2cbfe80aa02631533314c3ec8392941bec368c13dc7e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-cp313-cp313t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 28b235ab6263f96ed2448f645291d446e4433c7fa6cc255bff2dcffd2a2b65a9
MD5 d063b776d82a5dd5020cbf09381da550
BLAKE2b-256 dca2c4df4b714f3916ddae57fd53a6f9775ff549d89de49c4f3c1b4b0a5b7816

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2a363739a254c3990cbea18a7350de3bc06cdf02307ee1db60ff86fd13e1ff58
MD5 75cdc0243fba8d6b6b92bdc829f024a1
BLAKE2b-256 56acefc18b64564431160f537b26a93e090eec558587fa45f9a2ccda4721fe0c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 98ca39207afab8782149810b789c717d5a0bb7bbb6330bd537827eeecbbeccbb
MD5 d66a0ef4c15d0c1e03dae98123d61543
BLAKE2b-256 6221cd5b2cdb08a9a52b4a076ca3f1ce2e1461d7c95bb54eb27dac9ea1316724

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4849b65048e4fd53991424a827f8369d0b6c7ad1d9ff05bb854afa685131b954
MD5 9fbe6b7e244cce15ec54906a84c0b1ae
BLAKE2b-256 049d44f2c520098667412279b35ac5f90b57d70796f5fe806674e5e9daa24891

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 b508dd9a114352bf8fc20d8e6d01563fbb18f3f877d11e0ecbbb43c556ec4174
MD5 dd8d0abad878824cba3b78abd133f071
BLAKE2b-256 ccbae60f4068d55173b0fca171a1d5846ee2425205edea9ec7b45f2d768cf36e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: jsonschema_rs-0.42.1-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.1-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 6817e5c1fcb10d80b4dda38cd106850c7e3e9dc06d5afe93668b9c99744723c9
MD5 58a9b529ba9db7eb38fdebc8783c8fc3
BLAKE2b-256 4549f68d530fee3908ed9f97ab9fca233c0535eafe53ecec098b9e1b969f396e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 005cd79783a4980ad68d21f7a25c913778dc6a0fe8e3d3c76132eabb7a40287a
MD5 39527cdd376980dcf119bec7cfebf610
BLAKE2b-256 808cff7e9c6c75503920f07c61f7385625f2fbdb18983e22836bed0369629500

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d5602f07fe69f108f7dd9d2d05d940a2498517f07a230da2efb8f36bf06e0703
MD5 4ca812b66f24eda0f40688c8b70a731c
BLAKE2b-256 c6248aae6a9a01e5f21b39fb4801f2f9b39ee43103c44a3f37760f65a70ecf13

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d7dc31fa2b644205271ac1071aec005f88565b135ad1f983b8c1de2589266e1e
MD5 856b3a89809984ed1b12e5976728d7f6
BLAKE2b-256 793fa5704191d230603454558a29376e0a523b38354ddb3c931f879db360014a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c664bd3ffb1cfd70d2b8b8b9587782184a81a8467a70bcc6c71a84cf573ecdf3
MD5 09db3fd23a604bd8ad3af7da83823a7b
BLAKE2b-256 705f76516dd2f031679a9569c25c47abcf0400a8db69766b79b68d4ea393ed72

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0de86325cf5e0d1c35ec14e60ffe2ce4547c8385802ea69ac11540616b822cb2
MD5 0c6cb924057835ad43a11278837e0c5b
BLAKE2b-256 1297ebbaa9d863376e4b1f370058907abf4ccb76da69cd85361dc4c929a28674

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.42.1-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 40d53eea48a17876d6802405edc6e0367f07260545713ac6d727054bce8c425f
MD5 fc82e5c55fcc1b8a7e5de2c28fa55f96
BLAKE2b-256 5e85e96119ef421db1696413e926ec6feb6755c7312c8f8773398a5d4f78f913

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.42.1-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.1-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 7d4c2cf89fb1f49399be7f0e601526f189497f4f7bbefc4fac5f4447ca52609c
MD5 1d7484c5e75415753517fcc9a646d4fc
BLAKE2b-256 7f7adee3ff2574756ea407ac12f36bcf39588438432b9a81898496ab004a277d

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