Home / File/ test_middleware_typing.py — langchain Source File

test_middleware_typing.py — langchain Source File

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

File python CoreAbstractions Serialization 11 imports 17 functions 14 classes

Entity Profile

Dependency Diagram

graph LR
  d7b6bb09_fb06_a387_93d5_ff92c7815ba7["test_middleware_typing.py"]
  8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3["typing"]
  d7b6bb09_fb06_a387_93d5_ff92c7815ba7 --> 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3
  120e2591_3e15_b895_72b6_cb26195e40a6["pytest"]
  d7b6bb09_fb06_a387_93d5_ff92c7815ba7 --> 120e2591_3e15_b895_72b6_cb26195e40a6
  833aeadc_c3e9_bfcf_db07_ecb37ad3ba24["langchain_core.language_models.fake_chat_models"]
  d7b6bb09_fb06_a387_93d5_ff92c7815ba7 --> 833aeadc_c3e9_bfcf_db07_ecb37ad3ba24
  d758344f_537f_649e_f467_b9d7442e86df["langchain_core.messages"]
  d7b6bb09_fb06_a387_93d5_ff92c7815ba7 --> d758344f_537f_649e_f467_b9d7442e86df
  6e58aaea_f08e_c099_3cc7_f9567bfb1ae7["pydantic"]
  d7b6bb09_fb06_a387_93d5_ff92c7815ba7 --> 6e58aaea_f08e_c099_3cc7_f9567bfb1ae7
  91721f45_4909_e489_8c1f_084f8bd87145["typing_extensions"]
  d7b6bb09_fb06_a387_93d5_ff92c7815ba7 --> 91721f45_4909_e489_8c1f_084f8bd87145
  839143dd_e377_b604_96de_3624dbdffeb5["langchain.agents"]
  d7b6bb09_fb06_a387_93d5_ff92c7815ba7 --> 839143dd_e377_b604_96de_3624dbdffeb5
  50acc543_e5f0_2162_cf07_c2bf50723e0c["langchain.agents.middleware.types"]
  d7b6bb09_fb06_a387_93d5_ff92c7815ba7 --> 50acc543_e5f0_2162_cf07_c2bf50723e0c
  cfe2bde5_180e_e3b0_df2b_55b3ebaca8e7["collections.abc"]
  d7b6bb09_fb06_a387_93d5_ff92c7815ba7 --> cfe2bde5_180e_e3b0_df2b_55b3ebaca8e7
  f4701074_ad2b_c823_851a_8836d4100a58["langgraph.graph.state"]
  d7b6bb09_fb06_a387_93d5_ff92c7815ba7 --> f4701074_ad2b_c823_851a_8836d4100a58
  5dbfd558_f2f2_9663_3a3f_c317926ac1c1["langgraph.runtime"]
  d7b6bb09_fb06_a387_93d5_ff92c7815ba7 --> 5dbfd558_f2f2_9663_3a3f_c317926ac1c1
  style d7b6bb09_fb06_a387_93d5_ff92c7815ba7 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

"""Test file to verify type safety in middleware (ContextT and ResponseT).

This file demonstrates:
1. Backwards compatible middlewares (no type params specified) - works with defaults
2. Correctly typed middlewares (ContextT/ResponseT match) - full type safety
3. Type errors that are caught when types don't match

Run type check: uv run --group typing mypy <this file>
Run tests: uv run --group test pytest <this file> -v

To see type errors being caught, run:
  uv run --group typing mypy .../test_middleware_type_errors.py
"""

from __future__ import annotations

from typing import TYPE_CHECKING, Any

import pytest
from langchain_core.language_models.fake_chat_models import GenericFakeChatModel
from langchain_core.messages import AIMessage, HumanMessage
from pydantic import BaseModel
from typing_extensions import TypedDict

from langchain.agents import create_agent
from langchain.agents.middleware.types import (
    AgentMiddleware,
    AgentState,
    ContextT,
    ModelRequest,
    ModelResponse,
    ResponseT,
    before_model,
)

if TYPE_CHECKING:
    from collections.abc import Awaitable, Callable

    from langgraph.graph.state import CompiledStateGraph
    from langgraph.runtime import Runtime


# =============================================================================
# Context and Response schemas for testing
# =============================================================================
class UserContext(TypedDict):
    """Context with user information."""

    user_id: str
    user_name: str


class SessionContext(TypedDict):
    """Different context schema."""

    session_id: str
    expires_at: int


class AnalysisResult(BaseModel):
// ... (384 more lines)

Subdomains

Dependencies

  • collections.abc
  • langchain.agents
  • langchain.agents.middleware.types
  • langchain_core.language_models.fake_chat_models
  • langchain_core.messages
  • langgraph.graph.state
  • langgraph.runtime
  • pydantic
  • pytest
  • typing
  • typing_extensions

Frequently Asked Questions

What does test_middleware_typing.py do?
test_middleware_typing.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_middleware_typing.py?
test_middleware_typing.py defines 17 function(s): backwards_compatible_decorator, collections, fake_model, test_async_middleware_with_context, test_async_middleware_with_response, test_create_agent_fully_typed, test_create_agent_no_context_schema, test_create_agent_with_flexible_middleware, test_create_agent_with_response_middleware, test_create_agent_with_session_context, and 7 more.
What does test_middleware_typing.py depend on?
test_middleware_typing.py imports 11 module(s): collections.abc, langchain.agents, langchain.agents.middleware.types, langchain_core.language_models.fake_chat_models, langchain_core.messages, langgraph.graph.state, langgraph.runtime, pydantic, and 3 more.
Where is test_middleware_typing.py in the architecture?
test_middleware_typing.py is located at libs/langchain_v1/tests/unit_tests/agents/middleware_typing/test_middleware_typing.py (domain: CoreAbstractions, subdomain: Serialization, directory: libs/langchain_v1/tests/unit_tests/agents/middleware_typing).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free