Iā€™m happy to announce a new release of attrs!

attrs is the direct ancestor of ā€“ and the inspiration for ā€“ dataclasses in the 
standard library and remains the more powerful toolkit for creating regular 
classes without getting bogged down with writing repetitive boilerplate code: 


(alternatively, see <https://github.com/python-attrs/attrs/releases/> for a 
richer-formatted version of the following)

Backwards-incompatible Changes

-   Python 3.6 has been dropped and packaging switched to static package data 
using Hatch. #993


-   The support for zope-interface via the attrs.validators.provides validator 
is now deprecated and will be removed in, or after, April 2024.

    The presence of a C-based package in our developement dependencies has 
caused headaches and we're not under the impression it's used a lot.

    Let us know if you're using it and we might publish it as a separate 
package. #1120


-   attrs.filters.exclude() and attrs.filters.include() now support the passing 
of attribute names as strings. #1068

-   attrs.has() and attrs.fields() now handle generic classes correctly. #1079

-   Fix frozen exception classes when raised within e.g. 
contextlib.contextmanager, which mutates their __traceback__ attributes. #1081

-   @frozen now works with type checkers that implement PEP-681 (ex. pyright). 

-   Restored ability to unpickle instances pickled before 22.2.0. #1085

-   attrs.asdict()'s and attrs.astuple()'s type stubs now accept the 
attrs.AttrsInstance protocol. #1090

-   Fix slots class cellvar updating closure in CPython 3.8+ even when __code__ 
introspection is unavailable. #1092

-   attrs.resolve_types() can now pass include_extras to 
typing.get_type_hints() on Python 3.9+, and does so by default. #1099

-   Added instructions for pull request workflow to CONTRIBUTING.md. #1105

-   Added type parameter to attrs.field() function for use with 

    Please note that type checkers ignore type metadata passed into 
make_class(), but it can be useful if you're wrapping attrs. #1107

-   It is now possible for attrs.evolve() (and attr.evolve()) to change fields 
named inst if the instance is passed as a positional argument.

    Passing the instance using the inst keyword argument is now deprecated and 
will be removed in, or after, April 2024. #1117

-   attrs.validators.optional() now also accepts a tuple of validators (in 
addition to lists of validators). #1122

Python-announce-list mailing list -- python-announce-list@python.org
To unsubscribe send an email to python-announce-list-le...@python.org
Member address: arch...@mail-archive.com

Reply via email to