On 07/10/12 07:10, Serhiy Storchaka wrote:
As StopIteration now have value, this value is lost when using functions which works with iterators/generators (map, filter, itertools). Therefore, wrapping the iterator, which preserved its semantics in versions before 3.3, no longer preserves it: [...] Perhaps it would be worth to propagate original exception (or at least it's value) in functions for which it makes sense.
A concrete example would be useful for those who don't know about the (new?) StopIteration.value attribute. I think you are referring to this: py> def myiter(): ... yield 1 ... raise StopIteration("spam") ... py> it = map(lambda x:x, myiter()) py> next(it) 1 py> next(it) Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration The argument given to StopIteration is eaten by map. But this is not *new* to 3.3, it goes back to at least 2.4, so I'm not sure if you are talking about this or something different. -- Steven