enumerate currently does not work -- and it does not work because generators (which enumerate, implemented at app level, uses) don't behave correctly when a StopIteration is raised -- they propagate it (propagate the OperationError, at interpreter level) rather than turning it into a "clean return from the generator" (a SGeneratorReturn, at interpreter level). I easily fixed it for a simple "raise StopIteration" in the generator itself, and committed that change (as well as the unit-test showing the bug existed), but I'm not sure where to edit to fix it when the StopIteration is being PROPAGATED from a call to something.next() in the generator, which is what enumerate needs. I haven't checked in a unit test showing the problem, but, basically, the issue is something like: def agen(): it = iter('ciao') while 1: yield it.next() print list(agen()) in CPython this works fine, but in pypy it currently doesn't (yet). Suggestions, anybody? Alex
participants (2)
-
Alex Martelli
-
Armin Rigo