while ismethod(f):
f = f.__func__
f = functools._unwrap_partial(f)
- if not (isfunction(f) or _signature_is_functionlike(f)):
- return False
return getattr(f, "_is_coroutine_marker", None) is _is_coroutine_marker
def markcoroutinefunction(func):
self.assertFalse(inspect.iscoroutinefunction(Cl))
# instances with async def __call__ are NOT recognised.
self.assertFalse(inspect.iscoroutinefunction(Cl()))
+ # unless explicitly marked.
+ self.assertTrue(inspect.iscoroutinefunction(
+ inspect.markcoroutinefunction(Cl())
+ ))
class Cl2:
@inspect.markcoroutinefunction
self.assertFalse(inspect.iscoroutinefunction(Cl2))
# instances with marked __call__ are NOT recognised.
self.assertFalse(inspect.iscoroutinefunction(Cl2()))
+ # unless explicitly marked.
+ self.assertTrue(inspect.iscoroutinefunction(
+ inspect.markcoroutinefunction(Cl2())
+ ))
class Cl3:
@inspect.markcoroutinefunction