test_sync_async_wrappers.py — langchain Source File
Architecture documentation for test_sync_async_wrappers.py, a python file in the langchain codebase. 10 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR f9fb0cbf_6df7_5614_132d_6f7399bc253c["test_sync_async_wrappers.py"] cfe2bde5_180e_e3b0_df2b_55b3ebaca8e7["collections.abc"] f9fb0cbf_6df7_5614_132d_6f7399bc253c --> cfe2bde5_180e_e3b0_df2b_55b3ebaca8e7 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3["typing"] f9fb0cbf_6df7_5614_132d_6f7399bc253c --> 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3 120e2591_3e15_b895_72b6_cb26195e40a6["pytest"] f9fb0cbf_6df7_5614_132d_6f7399bc253c --> 120e2591_3e15_b895_72b6_cb26195e40a6 d758344f_537f_649e_f467_b9d7442e86df["langchain_core.messages"] f9fb0cbf_6df7_5614_132d_6f7399bc253c --> d758344f_537f_649e_f467_b9d7442e86df 43d88577_548b_2248_b01b_7987bae85dcc["langchain_core.tools"] f9fb0cbf_6df7_5614_132d_6f7399bc253c --> 43d88577_548b_2248_b01b_7987bae85dcc 1fe3d0c5_4963_3c08_63e9_108cefcdbab5["langgraph.checkpoint.memory"] f9fb0cbf_6df7_5614_132d_6f7399bc253c --> 1fe3d0c5_4963_3c08_63e9_108cefcdbab5 0e93d2ee_1fb2_3a0f_5a76_8aba32d0d4ed["langgraph.types"] f9fb0cbf_6df7_5614_132d_6f7399bc253c --> 0e93d2ee_1fb2_3a0f_5a76_8aba32d0d4ed 6f5e6c4b_1a3f_fd09_4697_631c27ef1033["langchain.agents.factory"] f9fb0cbf_6df7_5614_132d_6f7399bc253c --> 6f5e6c4b_1a3f_fd09_4697_631c27ef1033 50acc543_e5f0_2162_cf07_c2bf50723e0c["langchain.agents.middleware.types"] f9fb0cbf_6df7_5614_132d_6f7399bc253c --> 50acc543_e5f0_2162_cf07_c2bf50723e0c d135b586_15fc_7b4a_47fb_a8b2bcda78a5["tests.unit_tests.agents.model"] f9fb0cbf_6df7_5614_132d_6f7399bc253c --> d135b586_15fc_7b4a_47fb_a8b2bcda78a5 style f9fb0cbf_6df7_5614_132d_6f7399bc253c fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
"""Tests for sync/async middleware composition with wrap_tool_call and awrap_tool_call.
These tests verify the desired behavior:
1. If middleware defines both sync and async -> use both on respective paths
2. If middleware defines only sync -> use on sync path, raise NotImplementedError on async path
3. If middleware defines only async -> use on async path, raise NotImplementedError on sync path
"""
from collections.abc import Awaitable, Callable
from typing import Any
import pytest
from langchain_core.messages import HumanMessage, ToolCall, ToolMessage
from langchain_core.tools import tool
from langgraph.checkpoint.memory import InMemorySaver
from langgraph.types import Command
from langchain.agents.factory import create_agent
from langchain.agents.middleware.types import AgentMiddleware, ToolCallRequest, wrap_tool_call
from tests.unit_tests.agents.model import FakeToolCallingModel
@tool
def search(query: str) -> str:
"""Search for information."""
return f"Results for: {query}"
@tool
def calculator(expression: str) -> str:
"""Calculate an expression."""
return f"Calculated: {expression}"
class TestSyncAsyncMiddlewareComposition:
"""Test sync/async middleware composition behavior."""
def test_sync_only_middleware_works_on_sync_path(self) -> None:
"""Middleware with only sync wrap_tool_call works on sync path."""
call_log = []
class SyncOnlyMiddleware(AgentMiddleware):
def wrap_tool_call(
self,
request: ToolCallRequest,
handler: Callable[[ToolCallRequest], ToolMessage | Command[Any]],
) -> ToolMessage | Command[Any]:
call_log.append("sync_called")
return handler(request)
model = FakeToolCallingModel(
tool_calls=[
[ToolCall(name="search", args={"query": "test"}, id="1")],
[],
]
)
agent = create_agent(
model=model,
tools=[search],
// ... (431 more lines)
Domain
Subdomains
Functions
Classes
Dependencies
- collections.abc
- langchain.agents.factory
- langchain.agents.middleware.types
- langchain_core.messages
- langchain_core.tools
- langgraph.checkpoint.memory
- langgraph.types
- pytest
- tests.unit_tests.agents.model
- typing
Source
Frequently Asked Questions
What does test_sync_async_wrappers.py do?
test_sync_async_wrappers.py is a source file in the langchain codebase, written in python. It belongs to the CoreAbstractions domain, Serialization subdomain.
What functions are defined in test_sync_async_wrappers.py?
test_sync_async_wrappers.py defines 2 function(s): calculator, search.
What does test_sync_async_wrappers.py depend on?
test_sync_async_wrappers.py imports 10 module(s): collections.abc, langchain.agents.factory, langchain.agents.middleware.types, langchain_core.messages, langchain_core.tools, langgraph.checkpoint.memory, langgraph.types, pytest, and 2 more.
Where is test_sync_async_wrappers.py in the architecture?
test_sync_async_wrappers.py is located at libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_sync_async_wrappers.py (domain: CoreAbstractions, subdomain: Serialization, directory: libs/langchain_v1/tests/unit_tests/agents/middleware/core).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free