test_retry_with_logging() — langchain Function Reference
Architecture documentation for the test_retry_with_logging() function in test_wrap_model_call.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD 034ff3f8_6d76_ab7c_37fe_205bde051f5e["test_retry_with_logging()"] 2d096fab_8a25_1dfa_6e53_a3f5603e55c2["TestMiddlewareComposition"] 034ff3f8_6d76_ab7c_37fe_205bde051f5e -->|defined in| 2d096fab_8a25_1dfa_6e53_a3f5603e55c2 style 034ff3f8_6d76_ab7c_37fe_205bde051f5e fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_wrap_model_call.py lines 776–838
def test_retry_with_logging(self) -> None:
"""Test retry middleware composed with logging middleware."""
call_count = {"value": 0}
log = []
class FailOnceThenSucceed(GenericFakeChatModel):
@override
def _generate(
self,
messages: list[BaseMessage],
stop: list[str] | None = None,
run_manager: CallbackManagerForLLMRun | None = None,
**kwargs: Any,
) -> ChatResult:
call_count["value"] += 1
if call_count["value"] == 1:
msg = "First call fails"
raise ValueError(msg)
return super()._generate(messages, **kwargs)
class LoggingMiddleware(AgentMiddleware):
def wrap_model_call(
self,
request: ModelRequest,
handler: Callable[[ModelRequest], ModelResponse],
) -> ModelCallResult:
log.append("logging-before")
result = handler(request)
log.append("logging-after")
return result
class RetryMiddleware(AgentMiddleware):
def wrap_model_call(
self,
request: ModelRequest,
handler: Callable[[ModelRequest], ModelResponse],
) -> ModelCallResult:
log.append("retry-before")
try:
result = handler(request)
log.append("retry-after")
except Exception:
log.append("retry-retrying")
result = handler(request)
log.append("retry-after")
return result
model = FailOnceThenSucceed(messages=iter([AIMessage(content="Success")]))
# Logging is outer, Retry is inner
agent = create_agent(model=model, middleware=[LoggingMiddleware(), RetryMiddleware()])
result = agent.invoke({"messages": [HumanMessage("Test")]})
assert result["messages"][1].content == "Success"
# Outer (logging) sees the final result after inner (retry) handles it
assert log == [
"logging-before",
"retry-before",
"retry-retrying",
"retry-after",
"logging-after",
]
Domain
Subdomains
Source
Frequently Asked Questions
What does test_retry_with_logging() do?
test_retry_with_logging() is a function in the langchain codebase, defined in libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_wrap_model_call.py.
Where is test_retry_with_logging() defined?
test_retry_with_logging() is defined in libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_wrap_model_call.py at line 776.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free