NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #54 most downloaded on PyPI
An implementation of JSON Schema validation for Python
Last release 8 months ago
07 Jan 2026
Release timing varies
gaps range from 2 weeks to 11 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
15 years old
109 releases · first in 2012
Add version constraint to importlib_resources by @sevein in https://github.com/Julian/jsonschema/pull/877
Full Changelog: https://github.com/Julian/jsonschema/compare/v4.2.0...v4.2.1
Add release note about dropping support for Py 3.6 by @sir-sigurd in https://github.com/Julian/jsonschema/pull/869
Full Changelog: https://github.com/Julian/jsonschema/compare/v4.1.2...v4.2.0
One column per quarter.
Use importlib.resources to load schemas (#873)
Ensure all elements of arrays are verified for uniqueness by uniqueItems (#866)
validators: Fix dependentSchemas when instance is not an object by @robherring in https://github.com/Julian/jsonschema/pull/850
Full Changelog: https://github.com/Julian/jsonschema/compare/v4.1.1...v4.1.2
Fix dependentSchemas to properly consider non-object instances to be valid (#850)
Fix prefixItems index reporting in ValidationError by @jhashkes in https://github.com/Julian/jsonschema/pull/862
Full Changelog: https://github.com/Julian/jsonschema/compare/v4.1.0...v4.1.1
Fix prefixItems not indicating which item was invalid within the instance path (#862)
Full Changelog: https://github.com/Julian/jsonschema/compare/v4.0.1...v4.1.0
Full Changelog: https://github.com/Julian/jsonschema/compare/v4.0.1...v4.1.0
Add Python 3.10 to the list of supported Python versions
Full Changelog: https://github.com/Julian/jsonschema/compare/v4.0.1...v4.1.0a1
Full Changelog: https://github.com/Julian/jsonschema/compare/v4.0.1...v4.1.0a1
Code surrounding DEFAULT_TYPES and the legacy mechanism for specifying types to validators have been removed, as per the deprecation policy. Validator…
False and 0 are now properly considered non-equal even
recursively within a container (#686). As part of this change,
uniqueItems validation may be slower in some cases. Please feel
free to report any significant performance regressions, though in
some cases they may be difficult to address given the specification
requirement.--output
option (with plain (default) or pretty arguments) to control the
output format. Future work may add additional machine-parsable output
formats.DEFAULT_TYPES and the legacy mechanism for
specifying types to validators have been removed, as per the deprecation
policy. Validators should use the TypeChecker object to customize
the set of Python types corresponding to JSON Schema types.json_path attribute, describing their
location in JSON path formatpython_requires properly
set.multipleOf could overflow when given sufficiently large numbers. Now,
when an overflow occurs, jsonschema will fall back to using fraction
division (#746).jsonschema.__version__, jsonschema.validators.validators,
jsonschema.validators.meta_schemas and
jsonschema.RefResolver.in_scope have been deprecated, as has
passing a second-argument schema to Validator.iter_errors and
Validator.is_valid.This patch release fixes an issue with the way python_requires was declared (i.e. with how the supported Python versions were declared).
Fix the declaration of minimum supported Python version (#846)
Code surrounding DEFAULT_TYPES and the legacy mechanism for specifying types to validators have been removed, as per the deprecation policy. Validator…
False and 0 are now properly considered non-equal even
recursively within a container (#686). As part of this change,
uniqueItems validation may be slower in some cases. Please feel
free to report any significant performance regressions, though in
some cases they may be difficult to address given the specification
requirement.--output
option (with plain (default) or pretty arguments) to control the
output format. Future work may add additional machine-parsable output
formats.DEFAULT_TYPES and the legacy mechanism for
specifying types to validators have been removed, as per the deprecation
policy. Validators should use the TypeChecker object to customize
the set of Python types corresponding to JSON Schema types.json_path attribute, describing their
location in JSON path formatpython_requires properly
set.multipleOf could overflow when given sufficiently large numbers. Now,
when an overflow occurs, jsonschema will fall back to using fraction
division (#746).jsonschema.__version__, jsonschema.validators.validators,
jsonschema.validators.meta_schemas and
jsonschema.RefResolver.in_scope have been deprecated, as has
passing a second-argument schema to Validator.iter_errors and
Validator.is_valid.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Added a format_nongpl setuptools extra, which installs only format dependencies that are non-GPL (#619).
Added a format_nongpl setuptools extra, which installs only format dependencies that are non-GPL (#619).
Temporarily revert the switch to js-regex until #611 and #612 are resolved.
Temporarily revert the switch to js-regex until #611 and #612 are resolved.
Regular expressions throughout schemas now respect the ECMA 262 dialect, as recommended by the specification (#609).
Regular expressions throughout schemas now respect the ECMA 262 dialect, as recommended by the specification (#609).
Fixed a bug where 0 and False were considered equal by const and enum (#575).
Fixed a bug where 0 and False were considered equal by const and enum (#575).
Fixed a bug where extending validators did not preserve their notion of which validator property contains $id information.
Fixed a bug where extending validators did not preserve their notion of which validator property contains $id information.
Support for Draft 6 and Draft 7
Support for Draft 6 and Draft 7
Draft 7 is now the default
New TypeChecker object for more complex type definitions (and overrides)
Falling back to isodate for the date-time format checker is no longer attempted, in accordance with the specification
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Support for Python 2.6 has been dropped.
Support for Python 2.6 has been dropped.
Improve a few error messages for uniqueItems (#224) and additionalProperties (#317)
Fixed an issue with ErrorTree's handling of multiple errors (#288)
Nothing published for this version
Improved performance on CPython by adding caching around ref resolution
Improved performance on CPython by adding caching around ref resolution (#203)
Added absolute path and absolute schema path to errors
Added a CLI (#134)
Added absolute path and absolute schema path to errors (#120)
Added relevance
Meta-schemas are now loaded via pkgutil
Added by_relevance and best_match
Added by_relevance and best_match (#91)
Fixed format to allow adding formats for non-strings (#125)
Fixed the uri format to reject URI references (#131)
Allow arbitrary objects to be types
Compile the host name regex (#127)
Allow arbitrary objects to be types (#129)
Support RFC 3339 datetimes in conformance with the spec
Support RFC 3339 datetimes in conformance with the spec
Fixed error paths for additionalItems + items (#122)
Fixed wording for min / maxProperties (#117)
Added create and extend to jsonschema.validators
Added create and extend to jsonschema.validators
Removed ValidatorMixin
Fixed array indices ref resolution (#95)
Fixed unknown scheme defragmenting and handling (#102)
Raise exceptions in ErrorTree\s for keys not in the instance
Better error tracebacks (#83)
Raise exceptions in ErrorTrees for keys not in the instance (#92)
__cause__ (#93)
More attributes for ValidationError
More attributes for ValidationError (#86)
Added ValidatorMixin.descend
Fixed bad RefResolutionError message (#82)
Allow attaching exceptions to format errors
Canonicalize URIs (#70)
Allow attaching exceptions to format errors (#77)
Fixed a number of issues with $ref support
Support for Draft 4
Support for format
Longs are ints too!
Fixed a number of issues with $ref support (#66)
Draft4Validator is now the default
ValidationError.path is now in sequential order
Added ValidatorMixin
Full support for JSON References
Full support for JSON References
validates for registering new validators
Documentation
Bugfixes
uniqueItems not so unique (#34)
Improper any (#47)
Partial support for (JSON Pointer) $ref
Partial support for (JSON Pointer) $ref
Deprecations
Validator is replaced by Draft3Validator with a slightly different interface
validator(meta_validate=False)
Issue #30 - Wrong behavior for the dependencies property validation
Bugfixes
Issue #30 - Wrong behavior for the dependencies property validation
Fixed a miswritten test
Issue #17 - require path for error objects
Bugfixes
Issue #17 - require path for error objects
Issue #18 - multiple type validation for non-objects
In order to make this happen (and also to clean things up a bit), a number of deprecations are necessary:
Preliminary support for programmatic access to error details (Issue #5). There are certainly some corner cases that don't do the right thing yet, but this works mostly.
In order to make this happen (and also to clean things up a bit), a number of deprecations are necessary:
stop_on_error is deprecated in Validator.__init__. Use Validator.iter_errors() instead.
number_types and string_types are deprecated there as well. Use types={"number" : ..., "string" : ...} instead.
meta_validate is also deprecated, and instead is now accepted as an argument to validate, iter_errors and is_valid.
A bugfix or two
Default for unknown types and properties is now to *not* error (consistent with the schema).
Default for unknown types and properties is now to not error (consistent with the schema).
Python 3 support
Removed dependency on SecureTypes now that the hash bug has been resolved.
"Numerous bug fixes" -- most notably, a divisibleBy error for floats and a bunch of missing typechecks for irrelevant properties.
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →