Home / Class/ TestProviderStrategyBinding Class — langchain Architecture

TestProviderStrategyBinding Class — langchain Architecture

Architecture documentation for the TestProviderStrategyBinding class in test_responses.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  df2c2abc_4904_553b_6a07_5ca642deeb63["TestProviderStrategyBinding"]
  b2d5d1c9_8094_b06e_1bb8_2f5447a93084["_TestModel"]
  df2c2abc_4904_553b_6a07_5ca642deeb63 -->|extends| b2d5d1c9_8094_b06e_1bb8_2f5447a93084
  4ec8d71c_3a26_be00_a621_f5533ddc4441["test_responses.py"]
  df2c2abc_4904_553b_6a07_5ca642deeb63 -->|defined in| 4ec8d71c_3a26_be00_a621_f5533ddc4441
  ea5e31e8_67a3_9cbd_fdce_6c0e5647a27c["test_from_schema_spec_basic()"]
  df2c2abc_4904_553b_6a07_5ca642deeb63 -->|method| ea5e31e8_67a3_9cbd_fdce_6c0e5647a27c
  8d284355_d3a6_bbaa_9021_ab298038f00c["test_parse_payload_pydantic_success()"]
  df2c2abc_4904_553b_6a07_5ca642deeb63 -->|method| 8d284355_d3a6_bbaa_9021_ab298038f00c
  faec538b_81a9_7663_a4dd_24a2d311fcfb["test_parse_payload_pydantic_validation_error()"]
  df2c2abc_4904_553b_6a07_5ca642deeb63 -->|method| faec538b_81a9_7663_a4dd_24a2d311fcfb
  d3a71b8c_8a11_d776_c477_162f1bcedf56["test_parse_payload_pydantic_json_error()"]
  df2c2abc_4904_553b_6a07_5ca642deeb63 -->|method| d3a71b8c_8a11_d776_c477_162f1bcedf56
  7c4566d9_0cf8_0ceb_a757_bdc536ae7fc0["test_parse_content_list()"]
  df2c2abc_4904_553b_6a07_5ca642deeb63 -->|method| 7c4566d9_0cf8_0ceb_a757_bdc536ae7fc0

Relationship Graph

Source Code

libs/langchain_v1/tests/unit_tests/agents/test_responses.py lines 206–267

class TestProviderStrategyBinding:
    """Test ProviderStrategyBinding dataclass and its methods."""

    def test_from_schema_spec_basic(self) -> None:
        """Test basic ProviderStrategyBinding creation from SchemaSpec."""
        schema_spec = _SchemaSpec(schema=_TestModel)
        tool_binding = ProviderStrategyBinding.from_schema_spec(schema_spec)

        assert tool_binding.schema == _TestModel
        assert tool_binding.schema_kind == "pydantic"

    def test_parse_payload_pydantic_success(self) -> None:
        """Test successful parsing for Pydantic model."""
        schema_spec = _SchemaSpec(schema=_TestModel)
        tool_binding = ProviderStrategyBinding.from_schema_spec(schema_spec)

        message = AIMessage(content='{"name": "John", "age": 30}')
        result = tool_binding.parse(message)

        assert isinstance(result, _TestModel)
        assert result.name == "John"
        assert result.age == 30
        assert result.email == "default@example.com"  # default value

    def test_parse_payload_pydantic_validation_error(self) -> None:
        """Test parsing failure for invalid Pydantic data."""
        schema_spec = _SchemaSpec(schema=_TestModel)
        tool_binding = ProviderStrategyBinding.from_schema_spec(schema_spec)

        # Missing required field 'name'
        message = AIMessage(content='{"age": 30}')

        with pytest.raises(ValueError, match="Failed to parse data to _TestModel"):
            tool_binding.parse(message)

    def test_parse_payload_pydantic_json_error(self) -> None:
        """Test parsing failure for invalid JSON data."""
        schema_spec = _SchemaSpec(schema=_TestModel)
        tool_binding = ProviderStrategyBinding.from_schema_spec(schema_spec)

        message = AIMessage(content="invalid json")

        with pytest.raises(
            ValueError,
            match="Native structured output expected valid JSON for _TestModel, but parsing failed",
        ):
            tool_binding.parse(message)

    def test_parse_content_list(self) -> None:
        """Test successful parsing for Pydantic model with content as list."""
        schema_spec = _SchemaSpec(schema=_TestModel)
        tool_binding = ProviderStrategyBinding.from_schema_spec(schema_spec)

        message = AIMessage(
            content=['{"name":', {"content": ' "John",'}, {"type": "text", "text": ' "age": 30}'}]
        )
        result = tool_binding.parse(message)

        assert isinstance(result, _TestModel)
        assert result.name == "John"
        assert result.age == 30
        assert result.email == "default@example.com"  # default value

Extends

Frequently Asked Questions

What is the TestProviderStrategyBinding class?
TestProviderStrategyBinding is a class in the langchain codebase, defined in libs/langchain_v1/tests/unit_tests/agents/test_responses.py.
Where is TestProviderStrategyBinding defined?
TestProviderStrategyBinding is defined in libs/langchain_v1/tests/unit_tests/agents/test_responses.py at line 206.
What does TestProviderStrategyBinding extend?
TestProviderStrategyBinding extends _TestModel.

Analyze Your Own Codebase

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

Try Supermodel Free