Fixes:
- 522 Fix regression with ALLOW_EXTRA and
Any
validator
Fixes:
- 515 Fix
Remove
not removing keys that do not validate - 516 Improve validator typing to allow non-number formats for min and max
- 517 Remove
Maybe
validator typing - 518 Use typing.Container for
In
validator - 519 Don't enforce type for unused description attribute
- 521 Type schema attribute as
Any
Fixes:
Changes:
- #514: Remove python 3.8 support
New:
- #507: docs: document description field of Marker
Fixes:
- #506: fix: allow unsortable containers in In and NotIn validators (fixes #451) (bug introduced in 0.12.1)
- #488: fix(typing): fix type hint for Coerce type param (bug introduced in 0.14.0)
- #497: fix(typing): allow path to be a list of strings, integers or any other hashables (bug introduced in 0.14.0)
Changes:
- #499: support: drop support for python 3.7
- #501: support: run tests on python 3.11
- #502: support: run tests on python 3.12
- #495: refactor: drop duplicated type checks in Schema._compile
- #500: refactor: fix few tests, use pytest.raises, extend raises helper
- #503: refactor: Add linters configuration, reformat whole code
Changes:
- #487: Add pytest.ini and tox.ini to sdist
- #494: Add
python_requires
so package installers know requirement is >= 3.7
Fixes:
New:
- #475: Add typing information
- #478: Fix new type hint of schemas, for example for
Required('key')
- #486: Fix new type hints and enable
mypy
- #479: Allow error reporting on keys
Changes:
Fixes:
New:
- #457: Enable github actions
- #462: Convert codebase to adhere to
flake8
W504 (PEP 8) - #459: Enable
flake8
in github actions - #464:
pytest
migration + enable Python 3.10
Changes:
- #450: Display valid
Enum
values inCoerce
Fixes:
Changes:
- #435: Extended a few tests (
Required
andIn
) - #425: Improve error message for
In
andNotIn
- #436: Add sorted() for
In
andNotIn
+ fix tests - #437: Grouped
Maybe
tests plus added anotherRange
test - #438: Extend tests for
Schema
with empty list or dict
New:
- #433: Add Python 3.9 support
Fixes:
- #431: Fixed typos + made spelling more consistent
- #411: Ensure
Maybe
propagates error information - #434: Remove value enumeration when validating empty list
Changes:
- n/a
New:
- #368: Allow a discriminant field in validators
Fixes:
- #420: Fixed issue with 'required' not being set properly and added test
- #414: Handle incomparable values in Range
- #427: Added additional tests for Range, Clamp and Length + catch TypeError exceptions
Changes:
- #378: Allow
extend()
of aSchema
to return a subclass of aSchema
as well.
New:
- #364: Accept
description
forInclusive
instances. - #373: Accept
msg
forMaybe
instances. - #382: Added support for default values in
Inclusive
instances.
Fixes:
- #371: Fixed
DeprecationWarning
related tocollections.Mapping
. - #377: Preserve Unicode strings when passed to utility functions (e.g.,
Lower()
,Upper()
). - #380: Fixed regression with
Any
andrequired
flag.
- Fixed issue with opening README file in
setup.py
.
- Removed use of
pypandoc
as Markdown is now supported bysetup()
.
Changes:
New:
- #342: Add support for sets and frozensets.
Fixes:
- #332: Fix Python 3.x compatibility for setup.py when
pypandoc
is installed. - #348: Include path in
AnyInvalid
errors. - #351: Fix
Date
behaviour when a custom format is specified.
Changes:
- #293: Support Python 3.6.
- #294: Drop support for Python 2.6, 3.1 and 3.2.
- #318: Allow to use nested schema and allow any validator to be compiled.
- #324: Default values MUST now pass validation just as any regular value. This is a backward incompatible change if a schema uses default values that don't pass validation against the specified schema.
- #328:
Modify
__lt__
in Marker class to allow comparison with non Marker objects, such as str and int.
New:
- #307: Add description field to
Marker
instances. - #311: Add
Schema.infer
method for basic schema inference. - #314: Add
SomeOf
validator.
Fixes:
- #279: Treat Python 2 old-style classes like types when validating.
- #280: Make
IsDir()
,IsFile()
andPathExists()
consistent between different Python versions. - #290: Use absolute imports to avoid import conflicts.
- #291: Fix
Coerce
validator to catchdecimal.InvalidOperation
. - #298: Make
Schema([])
usage consistent withSchema({})
. - #303: Allow partial validation when using validate decorator.
- #316: Make
Schema.__eq__
deterministic. - #319: Replace implementation of
Maybe(s)
withAny(None, s)
to allow it to be compiled.
- #278: Unicode translation to python 2 issue fixed.
Changes:
- #195:
Range
raisesRangeInvalid
when testingmath.nan
. - #215:
{}
and[]
now always evaluate as is, instead of as any dict or any list. To specify a free-form list, uselist
instead of[]
. To specify a free-form dict, usedict
instead ofSchema({}, extra=ALLOW_EXTRA)
. - #224: Change the encoding of keys in error messages from Unicode to UTF-8.
New:
- #185: Add argument validation decorator.
- #199:
Add
Unordered
. - #200:
Add
Equal
. - #207:
Add
Number
. - #210:
Add
Schema
equality check. - #212:
Add
coveralls
. - #227:
Improve
Marker
management inSchema
. - #232:
Add
Maybe
. - #234:
Add
Date
. - #236, #237, and #238:
Add script for updating
gh-pages
. - #256:
Add support for
OrderedDict
validation. - #258:
Add
Contains
.
Fixes:
- #197:
ExactSequence
checks sequences are the same length. - #201: Empty lists are evaluated as is.
- #205:
Filepath validators correctly handle
None
. - #206:
Handle non-subscriptable types in
humanize_error
. - #231:
Validate
namedtuple
as atuple
. - #235: Update docstring.
- #249: Update documentation.
- #262: Fix a performance issue of exponential complexity where all of the dict keys were matched against all keys in the schema. This resulted in O(n*m) complexity where n is the number of keys in the dict being validated and m is the number of keys in the schema. The fix ensures that each key in the dict is matched against the relevant schema keys only. It now works in O(n).
- #266: Remove setuptools as a dependency.
Changelog not kept for 0.9.3 and earlier releases.