Home / Class/ TestEdgeCases Class — langchain Architecture

TestEdgeCases Class — langchain Architecture

Architecture documentation for the TestEdgeCases class in test_wrap_model_call.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  52b18729_38be_e6a4_be4a_d400d28f5c7c["TestEdgeCases"]
  949c7cf4_56fe_f3b4_cd89_9631a7e9cb1e["AgentMiddleware"]
  52b18729_38be_e6a4_be4a_d400d28f5c7c -->|extends| 949c7cf4_56fe_f3b4_cd89_9631a7e9cb1e
  0f829642_e361_67a1_cbca_f82839bbbd31["GenericFakeChatModel"]
  52b18729_38be_e6a4_be4a_d400d28f5c7c -->|extends| 0f829642_e361_67a1_cbca_f82839bbbd31
  573473e5_eb93_a7d7_84ba_c975071c09af["test_wrap_model_call.py"]
  52b18729_38be_e6a4_be4a_d400d28f5c7c -->|defined in| 573473e5_eb93_a7d7_84ba_c975071c09af
  58b10ff1_d4f1_f874_5741_fed4f53f0969["test_middleware_modifies_request()"]
  52b18729_38be_e6a4_be4a_d400d28f5c7c -->|method| 58b10ff1_d4f1_f874_5741_fed4f53f0969
  85715e46_184f_09af_1f83_464cff909805["test_multiple_yields_retry_different_models()"]
  52b18729_38be_e6a4_be4a_d400d28f5c7c -->|method| 85715e46_184f_09af_1f83_464cff909805

Relationship Graph

Source Code

libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_wrap_model_call.py lines 1535–1600

class TestEdgeCases:
    """Test edge cases and error conditions."""

    def test_middleware_modifies_request(self) -> None:
        """Test middleware that modifies the request before execution."""
        modified_messages = []

        class RequestModifyingMiddleware(AgentMiddleware):
            def wrap_model_call(
                self,
                request: ModelRequest,
                handler: Callable[[ModelRequest], ModelResponse],
            ) -> ModelCallResult:
                # Add a system message to the request
                modified_request = request
                modified_messages.append(len(modified_request.messages))
                return handler(modified_request)

        model = GenericFakeChatModel(messages=iter([AIMessage(content="Response")]))
        agent = create_agent(model=model, middleware=[RequestModifyingMiddleware()])

        agent.invoke({"messages": [HumanMessage("Test")]})

        assert len(modified_messages) == 1

    def test_multiple_yields_retry_different_models(self) -> None:
        """Test middleware that tries multiple different models."""
        attempts = []

        class MultiModelRetryMiddleware(AgentMiddleware):
            def wrap_model_call(
                self,
                request: ModelRequest,
                handler: Callable[[ModelRequest], ModelResponse],
            ) -> ModelCallResult:
                attempts.append("first-attempt")
                try:
                    return handler(request)
                except Exception:
                    attempts.append("retry-attempt")
                    return handler(request)

        call_count = {"value": 0}

        class FailFirstSucceedSecond(GenericFakeChatModel):
            @override
            def _generate(
                self,
                messages: list[BaseMessage],
                stop: list[str] | None = None,
                run_manager: CallbackManagerForLLMRun | None = None,
                **kwargs: Any,
            ) -> ChatResult:
                call_count["value"] += 1
                if call_count["value"] == 1:
                    msg = "First fails"
                    raise ValueError(msg)
                return super()._generate(messages, **kwargs)

        model = FailFirstSucceedSecond(messages=iter([AIMessage(content="Success")]))
        agent = create_agent(model=model, middleware=[MultiModelRetryMiddleware()])

        result = agent.invoke({"messages": [HumanMessage("Test")]})

        assert attempts == ["first-attempt", "retry-attempt"]
        assert result["messages"][1].content == "Success"

Frequently Asked Questions

What is the TestEdgeCases class?
TestEdgeCases is a class in the langchain codebase, defined in libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_wrap_model_call.py.
Where is TestEdgeCases defined?
TestEdgeCases is defined in libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_wrap_model_call.py at line 1535.
What does TestEdgeCases extend?
TestEdgeCases extends AgentMiddleware, GenericFakeChatModel.

Analyze Your Own Codebase

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

Try Supermodel Free