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

Uploaded PyPyWindows x86-64

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

Uploaded PyPymanylinux: glibc 2.28+ ARM64

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

Uploaded PyPymacOS 10.12+ x86-64

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

Uploaded CPython 3.14tWindows x86-64

jsonschema_rs-0.46.7-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.7-cp314-cp314t-musllinux_1_2_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

jsonschema_rs-0.46.7-cp314-cp314t-manylinux_2_28_aarch64.whl (3.6 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.46.7-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.7-cp314-cp314t-macosx_11_0_arm64.whl (3.6 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

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

Uploaded CPython 3.13tWindows x86-64

jsonschema_rs-0.46.7-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.7-cp313-cp313t-musllinux_1_2_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

jsonschema_rs-0.46.7-cp313-cp313t-manylinux_2_28_aarch64.whl (3.6 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.46.7-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.7-cp313-cp313t-macosx_11_0_arm64.whl (3.6 MB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

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

Uploaded CPython 3.10+Windows x86-64

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

Uploaded CPython 3.10+Windows x86

jsonschema_rs-0.46.7-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.7-cp310-abi3-musllinux_1_2_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

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

File metadata

  • Download URL: jsonschema_rs-0.46.7.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.7.tar.gz
Algorithm Hash digest
SHA256 f0ab23c3f0331db066690d5c580af9c1f6726a9d0caa795dc054fa694a37d396
MD5 bb982deb13fc160c7ade94bfd0affcd5
BLAKE2b-256 1cfa8d4ca10206b38471115aafbd393467823149aae3bb5555c64a69a2a0246a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 ff7d5e826c288c029450623c66748bf590a35682595e7a19df2cfb685ae0c9d7
MD5 5a2c327ee40d48e88c533a427194a213
BLAKE2b-256 de994d6b6023b0b9f169c811112dff1e4b3753485820826715be8ef648e7d510

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cd1f4d226dc161d1ff47dc69b0055f505facc02713a17a559424f16f47611001
MD5 61fcadcdf256f19d6713a6f51079b089
BLAKE2b-256 fe2c5ef61fc387c752abbc163003e027e1f1790a14c82b2c394eea8ca87c15eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0ae74059a414599163dc25a9649f0d3aeca097ef4fcac2febd7a38817e2e86cc
MD5 d5ce9da00d3b3269ebd8ff056e67da55
BLAKE2b-256 949c470231f3c9cc6724622401761e1a4d78d2805bb9de2eaf62859be5aebc0b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-pp311-pypy311_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1b17c2b55a7f4399f54a5a83873ab8fcd689d60b284cdfc564e1dad53c96ccb4
MD5 474e7ccf984ebbfd0326b2909a87656b
BLAKE2b-256 6b13812d2727b87929f8291edf52077f365708aa3d535b56ed178dc78f6f7cac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 440aca104aa24d42cebe609826445070fd807a6ec6fc45a4f2633411f18f4fbc
MD5 abc2f019f021a3c8f9a1fee3851c741d
BLAKE2b-256 1345f155ed37f7f939e461e6714ae61590755d4b61cc3004b5e178de39960056

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e0b7bbd844779276757bbbbf292b36a3d77ba6ae727ba674b0fcc3222488aa15
MD5 bb3f1498ca559fc30c6d634d8e37ee31
BLAKE2b-256 963e27a246604ce11916d3a0b6e73fe83a4cd6aebb35219f53952a98f3cacf91

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 85c9907e8616d3dcfb33de652fc074ed505364d3ce4ff9480baaa503222d2cca
MD5 f802767c3cbac0da96434a3db528670a
BLAKE2b-256 b666f380f2438650a922f9646fea67db871d3ccc712fefc6714333184e97af16

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 89a29f6f1606cf9174c0743f03e6d03874e7d40b1ed20d6bd2442213d2bb8a78
MD5 f1af91905820eb175a91a5042d37c260
BLAKE2b-256 07b5979c1b57ed1accd03d3d5320d04e3c15d2e1cde62ea782b2fc9fbb8ee026

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 62a1c74fd32382e79961444b8f600957c1f32b97e0541a474ef6c20370cdea01
MD5 0057aa623e1cfb18e54ba018476faedc
BLAKE2b-256 4776b02a8e63f0201118e0bfa27a1007a88946eabeb2d32c176f33ad3a4c16c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 03071c9daf32f786b6e0d4fcc805c25972db3030151e6109a4431a8bcd7dce90
MD5 bf4e14efaafb7e2543647b772d869630
BLAKE2b-256 f56dcda67515b41e22546411550e928e71d66739ad280a7c570ff1ad728e5450

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-cp314-cp314t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f967ec18de20c76614bcb5a2a24f34fcff327959fd015efa6167679a19879e7b
MD5 a273a9f127a3034568d60830b1492c27
BLAKE2b-256 431fdef28ea8555ab5b48265da75be616272f651c5865fdc6efaca44058dd35b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 32209d122e18c5a5020b627cfae9fa6411e243b87cfba9dd8917a2a45416e0db
MD5 59ab67785c47d03f5b1a72b8d1a84912
BLAKE2b-256 9b9fc8e57d2192b7bb0b080b81260917a090cd70b5efbaa6a679f54ee4a27860

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f5ca7b18b48bba00aed79b7571374cf89aa04f744a02961e9eced70c208de4d5
MD5 c603674314413077167c4fc77bb2f173
BLAKE2b-256 b2b66f25638f90a1955a7d32ce8ae93d9abc5685e8032a55594beaf440b5bb09

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c4b68d63298c9328a392e29d558d1d2fbfad5ad529a27a41af0963ee6341aa19
MD5 7b13f5b59c35fb3ceec6c4e30b9b3896
BLAKE2b-256 f7cc987f6d2dd8455008a5c1f78fab0910479d32e76b66ea87fe90de3e16d60f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-cp313-cp313t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d3d08192efe0d5cddfaadffe6cdce891091c86302b403a28e1b73e8d081f234a
MD5 b7d01996cefb133bf92c63341be95ccf
BLAKE2b-256 b84fc55e3801df49c04209ad98dd98cee91e5de62272b7217be924e10af6e523

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 82a474ac54b2769d15a09757e1e916808f3a0c21c65a31b3bff4ea4bee790db4
MD5 5e29f13b902de714fc1e28a20da20f49
BLAKE2b-256 3ac4e749734f54b6a4f01a050423c604a87659e1d4fd2dccd473ba4815fb53dd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bbe7301e467d1f4091765d43995554104d7018d73e56e8ce7b8a0851840d4cca
MD5 4891ee2151cd839175c254100f51b54b
BLAKE2b-256 6e67a79f40c8bfc856b23eb2288a596cd91e1866735735e96e9a32df1a631c4d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 52c9bf05459c70f1a6c6d6a033e61336705de3dd4a9c72d9230878ae4ebaaf54
MD5 fda31253ab79888961ecce7b2021b761
BLAKE2b-256 5469b50b622e1aebdd8535bd23487d22bb5679ee58a99cfad15c0cd99c13b60e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 0ef1f9290801fc844a1ae1efaaf2d4e48f14a78c3fcc7230a026968983ecdcdd
MD5 ffede5f8105f7ed5aa57b96d3a7f989a
BLAKE2b-256 ce9dce5c5c861735ee57dac3c9f8bfe8051fb6607068153486d0ba7cc0401c3e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: jsonschema_rs-0.46.7-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.7-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 8bd70aa3749a8ed5b54ccb2970e4e1d29a31bec725c88177cf287ae2cc21c9c1
MD5 2a7dd2f29d122d1a4b64c9b3302a314d
BLAKE2b-256 bc81b91a494f9cb9a1d33394b8f19d3a5914bd1a53ddefc2222fa0a91d631a02

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 199961f03f64c29b1fc55133b775107c30aecefe60c9237b3affdbad2a421463
MD5 cf3571e5040abb5c655a430b927029be
BLAKE2b-256 1528dc0828bb7b05da219ce9d35c00badb2ba299659dbac5a7c91c3a0e157318

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9b6cc67a6d395941594fca340f7c3b21569a6bd38a143f3071a124a1f462e27b
MD5 8fab2c0b77406be99dc11d47f75c2c26
BLAKE2b-256 483f5107a5056690052934120f8ddea444cab5d91a07fc2f9c399c95d41ab092

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 334d6f3435306307cf022ee01f796aea09a6d60d762e23d6a9d19ddf2dfac88a
MD5 d0ce148b95d0a627a54078ec08dbe6aa
BLAKE2b-256 15720ced92b71d9cb723ae922a573368f6d6d6d530a1ef7e68c884707973395a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ea8a4352d0a721d5fb7f3c3e7f6de3618a3f0a01b0768f7167676d9caa56cb44
MD5 3be21b754b68aedb25502412c39f22c4
BLAKE2b-256 f0e71ac5ee12f1119c01d34d8886faa01a3b6e83426bd577503dfc0bb79a5183

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 23b78fb3a81b6504bd50863596fb983ac9664bb3b81a053f7ba8d9ffa1e2a00b
MD5 09733733197066d147c7891f05ea22cd
BLAKE2b-256 58cd25649872d8d4c716bfd76872235d09afd9eabe82b3c726e3217cbb398f80

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.46.7-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 292cc69dc5a16030c62437cf0dd741be09248523b2d7417f924072946344946e
MD5 4b850e6809285f30daa0fa468602e8e2
BLAKE2b-256 0489e533c4bfa341cb1683115561588b438f2a7fad3466b4c1e1067d437873e9

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.46.7-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.7-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 a288567fb4da5c0cd203feada2ced3f7149de05c5fa542f079f4a83b31501407
MD5 853788b3ddd7fec173dd7b2e2f20260f
BLAKE2b-256 4689ec3d583e97485c55cda5f07fb765057287bfaa06b4becbd14336da83155a

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