Hi everyone,

I’m happy to (somewhat belatedly) announce the release of attrs 20.2.0.

attrs is the direct ancestor of dataclasses in the standard library and remains 
the most powerful option for creating regular classes without getting bogged 
down with writing identical boilerplate again and again: https://www.attrs.org/

Heartfelt thanks to my generous sponsors <https://github.com/sponsors/hynek>, 
companies subscribing on Tidelift 
<https://tidelift.com/subscription/pkg/pypi-attrs>, and people who bought me a 
coffee on <https://ko-fi.com/the_hynek>! Support like that makes me merge PRs 
and release software on a Saturday afternoon! <3

---

This release fixes a bunch of bugs in the new APIs and a few regressions that 
were introduced in the HUGE 20.1.0 release (if you’ve missed it, check out the 
announcement here: 
<https://gist.github.com/hynek/1e3844d0c99e479e716169034b5fa963>):

Backward-incompatible Changes

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

    This release fixes a bunch of bugs and ergonomics but they remain
    mostly unchanged.

    If you wish to use them together with mypy, you can simply drop this
    plugin 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

Changes

-   attr.define() et al now correct detect __eq__ and __ne__. #671

-   attr.define() et al's hybrid behavior now also works correctly when
    arguments are passed. #675

-   It's possible to define custom __setattr__ methods on slotted
    classes again. #681

-   In 20.1.0 we introduced the inherited attribute on the
    attr.Attribute class to differentiate attributes that have been
    inherited and those that have been defined directly on the class.

    It has shown to be problematic to involve that attribute when
    comparing instances of attr.Attribute though, because when
    sub-classing, attributes from base classes are suddenly not equal to
    themselves in a super class.

    Therefore the inherited attribute will now be ignored when hashing
    and comparing instances of attr.Attribute. #684

-   zope.interface is now a "soft dependency" when running the test
    suite; if zope.interface is not installed when running the test
    suite, the interface-related tests will be automatically skipped.
    #685

-   The ergonomics of creating frozen classes using @define(frozen=True)
    and sub-classing frozen classes has been improved: you don't have to
    set on_setattr=None anymore. #687

The full changelog can be found at 
<https://www.attrs.org/en/stable/changelog.html>.

Cheers,
—h
_______________________________________________
Python-announce-list mailing list -- python-announce-list@python.org
To unsubscribe send an email to python-announce-list-le...@python.org
https://mail.python.org/mailman3/lists/python-announce-list.python.org/
Member address: arch...@mail-archive.com

Reply via email to