test_decorators.py — langchain Source File
Architecture documentation for test_decorators.py, a python file in the langchain codebase. 13 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 2c7e8be8_ecbf_4e7d_a90e_838f93a76329["test_decorators.py"] cfe2bde5_180e_e3b0_df2b_55b3ebaca8e7["collections.abc"] 2c7e8be8_ecbf_4e7d_a90e_838f93a76329 --> cfe2bde5_180e_e3b0_df2b_55b3ebaca8e7 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3["typing"] 2c7e8be8_ecbf_4e7d_a90e_838f93a76329 --> 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3 120e2591_3e15_b895_72b6_cb26195e40a6["pytest"] 2c7e8be8_ecbf_4e7d_a90e_838f93a76329 --> 120e2591_3e15_b895_72b6_cb26195e40a6 d758344f_537f_649e_f467_b9d7442e86df["langchain_core.messages"] 2c7e8be8_ecbf_4e7d_a90e_838f93a76329 --> d758344f_537f_649e_f467_b9d7442e86df 43d88577_548b_2248_b01b_7987bae85dcc["langchain_core.tools"] 2c7e8be8_ecbf_4e7d_a90e_838f93a76329 --> 43d88577_548b_2248_b01b_7987bae85dcc 150b7407_e6a8_2f45_0640_25bc6d2bfbfb["langgraph.prebuilt.tool_node"] 2c7e8be8_ecbf_4e7d_a90e_838f93a76329 --> 150b7407_e6a8_2f45_0640_25bc6d2bfbfb 5dbfd558_f2f2_9663_3a3f_c317926ac1c1["langgraph.runtime"] 2c7e8be8_ecbf_4e7d_a90e_838f93a76329 --> 5dbfd558_f2f2_9663_3a3f_c317926ac1c1 0e93d2ee_1fb2_3a0f_5a76_8aba32d0d4ed["langgraph.types"] 2c7e8be8_ecbf_4e7d_a90e_838f93a76329 --> 0e93d2ee_1fb2_3a0f_5a76_8aba32d0d4ed 66d6194f_d8c1_55b6_f522_311fdad57877["syrupy.assertion"] 2c7e8be8_ecbf_4e7d_a90e_838f93a76329 --> 66d6194f_d8c1_55b6_f522_311fdad57877 91721f45_4909_e489_8c1f_084f8bd87145["typing_extensions"] 2c7e8be8_ecbf_4e7d_a90e_838f93a76329 --> 91721f45_4909_e489_8c1f_084f8bd87145 6f5e6c4b_1a3f_fd09_4697_631c27ef1033["langchain.agents.factory"] 2c7e8be8_ecbf_4e7d_a90e_838f93a76329 --> 6f5e6c4b_1a3f_fd09_4697_631c27ef1033 50acc543_e5f0_2162_cf07_c2bf50723e0c["langchain.agents.middleware.types"] 2c7e8be8_ecbf_4e7d_a90e_838f93a76329 --> 50acc543_e5f0_2162_cf07_c2bf50723e0c d135b586_15fc_7b4a_47fb_a8b2bcda78a5["tests.unit_tests.agents.model"] 2c7e8be8_ecbf_4e7d_a90e_838f93a76329 --> d135b586_15fc_7b4a_47fb_a8b2bcda78a5 style 2c7e8be8_ecbf_4e7d_a90e_838f93a76329 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
"""Consolidated tests for middleware decorators: before_model, after_model, and wrap_model_call."""
from collections.abc import Awaitable, Callable
from typing import Any, Generic
import pytest
from langchain_core.messages import (
AIMessage,
HumanMessage,
SystemMessage,
ToolMessage,
)
from langchain_core.tools import tool
from langgraph.prebuilt.tool_node import ToolCallRequest
from langgraph.runtime import Runtime
from langgraph.types import Command
from syrupy.assertion import SnapshotAssertion
from typing_extensions import NotRequired
from langchain.agents.factory import _get_can_jump_to, create_agent
from langchain.agents.middleware.types import (
AgentMiddleware,
AgentState,
ModelCallResult,
ModelRequest,
ModelResponse,
ResponseT,
after_model,
before_model,
dynamic_prompt,
hook_config,
wrap_model_call,
wrap_tool_call,
)
from tests.unit_tests.agents.model import FakeToolCallingModel
class CustomState(AgentState[ResponseT], Generic[ResponseT]):
"""Custom state schema for testing."""
custom_field: NotRequired[str]
@tool
def test_tool(value: str) -> str:
"""A test tool for middleware testing."""
return f"Tool result: {value}"
def test_before_model_decorator() -> None:
"""Test before_model decorator with all configuration options."""
@before_model(
state_schema=CustomState, tools=[test_tool], can_jump_to=["end"], name="CustomBeforeModel"
)
def custom_before_model(*_args: Any, **_kwargs: Any) -> dict[str, Any]:
return {"jump_to": "end"}
assert isinstance(custom_before_model, AgentMiddleware)
assert custom_before_model.state_schema == CustomState
// ... (763 more lines)
Domain
Subdomains
Functions
- test_after_model_decorator()
- test_all_decorators_integration()
- test_async_after_model_decorator()
- test_async_after_model_preserves_can_jump_to()
- test_async_before_model_decorator()
- test_async_before_model_preserves_can_jump_to()
- test_async_can_jump_to_integration()
- test_async_decorators_integration()
- test_async_dynamic_prompt_decorator()
- test_async_dynamic_prompt_integration()
- test_async_dynamic_prompt_skipped_on_sync_invoke()
- test_async_middleware_with_can_jump_to_graph_snapshot()
- test_async_on_model_call_decorator()
- test_before_model_decorator()
- test_can_jump_to_integration()
- test_can_jump_to_with_after_model_decorator()
- test_can_jump_to_with_before_model_decorator()
- test_decorators_use_function_names_as_default()
- test_dynamic_prompt_decorator()
- test_dynamic_prompt_integration()
- test_dynamic_prompt_multiple_in_sequence()
- test_dynamic_prompt_overwrites_system_prompt()
- test_dynamic_prompt_uses_state()
- test_get_can_jump_to_no_false_positives()
- test_get_can_jump_to_only_overridden_methods()
- test_hook_config_decorator_on_class_method()
- test_mixed_sync_async_decorators()
- test_mixed_sync_async_decorators_integration()
- test_on_model_call_decorator()
- test_sync_dynamic_prompt_on_async_invoke()
- test_tool()
Dependencies
- collections.abc
- langchain.agents.factory
- langchain.agents.middleware.types
- langchain_core.messages
- langchain_core.tools
- langgraph.prebuilt.tool_node
- langgraph.runtime
- langgraph.types
- pytest
- syrupy.assertion
- tests.unit_tests.agents.model
- typing
- typing_extensions
Source
Frequently Asked Questions
What does test_decorators.py do?
test_decorators.py is a source file in the langchain codebase, written in python. It belongs to the CoreAbstractions domain, MessageSchema subdomain.
What functions are defined in test_decorators.py?
test_decorators.py defines 31 function(s): test_after_model_decorator, test_all_decorators_integration, test_async_after_model_decorator, test_async_after_model_preserves_can_jump_to, test_async_before_model_decorator, test_async_before_model_preserves_can_jump_to, test_async_can_jump_to_integration, test_async_decorators_integration, test_async_dynamic_prompt_decorator, test_async_dynamic_prompt_integration, and 21 more.
What does test_decorators.py depend on?
test_decorators.py imports 13 module(s): collections.abc, langchain.agents.factory, langchain.agents.middleware.types, langchain_core.messages, langchain_core.tools, langgraph.prebuilt.tool_node, langgraph.runtime, langgraph.types, and 5 more.
Where is test_decorators.py in the architecture?
test_decorators.py is located at libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_decorators.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