test_wrap_model_call.py — langchain Source File
Architecture documentation for test_wrap_model_call.py, a python file in the langchain codebase. 14 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 3501ddcf_a91a_a4b4_cf6d_5b38492caabc["test_wrap_model_call.py"] cfe2bde5_180e_e3b0_df2b_55b3ebaca8e7["collections.abc"] 3501ddcf_a91a_a4b4_cf6d_5b38492caabc --> cfe2bde5_180e_e3b0_df2b_55b3ebaca8e7 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3["typing"] 3501ddcf_a91a_a4b4_cf6d_5b38492caabc --> 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3 120e2591_3e15_b895_72b6_cb26195e40a6["pytest"] 3501ddcf_a91a_a4b4_cf6d_5b38492caabc --> 120e2591_3e15_b895_72b6_cb26195e40a6 f3bc7443_c889_119d_0744_aacc3620d8d2["langchain_core.callbacks"] 3501ddcf_a91a_a4b4_cf6d_5b38492caabc --> f3bc7443_c889_119d_0744_aacc3620d8d2 2312f229_c199_ac88_c29f_62e2a2958404["langchain_core.language_models.chat_models"] 3501ddcf_a91a_a4b4_cf6d_5b38492caabc --> 2312f229_c199_ac88_c29f_62e2a2958404 833aeadc_c3e9_bfcf_db07_ecb37ad3ba24["langchain_core.language_models.fake_chat_models"] 3501ddcf_a91a_a4b4_cf6d_5b38492caabc --> 833aeadc_c3e9_bfcf_db07_ecb37ad3ba24 d758344f_537f_649e_f467_b9d7442e86df["langchain_core.messages"] 3501ddcf_a91a_a4b4_cf6d_5b38492caabc --> d758344f_537f_649e_f467_b9d7442e86df ac2a9b92_4484_491e_1b48_ec85e71e1d58["langchain_core.outputs"] 3501ddcf_a91a_a4b4_cf6d_5b38492caabc --> ac2a9b92_4484_491e_1b48_ec85e71e1d58 43d88577_548b_2248_b01b_7987bae85dcc["langchain_core.tools"] 3501ddcf_a91a_a4b4_cf6d_5b38492caabc --> 43d88577_548b_2248_b01b_7987bae85dcc 5dbfd558_f2f2_9663_3a3f_c317926ac1c1["langgraph.runtime"] 3501ddcf_a91a_a4b4_cf6d_5b38492caabc --> 5dbfd558_f2f2_9663_3a3f_c317926ac1c1 91721f45_4909_e489_8c1f_084f8bd87145["typing_extensions"] 3501ddcf_a91a_a4b4_cf6d_5b38492caabc --> 91721f45_4909_e489_8c1f_084f8bd87145 839143dd_e377_b604_96de_3624dbdffeb5["langchain.agents"] 3501ddcf_a91a_a4b4_cf6d_5b38492caabc --> 839143dd_e377_b604_96de_3624dbdffeb5 50acc543_e5f0_2162_cf07_c2bf50723e0c["langchain.agents.middleware.types"] 3501ddcf_a91a_a4b4_cf6d_5b38492caabc --> 50acc543_e5f0_2162_cf07_c2bf50723e0c d135b586_15fc_7b4a_47fb_a8b2bcda78a5["tests.unit_tests.agents.model"] 3501ddcf_a91a_a4b4_cf6d_5b38492caabc --> d135b586_15fc_7b4a_47fb_a8b2bcda78a5 style 3501ddcf_a91a_a4b4_cf6d_5b38492caabc fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
"""Unit tests for wrap_model_call hook and @wrap_model_call decorator.
This module tests the wrap_model_call functionality in three forms:
1. As a middleware method (AgentMiddleware.wrap_model_call)
2. As a decorator (@wrap_model_call)
3. Async variant (AgentMiddleware.awrap_model_call)
"""
from collections.abc import Awaitable, Callable
from typing import Any
import pytest
from langchain_core.callbacks import (
AsyncCallbackManagerForLLMRun,
CallbackManagerForLLMRun,
)
from langchain_core.language_models.chat_models import BaseChatModel
from langchain_core.language_models.fake_chat_models import GenericFakeChatModel
from langchain_core.messages import AIMessage, BaseMessage, HumanMessage
from langchain_core.outputs import ChatResult
from langchain_core.tools import tool
from langgraph.runtime import Runtime
from typing_extensions import TypedDict, override
from langchain.agents import AgentState, create_agent
from langchain.agents.middleware.types import (
AgentMiddleware,
ModelCallResult,
ModelRequest,
ModelResponse,
wrap_model_call,
)
from tests.unit_tests.agents.model import FakeToolCallingModel
class TestBasicWrapModelCall:
"""Test basic wrap_model_call functionality."""
def test_passthrough_middleware(self) -> None:
"""Test middleware that simply passes through without modification."""
class PassthroughMiddleware(AgentMiddleware):
def wrap_model_call(
self,
request: ModelRequest,
handler: Callable[[ModelRequest], ModelResponse],
) -> ModelCallResult:
return handler(request)
model = GenericFakeChatModel(messages=iter([AIMessage(content="Hello")]))
agent = create_agent(model=model, middleware=[PassthroughMiddleware()])
result = agent.invoke({"messages": [HumanMessage("Hi")]})
assert len(result["messages"]) == 2
assert result["messages"][1].content == "Hello"
def test_logging_middleware(self) -> None:
"""Test middleware that logs calls without modification."""
call_log = []
// ... (1541 more lines)
Domain
Subdomains
Classes
- AlwaysFailModel
- AlwaysFailingModel
- AsyncFailOnceThenSucceed
- AsyncOnlyMiddleware
- CachingMiddleware
- ClassMiddleware
- CountingMiddleware
- CustomState
- ErrorRecoveryMiddleware
- ErrorToSuccessMiddleware
- FailFirstSucceedSecond
- FailOnceThenSucceed
- FailingModel
- FirstMiddleware
- InnerMiddleware
- LimitedRetryMiddleware
- LoggingMiddleware
- MaxRetriesMiddleware
- MiddleRetryMiddleware
- MixedMiddleware
- MultiModelRetryMiddleware
- MultiTransformMiddleware
- NoRetryMiddleware
- OuterMiddleware
- PassthroughMiddleware
- PrefixMiddleware
- RequestModifyingMiddleware
- RetryMiddleware
- RetryOnceMiddleware
- SecondMiddleware
- SelectiveErrorMiddleware
- SpecificErrorModel
- StateAwareMiddleware
- StateTrackingRetryMiddleware
- SuffixMiddleware
- SystemPromptMiddleware
- TestAsyncWrapModelCall
- TestBasicWrapModelCall
- TestEdgeCases
- TestErrorHandling
- TestMiddlewareComposition
- TestRequestModification
- TestResponseRewriting
- TestRetryLogic
- TestShortCircuit
- TestStateAndRuntime
- TestSyncAsyncInterop
- TestWrapModelCallDecorator
- ThirdMiddleware
- TrackingModel
- UnreliableModel
- UppercaseMiddleware
Dependencies
- collections.abc
- langchain.agents
- langchain.agents.middleware.types
- langchain_core.callbacks
- langchain_core.language_models.chat_models
- langchain_core.language_models.fake_chat_models
- langchain_core.messages
- langchain_core.outputs
- langchain_core.tools
- langgraph.runtime
- pytest
- tests.unit_tests.agents.model
- typing
- typing_extensions
Source
Frequently Asked Questions
What does test_wrap_model_call.py do?
test_wrap_model_call.py is a source file in the langchain codebase, written in python. It belongs to the CoreAbstractions domain, MessageSchema subdomain.
What does test_wrap_model_call.py depend on?
test_wrap_model_call.py imports 14 module(s): collections.abc, langchain.agents, langchain.agents.middleware.types, langchain_core.callbacks, langchain_core.language_models.chat_models, langchain_core.language_models.fake_chat_models, langchain_core.messages, langchain_core.outputs, and 6 more.
Where is test_wrap_model_call.py in the architecture?
test_wrap_model_call.py is located at libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_wrap_model_call.py (domain: CoreAbstractions, subdomain: MessageSchema, 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