Changelog¶
Here you can see the full list of changes between each Cerberus release.
Version 0.10¶
Not released yet.
- New: ‘excludes’ rule (calve). Addresses #132.
- New: Add testing with Docker (Frank Sachsenheim).
- New: ‘*of’-rules can be extended by concentating another rule (Frank Sachsenheim).
- New: Known, validated definition schemas are cached, thus validation run-time of schemas is reduced (Frank Sachsenheim).
- New: Implemented rules of a Validator-instance are accessible as ‘validation_rules’-property (Frank Sachsenheim).
- New: ‘rename’-rule renames a field to a given string during normalization (Frank Sachsenheim).
- New: ‘rename_handler’-rule that takes an callable that renames unknown fields (Frank Sachsenheim).
- New: ‘Validator.purge_unknown’-property and conditional purging of unknown fields (Frank Sachsenheim).
- New: ‘Validator.trail’-property can be used to determine the relation of the currently validating document to the ‘root_document’ (Frank Sachsenheim).
- Change: The processed root-document of is now available as ‘root_document’- property of the (child-)Validator (Frank Sachsenheim).
- Change: Removed ‘context’-argument from ‘validate’-method as this is set upon the creation of a child-validator (Frank Sachsenheim).
- Change: ‘ValidationError’-exception renamed to ‘DocumentError’ (Frank Sachsenheim).
- Change: Consolidated all schema-related error-messages’ names (Frank Sachsenheim).
- Change: Use a logger for deprecation-warnings if available (Frank Sachsenheim).
- Fix: ‘coerce’-constraints are validated (Frank Sachsenheim).
- Fix: Unknown fields are normalized (Frank Sachsenheim).
- Fix: Dependency on boolean field now works as expected. Addresses #138 (Roman Redkovich)
- Fix: Add missing deprecation-warnings (Frank Sachsenheim).
Version 0.9.1¶
Released on July 7 2015
- Fix: ‘required’ is always evaluated, independent of eventual missing dependencies. This changes the previous behaviour whereas a required field with dependencies would only be reported as missing if all dependencies were met. A missing required field will always be reported. Also see the discussion in https://github.com/nicolaiarocci/eve/pull/665.
Version 0.9¶
Released on June 24 2015. Codename: ‘Mastrolindo’.
- New: ‘oneof’ rule which provides a list of definitions in which only one should validate (C.D. Clark III).
- New: ‘noneof’ rule which provides a list of definitions that should all not validate (C.D. Clark III).
- New: ‘anyof’ rule accepts a list of definitions and checks that one definition validates (C.D. Clark III).
- New: ‘allof’ rule validates if if all definitions validate (C.D. Clark III).
- New: ‘validator.validated’ takes a document as argument and returns a validated document or ‘None’ if validation failed (Frank Sachsenheim).
- New: PyPy support (Frank Sachsenheim).
- New: Type coercion (Brett).
- New: Added ‘propertyschema’ validation rule (Frank Sachsenheim).
- Change: Use ‘str.format’ in error messages so if someone wants to override them does not get an exception if arguments are not passed. Closes #105 (Brett).
- Change: ‘keyschema’ renamed to ‘valueschema’, print a deprecation warning (Frank Sachsenheim).
- Change: ‘type’ can also be a list of types (Frank Sachsenheim).
- Fix: useages of ‘document’ to ‘self.document’ in ‘_validate’ (Frank Sachsenheim).
- Fix: when ‘items’ is applied to a list, field name is used as key for ‘validator.errors’, and offending field indexes are used as keys for field errors ({‘a_list_of_strings’: {1: ‘not a string’}}) ‘type’ can be a list of valid types.
- Fix: Ensure that additional **kwargs of a subclass persist through validation (Frank Sachsenheim).
- Fix: improve failure message when testing against multiple types (Frank Sachsenheim).
- Fix: ignore ‘keyschema’ when not a mapping (Frank Sachsenheim).
- Fix: ignore ‘schema’ when not a sequence (Frank Sachsenheim).
- Fix: allow_unknown can also be set for nested dicts. Closes #75 (Tobias Betz).
- Fix: raise SchemaError when an unallowed ‘type’ is used in conjunction with ‘schema’ rule (Tobias Betz).
- Docs: added section that points out that YAML, JSON, etc. can be used to define schemas (C.D. Clark III).
- Docs: Improve ‘allow_unknown’ documentation (Frank Sachsenheim).
Version 0.8.1¶
Released on Mar 16 2015.
- Fix: dependency on a sub-document field does not work. Closes #64.
- Fix: readonly validation should happen before any other validation. Closes #63.
- Fix: allow_unknown does not apply to sub-dictionaries in a list. Closes #67.
- Fix: two tests being ignored because of name typo.
- Fix: update mode does not ignore required fields in subdocuments. Closes #72.
- Fix: allow_unknown does not respect custom rules. Closes #66.
- Fix: typo in docstrings (Riccardo).
Version 0.8¶
Released on Jan 7 2015.
- ‘dependencies’ also supports dependency values.
- ‘allow_unknown’ can also be set to a validation schema, in which case unknown fields will be validated against it. Closes nicolaiarocci/eve#405.
- New function-based custom validation mode (Luo Peng).
- Fields with empty definitions in schema were reported as non-existent. Now they are considered as valid, whatever their value is (Jaroslav Semančík).
- If dependencies are precised for a ‘required’ field, then the presence of the field is only validated if all dependencies are present (Trong Hieu HA).
- Documentation typo (Nikita Vlaznev #55).
- [CI] Add travis_retry to pip install in case of network issues (Helgi Þormar Þorbjörnsson #49)
Version 0.7.2¶
Released on Jun 19 2014.
- Successfully validate int as float type (Florian Rathgeber).
Version 0.7.1¶
Released on Jun 17 2014.
- Validation schemas are now validated up-front. When you pass a Schema to the Validator it will be validated against the supported ruleset (Paul Weaver). Closes #39.
- Custom validators also have access to a special ‘self.document’ variable that allows validation of a field to happen in context of the rest of the document (Josh Villbrandt).
- Validator options like ‘allow_unknown’ and ‘ignore_none_values’ are now taken into consideration when validating sub-dictionaries. Closes #40.
Version 0.7¶
Released on May 16 2014.
- Python 3.4 is now supported.
- tox support.
- Added ‘dependencies’ validation rule (Lujeni).
- Added ‘keyschema’ validation rule (Florian Rathgeber).
- Added ‘regex’ validation rule. Closes #29.
- Added ‘set’ as a core data type. Closes #31.
- Not-nullable fields are validated independetly of their type definition (Jaroslav Semančík).
- Python trove classifiers added to setup.py. Closes #32.
- ‘min’ and ‘max’ now apply to floats and numbers too. Closes #30.
Version 0.6¶
Released on February 10 2014
- Added ‘number’ data type, which validates against both float and integer values (Brandon Aubie).
- Added support for running tests with py.test
- Fix non-blocking problem introduced with 0.5 (Martin Ortbauer).
- Fix bug when _error() is calld twice for a field (Jaroslav Semančík).
- More precise error message in rule ‘schema’ validation (Jaroslav Semančík).
- Use ‘allowed’ field for integer just like for string (Peter Demin).
Version 0.5¶
Released on December 4 2013
- ‘validator.errors’ now returns a dictionary where keys are document fields and values are lists of validation errors for the field.
- Validator instances are now callable. Instead of validated = validator.validate(document) you can now choose to do ‘validated = validator(document)’ (Eelke Hermens).
Version 0.4.0¶
Released on September 24 2013.
- ‘validate_update’ is deprecated and will be removed with next release. Use ‘validate’ with ‘update=True’ instead. Closes #21.
- Fixed a minor encoding issue which made installing on Windows/Python3 impossible. Closes #19 (Arsh Singh).
- Fix documentation typo (Daniele Pizzolli).
- ‘type’ validation is always performed first (only exception being ‘nullable’). On failure, subsequent rules on the same field are skipped. Closes #18.
Version 0.3.0¶
Released on July 9 2013.
- docstrings now conform to PEP8.
- self.errors returns an empty list if validate() has not been called.
- added validation for the ‘float’ data type.
- ‘nullable’ rule added to allow for null field values to be accepted in validations. This is different than required in that you can actively change a value to None instead of omitting or ignoring it. It is essentially the ignore_none_values, allowing for more fine grained control down to the field level (Kaleb Pomeroy).
Version 0.1.0¶
Released on March 15 2013. Codename: ‘Claw’.
- entering beta phase.
- support for Python 3.
- pep8 and pyflakes fixes (Harro van der Klauw).
- removed superflous typecheck for empty validator (Harro van der Klauw).
- ‘ignore_none_values’ option to ignore None values when type checking (Harro van der Klauw).
- ‘minlenght’ and ‘maxlength’ now apply to lists as well (Harro van der Klauw).
Version 0.0.3¶
Released on January 29 2013
- when a list item fails, its offset is now returned along with the list name.
- ‘transparent_schema_rules’ option added.
- ‘empty’ rule for string fields.
- ‘schema’ rule on lists of arbitrary lenght (Martjin Vermaat).
- ‘allowed’ rule on strings (Martjin Vermaat).
- ‘items’ (dict) is now deprecated. Use the upgraded ‘schema’ rule instead.
- AUTHORS file added to sources.
- CHANGES file added to sources.
Version 0.0.2¶
Released on November 22 2012.
- Added support for addition and validation of custom data types.
- Several documentation improvements.