attrs v20.3.0 Release Notes

Release Date: 2020-11-05 // over 1 year ago
  • Backward-incompatible Changes

    • attr.define(), attr.frozen(), attr.mutable(), and attr.field() remain provisional.

    This release does not change change anything about them and they are already used widely in production though.

    If you wish to use them together with mypy, you can simply drop this plugin <https://gist.github.com/hynek/1e3844d0c99e479e716169034b5fa963#file-attrs_ng_plugin-py>_ into your project.

    Feel free to provide feedback to them in the linked issue #668.

    We will release the attrs namespace once we have the feeling that the APIs have properly settled. #668 <https://github.com/python-attrs/attrs/issues/668>_

    🔄 Changes ^

    • attr.s() now has a field_transformer hook that is called for all Attribute\ s and returns a (modified or updated) list of Attribute instances. attr.asdict() has a value_serializer hook that can change the way values are converted. Both hooks are meant to help with data (de-)serialization workflows. #653 <https://github.com/python-attrs/attrs/issues/653>_
    • kw_only=True now works on Python 2. #700 <https://github.com/python-attrs/attrs/issues/700>_
    • raise from now works on frozen classes on PyPy. #703 <https://github.com/python-attrs/attrs/issues/703>, #712 <https://github.com/python-attrs/attrs/issues/712>
    • attr.asdict() and attr.astuple() now treat frozenset\ s like set\ s with regards to the retain_collection_types argument. #704 <https://github.com/python-attrs/attrs/issues/704>_
    • The type stubs for attr.s() and attr.make_class() are not missing the collect_by_mro argument anymore. #711 <https://github.com/python-attrs/attrs/issues/711>_