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

Uploaded PyPyWindows x86-64

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

Uploaded PyPymanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.46.3-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.3-pp311-pypy311_pp73-macosx_10_12_x86_64.whl (3.9 MB view details)

Uploaded PyPymacOS 10.12+ x86-64

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

Uploaded CPython 3.14tWindows x86-64

jsonschema_rs-0.46.3-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.3-cp314-cp314t-musllinux_1_2_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.46.3-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.3-cp314-cp314t-macosx_11_0_arm64.whl (3.7 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

jsonschema_rs-0.46.3-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.3-cp313-cp313t-win_amd64.whl (3.8 MB view details)

Uploaded CPython 3.13tWindows x86-64

jsonschema_rs-0.46.3-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.3-cp313-cp313t-musllinux_1_2_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.13tmanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.46.3-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.3-cp313-cp313t-macosx_11_0_arm64.whl (3.7 MB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

jsonschema_rs-0.46.3-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.3-cp310-abi3-win_amd64.whl (3.8 MB view details)

Uploaded CPython 3.10+Windows x86-64

jsonschema_rs-0.46.3-cp310-abi3-win32.whl (3.3 MB view details)

Uploaded CPython 3.10+Windows x86

jsonschema_rs-0.46.3-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.3-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.3-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.3-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.3-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.3-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.3-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (7.5 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.3.tar.gz.

File metadata

  • Download URL: jsonschema_rs-0.46.3.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.3.tar.gz
Algorithm Hash digest
SHA256 bf2b4cdd11154f2e6b8bccadd12c8891bca7f225b1a3d4f383636d9f8174bdc1
MD5 6128466798eac9726f2d518f3b5d24a3
BLAKE2b-256 899be0f74421c8928cd5373337ae3c16db7c2ab04fc42b37a943b8d342846e00

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 1563bd6032739280ccf36d8acf257deb7b8e5891b73ec6e971fc546f64742546
MD5 8c25d8d5e512d6e0aaf90732de1cea59
BLAKE2b-256 02abebfe6620347db1dcd9a530e2adc3aaed7d0dba58f1b2f0c07a6d96409249

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7ab76eef268bcbe05d3e10844ce07ffcb450c526556586f4138cd5641c460991
MD5 7806166e81fe11c78c6d56375824294b
BLAKE2b-256 194602c3f4c0915da52e5d7a34c2ed7a313405ef3be0318033ee4e7aed85b943

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3ed131bbe716ba211270e3f235a0d932501f319d7c6f7f6b15f76af831a1332b
MD5 25ce60b6f2729f492e96fa0892582ce0
BLAKE2b-256 61681356575107cb984b2fb8251be673e27ac75236b5ada3a500a77fb7c9f301

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-pp311-pypy311_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1d2792dd9b984151377faa994958eec4f974635ec393bdca9216b8f1a432b8ed
MD5 d92f358babbac11afddec31284964f54
BLAKE2b-256 92f15416b3ce57c573c000a6ac5a35846c0d7af5cdfae60326b8352518156c97

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 77b2a905af3e28e63b33ff34ff43c9f2cf0c9a56a96c3cdd4d740b4f1db6f0f3
MD5 7780a3728aab6537993b056ec6225903
BLAKE2b-256 ed1096cf573d453e3be86f8c8839d32c0136a3d84f9cc74654b3308ee077a324

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c827550322bede199e5ac8c2c618884ba47477f0dce2608ecce948d19b2d7455
MD5 c98e571fe742c5b20fa3868bac64f0e3
BLAKE2b-256 e8cacc553e52f52d7d3bf0731478793d810cd08d4f39a734d12531313d6fd1c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1dcdeeb797f2fe5805cdc9eac4e11f741ad26190b4a375afd30c4b845e740914
MD5 7336712726a3005ae680047e8e899436
BLAKE2b-256 9a8d911113ef5b9fab7dae7023d3df08c6c939748d22499a699790b2a1e15f2b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cbca87a1a628a4efef57aee2bdfa4715ad5cc588bd3001d6ac46126bd5d9e4f5
MD5 9c565fd971bdba2c8d0c31947c46d93e
BLAKE2b-256 848b7b07f4810933de291861176d9d295a5af8b528d9cbafb9a57bc740ce1699

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 92c3316b10a1ab0d1c9768d4a7f7b943ed97f2e5d08aa6a28f608076b37e6332
MD5 e50058ddb47b39a126fff39ef10d5010
BLAKE2b-256 4901e82ff020dba6a627131d1d73f15d966546219a69e9b5a7f9eb92a2bc5ffd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 03db936e67263ddc186a821c096dff58855ba2984f1641798f9fdfd1f155e554
MD5 76ea039098a308f08c5105e9a8d2b9ea
BLAKE2b-256 b4d820f5eb653f80b0d7d224cbe9c8a8820edcac67560ea1aed158f86c38ecee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-cp314-cp314t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3bf56742278ccc4299515c57bffb34cdd006103ced373f34fde5ac2e7477404f
MD5 2560faff4fb2c6f447f1dabae5af0f29
BLAKE2b-256 9c223433bc6ccf6aadf05837c21d63042cd709eddc8ed9bce98576bb69020e73

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 ee7102e35ada7990b67ae64b778afc47e1f6d7d12052dd907e114098da6bc242
MD5 4416e586554b570278b0eb79670bca73
BLAKE2b-256 70770b9564c2abbeb86545c052f52cef3de591aa587d622097139961b47ac070

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 04e970bb73306cd17d0447c4df7ed5a588e543f94a91924ffbfb76652e29366c
MD5 f05a7c3db153de1bf435c7eeb7938411
BLAKE2b-256 a3539730d735cc1126887d0cb40102bd845d5a7bd997a2482cd6ad7ef934e3e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 71271b4ef87e54f13bf713941a3adf795a9fd91b09df90c7f6c99bf0e15906dd
MD5 3bd9f430a597944c928c4c8c19f84fde
BLAKE2b-256 4e070643bb26af47c028dda7342c9a159b88fb5b71f479e6200df06e9781f86c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-cp313-cp313t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 660de82126a2a11263ca63d679a1f57d3553d9c9750b267ac6ab3763d1755e03
MD5 c3e2c23042ef7522466e75a872660de9
BLAKE2b-256 b30d671a28cd7cb9bbab8bf67e76bcc9d0d3c7b79e77f63a60d4a9343f7a500d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 07dfcd86a8ffc1eca2022cfa04d0b0355f0fc4744ab2ca3ff9f3e3bc55569266
MD5 776e037e59f38887d60e72c8f960b5d2
BLAKE2b-256 1229fb934b86fb0c9eee4034d0d4b59efe778e132c217081894a078dc5126407

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5849ecaaf5a0b3f11f6777b6a6489706eefc1cfbb98622d217b3307bbf521ed8
MD5 4e3dafe391aeb0124a618c391ee2fe22
BLAKE2b-256 df2c7403f68bd5a8dc4d84c030a83064e6d187fecec0dd22fdcb1fba870b7313

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0262d2d6b93440fcc2e5644b4c5bdadd94326237d85ec9936b89b0ab4da20581
MD5 3b858353a480122234e39c49b012043e
BLAKE2b-256 af8ed9c4a8dfbdb0642261458ab0c53198ee09f199368143aadff1fe6ff067c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 ff44d875439c769a42b6c007793eba7ac320efecad86420b45237f233d91b438
MD5 0d1b988379552274da976148f622d6b6
BLAKE2b-256 f24c5967e8b0a4297366726b25f38e3edc1d4dd785813a0c683463096ab795e8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: jsonschema_rs-0.46.3-cp310-abi3-win32.whl
  • Upload date:
  • Size: 3.3 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.3-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 907cf420ace4e8564655ce496dd5da2150b8c93b4b8da9ab938e7e1b534705bc
MD5 d471374e0e45a726717918e2e13fed35
BLAKE2b-256 9ec9793422732e970303d723de3e048827fa0d9e31d36571ffa6696eb7ab8128

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1983c5612dbaa22ad6db0af689c7b590f353460428cb1d5715fb04619e875357
MD5 b3f8f255089d10161c69dfb2f06ef38e
BLAKE2b-256 07d06d49d1dba6bf043d642be40c907ca7cad89005514f48f3d92b5790fdbf04

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 217120f3d3c063267da6f573cf1359060bae5f19be3c293ff62c8005f5552c73
MD5 e85c90f1b4d1e488dd87fa58344013b0
BLAKE2b-256 a2d6bf08d5afae692d7aa83e4a697a0e1ffa9669428de5a7c57077fbe271f8b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d82a012c6a08af20bf34bb9bc8e53ea1f9d9c36ef3bd84381a1560a79aa0e861
MD5 c18112b8e29e41ad1c100ea8226373fa
BLAKE2b-256 7730c1d03fd83e95e5aeb25e6e854baad6a6407edc2c21e4a1af34d2b9b072c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d5c303aff2bfb68ef7c24aa758e9875bf445e23ca7e6216c947fbdb310353282
MD5 4b81607383998450742e5b2ac8fa9fac
BLAKE2b-256 a7f8f8a2f6c606560fb0cdece7808d928ea8bfaadfe870991722ad065ddab30f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0988bc2b91837f75dd094615996cc1eb52af8128742b8ad3809ca9e3cd1fcdc8
MD5 6739ff285da8f65575132f34fa6acf8d
BLAKE2b-256 56845d573e993a331e1a930ba273cf94b1cf995bda287c4830ed75645dd33f07

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.3-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c6d8413500a498db445ec432f4f189c29fe623897bbd3c627bdc37f727444d76
MD5 d2f92ddc72519be378165b9fd9181da9
BLAKE2b-256 d6175189ee865d2411f7a06e98a960ee290d8ee906d98bc26f62a00a18ba257f

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.46.3-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.3-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 f6939e70640a33f9be690d7171cac4b0c36b8338051b3a729200e51e0998a724
MD5 29dfb4f6684f593e96b87518680b5693
BLAKE2b-256 5b43941e7f51a79bb5dc9c11674badc0d25fb758403dfa6d7c9e878080ff5418

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