test_mixed_sync_async_decorators_integration() — langchain Function Reference
Architecture documentation for the test_mixed_sync_async_decorators_integration() function in test_decorators.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD f73e9bad_5dbb_51de_f88c_1c30f2134538["test_mixed_sync_async_decorators_integration()"] 85a104a3_11cf_6539_d0c0_ba69a17a41d4["test_decorators.py"] f73e9bad_5dbb_51de_f88c_1c30f2134538 -->|defined in| 85a104a3_11cf_6539_d0c0_ba69a17a41d4 style f73e9bad_5dbb_51de_f88c_1c30f2134538 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_decorators.py lines 382–441
async def test_mixed_sync_async_decorators_integration() -> None:
"""Test mixed sync/async decorators working together in an agent."""
call_order = []
@before_model
def track_sync_before(*_args: Any, **_kwargs: Any) -> None:
call_order.append("sync_before")
@before_model
async def track_async_before(*_args: Any, **_kwargs: Any) -> None:
call_order.append("async_before")
@wrap_model_call
async def track_async_on_call(
request: ModelRequest,
handler: Callable[[ModelRequest], Awaitable[ModelResponse]],
) -> ModelCallResult:
call_order.append("async_on_call")
return await handler(request)
@wrap_tool_call
async def track_sync_on_tool_call(
request: ToolCallRequest,
handler: Callable[[ToolCallRequest], Awaitable[ToolMessage | Command[Any]]],
) -> ToolMessage | Command[Any]:
call_order.append("async_on_tool_call")
return await handler(request)
@after_model
async def track_async_after(*_args: Any, **_kwargs: Any) -> None:
call_order.append("async_after")
@after_model
def track_sync_after(*_args: Any, **_kwargs: Any) -> None:
call_order.append("sync_after")
agent = create_agent(
model=FakeToolCallingModel(),
middleware=[
track_sync_before,
track_async_before,
track_async_on_call,
track_sync_on_tool_call,
track_async_after,
track_sync_after,
],
)
# Agent is already compiled
await agent.ainvoke({"messages": [HumanMessage("Hello")]})
# In async mode, we can automatically delegate to sync middleware for nodes
# (although we cannot delegate to sync middleware for model call or tool call)
assert call_order == [
"sync_before",
"async_before",
"async_on_call",
"sync_after",
"async_after",
]
Domain
Subdomains
Source
Frequently Asked Questions
What does test_mixed_sync_async_decorators_integration() do?
test_mixed_sync_async_decorators_integration() is a function in the langchain codebase, defined in libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_decorators.py.
Where is test_mixed_sync_async_decorators_integration() defined?
test_mixed_sync_async_decorators_integration() is defined in libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_decorators.py at line 382.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free