Releases: smarie/python-valid8
5.1.2 - Bugfix with custom error formatting
Fixed issue: custom help messages in ValidationError using several variables were not rendering to string correctly and instead were displaying Error while formatting the help message. Fixes #58
See documentation page for details.
5.1.1 - packaging improvements
- packaging improvements: set the "universal wheel" flag to 1, and cleaned up the
setup.py. In particular removed dependency tosixfor setup. Fixes #57
See documentation page for details.
5.1.0 - PEP561 compliance
-
Package was made PEP561 compatible. Fixed #55
-
Improved type hints for decorators so that they do not make the decorated item loose its type hints. Fixed #56
-
Removed usage of
@with_signaturein favour of stub file in theentry_points_annotations.py. Fixed #50
See documentation page for details.
5.0.6 - Minor improvements
Improved getfullargspec so as to cover more builtins in python 3.
See documentation page for details.
5.0.5 - bugfix - support for numpy True
Numpy True can be used (again) as a success condition in validation functions. Fixed #53
See documentation page for details.
5.0.4 - `pyproject.toml`
Added pyproject.toml.
See documentation page for details.
5.0.3 - bug fixes
Fixed bug with mini-lambda < 2.2. Fixed #48.
Fixed bug in is_in when the reference object was a non-set container. Fixed #47.
See documentation page for details.
5.0.2 - Bug fix
Fixed regression with non-able detection. Fixed #46.
See documentation page for details.
5.0.1 - More betterness!
Better syntax for *validation_func:
-
you can provide a
tuple(<callable>, <help_msg>, <failure_type>)to define a single failure raiser (before only(<callable>, <help_msg>)or(<callable>, <failure_type>)were supported). Fixes #33 -
you can provide a
dict-like to define several validation functions, where the key and values can contain<callable>,<help_msg>,<failure_type>. For example{<help_msg>: (<callable>, <failure_type>)}is supported. Fixes #40. -
nested lists are however not supported anymore
-
the
<callable>can now either have signaturef(v),f(*args),f(*args, **ctx)orf(v, **ctx), where**ctxcan be used to receive contextual information. Fixes #39
validation_lib should be imported explicitly
- symbols from
valid8.validation_libare not imported automatically at package root anymore. You need to import them fromvalid8.validation_lib. This speeds up the library's import especially when you do not use the built-in functions. So instead offrom valid8 import is_evenyou should now dofrom valid8.validation_lib import is_even(orfrom valid8 import validation_lib as vlib+vlib.is_even). Fixed #35.
Major exceptions refactoring
-
the main validation function in a
Validatoris now always a failure raiser, even if a single callable was provided. This major design choice made many simplifications possible in particular the string representation of exceptions (below). Fixes #44 -
The string representation of
ValidationErrorandValidationFailurewas greatly improved. In particularValidationErrordoes not display the name and outcome of the validation function anymore (since it is always a failure, see above), andValidationFailurenow has a "compact" string representation option in a newto_str()method, used in composition messages to simplify the result. Composition failures are also represented in a more compact way. -
failure_raisermoved tobasesubmodule with its associated type hintsValidationCallableandValidationCallableOrLambda. It now only accepts a single validation function argument ; this is more intuitive and separates concerns with the other higher-level functions. If you used it with several inputs in the past, you can useand_(...)instead, it will be strictly equivalent to the old behaviour. -
new
@as_failure_raiserdecorator to create a failure raiser by decorating an existing validation function. Fixes #36. -
WrappingFailuredoes not exist anymore, it was merged withFailureclass for architecture simplification. So there are two main exception classes in valid8 now:ValidationErrorandValidationFailure. When the validation callable does not raise an instance ofValidationFailureitself, theInvalidsubclass is used. Fixes #41
Misc
-
assert_subclass_ofnow exposed at root level (for consistency withassert_instance_of, to be used in the context manager entry point) -
Added
__version__attribute to comply with PEP396, following https://smarie.github.io/python-getversion/#package-versioning-best-practices. Fixes #38. -
result_is_successis now inlined and does not use a set expression anymore. Fixed #37 -
Improved all examples of
Failurein the validation lib to show how a better practice where thehelp_msgstays at class level but can be overridden failure instance by failure instance. -
Removed
length_betweenopen_left/rightarguments as it does not make sense, to continue fixing #29 -
new subpackage
utilswhere all util submodules now live -
New submodule
common_syntaxwhere all the logic to handle the*validation_funcinput syntax resides -
some type hints renamed for clarity:
- before:
ValidationFuncs/ValidationFunc/CallableType/Callable - now:
OneOrSeveralVFDefinitions/ValidationFuncDefinition/ValidationCallableOrLamba/ValidationCallable. ValidationFuncsstill exists as a short alias forOneOrSeveralVFDefinitions.
- before:
-
fixed a few type hints too: tuples with unlimited length were not declared correctly. Now using the ellipsis
Tuple[<type>, ...].
See documentation page for details.
4.2.1 - Minor error message fix
Error messages improvements: removed the brackets in Wrong value: [...] for the Failure details. Fixed #32.
See documentation page for details.