On 4/2/06, Delaney, Timothy (Tim) <tdelaney at avaya.com> 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/)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4