test_tool_retry_specific_exceptions() — langchain Function Reference
Architecture documentation for the test_tool_retry_specific_exceptions() function in test_tool_retry.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD dedc568d_b5f6_0aa6_2c7c_c1acee259de6["test_tool_retry_specific_exceptions()"] c71b26df_821f_59ac_c7ef_3b96fcbe0d5b["test_tool_retry.py"] dedc568d_b5f6_0aa6_2c7c_c1acee259de6 -->|defined in| c71b26df_821f_59ac_c7ef_3b96fcbe0d5b style dedc568d_b5f6_0aa6_2c7c_c1acee259de6 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/langchain_v1/tests/unit_tests/agents/middleware/implementations/test_tool_retry.py lines 422–477
def test_tool_retry_specific_exceptions() -> None:
"""Test ToolRetryMiddlewareonly retries specific exception types."""
@tool
def value_error_tool(value: str) -> str:
"""Tool that raises ValueError."""
msg = f"ValueError: {value}"
raise ValueError(msg)
@tool
def runtime_error_tool(value: str) -> str:
"""Tool that raises RuntimeError."""
msg = f"RuntimeError: {value}"
raise RuntimeError(msg)
model = FakeToolCallingModel(
tool_calls=[
[
ToolCall(name="value_error_tool", args={"value": "test1"}, id="1"),
ToolCall(name="runtime_error_tool", args={"value": "test2"}, id="2"),
],
[],
]
)
# Only retry ValueError
retry = ToolRetryMiddleware(
max_retries=2,
retry_on=(ValueError,),
initial_delay=0.01,
jitter=False,
on_failure="continue",
)
agent = create_agent(
model=model,
tools=[value_error_tool, runtime_error_tool],
middleware=[retry],
checkpointer=InMemorySaver(),
)
result = agent.invoke(
{"messages": [HumanMessage("Use both tools")]},
{"configurable": {"thread_id": "test"}},
)
tool_messages = [m for m in result["messages"] if isinstance(m, ToolMessage)]
assert len(tool_messages) == 2
# ValueError should be retried (3 attempts)
value_error_msg = next(m for m in tool_messages if m.name == "value_error_tool")
assert "3 attempts" in value_error_msg.content
# RuntimeError should fail immediately (1 attempt only)
runtime_error_msg = next(m for m in tool_messages if m.name == "runtime_error_tool")
assert "1 attempt" in runtime_error_msg.content
Domain
Subdomains
Source
Frequently Asked Questions
What does test_tool_retry_specific_exceptions() do?
test_tool_retry_specific_exceptions() is a function in the langchain codebase, defined in libs/langchain_v1/tests/unit_tests/agents/middleware/implementations/test_tool_retry.py.
Where is test_tool_retry_specific_exceptions() defined?
test_tool_retry_specific_exceptions() is defined in libs/langchain_v1/tests/unit_tests/agents/middleware/implementations/test_tool_retry.py at line 422.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free