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] 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.48.5.tar.gz (2.2 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.48.5-pp311-pypy311_pp73-win_amd64.whl (4.3 MB view details)

Uploaded PyPyWindows x86-64

jsonschema_rs-0.48.5-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl (4.1 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.48.5-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.4 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

jsonschema_rs-0.48.5-pp311-pypy311_pp73-macosx_10_12_x86_64.whl (4.3 MB view details)

Uploaded PyPymacOS 10.12+ x86-64

jsonschema_rs-0.48.5-cp315-cp315t-win_amd64.whl (4.3 MB view details)

Uploaded CPython 3.15tWindows x86-64

jsonschema_rs-0.48.5-cp315-cp315t-musllinux_1_2_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.15tmusllinux: musl 1.2+ x86-64

jsonschema_rs-0.48.5-cp315-cp315t-musllinux_1_2_aarch64.whl (4.2 MB view details)

Uploaded CPython 3.15tmusllinux: musl 1.2+ ARM64

jsonschema_rs-0.48.5-cp315-cp315t-manylinux_2_28_aarch64.whl (4.0 MB view details)

Uploaded CPython 3.15tmanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.48.5-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.15tmanylinux: glibc 2.17+ x86-64

jsonschema_rs-0.48.5-cp315-cp315t-macosx_11_0_arm64.whl (4.0 MB view details)

Uploaded CPython 3.15tmacOS 11.0+ ARM64

jsonschema_rs-0.48.5-cp315-cp315t-macosx_10_12_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.15tmacOS 10.12+ x86-64

jsonschema_rs-0.48.5-cp314-cp314t-win_amd64.whl (4.3 MB view details)

Uploaded CPython 3.14tWindows x86-64

jsonschema_rs-0.48.5-cp314-cp314t-musllinux_1_2_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

jsonschema_rs-0.48.5-cp314-cp314t-musllinux_1_2_aarch64.whl (4.2 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

jsonschema_rs-0.48.5-cp314-cp314t-manylinux_2_28_aarch64.whl (4.0 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.48.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

jsonschema_rs-0.48.5-cp314-cp314t-macosx_11_0_arm64.whl (4.0 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

jsonschema_rs-0.48.5-cp314-cp314t-macosx_10_12_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.14tmacOS 10.12+ x86-64

jsonschema_rs-0.48.5-cp310-abi3-win_amd64.whl (4.3 MB view details)

Uploaded CPython 3.10+Windows x86-64

jsonschema_rs-0.48.5-cp310-abi3-win32.whl (3.7 MB view details)

Uploaded CPython 3.10+Windows x86

jsonschema_rs-0.48.5-cp310-abi3-musllinux_1_2_x86_64.whl (4.6 MB view details)

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

jsonschema_rs-0.48.5-cp310-abi3-musllinux_1_2_aarch64.whl (4.2 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

jsonschema_rs-0.48.5-cp310-abi3-manylinux_2_28_aarch64.whl (4.1 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

jsonschema_rs-0.48.5-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.4 MB view details)

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

jsonschema_rs-0.48.5-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (4.1 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ i686

jsonschema_rs-0.48.5-cp310-abi3-macosx_10_12_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

jsonschema_rs-0.48.5-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (8.2 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.48.5.tar.gz.

File metadata

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

File hashes

Hashes for jsonschema_rs-0.48.5.tar.gz
Algorithm Hash digest
SHA256 113bc6b72cdf6ca24ce3503a805983ecfaf8849bb6c647f19731653114fb42e0
MD5 5e22a41308a9309236f35b27280fdb67
BLAKE2b-256 5ed98855459939edc138f91a92129bb81b958c63532d4535f010dc377ad5c3bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 0687f2cfe61984930235daadc7e00c5fe30d73b4fb6bdda3b80f01ddce46d781
MD5 4d66b82391da65edc1043b0752663c9c
BLAKE2b-256 04a865f9a2a07d1e198dcfbce3f4908053ddb1634db24099dbba7e04637dea62

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ca0c106bac67c51476d22d90af25a9acdbbee44574db66a627d4eab4303be28a
MD5 915fbeb15341b022bf5a4f1a6f76ef85
BLAKE2b-256 08ad38955496c773fa316ef842cb701979e805b74b832b791ca5c2d894e552ae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 75262c91f4ad7423650061859c1ddb21320158b7ce241752a0c36737c75b7c9c
MD5 dc77deba4b9cc808b10dbebbb5596701
BLAKE2b-256 01eaee389cdf7808b3ac2be6f1b8d4f653dc69c328466ee2e5c5502b650886d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-pp311-pypy311_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 63a30f3066a027292326d5b2caa6fa9791a7c60d7db612eaf3272b021a680095
MD5 690887e790e176f774301ff12b324018
BLAKE2b-256 1abc4e87fadc1ab97a0665fc37d63476f5d38ff0c3e58969402573f842ce0b7d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-cp315-cp315t-win_amd64.whl
Algorithm Hash digest
SHA256 aef76861b5713bd03b1a1a406e05f4496ce8abaa7dab536be5efb76fe87f7236
MD5 d2555f61c6844688149b3562acf7e99c
BLAKE2b-256 8e915f2ef2b5799b8a6365d3f6e47c9484d4ab9dc3ccb6939b4f5caf0c0ce8b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-cp315-cp315t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b4f3a0e1b79b8271e712967e19229ef47acbcbaa933a45d4b89161fd43eccf9c
MD5 410fcca214586859dee10069dd5b51df
BLAKE2b-256 65e706fc4c3d5bacda9cd7fdc97ba550d0f081a0ca7cb365777ac701abe9ff82

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-cp315-cp315t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 cd902a071a5e879bcdae8ff675de6da8d77935e8ce61269f65c2b0bf73a53cc9
MD5 078ef5e2695b22b2ade10398b2d84f87
BLAKE2b-256 401f9f9f8277ea01e62eb2eb5abe119badb241d4a6433e43c9ed980d21a80ae5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-cp315-cp315t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 27516a56f8e60236c96ae9590158a355e6a7bc979aa2e308e8829d8d18297e8f
MD5 ab8a4e4f9c5952eeee891f51f5dd5cea
BLAKE2b-256 ce59cbd8013a9543746b52d83ceb3523b1fbd458e8d51d111755341a66821716

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8dbd7c08440a3559086c7552371755d9d34ccf6e804b9e742d35a952b456e6ca
MD5 b529e912aefb4b8e8290234ba51a65aa
BLAKE2b-256 af26d141804b178c7c0adf32ae701e0a01e9b33236ded00e65d6fb7885fbcaa1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-cp315-cp315t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 404771f8b684462fe52f0c10765df01136c83600795e43bf10899b8a006e84b5
MD5 6efad49c54705bfdf1f205d92c3be9a7
BLAKE2b-256 836051c8ba7b8c605652bc770e1746754df585ef5ba981319e480d8ecfcbab2e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-cp315-cp315t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 09a1c0b352fcd3f7f18f171de3cde1ec4af212f6acbf34c8c4a3009fd260a9a5
MD5 75a72e9447ff92a0bdc8147d87a01d87
BLAKE2b-256 13708306ba58a96207246667969fd1eb326f7f976d21489b56f38e92ac5711e9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 da53fa0966572c3b69b75e3bacff4cf7b09503e4de60ff1a5452a7abc4d33210
MD5 01b8bae4e368ba46721ec8419c7d4cee
BLAKE2b-256 ad7a33491c7ea464620aed042e8cfd12476d9c945ff4b8ea2730654b04198e8f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 abc7347bf0fce0b700aa0f37fca5c4eee544367666288594eb1d93dc18ff2a42
MD5 eefa8ddb4dcc580d864dc4c2537c2971
BLAKE2b-256 3963ae7ac81ebd016e2c28bcc86e1aedb3a3087e813645bd7da7f1fa8fafb246

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 23e9293bcf5e984c180871bed7f8d308a101e314141e6b6a7957e2fede306eb5
MD5 46619473ef12ccd1d9a45822dc18248c
BLAKE2b-256 a69e1a8279860c41d08c70662abfa6f9da06e34388a071c2f5e3d24cdf043f00

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 94896d967f885c3ad62f61e762043bb7e58278b073af622a5fba4be84e54b36e
MD5 1be6d136a085944bdbfccb6388b1f8df
BLAKE2b-256 931eec04180ea3c512615e2f91485d1ab9afbe812aae7e5be32225530242f2b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6a2d4601e88c1996963c379ac563b77985da5848d0c302439b95c736f657ec17
MD5 dda713712bfbfd3ffcba8b7d4cbca118
BLAKE2b-256 a73620a16f9d0bd49f0c78cdb6746c7787109279f9cf2ade40f47f036fcb7ce1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e7b511a25ed8550b47cd5d50f6651ebaa5d1230a01c14c466b6966645a7dffba
MD5 6ad16fc95c2a0c5fe3fb75c37998f8d4
BLAKE2b-256 991b8aea6a51c6b8ff73b9daedc40e34912779a50a53bf6507e3d973d23d5513

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-cp314-cp314t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c6f9248f68dec368ae9d8074fac34b958de71c6152fe0b9d79e041c54a3a37b2
MD5 f934afdea0692388e2a47f0bc55f9eb5
BLAKE2b-256 fb0bce80d01058da9066b511e9e5a61dc7006b9d832c61a6086996dc664b9687

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 3d7c8d73c37fe5f7d3630b44ad295a959cc6bdab5f34cb58a3ba1f82fca1c638
MD5 9a53fd2f31082e96fc8f049879eee65c
BLAKE2b-256 0c0e063b4fbfd622b93215318b2151e866083cced50c6eca24af2725784eabf8

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for jsonschema_rs-0.48.5-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 ff4b6d52c6e9f3060aa673360edfca7538189fc7e93a59fa00c3f0d8f816189a
MD5 9fb24d595109c9b583be12b655d48080
BLAKE2b-256 17412a7a47f2429538f492560d9f8e4fc172cb1b069b80de1bc2cc364f5bfb4c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d401cb2eb65b9aab1f596afc630a0f803475047978a25a1bff0ea1c5444a8f50
MD5 6ca654b193cd8b7d3095062d314fcf31
BLAKE2b-256 e772f553404374401eae8f143a189bde33e97138e3da9a3ece8f57ceb90f8139

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ae6603c60bbe71dff4487339a6376cdb5084aa6b1082ec3ce30d22ae8e714b25
MD5 94b68c5729dc5fa4a440212ae85b9e52
BLAKE2b-256 09613a9a76d60597955a95d493ae3f37e8768232eef581145668dd7d049f8aaa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8bb40a845496227b80c9cb84c9f5a4e2ffe102fb367395da0b9b701eaeb93e16
MD5 6d96e6e21b2489821b5858fd08e698c5
BLAKE2b-256 7d61a8e63e37e7f80d77e462a82ffc8b425d217b69120dd01e4d1f185b077140

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 14134ce6baa38106bf5d04eea22d37cee397ddbb473249ea9ce4ae79d6347466
MD5 ab125a5c6bc30ef72f03ba08e76e0b2e
BLAKE2b-256 d671f93678664766a450f8e7d2371ddb6df926fbfc4827bb079d51eea95a1982

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 5cc0d8eb0dc1b795b7e31ff070b48fe71d5d084f6b14d5b3932c9714560a8b16
MD5 a7332a6025e602de01f4ad2ab064c859
BLAKE2b-256 2d94e6a363af3c12767f14556ad3609234129652f292c1e447b83d7700491a08

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.5-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 788be7d86a2a081598a46add32d3405822abd00c3938ede915ead7899ec8b9d2
MD5 97e75aa8c8fc08442c8d1fbad92eb531
BLAKE2b-256 3f0012813212dec8399f6f1ba497b595318787bb9a95958a786c399135d5b6e5

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.48.5-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.48.5-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 3be53890ff6a602f4ca42ec88f1c3fffefd47c726b11acf3f7726ccb6a67eab7
MD5 5ab7745910d70fc01551a6ebf280cfe8
BLAKE2b-256 3a822eebf8ee00a1e0dafbd16d24843619ed48b505db4b56e3be7cde352305fb

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