On 4/2/06, Delaney, Timothy (Tim) <[EMAIL PROTECTED]> wrote: > Given: > > @contextmanager > def gen(): > print '__enter__' > yield > print '__exit__' > > with gen(): > raise StopIteration('body') > > I would expect to get the StopIteration exception raised. Instead it's > suppressed by the @contextmanager decorator.
Right. I'm not sure how to fix this (but I think Phillip probably can). > I think we should only suppress the exception if it's *not* the > exception passed into gen.throw() i.e. it's raised by the generator. > Does this sound like the correct behaviour? I've attached tests and a > fix implementing this to the bug report. Cool. > I can't confirm right now (at work, need to install 2.5) but I'm also > wondering what will happen if KeyboardInterrupt or SystemExit is raised > from inside the generator when it's being closed via __exit__. I suspect > a RuntimeError will be raised, whereas I think these should pass > through. I see no reason for this with the current code. Perhaps a previous version of contextlib.py had this problem? -- --Guido van Rossum (home page: http://www.python.org/~guido/) _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com