Subject: CVS commit: pkgsrc/devel/py-attrs
From: Adam Ciarcinski
Date: 2018-01-01 22:08:46
Message id: 20180101210846.4248CFB40@cvs.NetBSD.org

Log Message:
py-attrs: updated to 17.4.0

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.

Files:
RevisionActionfile
1.9modifypkgsrc/devel/py-attrs/Makefile
1.4modifypkgsrc/devel/py-attrs/PLIST
1.6modifypkgsrc/devel/py-attrs/distinfo