forked from pool/python-attrs
Accepting request 561486 from home:apersaud:branches:devel:languages:python
update to latest version OBS-URL: https://build.opensuse.org/request/show/561486 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-attrs?expand=0&rev=12
This commit is contained in:
@@ -1,3 +1,68 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Jan 3 23:08:32 UTC 2018 - arun@gmx.de
|
||||
|
||||
- specfile:
|
||||
* update copyright year
|
||||
|
||||
- update to version 17.4.0:
|
||||
* Backward-incompatible Changes
|
||||
+ The traversal of MROs when using multiple inheritance was
|
||||
backward:
|
||||
If you defined a class "C" that subclasses "A" and "B" like
|
||||
"C(A, B)", "attrs" would have collected the attributes from "B"
|
||||
*before* those of "A".
|
||||
This is now fixed and means that in classes that employ multiple
|
||||
inheritance, the output of "__repr__" and the order of
|
||||
positional arguments in "__init__" changes.
|
||||
Due to the nature of this bug, a proper deprecation cycle was
|
||||
unfortunately impossible.
|
||||
Generally speaking, it's advisable to prefer "kwargs"-based
|
||||
initialization anyways – *especially* if you employ multiple
|
||||
inheritance and diamond-shaped hierarchies.
|
||||
+ The "__repr__" set by "attrs" no longer produces an
|
||||
"AttributeError" when the instance is missing some of the
|
||||
specified attributes (either through deleting or after using
|
||||
"init=False" on some attributes).
|
||||
This can break code that relied on "repr(attr_cls_instance)"
|
||||
raising "AttributeError" to check if any attr-specified members
|
||||
were unset.
|
||||
If you were using this, you can implement a custom method for
|
||||
checking this::
|
||||
|
||||
def has_unset_members(self):
|
||||
for field in attr.fields(type(self)):
|
||||
try:
|
||||
getattr(self, field.name)
|
||||
except AttributeError:
|
||||
return True
|
||||
return False
|
||||
* Deprecations
|
||||
+ The "attr.ib(convert=callable)" option is now deprecated in
|
||||
favor of "attr.ib(converter=callable)".
|
||||
This is done to achieve consistency with other noun-based
|
||||
arguments like *validator*. *convert* will keep working until
|
||||
at least January 2019 while raising a "DeprecationWarning".
|
||||
|
||||
* Changes
|
||||
+ Generated "__hash__" methods now hash the class type along with
|
||||
the attribute values. Until now the hashes of two classes with
|
||||
the same values were identical which was a bug.
|
||||
The generated method is also *much* faster now.
|
||||
+ "attr.ib"’s "metadata" argument now defaults to a unique empty
|
||||
"dict" instance instead of sharing a common empty "dict" for
|
||||
all. The singleton empty "dict" is still enforced.
|
||||
+ "ctypes" is optional now however if it's missing, a bare
|
||||
"super()" will not work in slots classes. This should only
|
||||
happen in special environments like Google App Engine.
|
||||
+ The attribute redefinition feature introduced in 17.3.0 now
|
||||
takes into account if an attribute is redefined via multiple
|
||||
inheritance. In that case, the definition that is closer to the
|
||||
base of the class hierarchy wins.
|
||||
+ Subclasses of "auto_attribs=True" can be empty now.
|
||||
+ Equality tests are *much* faster now.
|
||||
+ All generated methods now have correct "__module__", "__name__",
|
||||
and (on Python 3) "__qualname__" attributes.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Dec 21 16:10:47 UTC 2017 - jmatejek@suse.com
|
||||
|
||||
|
||||
Reference in New Issue
Block a user