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.
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)
Domain
Subdomains
Functions
- 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()
- test_create_agent_with_user_context()
- test_model_request_backwards_compatible()
- test_model_request_explicit_none()
- test_model_request_preserves_context_type()
- test_model_response_backwards_compatible()
- test_model_response_with_response_type()
- test_model_response_without_structured()
Classes
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
Source
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