History

1.0.0 (UNRELEASED)

  • attrs classes with private attributes can now be structured by default.

  • Structuring from dictionaries is now more lenient: extra keys are ignored.

  • cattrs has improved type annotations for use with Mypy.

  • Unstructuring sets and frozensets now works properly.

0.9.1 (2019-10-26)

  • Python 3.8 support.

0.9.0 (2018-07-22)

  • Python 3.7 support.

0.8.1 (2018-06-19)

  • The disambiguation function generator now supports unions of attrs classes and NoneType.

0.8.0 (2018-04-14)

  • Distribution fix.

0.7.0 (2018-04-12)

  • Removed the undocumented Converter.unstruct_strat property setter.

  • Removed the ability to set the Converter.structure_attrs instance field. As an alternative, create a new Converter:

>>> converter = cattr.Converter(unstruct_strat=cattr.UnstructureStrategy.AS_TUPLE)
  • Some micro-optimizations were applied; a structure(unstructure(obj)) roundtrip is now up to 2 times faster.

0.6.0 (2017-12-25)

  • Packaging fixes. (#17)

0.5.0 (2017-12-11)

  • structure/unstructure now supports using functions as well as classes for deciding the appropriate function.

  • added Converter.register_structure_hook_func, to register a function instead of a class for determining handler func.

  • added Converter.register_unstructure_hook_func, to register a function instead of a class for determining handler func.

  • vendored typing is no longer needed, nor provided.

  • Attributes with default values can now be structured if they are missing in the input. (#15)

  • Optional attributes can no longer be structured if they are missing in the input.

In other words, this no longer works:

@attr.s
class A:
    a: Optional[int] = attr.ib()

>>> cattr.structure({}, A)
  • cattr.typed removed since the functionality is now present in attrs itself. Replace instances of cattr.typed(type) with attr.ib(type=type).

0.4.0 (2017-07-17)

  • Converter.loads is now Converter.structure, and Converter.dumps is now Converter.unstructure.

  • Python 2.7 is supported.

  • Moved cattr.typing to cattr.vendor.typing to support different vendored versions of typing.py for Python 2 and Python 3.

  • Type metadata can be added to attrs classes using cattr.typed.

0.3.0 (2017-03-18)

  • Python 3.4 is no longer supported.

  • Introduced cattr.typing for use with Python versions 3.5.2 and 3.6.0.

  • Minor changes to work with newer versions of typing.

    • Bare Optionals are not supported any more (use Optional[Any]).

  • Attempting to load unrecognized classes will result in a ValueError, and a helpful message to register a loads hook.

  • Loading attrs classes is now documented.

  • The global converter is now documented.

  • cattr.loads_attrs_fromtuple and cattr.loads_attrs_fromdict are now exposed.

0.2.0 (2016-10-02)

  • Tests and documentation.

0.1.0 (2016-08-13)

  • First release on PyPI.