test_tools.py — langchain Source File
Architecture documentation for test_tools.py, a python file in the langchain codebase. 10 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 5e05f5a6_3c9a_6b02_08a5_596bf1a6469a["test_tools.py"] 2bf6d401_816d_d011_3b05_a6114f55ff58["collections.abc"] 5e05f5a6_3c9a_6b02_08a5_596bf1a6469a --> 2bf6d401_816d_d011_3b05_a6114f55ff58 feec1ec4_6917_867b_d228_b134d0ff8099["typing"] 5e05f5a6_3c9a_6b02_08a5_596bf1a6469a --> feec1ec4_6917_867b_d228_b134d0ff8099 f69d6389_263d_68a4_7fbf_f14c0602a9ba["pytest"] 5e05f5a6_3c9a_6b02_08a5_596bf1a6469a --> f69d6389_263d_68a4_7fbf_f14c0602a9ba 9444498b_8066_55c7_b3a2_1d90c4162a32["langchain_core.messages"] 5e05f5a6_3c9a_6b02_08a5_596bf1a6469a --> 9444498b_8066_55c7_b3a2_1d90c4162a32 121262a1_0bd6_d637_bce3_307ab6b3ecd4["langchain_core.tools"] 5e05f5a6_3c9a_6b02_08a5_596bf1a6469a --> 121262a1_0bd6_d637_bce3_307ab6b3ecd4 95e05501_5650_2f3c_99db_c054e96d4e43["langchain_core.tools.base"] 5e05f5a6_3c9a_6b02_08a5_596bf1a6469a --> 95e05501_5650_2f3c_99db_c054e96d4e43 24578fe3_c3c0_70ca_0624_6be4e15ad364["langgraph.prebuilt.tool_node"] 5e05f5a6_3c9a_6b02_08a5_596bf1a6469a --> 24578fe3_c3c0_70ca_0624_6be4e15ad364 998e41c8_6a3e_eb9b_699f_db967a1242f7["langchain.agents.factory"] 5e05f5a6_3c9a_6b02_08a5_596bf1a6469a --> 998e41c8_6a3e_eb9b_699f_db967a1242f7 a681398d_ed44_c914_1a44_5d174223b069["langchain.agents.middleware.types"] 5e05f5a6_3c9a_6b02_08a5_596bf1a6469a --> a681398d_ed44_c914_1a44_5d174223b069 069947d2_727b_035a_0691_c12203e2f5a6["tests.unit_tests.agents.model"] 5e05f5a6_3c9a_6b02_08a5_596bf1a6469a --> 069947d2_727b_035a_0691_c12203e2f5a6 style 5e05f5a6_3c9a_6b02_08a5_596bf1a6469a fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
"""Test Middleware handling of tools in agents."""
from collections.abc import Callable
from typing import Any
import pytest
from langchain_core.messages import HumanMessage, ToolMessage
from langchain_core.tools import tool
from langchain_core.tools.base import BaseTool
from langgraph.prebuilt.tool_node import ToolNode
from langchain.agents.factory import create_agent
from langchain.agents.middleware.types import (
AgentMiddleware,
AgentState,
ModelCallResult,
ModelRequest,
ModelResponse,
)
from tests.unit_tests.agents.model import FakeToolCallingModel
def test_model_request_tools_are_base_tools() -> None:
"""Test that ModelRequest.tools contains BaseTool objects."""
captured_requests: list[ModelRequest] = []
@tool
def search_tool(query: str) -> str:
"""Search for information."""
return f"Results for: {query}"
@tool
def calculator(expression: str) -> str:
"""Calculate a mathematical expression."""
return f"Result: {expression}"
class RequestCapturingMiddleware(AgentMiddleware):
def wrap_model_call(
self,
request: ModelRequest,
handler: Callable[[ModelRequest], ModelResponse],
) -> ModelCallResult:
captured_requests.append(request)
return handler(request)
agent = create_agent(
model=FakeToolCallingModel(),
tools=[search_tool, calculator],
system_prompt="You are a helpful assistant.",
middleware=[RequestCapturingMiddleware()],
)
agent.invoke({"messages": [HumanMessage("Hello")]})
# Verify that at least one request was captured
assert len(captured_requests) > 0
# Check that tools in the request are BaseTool objects
request = captured_requests[0]
assert isinstance(request.tools, list)
// ... (319 more lines)
Domain
Subdomains
Functions
Classes
Dependencies
- collections.abc
- langchain.agents.factory
- langchain.agents.middleware.types
- langchain_core.messages
- langchain_core.tools
- langchain_core.tools.base
- langgraph.prebuilt.tool_node
- pytest
- tests.unit_tests.agents.model
- typing
Source
Frequently Asked Questions
What does test_tools.py do?
test_tools.py is a source file in the langchain codebase, written in python. It belongs to the LangChainCore domain, MessageInterface subdomain.
What functions are defined in test_tools.py?
test_tools.py defines 8 function(s): test_empty_tools_list_is_valid, test_middleware_can_add_and_remove_tools, test_middleware_can_modify_tools, test_middleware_with_additional_tools, test_model_request_tools_are_base_tools, test_tool_node_not_accepted, test_tools_preserved_across_multiple_middleware, test_unknown_tool_raises_error.
What does test_tools.py depend on?
test_tools.py imports 10 module(s): collections.abc, langchain.agents.factory, langchain.agents.middleware.types, langchain_core.messages, langchain_core.tools, langchain_core.tools.base, langgraph.prebuilt.tool_node, pytest, and 2 more.
Where is test_tools.py in the architecture?
test_tools.py is located at libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_tools.py (domain: LangChainCore, subdomain: MessageInterface, 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