From Newsgroup: comp.lang.python.announce
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: <
https://www.attrs.org/>
------------------------------------------------------------------------ (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
Deprecations
- 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
Changes
- 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). #1084
- 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 attrs.make_class().
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
--- Synchronet 3.20a-Linux NewsLink 1.114