v4.9.0
------
* ``pkgutil.resolve_name`` is now used to retrieve validators
provided on the command line. This function is only available on
3.9+, so 3.7 and 3.8 (which are still supported) now rely on the
`pkgutil_resolve_name `_
backport package. Note however that the CLI itself is due
to be deprecated shortly in favor of `check-jsonschema
`_.
v4.8.0
------
* ``best_match`` no longer traverses into ``anyOf`` and ``oneOf`` when all of
the errors within them seem equally applicable. This should lead to clearer
error messages in some cases where no branches were matched.
v4.7.2
------
* Also have ``best_match`` handle cases where the ``type`` validator is an
array.
v4.7.1
------
* Minor tweak of the PyPI hyperlink names
v4.7.0
------
* Enhance ``best_match`` to prefer errors from branches of the schema which
match the instance's type (#728)
v4.6.2
------
* Fix a number of minor typos in docstrings, mostly private ones (#969)
v4.6.1
------
* Gut the (incomplete) implementation of ``recursiveRef`` on draft 2019. It
needs completing, but for now can lead to recursion errors (e.g. #847).
v4.6.0
------
* Fix ``unevaluatedProperties`` and ``unevaluatedItems`` for types they should
ignore (#949)
* ``jsonschema`` now uses `hatch `_ for its build
process. This should be completely transparent to end-users (and only matters
to contributors).
v4.5.1
------
* Revert changes to ``$dynamicRef`` which caused a performance regression
in v4.5.0
v4.5.0
------
* Validator classes for each version now maintain references to the correct
corresponding format checker (#905)
* Development has moved to a `GitHub organization
`_.
No functional behavior changes are expected from the change.
v4.4.0
------
* Add ``mypy`` support (#892)
* Add support for Python 3.11
v4.3.3
------
* Properly report deprecation warnings at the right stack level (#899)
v4.3.2
------
* Additional performance improvements for resolving refs (#896)
v4.3.1
------
* Resolving refs has had performance improvements (#893)
v4.3.0
------
* Fix undesired fallback to brute force container uniqueness check on
certain input types (#893)
* Implement a PEP544 Protocol for validator classes (#890)
v4.2.1
------
* Pin ``importlib.resources`` from below (#877)
v4.2.0
------
* Use ``importlib.resources`` to load schemas (#873)
* Ensure all elements of arrays are verified for uniqueness by ``uniqueItems``
(#866)
v4.1.2
------
* Fix ``dependentSchemas`` to properly consider non-object instances to be
valid (#850)
v4.1.1
------
* Fix ``prefixItems`` not indicating which item was invalid within the instance
path (#862)
v4.1.0
------
* Add Python 3.10 to the list of supported Python versions
v4.0.1
------
* Fix the declaration of minimum supported Python version (#846)
v4.0.0
------
* Partial support for Draft 2020-12 (as well as 2019-09).
Thanks to Thomas Schmidt and Harald Nezbeda.
* ``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.
* The CLI has been improved, and in particular now supports a ``--output``
option (with ``plain`` (default) or ``pretty`` arguments) to control the
output format. Future work may add additional machine-parsable output
formats.
* Code surrounding ``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.
* Validation errors now have a ``json_path`` attribute, describing their
location in JSON path format
* Support for the IP address and domain name formats has been improved
* Support for Python 2 and 3.6 has been dropped, with ``python_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``.
v3.2.0
------
* Added a ``format_nongpl`` setuptools extra, which installs only ``format``
dependencies that are non-GPL (#619).
v3.1.1
------
* Temporarily revert the switch to ``js-regex`` until #611 and #612 are
resolved.
v3.1.0
------
* Regular expressions throughout schemas now respect the ECMA 262 dialect, as
recommended by the specification (#609).
v3.0.2
------
* Fixed a bug where ``0`` and ``False`` were considered equal by
``const`` and ``enum`` (#575).
v3.0.1
------
* Fixed a bug where extending validators did not preserve their notion
of which validator property contains ``$id`` information.
v3.0.0
------
* 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
v2.6.0
------
* 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)
v2.5.0
------
* Improved performance on CPython by adding caching around ref resolution
(#203)
v2.4.0
------
* Added a CLI (#134)
* Added absolute path and absolute schema path to errors (#120)
* Added ``relevance``
* Meta-schemas are now loaded via ``pkgutil``
v2.3.0
------
* 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)
v2.2.0
------
* Compile the host name regex (#127)
* Allow arbitrary objects to be types (#129)
v2.1.0
------
* Support RFC 3339 datetimes in conformance with the spec
* Fixed error paths for additionalItems + items (#122)
* Fixed wording for min / maxProperties (#117)
v2.0.0
------
* Added ``create`` and ``extend`` to ``jsonschema.validators``
* Removed ``ValidatorMixin``
* Fixed array indices ref resolution (#95)
* Fixed unknown scheme defragmenting and handling (#102)
v1.3.0
------
* Better error tracebacks (#83)
* Raise exceptions in ``ErrorTree``\s for keys not in the instance (#92)
* __cause__ (#93)
v1.2.0
------
* More attributes for ValidationError (#86)
* Added ``ValidatorMixin.descend``
* Fixed bad ``RefResolutionError`` message (#82)
v1.1.0
------
* Canonicalize URIs (#70)
* Allow attaching exceptions to ``format`` errors (#77)
v1.0.0
------
* 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``
v0.8.0
------
* Full support for JSON References
* ``validates`` for registering new validators
* Documentation
* Bugfixes
* uniqueItems not so unique (#34)
* Improper any (#47)
v0.7
----
* Partial support for (JSON Pointer) ``$ref``
* Deprecations
* ``Validator`` is replaced by ``Draft3Validator`` with a slightly different
interface
* ``validator(meta_validate=False)``
v0.6
----
* Bugfixes
* Issue #30 - Wrong behavior for the dependencies property validation
* Fixed a miswritten test
v0.5
----
* Bugfixes
* Issue #17 - require path for error objects
* Issue #18 - multiple type validation for non-objects
v0.4
----
* 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
v0.3
----
* 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.