Bug report
Bug description:
import types
import itertools
@types.coroutine
def _async_yield(v):
return (yield v)
class MyExc(Exception):
pass
async def agenfn():
for i in itertools.count():
try:
await _async_yield(i)
except MyExc:
pass
return
yield
agen = agenfn()
gen = agen.asend(None)
print(f"{gen.send(None)}")
gen2 = agen.asend(None)
try:
print(f"{gen2.throw(MyExc)}")
except RuntimeError:
print("good")
else:
print("bad")
gen3 = agen.athrow(MyExc)
try:
print(f"{gen3.throw(MyExc)}")
except RuntimeError:
print("good")
else:
print("bad")
outputs:
should print:
CPython versions tested on:
3.8, 3.9, 3.10, 3.11, 3.12, 3.13, CPython main branch
Operating systems tested on:
Linux
see also #7468 and #74956
Linked PRs