@@ -87,17 +87,18 @@ def inner(*args, **kwds):
8787 return func (* args , ** kwds )
8888
8989 def gen_inner (* args , ** kwds ):
90- with self ._recreate_cm ():
91- yield from func ( * args , ** kwds )
90+ with self ._recreate_cm (), func ( * args , ** kwds ) as gen :
91+ yield from gen
9292
9393 async def async_inner (* args , ** kwds ):
9494 with self ._recreate_cm ():
9595 return await func (* args , ** kwds )
9696
9797 async def asyncgen_inner (* args , ** kwds ):
9898 with self ._recreate_cm ():
99- async for value in func (* args , ** kwds ):
100- yield value
99+ async with func (* args , ** kwds ) as gen :
100+ async for value in gen :
101+ yield value
101102
102103 wrapper = wraps (func )
103104 if isasyncgenfunction (func ):
@@ -125,16 +126,17 @@ async def inner(*args, **kwds):
125126
126127 async def gen_inner (* args , ** kwds ):
127128 async with self ._recreate_cm ():
128- for value in func (* args , ** kwds ):
129- yield value
129+ with func (* args , ** kwds ) as gen :
130+ for value in func (* args , ** kwds ):
131+ yield value
130132
131133 async def async_inner (* args , ** kwds ):
132134 async with self ._recreate_cm ():
133135 return await func (* args , ** kwds )
134136
135137 async def asyncgen_inner (* args , ** kwds ):
136- async with self ._recreate_cm ():
137- async for value in func ( * args , ** kwds ) :
138+ async with self ._recreate_cm (), func ( * args , ** kwds ) as gen :
139+ async for value in gen :
138140 yield value
139141
140142 wrapper = wraps (func )
0 commit comments