mirror of
https://github.com/langchain-ai/langgraph.git
synced 2026-08-17 21:25:46 +02:00
73 lines
2.0 KiB
Python
73 lines
2.0 KiB
Python
import functools
|
|
|
|
from langgraph.utils import is_async_callable, is_async_generator
|
|
|
|
|
|
def test_is_async() -> None:
|
|
async def func() -> None:
|
|
pass
|
|
|
|
assert is_async_callable(func)
|
|
wrapped_func = functools.wraps(func)(func)
|
|
assert is_async_callable(wrapped_func)
|
|
|
|
def sync_func() -> None:
|
|
pass
|
|
|
|
assert not is_async_callable(sync_func)
|
|
wrapped_sync_func = functools.wraps(sync_func)(sync_func)
|
|
assert not is_async_callable(wrapped_sync_func)
|
|
|
|
class AsyncFuncCallable:
|
|
async def __call__(self) -> None:
|
|
pass
|
|
|
|
runnable = AsyncFuncCallable()
|
|
assert is_async_callable(runnable)
|
|
wrapped_runnable = functools.wraps(runnable)(runnable)
|
|
assert is_async_callable(wrapped_runnable)
|
|
|
|
class SyncFuncCallable:
|
|
def __call__(self) -> None:
|
|
pass
|
|
|
|
sync_runnable = SyncFuncCallable()
|
|
assert not is_async_callable(sync_runnable)
|
|
wrapped_sync_runnable = functools.wraps(sync_runnable)(sync_runnable)
|
|
assert not is_async_callable(wrapped_sync_runnable)
|
|
|
|
|
|
def test_is_generator() -> None:
|
|
async def gen():
|
|
yield
|
|
|
|
assert is_async_generator(gen)
|
|
|
|
wrapped_gen = functools.wraps(gen)(gen)
|
|
assert is_async_generator(wrapped_gen)
|
|
|
|
def sync_gen():
|
|
yield
|
|
|
|
assert not is_async_generator(sync_gen)
|
|
wrapped_sync_gen = functools.wraps(sync_gen)(sync_gen)
|
|
assert not is_async_generator(wrapped_sync_gen)
|
|
|
|
class AsyncGenCallable:
|
|
async def __call__(self):
|
|
yield
|
|
|
|
runnable = AsyncGenCallable()
|
|
assert is_async_generator(runnable)
|
|
wrapped_runnable = functools.wraps(runnable)(runnable)
|
|
assert is_async_generator(wrapped_runnable)
|
|
|
|
class SyncGenCallable:
|
|
def __call__(self):
|
|
yield
|
|
|
|
sync_runnable = SyncGenCallable()
|
|
assert not is_async_generator(sync_runnable)
|
|
wrapped_sync_runnable = functools.wraps(sync_runnable)(sync_runnable)
|
|
assert not is_async_generator(wrapped_sync_runnable)
|