def __call__(self, func):
if isgeneratorfunction(func):
def inner(*args, **kwds):
with self._recreate_cm():
yield from func(*args, **kwds)
elif is_contextmanager(func):
@contextmanager
def inner(*args, **kwds):
with self._recreate_cm():
with func(*args, **kwds) as ret:
yield ret
else:
def inner(*args, **kwds):
with self._recreate_cm():
return func(*args, **kwds)
return wraps(func)(inner)
# Some python version have a different signature for '_GeneratorContextManager.__init__', so we must adapt:
评论列表
文章目录