I guess while we're at it, I'd like to add the following to the discussion:
6. Add the context manager methods (__enter__ and __exit__) to generators and, by extension, to itertools. This makes it easier to use 'with' to get the clean up ('finally' clauses) done.
On Thu, Sep 4, 2008 at 10:58 AM, Bruce Frederiksen email@example.com wrote:
There are several points here that might or might not be adopted individually.
I propose the following. Each of these is independent of the others, but all related to cleaning up how this works:
- All of the itertools and map (and I've no doubt left some others out
here) be extended to propagate the extra generators methods: close, throw and send.
- That the 'for' loop be extended so that if an exception occurs within
its body, it calls 'throw' on its iterable (if it has a throw method).
- That the 'for' loop be extended to call the 'close' method on its
iterable (if it has a close method) when the loop terminates (either normally, with break, or with an exception).
- That a 'not_closing' builtin function be added that takes an iterable
and shields it from a 'close' call.
- That 'close' and 'throw' be added to all iterables.