Hey!
In APIs that take a coroutine callbacks as a parameter, one would like to
make sure the callback given is in fact a coroutine. Partials are of course
useful in this scenario.
It occurs to me that `asyncio.iscoroutinefunction` should know about
coroutines wrapped in partials:
>>> import asyncio
>>> import functools
>>> @asyncio.coroutine
... def myfunc():
... pass
...
>>> part = functools.partial(myfunc)
>>> asyncio.iscoroutinefunction(myfunc)
True
>>> asyncio.iscoroutinefunction(part)
False
>>>
Here's a naive workaround:
def iscoroutinefunction(func):
if asyncio.iscoroutinefunction(func):
return True
return asyncio.iscoroutinefunction(getattr(func, 'func', None))
What do you think?
Best regards
Ron Cohen
CTO & co-founder @ Opbeat