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.2.0

Released on April 18 2013.

  • ‘allow_unknown’ option added.

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.

Version 0.0.1

Released on October 16 2012.

First public preview release.