Home / File/ test_context_editing.py — langchain Source File

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.

File python CoreAbstractions RunnableInterface 8 imports 13 functions 1 classes

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)

Subdomains

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

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