Home / File/ test_composition.py — langchain Source File

test_composition.py — langchain Source File

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

File python CoreAbstractions Serialization 8 imports 2 functions 3 classes

Entity Profile

Dependency Diagram

graph LR
  529538f3_9470_dbd3_2a47_9e95e11a4afe["test_composition.py"]
  cfe2bde5_180e_e3b0_df2b_55b3ebaca8e7["collections.abc"]
  529538f3_9470_dbd3_2a47_9e95e11a4afe --> cfe2bde5_180e_e3b0_df2b_55b3ebaca8e7
  8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3["typing"]
  529538f3_9470_dbd3_2a47_9e95e11a4afe --> 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3
  d758344f_537f_649e_f467_b9d7442e86df["langchain_core.messages"]
  529538f3_9470_dbd3_2a47_9e95e11a4afe --> d758344f_537f_649e_f467_b9d7442e86df
  5dbfd558_f2f2_9663_3a3f_c317926ac1c1["langgraph.runtime"]
  529538f3_9470_dbd3_2a47_9e95e11a4afe --> 5dbfd558_f2f2_9663_3a3f_c317926ac1c1
  0e93d2ee_1fb2_3a0f_5a76_8aba32d0d4ed["langgraph.types"]
  529538f3_9470_dbd3_2a47_9e95e11a4afe --> 0e93d2ee_1fb2_3a0f_5a76_8aba32d0d4ed
  839143dd_e377_b604_96de_3624dbdffeb5["langchain.agents"]
  529538f3_9470_dbd3_2a47_9e95e11a4afe --> 839143dd_e377_b604_96de_3624dbdffeb5
  6f5e6c4b_1a3f_fd09_4697_631c27ef1033["langchain.agents.factory"]
  529538f3_9470_dbd3_2a47_9e95e11a4afe --> 6f5e6c4b_1a3f_fd09_4697_631c27ef1033
  50acc543_e5f0_2162_cf07_c2bf50723e0c["langchain.agents.middleware.types"]
  529538f3_9470_dbd3_2a47_9e95e11a4afe --> 50acc543_e5f0_2162_cf07_c2bf50723e0c
  style 529538f3_9470_dbd3_2a47_9e95e11a4afe fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

"""Unit tests for _chain_model_call_handlers handler composition."""

from collections.abc import Callable
from typing import Any, TypedDict, cast

from langchain_core.messages import AIMessage
from langgraph.runtime import Runtime
from langgraph.types import Command

from langchain.agents import AgentState
from langchain.agents.factory import _chain_model_call_handlers, _ComposedExtendedModelResponse
from langchain.agents.middleware.types import ExtendedModelResponse, ModelRequest, ModelResponse


def create_test_request(**kwargs: Any) -> ModelRequest:
    """Helper to create a `ModelRequest` with sensible defaults."""
    defaults: dict[str, Any] = {
        "messages": [],
        "model": None,
        "system_prompt": None,
        "tool_choice": None,
        "tools": [],
        "response_format": None,
        "state": {},
        "runtime": cast("Runtime", object()),
    }
    defaults.update(kwargs)
    return ModelRequest(**defaults)


def create_mock_base_handler(content: str = "test") -> Callable[[ModelRequest], ModelResponse]:
    """Helper to create a base handler that returns `ModelResponse`."""

    def mock_base_handler(req: ModelRequest) -> ModelResponse:
        return ModelResponse(result=[AIMessage(content=content)], structured_response=None)

    return mock_base_handler


class TestChainModelCallHandlers:
    """Test the `_chain_model_call_handlers` composition function."""

    def test_empty_handlers_returns_none(self) -> None:
        """Test that empty handlers list returns None."""
        result = _chain_model_call_handlers([])
        assert result is None

    def test_single_handler_returns_unchanged(self) -> None:
        """Test that single handler is wrapped to normalize output."""

        def handler(
            request: ModelRequest, base_handler: Callable[[ModelRequest], ModelResponse]
        ) -> ModelResponse:
            return base_handler(request)

        result = _chain_model_call_handlers([handler])
        # Result is wrapped to normalize, so it won't be identical
        assert result is not None
        assert callable(result)

// ... (290 more lines)

Subdomains

Dependencies

  • collections.abc
  • langchain.agents
  • langchain.agents.factory
  • langchain.agents.middleware.types
  • langchain_core.messages
  • langgraph.runtime
  • langgraph.types
  • typing

Frequently Asked Questions

What does test_composition.py do?
test_composition.py is a source file in the langchain codebase, written in python. It belongs to the CoreAbstractions domain, Serialization subdomain.
What functions are defined in test_composition.py?
test_composition.py defines 2 function(s): create_mock_base_handler, create_test_request.
What does test_composition.py depend on?
test_composition.py imports 8 module(s): collections.abc, langchain.agents, langchain.agents.factory, langchain.agents.middleware.types, langchain_core.messages, langgraph.runtime, langgraph.types, typing.
Where is test_composition.py in the architecture?
test_composition.py is located at libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_composition.py (domain: CoreAbstractions, subdomain: Serialization, 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