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
  • 📦 Schema bundling into Compound 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.

Schema Bundling

Produce a Compound Schema Document (Appendix B) by embedding all external $ref targets into a draft-appropriate container. The result validates identically to the original.

import jsonschema_rs

address_schema = {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "https://example.com/address.json",
    "type": "object",
    "properties": {"street": {"type": "string"}, "city": {"type": "string"}},
    "required": ["street", "city"]
}

schema = {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {"home": {"$ref": "https://example.com/address.json"}},
    "required": ["home"]
}

registry = jsonschema_rs.Registry([("https://example.com/address.json", address_schema)])
bundled = jsonschema_rs.bundle(schema, registry=registry)

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

Uploaded PyPyWindows x86-64

jsonschema_rs-0.46.9-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl (3.7 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.46.9-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.0 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

jsonschema_rs-0.46.9-pp311-pypy311_pp73-macosx_10_12_x86_64.whl (3.9 MB view details)

Uploaded PyPymacOS 10.12+ x86-64

jsonschema_rs-0.46.9-cp314-cp314t-win_amd64.whl (3.8 MB view details)

Uploaded CPython 3.14tWindows x86-64

jsonschema_rs-0.46.9-cp314-cp314t-musllinux_1_2_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

jsonschema_rs-0.46.9-cp314-cp314t-musllinux_1_2_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

jsonschema_rs-0.46.9-cp314-cp314t-manylinux_2_28_aarch64.whl (3.7 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.46.9-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

jsonschema_rs-0.46.9-cp314-cp314t-macosx_11_0_arm64.whl (3.6 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

jsonschema_rs-0.46.9-cp314-cp314t-macosx_10_12_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.14tmacOS 10.12+ x86-64

jsonschema_rs-0.46.9-cp313-cp313t-win_amd64.whl (3.8 MB view details)

Uploaded CPython 3.13tWindows x86-64

jsonschema_rs-0.46.9-cp313-cp313t-musllinux_1_2_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

jsonschema_rs-0.46.9-cp313-cp313t-musllinux_1_2_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

jsonschema_rs-0.46.9-cp313-cp313t-manylinux_2_28_aarch64.whl (3.7 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.46.9-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ x86-64

jsonschema_rs-0.46.9-cp313-cp313t-macosx_11_0_arm64.whl (3.6 MB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

jsonschema_rs-0.46.9-cp313-cp313t-macosx_10_12_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.13tmacOS 10.12+ x86-64

jsonschema_rs-0.46.9-cp310-abi3-win_amd64.whl (3.8 MB view details)

Uploaded CPython 3.10+Windows x86-64

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

Uploaded CPython 3.10+Windows x86

jsonschema_rs-0.46.9-cp310-abi3-musllinux_1_2_x86_64.whl (4.2 MB view details)

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

jsonschema_rs-0.46.9-cp310-abi3-musllinux_1_2_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

jsonschema_rs-0.46.9-cp310-abi3-manylinux_2_28_aarch64.whl (3.7 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

jsonschema_rs-0.46.9-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.0 MB view details)

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

jsonschema_rs-0.46.9-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (3.6 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ i686

jsonschema_rs-0.46.9-cp310-abi3-macosx_10_12_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

jsonschema_rs-0.46.9-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (7.4 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.46.9.tar.gz.

File metadata

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

File hashes

Hashes for jsonschema_rs-0.46.9.tar.gz
Algorithm Hash digest
SHA256 283482877dc7e62317ab00e6fe3463081cf5a990fba86f21a331bdafcff801d5
MD5 d39086e600caeddd113e5199c9b8b8be
BLAKE2b-256 409b58098785c66aabce1d60dbf9b1bae0b24bfa7bacf2fa62554e45c05e77b3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 45e4eba9594a8599dbeaa3176b59cc5f0d857b394ffd56ce606d7ef43654b912
MD5 70dc3f02e1bd44326326a45c52a633ef
BLAKE2b-256 279f62700d937d0d9c62d47d2ae5015ef181ad190a9b9040e32b06545fd413b0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 98ec982419dcc07ce5a19e2cfe1cadfd307c9837b95b433030f22d4243eb4ed6
MD5 5e4d7d590e323cd4c915ae359df890eb
BLAKE2b-256 59319e89604288cb256093bbad956034c4d9d4844d5eff1e287d6d88f7f0d823

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2bf943838dcf1afd5b692249621de6e98894614d0c89c6d705e4e7a161aeee32
MD5 278553353c516952be90e72771c6b277
BLAKE2b-256 98a875ca146d3f4b5b407bc82508c394b099208ee03a5571b14323e41bc7ee23

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-pp311-pypy311_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 09ec555bdd46c177390cca82803bbbd179e3f6fb908d2ecdab4dcabee2be359a
MD5 655e9b126d8aafdcf35e6e0b437c2d11
BLAKE2b-256 ebee96349bdd097dc13067cd781962aba911a2059d1159a9772865eb7de3ab6c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 ee2b79b86332ed019db31f9cc5faec8170463ed47964d7756d89d180872ea436
MD5 3b1f5c9cfd96f4bf6784bcb64f0e6c15
BLAKE2b-256 dacab18107f24f3cd55db96fd7257fbdf427791d7092985660ec64371e120441

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 84ab8807bb9ee678f44bee669065a0d25487f7992cb56bcf5a8c704e0ee17c50
MD5 906d4df7e790cacdb0d3e4a2a9d5951b
BLAKE2b-256 21caaf27ca87272dd9b4d9d191c102299a5e75f4b357587e7a6f1aa0efcbeb6f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f9bbcdba128e5da96c76a45256691974f9e367586442f11af256b12496587976
MD5 565c401a6def0f64426c5420e6cc616a
BLAKE2b-256 c30ee77a7e851df9dedee11b34ab802aeac8591713fa0b2b46d4eb38e38f08b0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 57385cfbab052df3509f785e775490ee9e08ba0d6db622fe088ccdf4adcb72ee
MD5 7c575a57c72652a60f914f8103ffd746
BLAKE2b-256 29962db4a4672bce0c68037cc7e5c334d36b5d0d0151251545ef3bed77e5ffbd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 afd8b8b5e16f84815076be34f9077722f5ae4bec62b46d0074b351090b456455
MD5 c1a2cf1ae900eebf243557b54bd736e2
BLAKE2b-256 2ef52d3482fa2286b3d76dbe8faeb058cf44edae2d7324c06a0572ac54fbd3e6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 407498af6cafbd0953e78f9583112c82ccc12275bd8776eef6b73739707b526b
MD5 7232b9df26e0685d5a2ff5ddfe088453
BLAKE2b-256 2f8436d07beb0df14da8d3a73b9537607e07b0090a8b30e514a0859f49ea2757

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-cp314-cp314t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c5b7d642f7c9a68d3124519c391caf6dbc1ee9490991d23549c3a102c90f7d70
MD5 eb174f5af4c62cc10fdfdda5d2792955
BLAKE2b-256 9e22815175a49a98f365ac8dd7f19392a0d1d499052133f9f708df0be1ab823d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 58b23769b8d014eb370852525e3a7f1e125a2b9027f030d5ce9833f464ada02b
MD5 c370b12e5a34877b75d5107472f4a7db
BLAKE2b-256 7bbcf818714e9156f4d2368986e592d035cfecc350fcc6b66838e2c196f359e8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0b4e1a0393eea586d377f6c1bdd68c2a172a30635ea1cde603a75511d78ef5db
MD5 d3cab66230b47385bcb0a5a74d4abdd3
BLAKE2b-256 fc86b9d617abf2c41788af3658b16989bc0843503da68b10ae59cce756bc8dad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 05c1a7c3bc46b83a2b6c5f77348e3bff5bb4673ce856e569c527674ea02db383
MD5 2a9791eb6b4306bcdd09d07981875423
BLAKE2b-256 e59803b35a9ec6b88f653b2dd94e45fab772bab085938824ee44b7149510d6aa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-cp313-cp313t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0ce6b6694abbd821fd8b59353ca4d981042f6925c2cac3975b9088964ec93be9
MD5 7c748fbee794577611aa9bd62a95cbc9
BLAKE2b-256 701231b2a72a67ac275d936e7e1bb41434e8d33fcc2cad700c8f2a5a3dbca6d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7ffa6267ff574513c8c9cb1455a17d9a4e430bc243318372d611329f0da130a2
MD5 654b8e0063d26ac43113b238b6e43313
BLAKE2b-256 ca03fa05909534fe875345c4816a6152e88ca39388e6fd3503b91aeee7c94bc6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bebafdf0fa5a32930d2c4086a3eca94846d2a608308e24a1e7c3393045a53e4f
MD5 e5aafd2063e1fd0bd4ce9ad9417080c1
BLAKE2b-256 0f826723aa24ceb118c81e00cdb99f42d742916a9107034cfc56823e8329326c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 00811b415ee514202b206e307ed3ebcb5ca05e81a3e7a988c7d3dc80ea42b821
MD5 9354c13175becddf0b142ef3035ac936
BLAKE2b-256 56f72bfe952418608f2ac3946f6ad9277409ad33391d84648beeebe13512b209

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 cd327cde166d33e50bd9fdcabbcbb2248356679670e76a24be4453378fa5ec3c
MD5 0d74b3daa652a72da12bf7e0778d3bb2
BLAKE2b-256 526661a319e096b1bbfdc107d7e947132d1638bbed52f7a1d5a54e36b337bffb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: jsonschema_rs-0.46.9-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.12

File hashes

Hashes for jsonschema_rs-0.46.9-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 8ab78e1e5602edc8e7fde2c42be439fd3206c343555794ed9b8bd5a611b366ed
MD5 a448ea6bba68463de66edb67d3b40ee1
BLAKE2b-256 2984e696c4954fbc8c5887a69c4e8ce39a2aa2a73d5e14ee017e18e0afdae8b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b2cecfac7a078440ebd302c3fba67cff98d972afde725f1192fd97967373f186
MD5 755b4f58070501b825ca348444630dcb
BLAKE2b-256 934f1659e627dab23e3cae92780d8c66be112b5e203c156d32caf1cf4561ffa6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4fc1ca4190f713c1ba3091acccc6175beaae088525616373557bd0702e36ac41
MD5 4b02aca03231948bc91eb9accffcaab7
BLAKE2b-256 691910431ef590ebbce5bf7cbafe271b4b3913a6ca1f90895f367d7e3fd91139

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e2ba3f219d9e90d5bd73a6a75b052675ae52e33b26a19d20231cf2d14fd03fab
MD5 2528ed16287896dec74edec2c5319bc5
BLAKE2b-256 3a21677d1cca2dd134b832065b68042ced844c11f77dd3377787a5809ec3579c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 db4879a98331e1e1e789309d77286fb7803aca6e95d40184364e2ba9600ceb03
MD5 5fd5a7d98e09f4528152ee0c8c14df62
BLAKE2b-256 1645c8dab6ef4cdde29ad3b3d190889944dbec4fa04802b8a381d2a9b723ea2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d5551db4b21b9c286eda1922ad223b3d1382ee3fc79727ba259ed9af3d99cdf6
MD5 97e9a89007a31dd3f848ce61963608e9
BLAKE2b-256 338916e8b248110da8c1d55cb24be9fddde1972902b3c933cf9e98a860d4fd52

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.9-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6a21578c5ece8d3c8e83d955d4b2a0fe4f898b7ec7dfa7b4ccb089c65250b244
MD5 9c46c2d831fbdadbedb532b8d7c1d25f
BLAKE2b-256 8c0f6cd0db1c0eedcda970bf351e04d71c504c7d123b497263367f756d17896f

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.46.9-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.46.9-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 e3c1a8f27effab3e14faf423add1f29bb72031603ad909224a7cb28e2b5f73d0
MD5 4df3274b8ebd94204527376425cfb701
BLAKE2b-256 f9c2acf727ebfab91ae8e014fb0007eb6a75b8baa60d905bc5bd8f1aa9d29b21

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