Skip to content

Instantly share code, notes, and snippets.

@aleneum
Last active June 22, 2020 10:02
Show Gist options
  • Save aleneum/870255aab5094f4dfb9d32408d18cd7f to your computer and use it in GitHub Desktop.
Save aleneum/870255aab5094f4dfb9d32408d18cd7f to your computer and use it in GitHub Desktop.
Testing which introspection functions accepts what kind of awaitable
import asyncio
import inspect
async def async_func():
await asyncio.sleep(1)
@asyncio.coroutine
def decorator_func():
yield from asyncio.sleep(1)
future = asyncio.ensure_future(async_func())
print('inspect.iscoroutinefunction:async_func -> ', inspect.iscoroutinefunction(async_func))
print('inspect.iscoroutinefunction:decorator_func -> ', inspect.iscoroutinefunction(decorator_func))
print('inspect.iscoroutinefunction:ensure_future -> ', inspect.iscoroutinefunction(future))
print('asyncio.iscoroutinefunction:async_func -> ', asyncio.iscoroutinefunction(async_func))
print('asyncio.iscoroutinefunction:decorator_func -> ', asyncio.iscoroutinefunction(decorator_func))
print('asyncio.iscoroutinefunction:ensure_future -> ', asyncio.iscoroutinefunction(future))
res_async = async_func()
res_decorator = decorator_func()
print('inspect.isawaitable:async_func -> ', inspect.isawaitable(res_async))
print('inspect.isawaitable:decorator_func -> ', inspect.isawaitable(res_decorator))
print('inspect.isawaitable:ensure_future -> ', inspect.isawaitable(future))
# inspect.iscoroutinefunction:async_func -> True
# inspect.iscoroutinefunction:decorator_func -> False
# inspect.iscoroutinefunction:ensure_future -> False
# asyncio.iscoroutinefunction:async_func -> True
# asyncio.iscoroutinefunction:decorator_func -> True
# asyncio.iscoroutinefunction:ensure_future -> False
# inspect.isawaitable:async_func -> True
# inspect.isawaitable:decorator_func -> True
# inspect.isawaitable:ensure_future -> True
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment