attrs v18.2.0 Release Notes

Release Date: 2018-09-01 // over 3 years ago
  • ๐Ÿ—„ Deprecations ^

    • ๐Ÿ—„ Comparing subclasses using <, >, <=, and >= is now deprecated. The docs always claimed that instances are only compared if the types are identical, so this is a first step to conform to the docs.

    Equality operators (== and !=) were always strict in this regard. #394 <>_

    ๐Ÿ”„ Changes ^

    • attrs now ships its own PEP 484 <>_ type hints. Together with mypy <>_'s attrs plugin, you've got all you need for writing statically typed code in both Python 2 and 3!

    At that occasion, we've also added narrative docs <>_ about type annotations in attrs. #238 <>_

    • Added kw_only arguments to attr.ib and attr.s, and a corresponding kw_only attribute to attr.Attribute. This change makes it possible to have a generated __init__ with keyword-only arguments on Python 3, relaxing the required ordering of default and non-default valued attributes. #281 <>, #411 <>
    • ๐Ÿ‘ท The test suite now runs with hypothesis.HealthCheck.too_slow disabled to prevent CI breakage on slower computers. #364 <>, #396 <>
    • attr.validators.in_() now raises a ValueError with a useful message even if the options are a string and the value is not a string. #383 <>_
    • attr.asdict() now properly handles deeply nested lists and dictionaries. #395 <>_
    • Added attr.converters.default_if_none() that allows to replace None values in attributes. For example attr.ib(converter=default_if_none("")) replaces None by empty strings. #400 <>, #414 <>
    • ๐Ÿ›  Fixed a reference leak where the original class would remain live after being replaced when slots=True is set. #407 <>_
    • Slotted classes can now be made weakly referenceable by passing @attr.s(weakref_slot=True). #420 <>_
    • Added cache_hash option to @attr.s which causes the hash code to be computed once and stored on the object. #425 <>_
    • Attributes can be named property and itemgetter now. #430 <>_
    • It is now possible to override a base class' class variable using only class annotations. #431 <>_