attrs v19.2.0 Release Notes
Release Date: 2019-10-01 // over 4 years ago-
Backward-incompatible Changes
- โ Removed deprecated
Attribute
attributeconvert
per scheduled removal on 2019/1. This planned deprecation is tracked in issue#307 <https://github.com/python-attrs/attrs/issues/307>
.#504 <https://github.com/python-attrs/attrs/issues/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 <https://github.com/python-attrs/attrs/issues/570>
_๐ Deprecations ^
- ๐ The
cmp
argument toattr.s()
andattr.ib()
is now deprecated.
Please use
eq
to add equality methods (__eq__
and__ne__
) andorder
to add ordering methods (__lt__
,__le__
,__gt__
, and__ge__
) instead โ just like withdataclasses <https://docs.python.org/3/library/dataclasses.html>
_.Both are effectively
True
by default but it's enough to seteq=False
to disable both at once. Passingeq=False, order=True
explicitly will raise aValueError
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 <https://github.com/python-attrs/attrs/issues/574>
_๐ Changes ^
- Updated
attr.validators.__all__
to include new validators added in#425
.#517 <https://github.com/python-attrs/attrs/issues/517>
- Slotted classes now use a pure Python mechanism to rewrite the
__class__
cell when rebuilding the class, sosuper()
works even on environments wherectypes
is not installed.#522 <https://github.com/python-attrs/attrs/issues/522>
_ - 0๏ธโฃ When collecting attributes using
@attr.s(auto_attribs=True)
, attributes with a default ofNone
are now deleted too.#523 <https://github.com/python-attrs/attrs/issues/523>
,#556 <https://github.com/python-attrs/attrs/issues/556>
- Fixed
attr.validators.deep_iterable()
andattr.validators.deep_mapping()
type stubs.#533 <https://github.com/python-attrs/attrs/issues/533>
_ - ๐ป
attr.validators.is_callable()
validator now raises an exceptionattr.exceptions.NotCallableError
, a subclass ofTypeError
, informing the received value.#536 <https://github.com/python-attrs/attrs/issues/536>
_ - ๐
@attr.s(auto_exc=True)
now generates classes that are hashable by ID, as the documentation always claimed it would.#543 <https://github.com/python-attrs/attrs/issues/543>
,#563 <https://github.com/python-attrs/attrs/issues/563>
- โ Added
attr.validators.matches_re()
that checks string attributes whether they match a regular expression.#552 <https://github.com/python-attrs/attrs/issues/552>
_ - Keyword-only attributes (
kw_only=True
) and attributes that are excluded from theattrs
's__init__
(init=False
) now can appear before mandatory attributes.#559 <https://github.com/python-attrs/attrs/issues/559>
_ - The fake filename for generated methods is now more stable.
It won't change when you restart the process.
#560 <https://github.com/python-attrs/attrs/issues/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 <https://github.com/python-attrs/attrs/issues/568>
_ - ๐ Added
attr.__version_info__
that can be used to reliably check the version ofattrs
and write forward- and backward-compatible code. Please check out thesection on deprecated APIs <https://www.attrs.org/en/stable/api.html#deprecated-apis>
_ on how to use it.#580 <https://github.com/python-attrs/attrs/issues/580>
_
.. _
#425
: https://github.com/python-attrs/attrs/issues/425
- โ Removed deprecated