test_context_editing.py — langchain Source File
Architecture documentation for test_context_editing.py, a python file in the langchain codebase. 8 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 239ab399_1733_0de1_e0d6_a721d92e5c9e["test_context_editing.py"] 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3["typing"] 239ab399_1733_0de1_e0d6_a721d92e5c9e --> 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3 833aeadc_c3e9_bfcf_db07_ecb37ad3ba24["langchain_core.language_models.fake_chat_models"] 239ab399_1733_0de1_e0d6_a721d92e5c9e --> 833aeadc_c3e9_bfcf_db07_ecb37ad3ba24 d758344f_537f_649e_f467_b9d7442e86df["langchain_core.messages"] 239ab399_1733_0de1_e0d6_a721d92e5c9e --> d758344f_537f_649e_f467_b9d7442e86df 91721f45_4909_e489_8c1f_084f8bd87145["typing_extensions"] 239ab399_1733_0de1_e0d6_a721d92e5c9e --> 91721f45_4909_e489_8c1f_084f8bd87145 2ccd2b99_491a_02df_2e0b_e0343ada226d["langchain.agents.middleware.context_editing"] 239ab399_1733_0de1_e0d6_a721d92e5c9e --> 2ccd2b99_491a_02df_2e0b_e0343ada226d 50acc543_e5f0_2162_cf07_c2bf50723e0c["langchain.agents.middleware.types"] 239ab399_1733_0de1_e0d6_a721d92e5c9e --> 50acc543_e5f0_2162_cf07_c2bf50723e0c cfe2bde5_180e_e3b0_df2b_55b3ebaca8e7["collections.abc"] 239ab399_1733_0de1_e0d6_a721d92e5c9e --> cfe2bde5_180e_e3b0_df2b_55b3ebaca8e7 5dbfd558_f2f2_9663_3a3f_c317926ac1c1["langgraph.runtime"] 239ab399_1733_0de1_e0d6_a721d92e5c9e --> 5dbfd558_f2f2_9663_3a3f_c317926ac1c1 style 239ab399_1733_0de1_e0d6_a721d92e5c9e fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
"""Tests for the ContextEditingMiddleware."""
from __future__ import annotations
from typing import TYPE_CHECKING, Any, cast
from langchain_core.language_models.fake_chat_models import FakeChatModel
from langchain_core.messages import (
AIMessage,
AnyMessage,
BaseMessage,
MessageLikeRepresentation,
ToolMessage,
)
from typing_extensions import override
from langchain.agents.middleware.context_editing import (
ClearToolUsesEdit,
ContextEditingMiddleware,
)
from langchain.agents.middleware.types import (
AgentState,
ModelRequest,
ModelResponse,
)
if TYPE_CHECKING:
from collections.abc import Sequence
from langgraph.runtime import Runtime
class _TokenCountingChatModel(FakeChatModel):
"""Fake chat model that counts tokens deterministically for tests."""
@override
def get_num_tokens_from_messages(
self,
messages: list[BaseMessage],
tools: Sequence | None = None,
) -> int:
return sum(_count_message_tokens(message) for message in messages)
def _count_message_tokens(message: MessageLikeRepresentation) -> int:
if isinstance(message, (AIMessage, ToolMessage)):
return _count_content(message.content)
if isinstance(message, str):
return len(message)
return len(str(message))
def _count_content(content: MessageLikeRepresentation) -> int:
if isinstance(content, str):
return len(content)
if isinstance(content, list):
return sum(_count_content(block) for block in content)
if isinstance(content, dict):
return len(str(content))
return len(str(content))
// ... (411 more lines)
Domain
Subdomains
Functions
- _count_content()
- _count_message_tokens()
- _fake_runtime()
- _make_state_and_request()
- collections()
- test_clear_tool_outputs_and_inputs()
- test_clear_tool_outputs_and_inputs_async()
- test_exclude_tools_prevents_clearing()
- test_exclude_tools_prevents_clearing_async()
- test_no_edit_when_below_trigger()
- test_no_edit_when_below_trigger_async()
- test_respects_keep_last_tool_results()
- test_respects_keep_last_tool_results_async()
Classes
Dependencies
- collections.abc
- langchain.agents.middleware.context_editing
- langchain.agents.middleware.types
- langchain_core.language_models.fake_chat_models
- langchain_core.messages
- langgraph.runtime
- typing
- typing_extensions
Source
Frequently Asked Questions
What does test_context_editing.py do?
test_context_editing.py is a source file in the langchain codebase, written in python. It belongs to the CoreAbstractions domain, RunnableInterface subdomain.
What functions are defined in test_context_editing.py?
test_context_editing.py defines 13 function(s): _count_content, _count_message_tokens, _fake_runtime, _make_state_and_request, collections, test_clear_tool_outputs_and_inputs, test_clear_tool_outputs_and_inputs_async, test_exclude_tools_prevents_clearing, test_exclude_tools_prevents_clearing_async, test_no_edit_when_below_trigger, and 3 more.
What does test_context_editing.py depend on?
test_context_editing.py imports 8 module(s): collections.abc, langchain.agents.middleware.context_editing, langchain.agents.middleware.types, langchain_core.language_models.fake_chat_models, langchain_core.messages, langgraph.runtime, typing, typing_extensions.
Where is test_context_editing.py in the architecture?
test_context_editing.py is located at libs/langchain_v1/tests/unit_tests/agents/middleware/implementations/test_context_editing.py (domain: CoreAbstractions, subdomain: RunnableInterface, directory: libs/langchain_v1/tests/unit_tests/agents/middleware/implementations).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free