Skip to content

Commit 1fd52d5

Browse files
committed
Make sure we at least try to close the generators
1 parent 93b30f4 commit 1fd52d5

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

Lib/contextlib.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)