attrs v18.2.0 Release Notes
Release Date: 2018-09-01 // over 5 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 <https://github.com/python-attrs/attrs/issues/394>
_๐ Changes ^
attrs
now ships its ownPEP 484 <https://www.python.org/dev/peps/pep-0484/>
_ type hints. Together withmypy <http://mypy-lang.org>
_'sattrs
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 <https://www.attrs.org/en/stable/types.html>
_ about type annotations inattrs
.#238 <https://github.com/python-attrs/attrs/issues/238>
_- Added kw_only arguments to
attr.ib
andattr.s
, and a corresponding kw_only attribute toattr.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 <https://github.com/python-attrs/attrs/issues/281>
,#411 <https://github.com/python-attrs/attrs/issues/411>
- ๐ท The test suite now runs with
hypothesis.HealthCheck.too_slow
disabled to prevent CI breakage on slower computers.#364 <https://github.com/python-attrs/attrs/issues/364>
,#396 <https://github.com/python-attrs/attrs/issues/396>
attr.validators.in_()
now raises aValueError
with a useful message even if the options are a string and the value is not a string.#383 <https://github.com/python-attrs/attrs/issues/383>
_attr.asdict()
now properly handles deeply nested lists and dictionaries.#395 <https://github.com/python-attrs/attrs/issues/395>
_- Added
attr.converters.default_if_none()
that allows to replaceNone
values in attributes. For exampleattr.ib(converter=default_if_none(""))
replacesNone
by empty strings.#400 <https://github.com/python-attrs/attrs/issues/400>
,#414 <https://github.com/python-attrs/attrs/issues/414>
- ๐ Fixed a reference leak where the original class would remain live after being replaced when
slots=True
is set.#407 <https://github.com/python-attrs/attrs/issues/407>
_ - Slotted classes can now be made weakly referenceable by passing
@attr.s(weakref_slot=True)
.#420 <https://github.com/python-attrs/attrs/issues/420>
_ - Added cache_hash option to
@attr.s
which causes the hash code to be computed once and stored on the object.#425 <https://github.com/python-attrs/attrs/issues/425>
_ - Attributes can be named
property
anditemgetter
now.#430 <https://github.com/python-attrs/attrs/issues/430>
_ - It is now possible to override a base class' class variable using only class annotations.
#431 <https://github.com/python-attrs/attrs/issues/431>
_
- ๐ Comparing subclasses using