All Versions
Latest Version
Avg Release Cycle
136 days
Latest Release
1095 days ago

Changelog History
Page 2

  • v1.3.2 Changes

    January 31, 2017
  • v1.3.1 Changes

    May 23, 2016
    • ๐Ÿš€ 1.3 was released without updating the changelog. This release fixes that.
  • v1.3 Changes

    May 23, 2016
    • โฌ‡๏ธ Drop Python 2.6 and PyPy3 from the test suite. They are no longer supported. See

    • ๐Ÿ‘ colander.String schema type now supports an optional keyword argument allow_empty which, when True, deserializes an empty string to an empty string. When False (default), an empty string deserializes to colander.null. This allows for a node to be explicitly required, but allow an empty ('') value to be provided.

    • โž• Add separator parameter to colander.Invalid.asdict (for backward compatibility, default is '; '). See

    • ๐Ÿ›  Fixed an issue with SchemaNode.clone where it would fail when cloning an instance of colander.SequenceSchema due to initializing the schema without any children, violating some checks. See

  • v1.2 Changes

    January 18, 2016

    ๐Ÿ”‹ Features

    ๐Ÿ› Bug Fixes

    • SchemaNode will no longer assume the first argument to the constructor is the schema type. This allows it to properly fallback to using the schema_type class attribute on subclasses even when using the imperative API to pass options to the constructor.

    • ๐Ÿ›  Fix a bug in which MappingSchema, SequenceSchema and TupleSchema would always treat the first arg as the schema type. This meant that it would fail if passed only nodes to the constructor despite the default type being implied by the name. It is now possible to do MappingSchema(child1, child2, ...) instead of MappingSchema(Mapping(), child1, child2).

    ๐ŸŒ Translations

  • v1.1 Changes

    January 15, 2016


    • โž• Add explicit support for Python 3.4, Python 3.5 and PyPy3.

    ๐Ÿ”‹ Features

    • Add min_err and max_err arguments to Length, allowing customization of its error messages.

    • โž• Add colander.Any validator: succeeds if at least one of its subvalidators succeeded.

    • ๐Ÿ‘ Allow localization of error messages returned by colander.Invalid.asdict by adding an optional translate callable argument.

    • โž• Add a missing_msg argument to SchemaNode, allowing customization of the error message used when the node is required and missing.

    • โž• Add NoneOf validator which succeeds if the value is none of the choices.

    • โž• Add normalize option to Decimal, stripping the rightmost trailing zeros.

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Fix an issue where the flatten() method produces an invalid name (ex: "answer.0.") for the type Sequence. See

    • ๐Ÿ›  Fixed issue with String not being properly encoded when non-string values were passed into serialize() See #235 <>_

    • title was being overwritten when made a child through defining a schema as a class. See

    ๐ŸŒ Translations

    • โž• Added new translations: el

    • โšก๏ธ Updated translations: fr, de, ja

  • v1.0 Changes

    November 26, 2014

    Backwards Incompatibilities

    ๐Ÿ› Bug Fixes

    ๐ŸŒ Translations

    • โšก๏ธ Updated translations: fr, de, ja
  • v1.0.b1 Changes

    September 01, 2013

    ๐Ÿ› Bug Fixes

    • ๐Ÿ”€ In 1.0a1, there was a change merged from which made it possible to supply None as the default value for a String type, and upon serialization, the value would be rendered as colander.null if the default were used. This confused people who were actually supplying the value None as a default when the associated appstruct had no value, so the change has been reverted. When you supply None as the default argument to a String, the rendered serialize() value will again be 'None'. Sorry.

    • Normalize colander.Function argument message to be msg. This now matches other APIs within Colander. The message argument is now deprecated and a warning will be emitted.

    • Convert ValueError (raised by datetime) into ParseErrorr in parse_date, so that the validation machinery upstream handles it properly.

    • ๐Ÿ“œ Correctly parse datetimes with a timezone of Z even when the default_timezone is set. These previously had the default timezone.

    • colander.String schema type now raises colander.Invalid when trying to deserialize a non-string item. See

    ๐Ÿ”‹ Features

    • โž• Add colander.List type, modeled on deform.List: this type preserves ordering, and allows duplicates.

    • 0๏ธโƒฃ It is now possible to use the value colander.drop as the default value for items that are subitems of a mapping. If colander.drop is used as the default for a subnode of a mapping schema, and the mapping appstruct being serialized does not have a value for that schema node, the value will be omitted from the serialized mapping. For instance, the following script, when run would not raise an assertion error::

      class What(colander.MappingSchema): thing = colander.SchemaNode(colander.String(), default=colander.drop)

      result = What().serialize({}) # no "thing" in mapping assert result == {}

    • The typ of a SchemaNode can optionally be pased in as a keyword argument. See

    • ๐Ÿ‘ Allow interpolation of missing_msg with properties title and name

  • v1.0.a5 Changes

    May 31, 2013
  • v1.0.a4 Changes

    May 21, 2013
    • Loosen Email validator regex (permit apostrophes, bang, etc in localpart).

    • ๐Ÿ‘ Allow for timezone info objects to be pickled and unpickled "more correctly" (Use 'getinitargs' to provide unpickling-only defaults). See

  • v1.0.a3 Changes

    May 16, 2013

    ๐Ÿ”‹ Features

    • ๐Ÿ‘Œ Support spec-mandated truncations of ISO-8601 timezones.

    • ๐Ÿ‘Œ Support spec-mandated truncations of ISO-8601 datetimes.

    • ๐Ÿ‘ Allow specifying custom representations of values for boolean fields.

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Ensure that colander.iso8601.FixedOffset instances can be unpickled.

    • Avoid validating strings as sequences under Py3k.

    • ๐Ÿ“š Sync documentation with 0.9.9 change to use insert_before rather than schema_order. See