msg318853 - (view) |
Author: Valentin Lavrinenko (Valentin Lavrinenko) |
Date: 2018-06-06 17:24 |
``` @asynccontextmanager async def ctx(): yield async def gen(): async with ctx(): yield 'hello' yield 'world' async def main(): async with ctx(): async for value in gen(): print(value) raise RuntimeError() ``` Running main() leads to `RuntimeError: generator didn't stop after throw()`. This happens because async gernerator's `.athrow()` method doesn't re-throw `GeneratorExit` exception; probably, this is wrong. |
|
|
msg318854 - (view) |
Author: Valentin Lavrinenko (Valentin Lavrinenko) |
Date: 2018-06-06 17:27 |
Sorry, `async with ctx()` in main() is not needed. |
|
|
msg318882 - (view) |
Author: Yury Selivanov (yselivanov) *  |
Date: 2018-06-07 03:26 |
Would be nice to fix this in 3.7.0 |
|
|
msg318967 - (view) |
Author: Ned Deily (ned.deily) *  |
Date: 2018-06-07 19:42 |
> Would be nice to fix this in 3.7.0 Please do! |
|
|
msg318998 - (view) |
Author: Yury Selivanov (yselivanov) *  |
Date: 2018-06-08 00:31 |
New changeset 52698c7ad9eae9feb35839fde17a7d1da8036a9b by Yury Selivanov in branch 'master': bpo-33786: Fix asynchronous generators to handle GeneratorExit in athrow() (GH-7467) https://github.com/python/cpython/commit/52698c7ad9eae9feb35839fde17a7d1da8036a9b |
|
|
msg319005 - (view) |
Author: Yury Selivanov (yselivanov) *  |
Date: 2018-06-08 01:32 |
New changeset 8de73d5a6914cfe55c23b0ad829cd2ba8954bc2e by Yury Selivanov in branch '3.6': bpo-33786: Fix asynchronous generators to handle GeneratorExit in athrow() (GH-7467) (GH-7507) https://github.com/python/cpython/commit/8de73d5a6914cfe55c23b0ad829cd2ba8954bc2e |
|
|
msg319012 - (view) |
Author: Yury Selivanov (yselivanov) *  |
Date: 2018-06-08 03:42 |
New changeset b0bb9a81f60ed248a44b4c8008c0549c3e9e741d by Yury Selivanov in branch '3.6': bpo-33786: Fix asynchronous generators to handle GeneratorExit in athrow() (GH-7467) (#7514) https://github.com/python/cpython/commit/b0bb9a81f60ed248a44b4c8008c0549c3e9e741d |
|
|
msg375189 - (view) |
Author: Joshua Oreman (Joshua Oreman) |
Date: 2020-08-11 17:45 |
This doesn't appear to have been backported to 3.7, even though it's in 3.6.6 and 3.8.0a0. |
|
|
msg375219 - (view) |
Author: Ned Deily (ned.deily) *  |
Date: 2020-08-12 10:22 |
Indeed, the backport to 3.7 slipped through the cracks somehow; we should fix that. Thanks for bringing this up! |
|
|
msg375388 - (view) |
Author: Ned Deily (ned.deily) *  |
Date: 2020-08-14 09:44 |
New changeset cf79cbf4479e395bf7c4df2907f5a444639b4f6f by Miss Islington (bot) in branch '3.7': bpo-33786: Fix asynchronous generators to handle GeneratorExit in athrow() (GH-7467) (GH-21878) https://github.com/python/cpython/commit/cf79cbf4479e395bf7c4df2907f5a444639b4f6f |
|
|
msg375389 - (view) |
Author: Ned Deily (ned.deily) *  |
Date: 2020-08-14 09:53 |
I'm still not sure exactly what happened here but it looks like the backport to 3.7 (PR 7506) from the original fix in master (pre-3.8) (PR 7467) failed but the backport to 3.6 (PR 7507) succeeded. And then it was backported a second time to 3.6 (PR 7514) which also succeeded but had no effect since there were no intervening changes to those files. So it may be that PR 7514 was intended to be for 3.7 instead of 3.6. In any case, a fresh backport from master to 3.7 (PR 21878) succeeded and tests pass, so into 3.7 it goes for release in 3.7.9. |
|
|
msg375390 - (view) |
Author: Andrew Svetlov (asvetlov) *  |
Date: 2020-08-14 09:54 |
Thank you very much, Ned! |
|
|