mirror of
https://github.com/python/cpython.git
synced 2025-11-26 21:33:10 +00:00
Fix a problem with @contextmanager not detecting a broken generator
that yields after a throw(). Make @contextmanager not reraise exceptions, but return a false value in that case instead. Add test cases for both behaviors.
This commit is contained in:
parent
bee0712214
commit
6edd258608
2 changed files with 26 additions and 1 deletions
|
|
@ -30,9 +30,12 @@ class GeneratorContextManager(object):
|
|||
else:
|
||||
try:
|
||||
self.gen.throw(type, value, traceback)
|
||||
return True
|
||||
raise RuntimeError("generator didn't stop after throw()")
|
||||
except StopIteration:
|
||||
return True
|
||||
except:
|
||||
if sys.exc_info()[1] is not value:
|
||||
raise
|
||||
|
||||
|
||||
def contextmanager(func):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue