attrs v19.2.0 Release Notes

Release Date: 2019-10-01 // about 3 years ago
  • Backward-incompatible Changes

    • โœ‚ Removed deprecated Attribute attribute convert per scheduled removal on 2019/1. This planned deprecation is tracked in issue #307 <>. #504 <>
    • __lt__, __le__, __gt__, and __ge__ do not consider subclasses comparable anymore.

    This has been deprecated since 18.2.0 and was raising a DeprecationWarning for over a year. #570 <>_

    ๐Ÿ—„ Deprecations ^

    • ๐Ÿ—„ The cmp argument to attr.s() and attr.ib() is now deprecated.

    Please use eq to add equality methods (__eq__ and __ne__) and order to add ordering methods (__lt__, __le__, __gt__, and __ge__) instead โ€“ just like with dataclasses <>_.

    Both are effectively True by default but it's enough to set eq=False to disable both at once. Passing eq=False, order=True explicitly will raise a ValueError though.

    Since this is arguably a deeper backward-compatibility break, it will have an extended deprecation period until 2021-06-01. After that day, the cmp argument will be removed.

    attr.Attribute also isn't orderable anymore. #574 <>_

    ๐Ÿ”„ Changes ^

    • Updated attr.validators.__all__ to include new validators added in #425. #517 <>
    • Slotted classes now use a pure Python mechanism to rewrite the __class__ cell when rebuilding the class, so super() works even on environments where ctypes is not installed. #522 <>_
    • 0๏ธโƒฃ When collecting attributes using @attr.s(auto_attribs=True), attributes with a default of None are now deleted too. #523 <>, #556 <>
    • Fixed attr.validators.deep_iterable() and attr.validators.deep_mapping() type stubs. #533 <>_
    • ๐Ÿ‘ป attr.validators.is_callable() validator now raises an exception attr.exceptions.NotCallableError, a subclass of TypeError, informing the received value. #536 <>_
    • ๐Ÿ“š @attr.s(auto_exc=True) now generates classes that are hashable by ID, as the documentation always claimed it would. #543 <>, #563 <>
    • โž• Added attr.validators.matches_re() that checks string attributes whether they match a regular expression. #552 <>_
    • Keyword-only attributes (kw_only=True) and attributes that are excluded from the attrs's __init__ (init=False) now can appear before mandatory attributes. #559 <>_
    • The fake filename for generated methods is now more stable. It won't change when you restart the process. #560 <>_
    • The value passed to @attr.ib(repr=โ€ฆ) can now be either a boolean (as before) or a callable. That callable must return a string and is then used for formatting the attribute by the generated __repr__() method. #568 <>_
    • ๐Ÿ”– Added attr.__version_info__ that can be used to reliably check the version of attrs and write forward- and backward-compatible code. Please check out the section on deprecated APIs <>_ on how to use it. #580 <>_

    .. _#425: