Home / Class/ TestStateAndRuntime Class — langchain Architecture

TestStateAndRuntime Class — langchain Architecture

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

Entity Profile

Dependency Diagram

graph TD
  2e06bf85_c70b_137b_2073_10124e82a7df["TestStateAndRuntime"]
  949c7cf4_56fe_f3b4_cd89_9631a7e9cb1e["AgentMiddleware"]
  2e06bf85_c70b_137b_2073_10124e82a7df -->|extends| 949c7cf4_56fe_f3b4_cd89_9631a7e9cb1e
  0f829642_e361_67a1_cbca_f82839bbbd31["GenericFakeChatModel"]
  2e06bf85_c70b_137b_2073_10124e82a7df -->|extends| 0f829642_e361_67a1_cbca_f82839bbbd31
  573473e5_eb93_a7d7_84ba_c975071c09af["test_wrap_model_call.py"]
  2e06bf85_c70b_137b_2073_10124e82a7df -->|defined in| 573473e5_eb93_a7d7_84ba_c975071c09af
  1dfd7cd7_159f_dd46_6b9f_ca3aa5adbf54["test_access_state_in_middleware()"]
  2e06bf85_c70b_137b_2073_10124e82a7df -->|method| 1dfd7cd7_159f_dd46_6b9f_ca3aa5adbf54
  f3897da6_d8aa_f65f_fba2_6fce0f163483["test_retry_with_state_tracking()"]
  2e06bf85_c70b_137b_2073_10124e82a7df -->|method| f3897da6_d8aa_f65f_fba2_6fce0f163483

Relationship Graph

Source Code

libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_wrap_model_call.py lines 604–675

class TestStateAndRuntime:
    """Test state and runtime access in wrap_model_call."""

    def test_access_state_in_middleware(self) -> None:
        """Test middleware can read and use state."""
        state_values = []

        class StateAwareMiddleware(AgentMiddleware):
            def wrap_model_call(
                self,
                request: ModelRequest,
                handler: Callable[[ModelRequest], ModelResponse],
            ) -> ModelCallResult:
                # Access state from request
                state_values.append(
                    {
                        "messages_count": len(request.state.get("messages", [])),
                    }
                )
                return handler(request)

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

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

        assert len(state_values) == 1
        assert state_values[0]["messages_count"] == 1  # Just The HumanMessage
        assert result["messages"][1].content == "Response"

    def test_retry_with_state_tracking(self) -> None:
        """Test middleware that tracks retry count in state."""

        class StateTrackingRetryMiddleware(AgentMiddleware):
            def wrap_model_call(
                self,
                request: ModelRequest,
                handler: Callable[[ModelRequest], ModelResponse],
            ) -> ModelCallResult:
                max_retries = 2
                for attempt in range(max_retries):
                    try:
                        return handler(request)
                    except Exception:
                        if attempt == max_retries - 1:
                            raise
                pytest.fail("Should have raised an exception")

        call_count = {"value": 0}

        class FailOnceThenSucceed(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 = FailOnceThenSucceed(messages=iter([AIMessage(content="Success")]))
        agent = create_agent(model=model, middleware=[StateTrackingRetryMiddleware()])

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

        assert call_count["value"] == 2  # Failed once, succeeded second time
        assert result["messages"][1].content == "Success"

Frequently Asked Questions

What is the TestStateAndRuntime class?
TestStateAndRuntime 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 TestStateAndRuntime defined?
TestStateAndRuntime is defined in libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_wrap_model_call.py at line 604.
What does TestStateAndRuntime extend?
TestStateAndRuntime extends AgentMiddleware, GenericFakeChatModel.

Analyze Your Own Codebase

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

Try Supermodel Free