v4.10.0 ======= * Add support for referencing schemas with ``$ref`` across different versions of the specification than the referrer's v4.9.1 ====== * Update some documentation examples to use newer validator releases in their sample code. v4.9.0 ====== * Fix relative ``$ref`` resolution when the base URI is a URN or other scheme (#544). * ``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.