-
-
Notifications
You must be signed in to change notification settings - Fork 410
Open
Labels
Description
attr.assoc appears to have been deprecated in #169 and is now scheduled for removal in favor of attr.evolve, but the latter appears to not be able to do all that the former can do (and the documentation seems to indicate that this gap is intentional).
Is there then a reason to deprecate the former, it seems like it should stay, or the functionality should go somewhere else? I can think of workarounds to change the way the below works, but want to make sure it's being broken intentionally -- as-is, it does work correctly with attr.assoc.
Sample code:
import attr
@attr.s(init=False)
class F(object):
args = attr.ib()
other = attr.ib()
def __init__(self, *args, **kwargs):
self.args = args
self.other = kwargs.pop("other")
if kwargs:
raise TypeError(kwargs)
def assoc_new_other(self, new):
return attr.assoc(self, other=new)
def evolve_new_other(self, new):
return attr.evolve(self, other=new)
f = F(1, 2, 3, other=12)
for which print f.assoc_new_other(new=13) succeeds (but warns will go away) and f.evolve_new_other(new=13) fails.