All Versions
Latest Version
Avg Release Cycle
168 days
Latest Release

Changelog History
Page 1

  • v1.3.4 Changes

    ๐Ÿš€ Released on May 5, 2021.

    ๐Ÿ›  Fixed

    - โช Reverts the unsatisfying fix for `#557`_,
    - instead a ``RuntimeError`` is thrown when Python is running with optimization
      level 2 (`#567`_)
    .. _`#567`:
  • v1.3.3 Changes

    ๐Ÿš€ Released on April 11, 2021.

    ๐Ÿ†• New

    - โž• Adds a benchmark to observe overall performance between code changes (`#531`_)
    - โž• Adds support for Python 3.9
    - The Continuous Integration now runs on GitHub Actions
    ๐Ÿ›  Fixed
    • ๐Ÿ›  Fixed unresolved registry references when getting a constraint for an error (#562_)
    • ๐Ÿ›  Fixed crash when submitting non-hashable values to allowed (#524_)
    • ๐Ÿ›  Fixed schema validation for rules specifications with space (#527_)
    • ๐Ÿ—„ Replaced deprecated rule name validator with check_with in the docs (#527_)
    • ๐Ÿ‘‰ Use the UnconcernedValidator when the Python interpreter is executed with an optimization flag (#557_)
    • ๐Ÿ›  Several fixes and refinements of the docs

    .. _#524: .. _#527: .. _#531: .. _#557: .. _#562:

  • v1.3.2 Changes

    October 29, 2019

    ๐Ÿš€ Released on October 29, 2019.

    ๐Ÿ†• New

    - ๐Ÿ‘Œ Support for Python 3.8
    ๐Ÿ›  Fixed
    • ๐Ÿ›  Fixed the message of the BasicErrorHandler for an invalid amount of items (#505_)
    • โž• Added setuptools as dependency to the package metadata (#499_)
    • ๐Ÿ“ฆ The CHANGES.rst document is properly included in the package (#493_)

    ๐Ÿ‘Œ Improved

    - ๐Ÿ“„ Docs: Examples were added for the ``min``- and ``maxlength`` rules. (`#509`_)
    .. _`#509`:
    .. _`#505`:
    .. _`#499`:
    .. _`#493`:
  • v1.3.1 Changes

    May 10, 2019

    ๐Ÿš€ Releases on May 10, 2019.

    ๐Ÿ›  Fixed

    - ๐Ÿ›  Fixed the expansion of the deprecated rule names ``keyschema`` and
      ``valueschema`` (`#482`_)
    - ``*of_``-typesavers properly expand rule names containing ``_`` (`#484`_)
    ๐Ÿ‘Œ Improved
    • Add maintainer and maintainer_email to (#481_)
    • Add project_urls to (#480_)
    • Don't ignore all exceptions during coercions for nullable fields. If a
    • ๐Ÿ‘ป Coercion raises an exception for a nullable field where the field is not None the validation now fails. (#490_)

    .. _#490: .. _#484: .. _#482: .. _#481: .. _#480:

  • v1.3 Changes

    April 30, 2019

    ๐Ÿš€ Releases on April 30, 2019.

    ๐Ÿ†• New

    - Add ``require_all`` rule and validator argument (`#417`_)
    - The ``contains`` rule (`#358`_)
    - ๐Ÿšš All fields that are defined as ``readonly`` are removed from a document
      when a validator has the ``purge_readonly`` flag set to ``True`` (`#240`_)
    - The ``validator`` rule is renamed to ``check_with``. The old name is
      deprecated and will not be available in the next major release of Cerberus
    - The rules ``keyschema`` and ``valueschema`` are renamed to ``keysrules`` and
      ``valuesrules``; the old names are deprecated and will not be available in
      the next major release of Cerbers (`#385`_)
    - The ``meta`` pseudo-rule can be used to store arbitrary application data
      related to a field in a schema
    - ๐Ÿ‘ Python 3.7 officially supported (`#451`_)
    - ๐Ÿ‘ **Python 2.6 and 3.3 are no longer supported**
    ๐Ÿ›  Fixed
    • 0๏ธโƒฃ Fix test test_{default,default_setter}none_nonnullable (#435)
    • Normalization rules defined within the items rule are applied (#361_)
    • 0๏ธโƒฃ Defaults are applied to undefined fields from an allow_unknown definition (#310_)
    • The forbidden value now handles any input type (#449_)
    • The allowed rule will not be evaluated on fields that have a legit None value (#454_)
    • If the cerberus distribution cannot not be found, the version is set to the value unknown (#472_)

    ๐Ÿ‘Œ Improved

    - ๐Ÿ—„ Suppress DeprecationWarning about (`#451`_)
    - โš   Omit warning when no schema for ``meta`` rule constraint is available
    - โž• Add ``.eggs`` to .gitignore file (`#420`_)
    - ๐Ÿ’… Reformat code to match Black code-style (`#402`_)
    - ๐Ÿ‘• Perform lint checks and fixes on staged files, as a pre-commit hook (`#402`_)
    - ๐Ÿ”„ Change ``allowed`` rule to use containers instead of lists (`#384`_)
    - โœ‚ Remove ``Registry`` from top level namespace (`#354`_)
    - โœ‚ Remove ``utils.is_class``
    - Check the ``empty`` rule against values of type ``Sized``
    - Various micro optimizations and 'safety belts' that were inspired by adding
      type annotations to a branch of the code base
    ๐Ÿ“„ Docs
    - ๐Ÿ›  Fix semantical versioning naming. There are only two hard things in Computer
      Science: cache invalidation and naming things -- *Phil Karlton* (`#429`_)
    - ๐Ÿ‘Œ Improve documentation of the regex rule (`#389`_)
    - Expand upon `validator` rules (`#320`_)
    - ๐Ÿ“„ Include all errors definitions in API docs (`#404`_)
    - ๐Ÿ‘Œ Improve changelog format (`#406`_)
    - ๐Ÿ“‡ Update homepage URL in package metadata (`#382`_)
    - โž• Add feature freeze note to CONTRIBUTING and note on Python support in
    - โž• Add the intent of a ``dataclasses`` module to
    - โšก๏ธ Update README link; make it point to the new PyPI website
    - โšก๏ธ Update README with elaborations on versioning and testing
    - ๐Ÿ›  Fix misspellings and missing pronouns
    - โœ‚ Remove redundant hint from ``*of-rules``.
    - โž• Add usage recommendation regarding the ``*of-rules``
    - โž• Add a few clarifications to the GitHub issue template
    - โšก๏ธ Update README link; make it point to the new PyPI website
    .. _`#472`:
    .. _`#454`:
    .. _`#451`:
    .. _`#449`:
    .. _`#435`:
    .. _`#429`:
    .. _`#425`:
    .. _`#420`:
    .. _`#417`:
    .. _`#406`:
    .. _`#405`:
    .. _`#404`:
    .. _`#402`:
    .. _`#389`:
    .. _`#385`:
    .. _`#384`:
    .. _`#382`:
    .. _`#361`:
    .. _`#358`:
    .. _`#354`:
    .. _`#320`:
    .. _`#310`:
    .. _`#240`:
  • v1.2 Changes

    April 12, 2018

    ๐Ÿš€ Released on April 12, 2018.

    • ๐Ÿ†• New: docs: Add note that normalization cannot be applied within an *of-rule. (Frank Sachsenheim)
    • ๐Ÿ†• New: Add the ability to query for a type of error in an error tree. (Frank Sachsenheim)
    • ๐Ÿ†• New: Add errors.MAPPING_SCHEMA on errors within subdocuments. (Frank Sachsenheim)
    • ๐Ÿ†• New: Support for Types Definitions, which allow quick types check on the fly. (Frank Sachsenheim)

    • ๐Ÿ›  Fix: Simplify the tests with Docker by using a volume for tox environments. (Frank Sachsenheim)

    • ๐Ÿ›  Fix: Schema registries do not work on dict fields. Closes :issue:318. (Frank Sachsenheim)

    • ๐Ÿ›  Fix: Need to drop some rules when empty is allowed. Closes :issue:326. (Frank Sachsenheim)

    • ๐Ÿ›  Fix: typo in README (Christian Hogan)

    • Fix: Make purge_unknown and allow_unknown play nice together. Closes :issue:324. (Audric Schiltknecht)

    • ๐Ÿ›  Fix: API reference lacks generated content. Closes :issue:281. (Frank Sachsenheim)

    • ๐Ÿ›  Fix: readonly works properly just in the first validation. Closes :issue:311. (Frank Sachsenheim)

    • ๐Ÿ›  Fix: coerce ignores nullable: True. Closes :issue:269. (Frank Sachsenheim)

    • ๐Ÿ›  Fix: A dependency is not considered satisfied if it has a null value. Closes :issue:305. (Frank Sachsenheim)

    • Override UnvalidatedSchema.copy. (Peter Demin)

    • ๐Ÿ›  Fix: README link. (Gabriel Wainer)

    • ๐Ÿ›  Fix: Regression: allow_unknown causes dictionary validation to fail with a KeyError. Closes :issue:302. (Frank Sachsenheim)

    • ๐Ÿ›  Fix: Error when setting fields as tuples instead of lists. Closes :issue:271. (Sebastian Rajo)

    • ๐Ÿ›  Fix: Correctly handle nested logic and group errors. Closes :issue:278 and :issue:299. (Kornelijus Survila)

    • โœ… CI: Reactivate testing on PyPy3. (Frank Sachsenheim)

  • v1.1 Changes

    March 07, 2017

    ๐Ÿš€ Released on January 25, 2017.

    • ๐Ÿ†• New: Python 3.6 support. (Frank Sachsenheim)
    • New: Users can implement their own semantics in Validator._lookup_field. (Frank Sachsenheim)
    • ๐Ÿ†• New: Allow applying of empty rule to sequences and mappings. Closes :issue:270. (Frank Sachsenheim)

    • ๐Ÿ›  Fix: Better handling of unicode in allowed rule. Closes :issue:280. (Michael Klich).

    • ๐Ÿ›  Fix: Rules sets with normalization rules fail. Closes :issue:283. (Frank Sachsenheim)

    • Fix: Spelling error in RULE_SCHEMA_SEPARATOR constant (Antoine Lubineau)

    • ๐Ÿ›  Fix: Expand schemas and rules sets when added to a registry. Closes :issue:284 (Frank Sachsenheim)

    • ๐Ÿ›  Fix: readonly conflicts with default rule. Closes :issue:268 (Dominik Kellner).

    • Fix: Creating custom Validator instance with _validator_* method raises SchemaError. Closes :issue:265 (Frank Sachsenheim).

    • ๐Ÿ›  Fix: Consistently use new style classes (Dominik Kellner).

    • ๐Ÿ›  Fix: NotImplemented does not derive from BaseException. (Bryan W. Weber).

    • โœ… Completely switch to py.test. Closes :issue:213 (Frank Sachsenheim).

    • ๐Ÿ‘ Convert self.assert method calls to plain assert calls supported by pytest. Addresses :issue:213 (Bruno Oliveira).

    • ๐Ÿ“„ Docs: Clarifications concerning dependencies and unique rules. (Frank Sachsenheim)

    • ๐Ÿ“„ Docs: Fix custom coerces documentation. Closes :issue:285. (gilbsgilbs)

    • ๐Ÿ“„ Docs: Add note concerning regex flags. Closes :issue:173. (Frank Sachsenheim)

    • ๐Ÿ“„ Docs: Explain that normalization and coercion are performed on a copy of the original document (Sergey Leshchenko)

  • v1.0.1 Changes

    September 01, 2016

    ๐Ÿš€ Released on September 1, 2016.

    • ๐Ÿ›  Fix: bump trove classifier to Production/Stable (5).
  • v1.0 Changes

    ๐Ÿš€ Released on September 1, 2016.

    โš  .. warning::

    This is a major release which breaks backward compatibility in several
    ways. Don't worry, these changes are for the better. However, if you are
    upgrading, then you should really take the time to read the list of
    `Breaking Changes`_ and consider their impact on your codebase. For your
    convenience, some :doc:`upgrade notes <upgrading>` have been included.
    • ๐Ÿ†• New: Add capability to use references in schemas. (Frank Sachsenheim)
    • ๐Ÿ†• New: Support for binary type. (Matthew Ellison)
    • ๐Ÿ†• New: Allow callables for 'default' schema rule. (Dominik Kellner)
    • ๐Ÿ†• New: Support arbitrary types with 'max' and 'min' (Frank Sachsenheim).
    • ๐Ÿ†• New: Support any iterable with 'minlength' and 'maxlength'. Closes :issue:158. (Frank Sachsenheim)
    • ๐Ÿ†• New: 'default' normalization rule. Closes :issue:131. (Damiรกn Nohales)
    • ๐Ÿ†• New: 'excludes' rule (calve). Addresses :issue:132.
    • ๐Ÿ†• New: 'forbidden' rule. (Frank Sachsenheim)
    • ๐Ÿ†• New: 'rename'-rule renames a field to a given value 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: 'coerce', 'rename_handler' and 'validator' can use class-methods (Frank Sachsenheim).
    • ๐Ÿ†• New: '*of'-rules can be extended by concatenating another rule. (Frank Sachsenheim)
    • ๐Ÿ†• New: Allows various error output with error handlers (Frank Sachsenheim).
    • ๐Ÿ†• New: Available rules etc. of a Validator-instance are accessible as 'validation_rules', 'normalization_rules', 'types', 'validators' and 'coercer' -property. (Frank Sachsenheim)
    • ๐Ÿ†• New: Custom rule's method docstrings can contain an expression to validate constraints for that rule when a schema is validated. (Frank Sachsenheim).
    • New: 'Validator.root_schema' complements 'Validator.root_document'. (Frank Sachsenheim)
    • New: 'Validator.document_path' and 'Validator.schema_path' properties can be used to determine the relation of the currently validating document to the 'root_document' / 'root_schema'. (Frank Sachsenheim)
    • ๐Ÿ†• New: Known, validated definition schemas are cached, thus validation run-time of schemas is reduced. (Frank Sachsenheim)
    • ๐Ÿ†• New: Add testing with Docker. (Frank Sachsenheim)
    • ๐Ÿ†• New: Support CPython 3.5. (Frank Sachsenheim)

    • Fix: 'allow_unknown' inside *of rule is ignored. Closes #251. (Davis Kirkendall)

    • ๐Ÿ›  Fix: unexpected TypeError when using allow_unknown in a schema defining a list of dicts. Closes :issue:250. (Davis Kirkendall)

    • ๐Ÿ›  Fix: validate with 'update=True' does not work when required fields are in a list of subdicts. (Jonathan Huot)

    • ๐Ÿ›  Fix: 'number' type fails if value is boolean. Closes :issue:144. (Frank Sachsenheim)

    • ๐Ÿ›  Fix: allow None in 'default' normalization rule. (Damiรกn Nohales)

    • ๐Ÿ›  Fix: in 0.9.2, coerce does not maintain proper nesting on dict fields. Closes :issue:185.

    • ๐Ÿ›  Fix: normalization not working for valueschema and propertyschema. Closes :issue:155. (Frank Sachsenheim)

    • ๐Ÿ›  Fix: 'coerce' on List elements produces unexpected results. Closes :issue:161. (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 :issue:138. (Roman Redkovich)

    • ๐Ÿ›  Fix: Add missing deprecation-warnings. (Frank Sachsenheim)

    • ๐Ÿ“„ Docs: clarify read-only rule. Closes :issue:127.

    • ๐Ÿ“„ Docs: split Usage page into Usage; Validation Rules: Normalization Rules. (Frank Sachsenheim)

    ๐Ÿ’ฅ Breaking Changes

    ๐Ÿš€ Several relevant breaking changes have been introduced with this release. For
    โฌ†๏ธ the inside scoop, please see the :doc:`upgrade notes <upgrading>`.
    - ๐Ÿ”„ Change: 'errors' values are lists containing error messages. Previously, they
      were simple strings if single errors, lists otherwise.
      Closes :issue:`210`. (Frank Sachsenheim)
    - ๐Ÿ”„ Change: Custom validator methods: remove the second argument.
      (Frank Sachsenheim)
    - ๐Ÿ”„ Change: Custom validator methods: invert the logic of the conditional clauses
      where is tested what a value is not / has not. (Frank Sachsenheim)
    - ๐Ÿ”„ Change: Custom validator methods: replace calls to 'self._error' with
      'return True', or False, or None. (Frank Sachsenheim)
    - Change: Remove 'transparent_schema_rule' in favor of docstring schema
      validation. (Frank Sachsenheim)
    - ๐Ÿ”„ Change: Rename 'property_schema' rule to 'keyschema'. (Frank Sachsenheim)
    - โšก๏ธ Change: Replace 'validate_update' method with 'update' keywork argument.
      (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 warnings.warn for deprecation-warnings if available.
      (Frank Sachsenheim)
  • v0.9.2 Changes

    September 23, 2015

    ๐Ÿš€ Released on September 23, 2015

    • ๐Ÿ›  Fix: don't rely on deepcopy since it can't properly handle complex objects in Python 2.6.