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
Source
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