I'm working on Python 3.5.1 and I want to be able to tell if a function has returned as coroutine object but I cannot find where the coroutine type is defined, instead as of late I've been using the below snippet to get the type through instantiating a coroutine with a function.
async def _f():
pass
COROUTINE_TYPE = type(_f())
There's got to be a better way to do this, my question is where is this type defined so I can use it directly?
Probably the best way to access the coroutine type is through the types
module:
import types
types.CoroutineType # here it is
That's not actually where the coroutine type is defined - types.py
does pretty much the same thing you're doing to get at it - but it's the standard Python-level way to access the type.
If you want to see the actual definition of the type, that's in Include/genobject.h
and Objects/genobject.c
. Look for the parts that say PyCoroWhatever
or coro_whatever
.
The best way to tell if a function is a coroutine is with asyncio.iscoroutinefunction
.
asyncio.iscoroutinefunction(some_func)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With