result = func(*args, **kwargs)
if self.catch_returns or self.log_returns:
if isinstance(result, dict):
self.returned(result)
elif inspect.isgenerator(result) or 'itertools' in str(result.__class__):
for x in result:
self.returned(x)
time.sleep(0.1)
else:
self.returned(result)