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.

Playground

If you'd like to try jsonschema, you can check the WebAssembly-powered playground to see the results instantly.

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] is shorter than 8 characters

Failed validating "minLength" in schema["properties"]["password"]

On instance["password"]:
    [REDACTED]'''

Performance

jsonschema-rs is designed for high performance, outperforming other Python JSON Schema validators in most scenarios:

  • 84-2,270x faster than jsonschema for complex schemas and large instances
  • 5-480x 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.49.2.tar.gz (2.4 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.49.2-pp311-pypy311_pp73-win_amd64.whl (5.1 MB view details)

Uploaded PyPyWindows x86-64

jsonschema_rs-0.49.2-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl (4.7 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.49.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.1 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

jsonschema_rs-0.49.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl (5.0 MB view details)

Uploaded PyPymacOS 10.12+ x86-64

jsonschema_rs-0.49.2-cp315-cp315t-win_amd64.whl (5.1 MB view details)

Uploaded CPython 3.15tWindows x86-64

jsonschema_rs-0.49.2-cp315-cp315t-musllinux_1_2_x86_64.whl (5.3 MB view details)

Uploaded CPython 3.15tmusllinux: musl 1.2+ x86-64

jsonschema_rs-0.49.2-cp315-cp315t-musllinux_1_2_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.15tmusllinux: musl 1.2+ ARM64

jsonschema_rs-0.49.2-cp315-cp315t-manylinux_2_28_aarch64.whl (4.7 MB view details)

Uploaded CPython 3.15tmanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.49.2-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.1 MB view details)

Uploaded CPython 3.15tmanylinux: glibc 2.17+ x86-64

jsonschema_rs-0.49.2-cp315-cp315t-macosx_11_0_arm64.whl (4.6 MB view details)

Uploaded CPython 3.15tmacOS 11.0+ ARM64

jsonschema_rs-0.49.2-cp315-cp315t-macosx_10_12_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.15tmacOS 10.12+ x86-64

jsonschema_rs-0.49.2-cp314-cp314t-win_amd64.whl (5.1 MB view details)

Uploaded CPython 3.14tWindows x86-64

jsonschema_rs-0.49.2-cp314-cp314t-musllinux_1_2_x86_64.whl (5.3 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

jsonschema_rs-0.49.2-cp314-cp314t-musllinux_1_2_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

jsonschema_rs-0.49.2-cp314-cp314t-manylinux_2_28_aarch64.whl (4.7 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.49.2-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.1 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

jsonschema_rs-0.49.2-cp314-cp314t-macosx_11_0_arm64.whl (4.6 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

jsonschema_rs-0.49.2-cp314-cp314t-macosx_10_12_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.14tmacOS 10.12+ x86-64

jsonschema_rs-0.49.2-cp310-abi3-win_amd64.whl (5.1 MB view details)

Uploaded CPython 3.10+Windows x86-64

jsonschema_rs-0.49.2-cp310-abi3-win32.whl (4.3 MB view details)

Uploaded CPython 3.10+Windows x86

jsonschema_rs-0.49.2-cp310-abi3-musllinux_1_2_x86_64.whl (5.3 MB view details)

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

jsonschema_rs-0.49.2-cp310-abi3-musllinux_1_2_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

jsonschema_rs-0.49.2-cp310-abi3-manylinux_2_28_aarch64.whl (4.7 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

jsonschema_rs-0.49.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.1 MB view details)

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

jsonschema_rs-0.49.2-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (4.8 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ i686

jsonschema_rs-0.49.2-cp310-abi3-macosx_10_12_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

jsonschema_rs-0.49.2-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (9.6 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.49.2.tar.gz.

File metadata

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

File hashes

Hashes for jsonschema_rs-0.49.2.tar.gz
Algorithm Hash digest
SHA256 da600833007dc501c4574fa0fc62f8f13c7f7ab45865360e22e6245583e574d5
MD5 c293baee4328c426a0d8b223ca0f5963
BLAKE2b-256 e9569188e70eb9ec0147199c804cd9a092881a5548176c9f3bd2624fccdc9c86

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 07f7760f68d45f62f3e8fd62db87f499cd7caee2a8fdea13df097a27e3e69b65
MD5 2186f37c9ed9e9de08cd1b3222a77010
BLAKE2b-256 2bb8513077aa509a98140b8483061b7306c8f4a3d08cc111a67ec21eb3e33aa0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a6428ffb7ec02829ce190cc811edc7704849ca1d60a692d2d7adbe8282d82b0a
MD5 d5c7be7f4f0f678042694020a12b202b
BLAKE2b-256 bb9956a93b711e86e480f9c2d2e1d8068df0cd6ace17be0b0f6e7e9a74fbeaa8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bb43ee46309700677cdcd4957d90a172754f0b4ac15407a93ecd0234e1a91ce1
MD5 0db107ec71cff43fb1df8d26b7c1cb90
BLAKE2b-256 6b951da9eda84fb24fc16b0c6c713f5d79a7c84e0955d265480ca19bf0add9f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b76e44bd2a74e40dd672c9d3fbf35279903330d8e52385d1f3de795e72ce85f6
MD5 c0552138d1eb8bff14ebe1300756aa5d
BLAKE2b-256 8986503e2539ffd5d19a812b43f75bef28d08e6161b3af5d71b97155185332cd

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.49.2-cp315-cp315t-win_amd64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-cp315-cp315t-win_amd64.whl
Algorithm Hash digest
SHA256 e4be38306dc404b5e8816be29ab4ff14f435afd49a376464dffb1d1ebf73148b
MD5 2bb5a354b32e29e583eaa9427d57d76e
BLAKE2b-256 9148b5ef18e6cca295658bc5a7b19c86ebaed210f5e3d2de330957a2f72c50c6

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.49.2-cp315-cp315t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-cp315-cp315t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 15107b30aee55087697d692bd2a4f5a1631d2c6669ad1c5aa65215ff8a379a7e
MD5 0e758fc766076cf14081ef6eb394daa5
BLAKE2b-256 7a695d0f8d5132dde731b7d2de1d2cf291d29b4069cb2286cad3692f18433d26

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.49.2-cp315-cp315t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-cp315-cp315t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a1cf8f9ee7dbd6a23e4da97255024e6d71772e50d89c81e31f33511d92b012ba
MD5 c9fff12c16009d50dc0bdfbf7cad8218
BLAKE2b-256 b1a541044d7487c99fb1c0056002e8a89d7f94e5115080460b8673d32d91977a

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.49.2-cp315-cp315t-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-cp315-cp315t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b7b16f339db80a07bd7288f1fcda7bb86b273bc0d696da12c7bcc2ddc727a82f
MD5 cef66e192989aa2129bb66ef30ddbd64
BLAKE2b-256 68805da6506bc64d1537c8e570d4e39ba2f62f073643ee0f9203c9eac3cf1230

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.49.2-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8bb42033b242c7a9e670a0e3e68ac841fb5ff6310230e01c7f988aa5e032acf7
MD5 4067aef16cda7b308e74c71dd6b1e182
BLAKE2b-256 741f75a320a67b57ec7b18a2c74e9affad381e50f1fd45449c5a2ae4d712808a

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.49.2-cp315-cp315t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-cp315-cp315t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1531ec5856be64be2facbfcbb4a2fae51aa17303a773d9b336b86fba29ac3f74
MD5 ca742707e60d8f34c2255490f6d44d2f
BLAKE2b-256 135064278f8a37c3d7ea087acde18d6845b4e842a1d304f1349b60280cd61767

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.49.2-cp315-cp315t-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-cp315-cp315t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a932ebbb2d7e73b784a4fab1ddaf899d21c7a5289dfdd5e402853fa617bd066c
MD5 134934ba3b0b3ef376be11b456ef201f
BLAKE2b-256 1e97c5247f8f8205fab5bc304cf89c947d98d9367b6ea47d498c2eab39cf7062

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 c4125d92855c5df43882e93741eba58283d459761998020c872377bce391f083
MD5 baf11c2cac57ad64a65c603dc20db928
BLAKE2b-256 9952aa67d9970e37fdf37410348d467f64b6277588b6a67b45d40b86a133c933

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3ed04a39f400cf0a874d7e1e80dc7ee852f54d163996fa9ac1a2b934f1b977e2
MD5 f074b1db1a6b367899ce8d3ce20b9524
BLAKE2b-256 d16f5f6252f1d6e1e0aac508379efd1952c347549e05ce8b6e0ee42a8c5e2c77

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 efd2f0c64c6cff58627aa14891b943cc26d55848bc530aa68e85c9d7ddd838dd
MD5 27423a73388c988ac95672226c2bf805
BLAKE2b-256 d0a78f62b7b7b1dda70ed9cc1d4ed9894733351f0c435c9829da85ecea9d2d29

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f03bb31e42756d1aeba8f0023b6dce3c192be4fba438a2aa3203c2a2bc13bf30
MD5 61aa106bbf76951139bafe0c7b6a554f
BLAKE2b-256 84475ea2f84f530fa9d44b167374b5f0f49b265b4a436c62a2a15bde8c012a2e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 50a4b90a0bf61e3fba2c19fc9685f775235481584b2a0fb30c2d712061f2b956
MD5 f5f1f8c3b83d001012c0df7289c0f4dc
BLAKE2b-256 e658e8ac9041f45a4ea206cea3e3126bdbf0e04748b7c61e4ff72c6a626fd1e6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ce502f071b1d93f3a4fc5c1c9dba34cb8f7f4aa9ab76d692ceb07abdf4708cd1
MD5 08f759b4521eea59be376b56b9dbffe8
BLAKE2b-256 093646d92335553394869768cbd2bdcc5ea1b6a77caabec51f9d5c147f8d3fe4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-cp314-cp314t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5f3a224dc39580f867cb6b1406fa491533d9b97cfa2dd8cca8ee89d5222903d9
MD5 52a6d4fb849aaf0208b8d054f75485c1
BLAKE2b-256 ec7cbdfe28f6301e63578c7323ba06f141b20c7b491b01c21720e2e1b9f6475c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 97ab519f8dfab1ae33bdf17cc9fe84e5860f06f0579e7f3b380a6c6da5ffc2de
MD5 61e62ff2d7998167967a8b8dc85e0570
BLAKE2b-256 037cbc905c5fb0e6e8970ef757002fd03a434981029795fa59a5a8a231b49bbc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: jsonschema_rs-0.49.2-cp310-abi3-win32.whl
  • Upload date:
  • Size: 4.3 MB
  • Tags: CPython 3.10+, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for jsonschema_rs-0.49.2-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 2a795060ee6ee9de7d20f4f3e4f3c8a37b27c91691cebe09d2c13dac3b731c92
MD5 89be7c4aef99579cd08694b397ceb492
BLAKE2b-256 fa22260f888d709e9d2a76983ccb5cdaa0168a021c119e58c6e476c2692ba0ce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cfe719bbfc7e95ebe7fbed53cccaad9c759a3861618511742307e7c1b0494e03
MD5 a1681e12edd5d37d942101d3caed7bf5
BLAKE2b-256 932e4eafd18cd6ce45360a0d2718240b1aab43938799b86ef2f85117eb26ba52

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 17119b89b391475eebf94874ba7164f8b5f8b44d29d5c7f59e1b883e27d70fd4
MD5 734b84c2d01cb984d435e128951f58e2
BLAKE2b-256 0d52fd877315e5673796f53b778c68d01bd40b3ef61df47c635c3f7de47f8bdf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a04e86ba1fc0e6fdd5cb9f106de10a29e0d7e5fcbc3372a87f6ae55e0c4f4ee6
MD5 0cb644f78626202862464cd687859178
BLAKE2b-256 d003dc72d25f0e4a25160e1a8d223ab2f24134c18ba71156bfac6a9506c34354

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 48c0691bce8ba1aca65da7e60aecde4cda22e3291d04f173a41a22a2fd9c1cff
MD5 83e3249e29057003ccdb8295f38d2c20
BLAKE2b-256 c97074a700b361eaca6763bbd459b2cc21a6f11c89a5c3fab56071756b1861ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0db0372a24c1a614ed63b08ded4574e67379525f7006113ff07267f67691ae3a
MD5 b2fbcd8840ec78eb8446e7f2240f9a49
BLAKE2b-256 f5d32dd01bcc5bfe2c07d60dac52267e87f7a93851b797b51f20698ffbeaee19

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.2-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 dc7477368c2b2fd6a32ccc1985eef0ba6de69d2b90417a6c0124ba4a3c8e2f8d
MD5 1976f92bcefaa3fdb3710b78fc6f0f81
BLAKE2b-256 59cd671ee6aaca01ee31120417d842a7a4f8af0299b6600ddde32c4c8cfe82c6

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.49.2-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.49.2-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 733d38f3b575ea39b87c298515f6b5dafbdc7c3b8c074ca602649c37a6a3bda4
MD5 3befb6908d2e1fe810a648078ab422ac
BLAKE2b-256 b529a3e988f366e890f3d99f76241c12c429ef2b6ce943014b9fbee1c3303cdf

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