Home / File/ test_decorators.py — langchain Source File

test_decorators.py — langchain Source File

Architecture documentation for test_decorators.py, a python file in the langchain codebase. 13 imports, 0 dependents.

File python CoreAbstractions MessageSchema 13 imports 31 functions 5 classes

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)

Subdomains

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

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