History¶
1.1.0 (2020-10-29)¶
Python 2, 3.5 and 3.6 support removal. If you need it, use a version below 1.1.0.
Python 3.9 support, including support for built-in generic types (
list[int]
vstyping.List[int]
).cattrs
now includes functions to generate specialized structuring and unstructuring hooks. Specialized hooks are faster and support overrides (omit_if_default
andrename
). See thecattr.gen
module.cattrs
now includes a converter variant,cattr.GenConverter
, that automatically generates specialized hooks for attrs classes. This converter will become the default in the future.Generating specialized structuring hooks now invokes attr.resolve_types on a class if the class makes use of the new PEP 563 annotations.
cattrs
now depends onattrs
>= 20.1.0, because ofattr.resolve_types
.Specialized hooks now support generic classes. The default converter will generate and use a specialized hook upon encountering a generic class.
1.0.0 (2019-12-27)¶
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 newConverter
::.. code-block:: python>>> 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.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:.. code-block:: python@attr.sclass A:a: Optional[int] = attr.ib()>>> cattr.structure({}, A)
cattr.typed
removed since the functionality is now present inattrs
itself. Replace instances ofcattr.typed(type)
withattr.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
tocattr.vendor.typing
to support different vendored versions of typing.py for Python 2 and Python 3.Type metadata can be added to
attrs
classes usingcattr.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
andcattr.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.