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

Uploaded PyPyWindows x86-64

jsonschema_rs-0.48.2-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl (4.0 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.48.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.3 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

jsonschema_rs-0.48.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl (4.2 MB view details)

Uploaded PyPymacOS 10.12+ x86-64

jsonschema_rs-0.48.2-cp315-cp315t-win_amd64.whl (4.2 MB view details)

Uploaded CPython 3.15tWindows x86-64

jsonschema_rs-0.48.2-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.2-cp315-cp315t-musllinux_1_2_aarch64.whl (4.2 MB view details)

Uploaded CPython 3.15tmusllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.15tmanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.48.2-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.15tmanylinux: glibc 2.17+ x86-64

jsonschema_rs-0.48.2-cp315-cp315t-macosx_11_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.15tmacOS 11.0+ ARM64

jsonschema_rs-0.48.2-cp315-cp315t-macosx_10_12_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.15tmacOS 10.12+ x86-64

jsonschema_rs-0.48.2-cp314-cp314t-win_amd64.whl (4.2 MB view details)

Uploaded CPython 3.14tWindows x86-64

jsonschema_rs-0.48.2-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.2-cp314-cp314t-musllinux_1_2_aarch64.whl (4.2 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.48.2-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

jsonschema_rs-0.48.2-cp314-cp314t-macosx_11_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

jsonschema_rs-0.48.2-cp314-cp314t-macosx_10_12_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.14tmacOS 10.12+ x86-64

jsonschema_rs-0.48.2-cp310-abi3-win_amd64.whl (4.2 MB view details)

Uploaded CPython 3.10+Windows x86-64

jsonschema_rs-0.48.2-cp310-abi3-win32.whl (3.6 MB view details)

Uploaded CPython 3.10+Windows x86

jsonschema_rs-0.48.2-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.2-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.2-cp310-abi3-manylinux_2_28_aarch64.whl (4.0 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

jsonschema_rs-0.48.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.3 MB view details)

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

jsonschema_rs-0.48.2-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (4.0 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ i686

jsonschema_rs-0.48.2-cp310-abi3-macosx_10_12_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

jsonschema_rs-0.48.2-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (8.1 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.2.tar.gz.

File metadata

  • Download URL: jsonschema_rs-0.48.2.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.2.tar.gz
Algorithm Hash digest
SHA256 e39cdc5fdaf844257bccf20fb3dd7ec4a6eb39fea0734d987f8127a9d6451888
MD5 2981416fbebad4eae398127f8be95ec3
BLAKE2b-256 315e94c16a2bc12eb04b7b880f43e82c2e3c4a3fc49ad6c5c8799a1dd490ec09

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 000f56882eb5b582ef40cade58f03467f665363b6503d1dbc7f3df7a9f9dcbfa
MD5 74b451285381ed210dd9be83ec254a7c
BLAKE2b-256 02fc8d7cc20f29bccc65eb1010c7d4f15cc4da61131947d4cb0593f1281b716a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 aa98b2b0295916da4b0fdc39e1fa74534b6e555fb64681d69876b2bc678ea490
MD5 3e12d72de79d99cc500237f50a3b2645
BLAKE2b-256 47f636a8a3223caff1e161dca7bded6177245337175c1d6c71533b7347d95e9e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6f86015cd40bbebbab34480ffb34e9e0f6e0fb15e347bff2f95795e2b5c6162f
MD5 e8715a644c093a1728d049821b2911a3
BLAKE2b-256 a85c359f554030a5676bb6b5ec42c9077a5d6c99c5654b9aa1af5135051f6e3d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 367e3cbd21d1bb5af53cd49c3c81e230f2f77474e529718444060cd524871323
MD5 0ba47c64bec56b1d48e80bfe3ccfbeee
BLAKE2b-256 a9d2525b8754d3d862dbe1635431a091045b21456b28418d4fe380490f317ccd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-cp315-cp315t-win_amd64.whl
Algorithm Hash digest
SHA256 9d761c86a109a46914b436b42c2be0f15261591803abc8c2b9bc082a12c2e9f6
MD5 85d73274d687876f39e6f4d8ede3a95e
BLAKE2b-256 c5088ebc6dd8684c809e5d5f1ee06f3f7eb9df25a078521b1ee3faa486bb09f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-cp315-cp315t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d6b1514473774414ac28a342646a2add13d0bd02abc34066786f56d2283fcce9
MD5 290bce3a01bb3a2f3b4759e8406c207e
BLAKE2b-256 acb482e2252903e6eaadb13a73ba55fd3cb861678e9aa37a4e92f18e32709b4e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-cp315-cp315t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 62dce3203795857e36acb8a3a83b24820b15a5c047fdd78c24d470eb0d9f92b8
MD5 104493ca47fedd9be5de54b162329abd
BLAKE2b-256 470bb1368c60ff2922e33b41c2fdd51a4b28c29cf6d3b624eab92a76cbbe8d33

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-cp315-cp315t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 36bf70435218d36f540dfbb98064f98962a9d3806170c857782980fe609b04d5
MD5 c239c0951d0a9d2eb1cf435e122c1860
BLAKE2b-256 91f0b0149f863269b62c65121c8675aa38d4460734bc8174d421481732cedb74

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ec712e34ce3eee7be468b33e44d66fce48a17717e782ed93587533e5f5fb4317
MD5 344ad519b4d0696500ee86a9b43a14e2
BLAKE2b-256 62d79fda2ac22899ba9f6f65b455cd88c9f5711012c4d3aef5a1416f20df5e77

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-cp315-cp315t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 93fc47b4d222a9174aa11bb76214c7d834fe211ed8884b9f0bb98291754e2b65
MD5 c48448718883f8ee4c1ee5ef005fdd7f
BLAKE2b-256 8dbc2e960a4ea0bfd0b4cb50f3c72f32a12ccd9343c9930ab9739c732032b2a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-cp315-cp315t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 19c653d079b086bea63ecd7a8f3542d50021b797736453e88acbec3bfea11430
MD5 b216f2ccc20b08c65471b5b50f0fbcf8
BLAKE2b-256 5f1d6628de3496c9a06823d07a2124126182f7f85c979e1b0dd5485b2eeb1cd4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 9c9914f5ba57fa0ee99cefd06ba1b9dc342411809c5e73b6637b36cac7fb472c
MD5 c1fe43ee07debf7cb1596eb9fa4a3cde
BLAKE2b-256 2f81562e8cc396f85fc533e4ce3ace90de9b1c36f5c9aed48eaf252f7c14e55f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e04bae75ba7063bd0adbaac2da96b968729d2722457a94f74455210b23b07e18
MD5 f5faed053ec8de2b80dd353273130ba2
BLAKE2b-256 e7c04c2cfa33e9959ff8866ea7681c507c160a140fcf92ee33ca5827a8543b31

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 abcb8ef67946709b8831f891caa47d4ab079d9b0eb13b1b0844294dde7e944a5
MD5 fc9610b4c8fb85105fc113efceba50ac
BLAKE2b-256 aa1b70abcb73651cf1ed86ec812801f773facbcdf3231a8511420a2147ccf826

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9bb96178a07e85c94e8e99a0ab8d33298aa55f74deb251c607c6e7ed3dd77735
MD5 5d89fbe3b1379365634f67d1cf2b2c04
BLAKE2b-256 eec6ea55b80fb69637fa765532b6b23711fb8573c3b3344350cb50281c5cf096

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2f42e99cba723fa44f6646a80b3e89e112305ebe6da3de91c369494e3d3cf46e
MD5 49d3e47114c62d63a129af0530f5376c
BLAKE2b-256 4f65478b79eb52804aaf868fa5fa76784d2bebc80eaccefd647145085110c527

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5ff787bd1c9666635a30120c79c1e108ef86a37b2f572f3f08a3c66cc4407026
MD5 1f1a9cad393bef1bc33f673ff1a28cbc
BLAKE2b-256 820b267547bc7ccd3ee12638c7a963d3cb320778439415d092656f41e581337e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-cp314-cp314t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c556bdee4460231e1e88068b0125d6c0920c29e38006225b8e050958da896992
MD5 770917b70747db817b77dec7a85c401e
BLAKE2b-256 2dcb5098927301dbc8aea7d674587ddb975ca77cb32e046ddbace7618f230442

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 a6cba96046d15377b944e3e637d231f0b3cd6218cec22a2600f4c69588616b71
MD5 cb5237626bdedcce910c48385dc507a7
BLAKE2b-256 2d6969a045d989b58ff8956aa33e2f5c172af13e22e664738f467f6e6f0b5727

See more details on using hashes here.

File details

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

File metadata

  • Download URL: jsonschema_rs-0.48.2-cp310-abi3-win32.whl
  • Upload date:
  • Size: 3.6 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.2-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 a8fe51beff05937d6647c3619c7873f8b64f99cebf4dff74003dd7b860dbfc54
MD5 65e6f3fd34f69f5f31c8c3f6985af02b
BLAKE2b-256 9133aaa374d94b3ea45adcf6c4e12ff397e500f6fab553ee1a0cb71c0cc5576d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 38265d0952da9fbf1d0992d531623bf2d61d450bb8a626d4ea13e27a2de40356
MD5 397c737f4421252895ee65d437eca476
BLAKE2b-256 1df9f158d5655f60918b42af1648109a3c2acb38090d7e0e2b8b9a5760f7e46f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d2e4a52b50a8fcb0172f61a48b30abdef60047ae0095f15eacdafa1c0c3fbdfb
MD5 636bf924af092fc05b59dab72d1c986f
BLAKE2b-256 2a7de3892c53d9a9849edfb05637aa5b328505b197c824b9d375ff198bfed019

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 aeb4c82ca6b7beda07171e5f697a83afbdb1ccd6474cf27782f02937c8dbb93d
MD5 f5c0f50d6c184ae726abce7fcddce761
BLAKE2b-256 cf1cd2f14ae644e67ef4d77c0f92447816cda544269cc8643850bbe8c596d344

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5f6c61f3e1ea69f4fbd9762758bd1c89e3a54181db89c7bd85a03b5d6bccc3a3
MD5 1832b86d6de84b043afab362e853ae2f
BLAKE2b-256 56797f7c5e25b1646ed3cee8ed24aa590ab4d59285c015a48caa2911001d9809

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 1ca3f0797166666c825aaaf37a51069a6fde4130898b1a31c20b04d11d4703be
MD5 5eade1eab192f987a62ad60722bbc4fe
BLAKE2b-256 225a88b3a7a59fd2cd163ac1290c6144dca4f46121f3ccf69b1c0d3a21674fa5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.48.2-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 04ffcae959b4e60928e10094455da0d64b6fa00134ad7e7400e7e0b59834be81
MD5 69b0036d1b474eb2d9ccea6cbf20cc18
BLAKE2b-256 6445e043dda7b5a145218db95ca897f019ce14164903d0ac8253a42cbcf048e4

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.48.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.48.2-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 0bee54e08fbfb19a5f4e182a685562baa0e5283643c0001b2898a9029b4d7c02
MD5 77d75a36469733ffbd3d943677155e8d
BLAKE2b-256 674dd7149af6e381466725a5242f03827251a47a18798b077917bb76c0612df5

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