On Mon, Mar 23, 2009 at 4:24 PM, Greg Ewing <greg.ewing@canterbury.ac.nz> wrote:
We have a decision to make. It appears we can have *one* of the following, but not both:
(1) In non-refcounting implementations, subiterators are finalized promptly when the delegating generator is explicitly closed.
(2) Subiterators are not prematurely finalized when other references to them exist.
Since in the majority of intended use cases the subiterator won't be shared, (1) seems like the more important guarantee to uphold. Does anyone disagree with that?
Guido, what do you think?
Gee, I'm actually glad I waited a while, because the following discussion shows that this is a really hairy issue... I think (1) means propagating GeneratorExit into the subgenerator (and recursively if that's also waiting in a yield-from), while (2) would mean not propagating it, right? I agree that (1) seems to make more sense unless you can think of a use case for (2) -- and it seems from Nick's last post that such a use case would have to be rather horrendously outrageous... -- --Guido van Rossum (home page: http://www.python.org/~guido/)