jsonschema-rs
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? See the Migration Guide for breaking changes.
Migrating from
jsonschema? See the jsonschema migration guide.
Highlights
- 📚 Drafts 4, 6, 7, 2019-09 and 2020-12
- 🔧 Custom keywords and format validators
- ⚡ Compile-time validators for your own extension modules, via the Rust crate
- 🌐
$refresolution over HTTP and from files - 📦 Schema bundling into Compound Schema Documents, and
$refdereferencing - 🎨 Structured Output v1 reports (flag/list/hierarchical)
- ✨ Meta-schema validation for schema documents, including custom metaschemas
- 🧮 Experimental schema canonicalization
Supported drafts
Per-draft compliance results are on the Bowtie Report.
Playground
Try schemas in the browser with the WebAssembly playground.
Installation
pip install jsonschema-rs
Usage
Pass a schema as a JSON string to skip parsing it in Python:
import jsonschema_rs
validator = jsonschema_rs.validator_for('{"minimum": 42}')
...
validator_for detects the draft from $schema. To pick one yourself, use a draft-specific class:
import jsonschema_rs
# Automatic draft detection
validator = jsonschema_rs.validator_for({"minimum": 42})
# Draft-specific validators
validator = jsonschema_rs.Draft4Validator({"minimum": 42})
validator = jsonschema_rs.Draft6Validator({"minimum": 42})
validator = jsonschema_rs.Draft7Validator({"minimum": 42})
validator = jsonschema_rs.Draft201909Validator({"minimum": 42})
validator = jsonschema_rs.Draft202012Validator({"minimum": 42})
jsonschema-rs ships validators for the standard format values. To add your own, pass a function that takes a str and returns a bool via formats.
Drafts 2019-09 and 2020-12 treat format as an annotation, so set validate_formats=True to get it checked:
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
A custom keyword is a class. The validator builds one instance per occurrence of the keyword, passing the parent schema, the keyword value and its schema path.
Its validate method rejects a value by raising any exception, whose message becomes the error message:
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
The resulting ValidationError keeps that exception as __cause__:
try:
validator.validate(instance)
except jsonschema_rs.ValidationError as e:
print(type(e.__cause__)) # <class 'ValueError'>
print(e.__cause__) # original message
Other options:
validate_formats: checkformatregardless of the draft default.ignore_unknown_formats: set toFalseto raise on aformatvalue with no validator.base_uri: base URI for relative$refs in the schema.vocabularies: vocabularies your custom keywords implement.
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, an unknown format raises 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 exc.message == (
"Unknown format: 'unknown'. "
"Adjust configuration to ignore unrecognized formats"
)
Structured Output with evaluate
evaluate returns the JSON Schema Output v1 formats instead of a boolean:
import jsonschema_rs
schema = {
"type": "array",
"prefixItems": [{"type": "string"}],
"items": {"type": "integer"},
}
evaluation = jsonschema_rs.evaluate(schema, ["hello", "oops"])
type_error = {"type": '"oops" is not of type "integer"'}
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_error,
},
{
"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_error,
}
],
}
],
},
{
"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"',
}
]
# A failing schema produces no annotations
assert evaluation.annotations() == []
Arbitrary-Precision Numbers
Numbers keep their full precision on the way to Python:
- Integers, regardless of size, are returned as regular
intobjects. - Floating-point literals that fit into IEEE-754 become Python
floats. - Floating-point literals that don't fit in
float(for example1e10000or extremely precise decimals) fall back todecimal.Decimalusing their original JSON string representation.
So ValidationError.kind attributes can hold Decimal values:
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")
# Exponents beyond ~10^1_000_000 are clamped to keep parsing predictable
Schema Bundling and Dereferencing
Produce a Compound Schema Document (Appendix B) by embedding all external $ref targets into a draft-appropriate container. The bundle accepts the same values as 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)
dereference instead replaces each $ref with the schema it points to, for consumers that do not resolve references. Circular references are left in place.
dereferenced = jsonschema_rs.dereference(schema, registry=registry)
Schema Canonicalization
Experimental: the canonicalization API may change in minor releases.
canonicalize reduces a schema to a normal form that accepts the same values. Schemas that accept the same values reduce to equal CanonicalSchema objects, and a schema proven to accept nothing reduces to false:
import jsonschema_rs
canonical = jsonschema_rs.canonicalize({
"allOf": [
{"type": "integer", "minimum": 0},
{"minimum": 10, "maximum": 100},
]
})
assert canonical.to_json_schema() == {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "integer", "minimum": 10, "maximum": 100,
}
# However they were written, equivalent schemas compare equal
same = jsonschema_rs.canonicalize(
{"type": "integer", "maximum": 100, "minimum": 10}
)
assert canonical == same
# A schema no value can satisfy collapses
from jsonschema_rs.canonical import Satisfiability
empty = jsonschema_rs.canonicalize(
{"type": "integer", "minimum": 10, "maximum": 5}
)
assert empty.satisfiability() == Satisfiability.NO
A schema the canonical form cannot model exactly comes back unchanged, with kind == CanonicalKind.RAW. Its view().reason names what stopped the run, and view().pointer the subschema at fault when a single one is.
Canonical schemas combine like sets of values. Every emitted schema carries $schema; the comments below leave it out:
positive = jsonschema_rs.canonicalize({"type": "integer", "minimum": 0})
bounded = jsonschema_rs.canonicalize({"type": "integer", "maximum": 100})
# Every value both admit
positive.intersect(bounded).to_json_schema()
# {"type": "integer", "minimum": 0, "maximum": 100}
# Every value either admits
positive.union(bounded).to_json_schema()
# {"type": "integer"}
# Every value `positive` admits and `bounded` rejects
positive.subtract(bounded).to_json_schema()
# {"type": "integer", "minimum": 101}
# Every value `positive` rejects: other types, negative integers
# and non-integer numbers
positive.negate().to_json_schema()
# {"anyOf": [{"type": ["null", "boolean", "string", "array", "object"]},
# {"type": "integer", "maximum": -1},
# {"type": "number", "not": {"multipleOf": 1}}]}
# Containment.NO: `bounded` takes negative integers, `positive` does not
positive.covers(bounded)
positive.satisfiability() # Satisfiability.YES
Comparing two versions of a schema
subtract tells you what an edit did to a schema. old.subtract(new) accepts exactly the values old accepts and new rejects, so it accepts nothing when the edit lost nothing.
old = jsonschema_rs.canonicalize({"type": "string"})
new = jsonschema_rs.canonicalize({"type": "string", "maxLength": 50})
# What `new` stopped accepting, as a schema
assert old.subtract(new).to_json_schema() == {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "string", "minLength": 51,
}
# Nothing is accepted that was not accepted before, so the change only narrows
assert new.subtract(old).satisfiability() == Satisfiability.NO
The direction to check depends on who sends the value:
- For a request schema, check
old.subtract(new). It accepts the payloads existing callers send that the new schema rejects. - For a response schema, check
new.subtract(old). It accepts the values the new schema lets a server return that callers never agreed to read.
Satisfiability.NO on the difference proves the edit safe in that direction. UNKNOWN means the canonicalizer could not decide, and proves nothing either way. Read it as the answer that keeps you safe:
satisfiability(): onlySatisfiability.NOproves a schema accepts nothing. TreatUNKNOWNlikeYES.a.covers(b): onlyContainment.YESprovesaaccepts every valuebaccepts. TreatUNKNOWNlikeNO.
Containment, Satisfiability, Distinctness, CanonicalKind, UnsatisfiableReason, Cause and the exceptions below live in jsonschema_rs.canonical.
The set operations raise IncompatibleOperands when the operands differ in draft, format assertion or regular-expression engine, or resolve # or one external resource to different schemas. They raise UnsupportedOperand when an operand is RAW, and UnsupportedResult when the canonical form cannot express the result exactly. All three subclass CanonicalizationError.
Finding the dead subschemas of a document
find_unsatisfiable walks a whole document and reports each subschema that accepts no value, with the keywords at fault and their pointers:
from jsonschema_rs.canonical import UnsatisfiableReason, find_unsatisfiable
reasons = find_unsatisfiable({
"properties": {
"tag": {"type": "string", "minLength": 5, "maxLength": 2},
"name": {"type": "string"},
}
})
match reasons["/properties/tag"]:
case UnsatisfiableReason.Conflict(causes):
assert [(cause.pointer, cause.keywords) for cause in causes] == [
("/properties/tag", ["type"]),
("/properties/tag", ["minLength", "maxLength"]),
]
# A live subschema is not reported
assert "/properties/name" not in reasons
A reason is Literal (written as false), Empty (one part admits nothing by itself) or Conflict (each part admits values, together they admit none). A missing pointer does not prove that subschema satisfiable. For a document the canonical form cannot model, find_unsatisfiable reports nothing, the same way satisfiability() answers UNKNOWN.
Meta-Schema Validation
jsonschema_rs.meta checks a schema against the meta-schema of its draft:
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
pattern_options picks the regex engine for pattern and patternProperties and sets its limits:
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
)
)
-
FancyRegexOptions: default engine, supports lookaround and backreferencesbacktrack_limit: Maximum backtracking stepssize_limit: Maximum compiled regex size in bytesdfa_size_limit: Maximum DFA cache size in bytes
-
RegexOptions: matches in linear time, no lookaround or backreferencessize_limit: Maximum compiled regex size in bytesdfa_size_limit: Maximum DFA cache size in bytes
If you validate against schemas from untrusted sources, use RegexOptions: a crafted pattern cannot make it backtrack.
Email Format Configuration
email_options makes {"format": "email"} stricter or looser than the spec default:
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 at least 3 domain segments, e.g. user@sub.example.com
validator = jsonschema_rs.validator_for(
{"format": "email", "type": "string"},
validate_formats=True,
email_options=EmailOptions(minimum_sub_domains=3),
)
require_tld: Require a top-level domain (e.g., reject "user@localhost") (default: False)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 fetches external $ref targets over HTTP and from the local file system. Pass a retriever to load them yourself. This one serves schemas from a dict:
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
For schemas from untrusted sources, pass offline=True. The validator then refuses to fetch any $ref target, so a schema cannot reach your network or file system. Schemas held in a Registry still resolve:
try:
jsonschema_rs.validator_for(
{"$ref": "https://example.com/other.json"}, offline=True
)
except jsonschema_rs.ValidationError as exc:
assert "Retrieval is disabled" in str(exc)
bundle, dereference and canonicalize take offline too.
Schema Registry
A Registry holds schemas by URI, so a validator resolves $refs to them without fetching anything:
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"}
})
Registry also takes a default draft and a retriever for URIs it does not hold:
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
A ValidationError carries the message, both locations and a kind with keyword-specific details:
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}")
The type stubs list every error kind and its attributes.
Error Kind Properties
kind also has generic 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}
Each kind is a class you can match on:
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
Pass mask to replace instance values in error messages with a placeholder:
import jsonschema_rs
schema = {
"type": "object",
"properties": {
"password": {"type": "string", "minLength": 8},
"api_key": {"type": "string", "pattern": "^[A-Z0-9]{32}$"}
}
}
# Replace instance 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
Compared with other Python validators:
- 138-10,841x faster than
jsonschemafor complex schemas and large instances - 8-1,848x faster than
fastjsonschemaon CPython
Full results and methodology are in BENCHMARKS.md.
Compile-Time Validators
If you ship your own extension module and know the schema at build time, the Rust crate's
#[jsonschema::validator(..., backend = Pyo3)] macro compiles it into a validator that reads
Python objects directly, so nothing is parsed or compiled when your module is imported, and validation
runs up to 4.8x faster than with a validator built at run time. See the
macro documentation.
This is not available from the jsonschema-rs package on PyPI, which takes its schemas at run time.
A complete extension with its build and test commands lives in
examples/pyo3-extension.
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,arm64
Troubleshooting
If a source build on Linux fails with linking errors (e.g., undefined symbols from ring), use the mold linker:
RUSTFLAGS="-C link-arg=-fuse-ld=mold" \
pip install jsonschema-rs --no-binary :all:
Acknowledgements
The API design draws on the Python jsonschema package. Thanks to its maintainers and contributors.
Support
Ask questions and suggest improvements in GitHub Discussions.
Sponsorship
If you find jsonschema-rs useful, please consider sponsoring its development.
Contributing
Ways to help:
- Share your use cases
- Implement missing keywords
- Fix failing test cases from the JSON Schema test suite
See CONTRIBUTING.md for more details.
License
Licensed under MIT License.
Metadata
Release files for jsonschema-rs 0.58.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| jsonschema_rs-0.58.5.tar.gz | 2.9 MB | Details |
Built distributions (wheels)
Total release size: 180.6 MB
Release files / jsonschema_rs-0.58.5.tar.gz
| Download URL | jsonschema_rs-0.58.5.tar.gz |
|---|---|
| Size | 2.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b1f7c65fd467e2fe85ef1c4f824ebf96e4334b035d3c2a12623f7000eb0d9f5a
|
|
BLAKE2b-256 checksum How to use checksums |
3001a2d23d69bda7afec7a56949cc8f86393699334c687dd22496e379809a1c4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-pp311-pypy311_pp80-win_amd64.whl
| Download URL | jsonschema_rs-0.58.5-pp311-pypy311_pp80-win_amd64.whl |
|---|---|
| Size | 5.9 MB |
| Tags | PyPy 3.11 PyPy 3.11 8.0 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
7eff8c8e2958b06278c5af93096456914700eb54e420e42c3168eabb4ed9c897
|
|
BLAKE2b-256 checksum How to use checksums |
3079a8c48c3e92541a24f9f8113418ff4572be0ab98b3709a0d5dce18e099967
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-pp311-pypy311_pp80-macosx_10_12_x86_64.whl
| Download URL | jsonschema_rs-0.58.5-pp311-pypy311_pp80-macosx_10_12_x86_64.whl |
|---|---|
| Size | 5.8 MB |
| Tags | PyPy 3.11 PyPy 3.11 8.0 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
16ace54a7ff15e0ed7ec0a7de2fb8716c557b72c994622ebf0b6df4093d707d6
|
|
BLAKE2b-256 checksum How to use checksums |
df8837a9688876e3cbe35f0a7add289ed086f33f4624133ecc05ccb48067eb82
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl
| Download URL | jsonschema_rs-0.58.5-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 5.5 MB |
| Tags | Linux glibc 2.28+ ARM64 PyPy 3.11 PyPy 3.11 7.3 |
|
SHA-256 checksum How to use checksums |
980bc9f929ac21f3577724a6a492717e785a27308b940d39fee67697b73510b5
|
|
BLAKE2b-256 checksum How to use checksums |
4c8097c12fd1a651c13f42682128f18479a1be85a749a9e9f1910deef10632e5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | jsonschema_rs-0.58.5-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 5.9 MB |
| Tags | Linux glibc 2.17+ x86-64 PyPy 3.11 PyPy 3.11 7.3 |
|
SHA-256 checksum How to use checksums |
2d357fae36f9c5899e4f5de95e2be4d21432aa0c440b8f619ef21ecea3bc2fb6
|
|
BLAKE2b-256 checksum How to use checksums |
940cda0fec2a39fe4f52e9650013806532216e892dd4613d8f62291ae9ab2de7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp315-cp315t-win_arm64.whl
| Download URL | jsonschema_rs-0.58.5-cp315-cp315t-win_arm64.whl |
|---|---|
| Size | 5.6 MB |
| Tags | CPython 3.15 CPython 3.15 free-threading Windows ARM64 |
|
SHA-256 checksum How to use checksums |
71a41f588f3177f77a577843b161c17a5c7b8cd2bdf38f8b2b4c2c94da02dd13
|
|
BLAKE2b-256 checksum How to use checksums |
7b04bc4f8ab59f709b92aa3ac1081d29154c92336ff0aa16b38664c65b552274
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp315-cp315t-win_amd64.whl
| Download URL | jsonschema_rs-0.58.5-cp315-cp315t-win_amd64.whl |
|---|---|
| Size | 6.0 MB |
| Tags | CPython 3.15 CPython 3.15 free-threading Windows x86-64 |
|
SHA-256 checksum How to use checksums |
4e11b8a14894a6b3ea65e215286da31dc098496711203f1888fef825d144586c
|
|
BLAKE2b-256 checksum How to use checksums |
a9dc426b725d9ba8e0d7f7e5b2f201907f535ea10fac2560f5d82367c1d15885
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp315-cp315t-musllinux_1_2_x86_64.whl
| Download URL | jsonschema_rs-0.58.5-cp315-cp315t-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 6.2 MB |
| Tags | CPython 3.15 CPython 3.15 free-threading Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
b728394a49f18c05e23757556fe6b63f8cfdef9521337b491576a39b87175fb0
|
|
BLAKE2b-256 checksum How to use checksums |
f81020c7c18bb1f942454ce58d649454688a16c97d33179f5007633f20587c45
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp315-cp315t-musllinux_1_2_aarch64.whl
| Download URL | jsonschema_rs-0.58.5-cp315-cp315t-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 5.7 MB |
| Tags | CPython 3.15 CPython 3.15 free-threading Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
d18f52b91de630960fe78aa4012b942aadd2530d6298945a949115b5e4987769
|
|
BLAKE2b-256 checksum How to use checksums |
32b3d72512833c5d5e01a8a6989936e980838983987601e878451433580f8f81
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp315-cp315t-manylinux_2_28_aarch64.whl
| Download URL | jsonschema_rs-0.58.5-cp315-cp315t-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 5.5 MB |
| Tags | CPython 3.15 CPython 3.15 free-threading Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
3eb537a34e8ac793f142f3a24ca01592347dfd43f0d792ebbafadc4fd2c9b9e2
|
|
BLAKE2b-256 checksum How to use checksums |
771854ad3fc60f570378fe699b19b7382bb359a8bcf42d10773b032b16037248
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | jsonschema_rs-0.58.5-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 6.0 MB |
| Tags | CPython 3.15 CPython 3.15 free-threading Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
8ed1812c50b44fbd399b0b6585eb57c1769457987306b780179518e6dcd9e1e1
|
|
BLAKE2b-256 checksum How to use checksums |
71dc89e957dce65d10c26a49dff84731896422b4b567a735e5c3602d0708a2c6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp315-cp315t-macosx_11_0_arm64.whl
| Download URL | jsonschema_rs-0.58.5-cp315-cp315t-macosx_11_0_arm64.whl |
|---|---|
| Size | 5.4 MB |
| Tags | CPython 3.15 CPython 3.15 free-threading macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
8ff8d108a2fb75ba16f68c465f5945e0fa2f4505639067992427277f6c2a47d9
|
|
BLAKE2b-256 checksum How to use checksums |
25be965cfe0ccaf441ab3b585a1fa55b88edf0bf287cb55c13ac8002f15985d1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp315-cp315t-macosx_10_12_x86_64.whl
| Download URL | jsonschema_rs-0.58.5-cp315-cp315t-macosx_10_12_x86_64.whl |
|---|---|
| Size | 5.8 MB |
| Tags | CPython 3.15 CPython 3.15 free-threading macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
ea327381ff2c918a971b861d780bde6fd95d3d86284bc500ae634eb9ac34887d
|
|
BLAKE2b-256 checksum How to use checksums |
e9671d84044d68aa146e7400c119ce8daa62931a97b3a38579e98d29d713451a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp314-cp314t-win_arm64.whl
| Download URL | jsonschema_rs-0.58.5-cp314-cp314t-win_arm64.whl |
|---|---|
| Size | 5.6 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Windows ARM64 |
|
SHA-256 checksum How to use checksums |
bb25c44ecabce9e64cf6827549bf6443fe96efffaafb2fec95264317464ecb8c
|
|
BLAKE2b-256 checksum How to use checksums |
9d0dcd0ac983f6bab25f7a6d27d1faf38570818566d569ca3da9dc293d38653a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp314-cp314t-win_amd64.whl
| Download URL | jsonschema_rs-0.58.5-cp314-cp314t-win_amd64.whl |
|---|---|
| Size | 6.0 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Windows x86-64 |
|
SHA-256 checksum How to use checksums |
12608222f511a9f592d0d05f5202e4461b383b4f78067dc8ecc55a8bf759dc46
|
|
BLAKE2b-256 checksum How to use checksums |
3ece65cc9b8336a334aa858463dc71d8d27f5c63df65987e7a22036237f62163
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp314-cp314t-musllinux_1_2_x86_64.whl
| Download URL | jsonschema_rs-0.58.5-cp314-cp314t-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 6.2 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
955e2a86a459c1909b67b6d011bdb1b4acd58dee4bd70f3af16e089e9ee8242d
|
|
BLAKE2b-256 checksum How to use checksums |
7e21ba7f7ae6a16f45865fcc9afbe52f6d93de8473871ab22be60d5e6db3c5c7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp314-cp314t-musllinux_1_2_aarch64.whl
| Download URL | jsonschema_rs-0.58.5-cp314-cp314t-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 5.7 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
e2c1fdd21bd944366be7ba67bd2277a2980c777a7bbcb00ede93dc7ced1e91f3
|
|
BLAKE2b-256 checksum How to use checksums |
0448a3b013e1e0d69471fa910744a03d7bae3b8e7916e2d747b1eafe2af9aa3e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp314-cp314t-manylinux_2_28_aarch64.whl
| Download URL | jsonschema_rs-0.58.5-cp314-cp314t-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 5.5 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
ebe0aa678c2ea7e1866be17259f53bc3c13868f60dc47240f1be04580b4c5ed5
|
|
BLAKE2b-256 checksum How to use checksums |
b547ea62c9fac31203d2dee6f0bf383153c9a559c54f9e716322420cb95cfcfa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | jsonschema_rs-0.58.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 6.0 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
12ab391d102ab9a1b3a740c9cbd5a0ccbd7424e6c783fc51eb79e164a23c039f
|
|
BLAKE2b-256 checksum How to use checksums |
f6c48d1a58d9461cf0ea3229330ae1ebdb666c12f89054dd01710c021219d721
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp314-cp314t-macosx_11_0_arm64.whl
| Download URL | jsonschema_rs-0.58.5-cp314-cp314t-macosx_11_0_arm64.whl |
|---|---|
| Size | 5.4 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
82fbb13bf2664172b303cbe710c52b554a5ab419036e1a3c042c4f27b4adefa1
|
|
BLAKE2b-256 checksum How to use checksums |
f8c2bf9bd1cedbb3848bb339510d1d8f96693edb85afccbf3f60dd75e81a4d7a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp314-cp314t-macosx_10_12_x86_64.whl
| Download URL | jsonschema_rs-0.58.5-cp314-cp314t-macosx_10_12_x86_64.whl |
|---|---|
| Size | 5.8 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
fdd0015d7106af5b85ac397b375a1055c79a4343b011d6c30d01b927c4de2086
|
|
BLAKE2b-256 checksum How to use checksums |
fbeb9eb44cf8cf5420633efd0cf38b31c2b617f5650001658b469fa4d01b9cbd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp310-abi3-win_arm64.whl
| Download URL | jsonschema_rs-0.58.5-cp310-abi3-win_arm64.whl |
|---|---|
| Size | 5.6 MB |
| Tags | CPython 3.10 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
cdc225abf95549ee8a28ae954cc3a04da24493004d1531219ec771b1b3e1ea6b
|
|
BLAKE2b-256 checksum How to use checksums |
49e047478d3ef7894527fdbcf02c31a60aadcc6f0ad82e5acd176be4f83c5b1a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp310-abi3-win_amd64.whl
| Download URL | jsonschema_rs-0.58.5-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 5.9 MB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
f1e7d341ba53fc112a5c645f5f71834d9418f360c1d6f422c8c5314e95a65717
|
|
BLAKE2b-256 checksum How to use checksums |
dcc9349d6e6520cb0ace39cd61fba7ab72b5e8b6adf79ccb207f5da53b2d26f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp310-abi3-win32.whl
| Download URL | jsonschema_rs-0.58.5-cp310-abi3-win32.whl |
|---|---|
| Size | 5.1 MB |
| Tags | CPython 3.10 Windows x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
fbef2f41d9b9611b8277cdc942d43c21a0a4e8935880f4ba87e67bbd40414a49
|
|
BLAKE2b-256 checksum How to use checksums |
2195001c94123006536434decbd6f6955a1675d29a71d928150aa9a23872258a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp310-abi3-musllinux_1_2_x86_64.whl
| Download URL | jsonschema_rs-0.58.5-cp310-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 6.2 MB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
257f81509015b4b61ac6d6836ed883097d11501002fec6337054b93f5f396d24
|
|
BLAKE2b-256 checksum How to use checksums |
04e331128e7e0d5c7fb0d4dfbb9dea59a0a40db68817415dd37d62dad633d965
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp310-abi3-musllinux_1_2_aarch64.whl
| Download URL | jsonschema_rs-0.58.5-cp310-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 5.6 MB |
| Tags | CPython 3.10 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
d5420ae8e25c957908184f27753f776dd26a2b1422957be6ec2651b81718b486
|
|
BLAKE2b-256 checksum How to use checksums |
5299c4de326119fd12a469aa9e4cabe2443ab728e224623b81b3c074382fecb2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp310-abi3-manylinux_2_28_aarch64.whl
| Download URL | jsonschema_rs-0.58.5-cp310-abi3-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 5.4 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
ce7a136867d1860d3469df5bcd1d360838a825bbc88cd5afa0c8460c705e5d5f
|
|
BLAKE2b-256 checksum How to use checksums |
c8e42b876438e3f1aa678ccc4e8a63de23509d3c2afdcd0614cce3c96a4af705
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | jsonschema_rs-0.58.5-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 5.9 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
edb80eb891298d1ddae33d917910b9fa9f72a6aba578c8b3b5fed268c9bae1f0
|
|
BLAKE2b-256 checksum How to use checksums |
c4ef4118e5d92034c8c558b57885beac4ed400d646ec3c276b54b8f0f6bc8126
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | jsonschema_rs-0.58.5-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 5.7 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
f57d9f4502904ff110bcde55104e30981ff3cf5c64ed8d089fc7b000bb6e9417
|
|
BLAKE2b-256 checksum How to use checksums |
b53aadb0db5c4b622db54972fff623c20a7d2c709abe32f47d53cb9ba71b0173
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp310-abi3-macosx_10_12_x86_64.whl
| Download URL | jsonschema_rs-0.58.5-cp310-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 5.8 MB |
| Tags | CPython 3.10 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
08bb0078a3ad4ff2993aee9c2c937188bb3b1a4779f9e9c0522cc66d3f70b292
|
|
BLAKE2b-256 checksum How to use checksums |
47bd917f5c56327fa951cc1abd9f0c086561575aeacb254c9b0af1ce3a84b5d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jsonschema_rs-0.58.5-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | jsonschema_rs-0.58.5-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 11.0 MB |
| Tags | CPython 3.10 abi3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
259b3902b909bffc42d16bdb4c3e0e73d02ef48f3840757d9b325fd71cb0fa53
|
|
BLAKE2b-256 checksum How to use checksums |
fbec79061b71673bdd9e0cc23599d0757617b800b1da2273ebe245a6f44aafb7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|