Skip to main content

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.

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.8.tar.gz (2.5 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.8-pp311-pypy311_pp73-win_amd64.whl (5.3 MB view details)

Uploaded PyPyWindows x86-64

jsonschema_rs-0.49.8-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl (4.9 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.49.8-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.3 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

jsonschema_rs-0.49.8-pp311-pypy311_pp73-macosx_10_12_x86_64.whl (5.2 MB view details)

Uploaded PyPymacOS 10.12+ x86-64

jsonschema_rs-0.49.8-cp315-cp315t-win_amd64.whl (5.3 MB view details)

Uploaded CPython 3.15tWindows x86-64

jsonschema_rs-0.49.8-cp315-cp315t-musllinux_1_2_x86_64.whl (5.6 MB view details)

Uploaded CPython 3.15tmusllinux: musl 1.2+ x86-64

jsonschema_rs-0.49.8-cp315-cp315t-musllinux_1_2_aarch64.whl (5.1 MB view details)

Uploaded CPython 3.15tmusllinux: musl 1.2+ ARM64

jsonschema_rs-0.49.8-cp315-cp315t-manylinux_2_28_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.15tmanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.49.8-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.3 MB view details)

Uploaded CPython 3.15tmanylinux: glibc 2.17+ x86-64

jsonschema_rs-0.49.8-cp315-cp315t-macosx_11_0_arm64.whl (4.8 MB view details)

Uploaded CPython 3.15tmacOS 11.0+ ARM64

jsonschema_rs-0.49.8-cp315-cp315t-macosx_10_12_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.15tmacOS 10.12+ x86-64

jsonschema_rs-0.49.8-cp314-cp314t-win_amd64.whl (5.3 MB view details)

Uploaded CPython 3.14tWindows x86-64

jsonschema_rs-0.49.8-cp314-cp314t-musllinux_1_2_x86_64.whl (5.6 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

jsonschema_rs-0.49.8-cp314-cp314t-musllinux_1_2_aarch64.whl (5.1 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

jsonschema_rs-0.49.8-cp314-cp314t-manylinux_2_28_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

jsonschema_rs-0.49.8-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.3 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

jsonschema_rs-0.49.8-cp314-cp314t-macosx_11_0_arm64.whl (4.8 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

jsonschema_rs-0.49.8-cp314-cp314t-macosx_10_12_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.14tmacOS 10.12+ x86-64

jsonschema_rs-0.49.8-cp310-abi3-win_amd64.whl (5.3 MB view details)

Uploaded CPython 3.10+Windows x86-64

jsonschema_rs-0.49.8-cp310-abi3-win32.whl (4.5 MB view details)

Uploaded CPython 3.10+Windows x86

jsonschema_rs-0.49.8-cp310-abi3-musllinux_1_2_x86_64.whl (5.6 MB view details)

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

jsonschema_rs-0.49.8-cp310-abi3-musllinux_1_2_aarch64.whl (5.1 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

jsonschema_rs-0.49.8-cp310-abi3-manylinux_2_28_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

jsonschema_rs-0.49.8-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.3 MB view details)

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

jsonschema_rs-0.49.8-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (5.1 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ i686

jsonschema_rs-0.49.8-cp310-abi3-macosx_10_12_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

jsonschema_rs-0.49.8-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (10.0 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.8.tar.gz.

File metadata

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

File hashes

Hashes for jsonschema_rs-0.49.8.tar.gz
Algorithm Hash digest
SHA256 b7885ca9c5953fd31adc906b995f8e38f70a7701e15b0b98b9424ac9cbd53378
MD5 3dad5b354c9fcf63cc2628ed7a9eb485
BLAKE2b-256 ef1aad68296350c5ebde8b5e9b12aa27e8b61e68fa44e8c0b3ab0f7b28a7ce57

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 c3d362ea84382166714fe57f64a3a49f856a4918da14e4adb0e579048fff1309
MD5 955ec47e37e66ac82fd3f711e1dc6ef2
BLAKE2b-256 496709507ba4cacce5b1e57521d2a26c96fc1a9926c8bce36f9aef42bb3a1bf3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1e71ea7c5b8d5b93db45ed0fd2bb4020bfca34ebf0ba7d5dc22066bf54806c05
MD5 aee2dc68ef8365e491e197b4f92f41b2
BLAKE2b-256 565abc6c625661c219677b65d20134c27b7b67023febd4f33d253c177276f94a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f16b6e95c55099e6b2ad7a4b8eaa276b8f04cf0ee1ea342c5c158b71eabc2150
MD5 af3bea63049e1f7b2f01b71707cf6056
BLAKE2b-256 a2341c2727d1dbc612c0e94f6b94bacf88332ae9e42d41728b76fa1da2c46ce6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-pp311-pypy311_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 110b69552b64e23747617fe5ce04ba33d9a9e1740651fcf90edb6e5e757a7d78
MD5 0e0881bba7bbac595cde806cccb2e753
BLAKE2b-256 4b906dc27361b846955230a696b74c6b8781b121512dfe781cf99377e3d72c5f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-cp315-cp315t-win_amd64.whl
Algorithm Hash digest
SHA256 b3e690c94c82379940d866bb184a8939e31ddd7df25a9cdc853ba928a1f3b51e
MD5 e75c29096c95c31953c54081caf899e2
BLAKE2b-256 22bde4aacf45492549420675871860453922ac90c6837c8e7e623594b4421201

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-cp315-cp315t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5e2b10dfe1b036003dd4d54ecee20da9796cc2ad67975e528d5cda2645400b17
MD5 827533da4d4c771abd1f25dea1b4412a
BLAKE2b-256 017b82c58a8763c060c5e26bc9a26fb86f1bdc4ea74b1eddd381393d6d988790

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-cp315-cp315t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 39c34e577cd1a3289eb583384d465ea8210394209f2474fad95d3d730b3f8a8e
MD5 523f5974175a7ead9d801f1f402baa07
BLAKE2b-256 03577ff9d4485e4689272d0156494de2f08ddf1de715b237013a93a88a55bd79

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-cp315-cp315t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fd22c8657a2f9c365b77876008081c6f91646c433b22ee825642376fdbb536ca
MD5 5097a858e2b6bfeca3ea63e6ca66462d
BLAKE2b-256 2b9f2a705d4389fca6f631c1a66e79c88f250fd5c666dcd5e6cf30d47154feb0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 28469e85fe76152dc52c71bc4f77db31a499f6bbb5683cb61956a5a641d05f5f
MD5 803c5a1e2c24242beaff1b0503afc32c
BLAKE2b-256 5ab9ba55f91e54b3c81ff1147a56cefc2dc235bf87dff5935902acf637ae94f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-cp315-cp315t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fdb79e1851dc0cd36fa1c2e717c78f1b7b747e25fbdfe54dc980d7d5786798d3
MD5 db20f078e09a850f17a16dab53516e7e
BLAKE2b-256 0e76e4efdc3cb432bd0c743172f13c57e70e3ea3a3683837f0c8179de4e004d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-cp315-cp315t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6331580624c4c40fb028e007c612f68deeaf3a0995826a96e3a96a8924cabe79
MD5 c60a36078678a32be6ad092183100410
BLAKE2b-256 12fee8e086facad0f9cf0684810bbee37232d50bdcd9a76006385ae952420692

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 a69c1dd5eeb78eef68c34b8a1a6b17626ad10216e392cbcde7e26c534fd2ffa7
MD5 90766b4ed64f7fd578f8490495f7a942
BLAKE2b-256 dafe7464bb1616fb0f29aa5361756b2edeeec27b9fbc014880de0e26e0ddcd3e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2025b409c021dded84d0cea12e96fe594950c37c48cf13be4d8e28bc6072aaec
MD5 ccd261c66acadfb15bf6e96574d238c2
BLAKE2b-256 47c30195f518b34ab0e428fa785006f31a334b883c8a77b49caa931f5ad9921b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c6eaa85658f8bfe8cc0c7a234ddc8a4a0571fcaf8e39edca008f0ce56a22138c
MD5 6c9ebaa99ebbd300f8235aee593dcda7
BLAKE2b-256 167a710624e811cdff2f3b9d3ef9643a90087f7f263b470655b2c1134604f419

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fb89d6f30b437d7cf4cff26f4259a89c915596237036a7a93e092d0284329427
MD5 411dfa3409e8b5f40e4a5f062b20187b
BLAKE2b-256 5a35b0f1918d84e398f576afe6af285b605081761c372ff5a3a606dc3a81f11e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5028f2515d4b85cdf84d77d513b0db7ec6f081e4d7713db74268f04a1664fd67
MD5 013da6cb776c0bfb2471a98d17a668a2
BLAKE2b-256 f9bfbc1bc078506be5ce220ae9dab5ea1f0f5c3e28df689dce3f3ebb27e0c9f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f3e293100e43894fca133deba03775ff5691699baeba2a6ce17f9ab14b9d2d03
MD5 428b8e5186561624014ef9d680bb3fe5
BLAKE2b-256 a579fa131b09bede47285571c3d1f2f028300689b1c5c4436c3d8d795ccf7d51

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-cp314-cp314t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e1f2b5181ef1b556de3c7f76d29bc1f784306c4c8ed34d75066cc8fb873a222d
MD5 16da57c9ec41fba5f799107ebfc78857
BLAKE2b-256 45b5e9bdf156b3832205bb061b3e86942931856a32d29851ff5b17feecd15901

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 c4e49aa301c9d8b8667b1789955d600c1b305502b057e7ec97002c3a97b0cb31
MD5 a08845d771b2f7827a4796235951d34b
BLAKE2b-256 fe5ae147098552a2e99589f707173ce0ddedf24c4cc70d8a4b4349edd7d7eeff

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for jsonschema_rs-0.49.8-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 c07afd54dcf452d807e82b8ba0f0378f1b536826856b1c3228c7b297c34a1147
MD5 7432f97c53381ecbbd145bdc5c447a50
BLAKE2b-256 fef35e2ba4990d69a1c1f10fbe381a0fb4c66d7d4e3464259a0eac445312a38d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 78901ec7a8d5f2b698465bb63efae51dbf06ef5c4c40e934ea27b69434f0e0a6
MD5 11eaf4d7985560b5d726b4bb3724c687
BLAKE2b-256 e9b81c13929f021e53460bc3d2f96fd51a70c23202ed6a318987618a05c8b397

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 86183611d79426fb7848c0d2d8f8d694ec8ef0039faeda9bef7ba889af0fd1f8
MD5 f4382e7883aedd2f7733c4ec5d33a7db
BLAKE2b-256 94f84cab09e710d9d5ed433174ae38cb4fbf4f50913f0bc0d3286dd36f44e8f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 460539e1bc0fc80082c78b9cc34ba78c48c2eb859ca8d21e061d83a687924c29
MD5 f5572bf73a75b21cb71d03d9e3a9a9ac
BLAKE2b-256 e499c6635f1cc1f3ab7034ba36519b611113a86d9eba4988d22e3b6ab0324693

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0a1c5ff422d77f2043ee0d3151db2636752fb5918d060fbf0685dd1dc99d0264
MD5 e8ed2501b5256c60a8e6e0efafc8a40b
BLAKE2b-256 4942e31490a17f5a20c2c1b2aef6638d87f88a8634cc1ebf26fa760fee5f315a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 805f094b1a1e0e5220cabfe4248a00813adc9d7ab18fe31d25c35ca1d69c2345
MD5 cd947b9137544c1cb223e3952ea1a53a
BLAKE2b-256 ace0325b1344404845c747b15234a3b97b6cccaf9cd09d010583ac8d6a846b76

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonschema_rs-0.49.8-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9359f1e148548564add68ed433ede2180641f788de8165c47abe8e7ecd779e1b
MD5 a41e9fade521d4f114dc9c9b09ff5d01
BLAKE2b-256 29e1f24c950b0e52554be515195bdc066c656fdb6be27b26ef76ea92d04b9fe1

See more details on using hashes here.

File details

Details for the file jsonschema_rs-0.49.8-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.8-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 c0096fb936088ba916ee1735199d2241811555c91a51a64c3e556475a3a81279
MD5 d57ae430ff9e67d8471012aa0ca3ae12
BLAKE2b-256 7d4bfaf15453192137c9c311dabdcd28f70a6bbe460c2598bd007a2d83beb191

See more details on using hashes here.

Release history Release notifications | RSS feed

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