Cursing int __iter__ silently fails.
>>> def int_iter(self):
i = 0
while i < self:
yield i
i += 1
>>> curse(int, '__iter__', int_iter)
>>> for i in 12:
print('1231')
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
for i in 12:
TypeError: 'int' object is not iterable
Not sure if this is a bug or just unimplemented. Maybe raising a NotImplementedError exception would be helpful if it's the latter.
Thanks for reporting! That's a good one! The handling of dunder methods was introduced quite recently (https://github.com/clarete/forbiddenfruit/pull/24) and it didn't include the __iter__ protocol. Let me know if you have any interest in suggesting a fix, I can walk you through the code! I think that'd be the fastest way to get these changes in!
@clarete Is anything required for implementing __repr__, __hash__, __call__, __iter__, __next__, or other missing dunder methods than adding them to PyTypeObject._fields_ and override_dict?