Mine is a quick hack to add 'gi_in_finally' property to generators and see how good/bad it is.
I feel it's a code smell if you need to use this feature a lot. If you need it rarely, well, use one of the existing work-arounds. But the feature isn't going to be used by users directly. It will be used only in scheduler implementations. Users will just write 'finally' blocks and they will work as expected. This just makes coroutines look and behave more like ordinary functions. Isn't it one of our goals--to make it convenient and reliable?
I'm agree with the intent, but I'm more worried about the broadness of this approach. What happens in this case? try: try: yield some_op() finally: yield cleanup_that_raises_network_error() except NetworkError: # will we ever see this? Basically, I don't think we can handle the "don't raise" cases entirely automatically, though I'd like to be able to. Cheers, Steve