2021-10-22 15:33:05 +02:00
|
|
|
"""Set of utility functions for unasync that transform into sync counterparts cleanly"""
|
|
|
|
|
|
|
|
import inspect
|
|
|
|
|
2021-11-10 00:59:10 +01:00
|
|
|
|
2021-10-22 15:33:05 +02:00
|
|
|
_original_next = next
|
|
|
|
|
|
|
|
|
|
|
|
def is_async_mode():
|
|
|
|
"""Tests if we're in the async part of the code or not"""
|
|
|
|
|
|
|
|
async def f():
|
|
|
|
"""Unasync transforms async functions in sync functions"""
|
|
|
|
return None
|
|
|
|
|
|
|
|
obj = f()
|
|
|
|
if obj is None:
|
|
|
|
return False
|
|
|
|
else:
|
|
|
|
obj.close() # prevent unawaited coroutine warning
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
|
|
ASYNC_MODE = is_async_mode()
|
|
|
|
|
|
|
|
|
|
|
|
async def anext(x):
|
|
|
|
return await x.__anext__()
|
|
|
|
|
|
|
|
|
|
|
|
async def await_if_coro(x):
|
|
|
|
if inspect.iscoroutine(x):
|
|
|
|
return await x
|
|
|
|
return x
|
|
|
|
|
|
|
|
|
|
|
|
next = _original_next
|
|
|
|
|
|
|
|
|
|
|
|
def return_non_coro(x):
|
2021-11-10 00:59:10 +01:00
|
|
|
return x
|