Augmented arithmetic operations (iadd, etc.) return new Dingus instead of self

Gary Bernhardt avatarGary Bernhardt created an issue

If I say:

d = Dingus()
d += 5

I would expect to see the += (iadd) call logged on d. That's not what happens, though:

>>> d += 5
>>> d.calls

When iadd isn't defined, += calls add and reassigns the local variable. So the d we check the calls for isn't actually the same d:

>>> print d
<Dingus dingus_4297687248>
>>> d += 5
>>> print d
<Dingus dingus_4297687248.__add__>

This is very confusing. += shouldn't modify the Dingus, but should record the call.

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.