test_mixed_middleware_composition_sync_path_with_async_only_fails() — langchain Function Reference
Architecture documentation for the test_mixed_middleware_composition_sync_path_with_async_only_fails() function in test_sync_async_wrappers.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD 764efc16_2be8_1972_2479_1920fef42a5a["test_mixed_middleware_composition_sync_path_with_async_only_fails()"] dcfb9efa_1e8c_d646_a0b4_9a9d7afddd2c["TestSyncAsyncMiddlewareComposition"] 764efc16_2be8_1972_2479_1920fef42a5a -->|defined in| dcfb9efa_1e8c_d646_a0b4_9a9d7afddd2c 2a7a396d_560d_b909_7682_09221ed97fc7["wrap_tool_call()"] 764efc16_2be8_1972_2479_1920fef42a5a -->|calls| 2a7a396d_560d_b909_7682_09221ed97fc7 f42a5199_3b5b_01a0_d6db_0e1554648695["awrap_tool_call()"] 764efc16_2be8_1972_2479_1920fef42a5a -->|calls| f42a5199_3b5b_01a0_d6db_0e1554648695 style 764efc16_2be8_1972_2479_1920fef42a5a fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_sync_async_wrappers.py lines 314–359
def test_mixed_middleware_composition_sync_path_with_async_only_fails(self) -> None:
"""Multiple middleware on sync path fails if any are async-only."""
class SyncOnlyMiddleware(AgentMiddleware):
name = "SyncOnly"
def wrap_tool_call(
self,
request: ToolCallRequest,
handler: Callable[[ToolCallRequest], ToolMessage | Command[Any]],
) -> ToolMessage | Command[Any]:
return handler(request)
class AsyncOnlyMiddleware(AgentMiddleware):
name = "AsyncOnly"
async def awrap_tool_call(
self,
request: ToolCallRequest,
handler: Callable[[ToolCallRequest], Awaitable[ToolMessage | Command[Any]]],
) -> ToolMessage | Command[Any]:
return await handler(request)
model = FakeToolCallingModel(
tool_calls=[
[ToolCall(name="search", args={"query": "test"}, id="1")],
[],
]
)
agent = create_agent(
model=model,
tools=[search],
middleware=[
SyncOnlyMiddleware(),
AsyncOnlyMiddleware(), # This will break sync path
],
checkpointer=InMemorySaver(),
)
# Should raise NotImplementedError because AsyncOnlyMiddleware can't run on sync path
with pytest.raises(NotImplementedError):
agent.invoke(
{"messages": [HumanMessage("Search")]},
{"configurable": {"thread_id": "test"}},
)
Domain
Subdomains
Source
Frequently Asked Questions
What does test_mixed_middleware_composition_sync_path_with_async_only_fails() do?
test_mixed_middleware_composition_sync_path_with_async_only_fails() is a function in the langchain codebase, defined in libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_sync_async_wrappers.py.
Where is test_mixed_middleware_composition_sync_path_with_async_only_fails() defined?
test_mixed_middleware_composition_sync_path_with_async_only_fails() is defined in libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_sync_async_wrappers.py at line 314.
What does test_mixed_middleware_composition_sync_path_with_async_only_fails() call?
test_mixed_middleware_composition_sync_path_with_async_only_fails() calls 2 function(s): awrap_tool_call, wrap_tool_call.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free