TestReasoningStructuredOutputParser Class — langchain Architecture
Architecture documentation for the TestReasoningStructuredOutputParser class in test_output_parsers.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD 78e02bb9_2694_e9a5_aaa1_e8312a190104["TestReasoningStructuredOutputParser"] 6aeb35ac_9caa_86bb_c421_f3cac32e26dd["MockPerson"] 78e02bb9_2694_e9a5_aaa1_e8312a190104 -->|extends| 6aeb35ac_9caa_86bb_c421_f3cac32e26dd 8336cc3f_4dc4_0a3e_bb99_c924be20b574["MockCompany"] 78e02bb9_2694_e9a5_aaa1_e8312a190104 -->|extends| 8336cc3f_4dc4_0a3e_bb99_c924be20b574 0dd75536_e009_da4d_0090_3d46069fce40["OutputParserException"] 78e02bb9_2694_e9a5_aaa1_e8312a190104 -->|extends| 0dd75536_e009_da4d_0090_3d46069fce40 404c4f2e_2e78_7429_00c2_95ca3f208765["test_output_parsers.py"] 78e02bb9_2694_e9a5_aaa1_e8312a190104 -->|defined in| 404c4f2e_2e78_7429_00c2_95ca3f208765 656d3109_857c_2773_70d2_b7ca2feedaa8["test_parse_structured_output_without_think_tags()"] 78e02bb9_2694_e9a5_aaa1_e8312a190104 -->|method| 656d3109_857c_2773_70d2_b7ca2feedaa8 7112f348_8dec_3d7c_78a6_1836940195d5["test_parse_structured_output_with_think_tags()"] 78e02bb9_2694_e9a5_aaa1_e8312a190104 -->|method| 7112f348_8dec_3d7c_78a6_1836940195d5 d4be0b2b_e310_0ba1_1ba3_8c7795a4c42d["test_parse_structured_output_with_multiple_think_tags()"] 78e02bb9_2694_e9a5_aaa1_e8312a190104 -->|method| d4be0b2b_e310_0ba1_1ba3_8c7795a4c42d eeb8cda0_ab7e_301e_cb31_33b8bb276b70["test_parse_structured_output_markdown_with_think_tags()"] 78e02bb9_2694_e9a5_aaa1_e8312a190104 -->|method| eeb8cda0_ab7e_301e_cb31_33b8bb276b70 67c04840_292f_8c8c_71a6_9fc40f74d48b["test_parse_nested_structured_output_with_think_tags()"] 78e02bb9_2694_e9a5_aaa1_e8312a190104 -->|method| 67c04840_292f_8c8c_71a6_9fc40f74d48b e3942803_c8c6_fae0_149a_c849acffa231["test_parse_invalid_structured_output_with_think_tags()"] 78e02bb9_2694_e9a5_aaa1_e8312a190104 -->|method| e3942803_c8c6_fae0_149a_c849acffa231 a92c535e_cb8a_ac6c_9073_6ed68ed1febf["test_parse_structured_wrong_type_with_think_tags()"] 78e02bb9_2694_e9a5_aaa1_e8312a190104 -->|method| a92c535e_cb8a_ac6c_9073_6ed68ed1febf 0a43c517_7991_6fe7_3864_5b6c33e1e3ab["test_parse_empty_after_stripping_think_tags()"] 78e02bb9_2694_e9a5_aaa1_e8312a190104 -->|method| 0a43c517_7991_6fe7_3864_5b6c33e1e3ab 28769086_0795_26e6_98d5_61378d9d9e4a["test_get_format_instructions()"] 78e02bb9_2694_e9a5_aaa1_e8312a190104 -->|method| 28769086_0795_26e6_98d5_61378d9d9e4a d6d23f88_3faf_5572_d85a_c410fdd38d40["test_partial_structured_parsing_with_think_tags()"] 78e02bb9_2694_e9a5_aaa1_e8312a190104 -->|method| d6d23f88_3faf_5572_d85a_c410fdd38d40
Relationship Graph
Source Code
libs/partners/perplexity/tests/unit_tests/test_output_parsers.py lines 191–356
class TestReasoningStructuredOutputParser:
"""Tests for ReasoningStructuredOutputParser."""
def test_parse_structured_output_without_think_tags(self) -> None:
"""Test parsing structured output without think tags."""
parser: ReasoningStructuredOutputParser[MockPerson] = (
ReasoningStructuredOutputParser(pydantic_object=MockPerson)
)
text = '{"name": "John Doe", "age": 30, "email": "john@example.com"}'
generation = Generation(text=text)
result = parser.parse_result([generation])
assert isinstance(result, MockPerson)
assert result.name == "John Doe"
assert result.age == 30
assert result.email == "john@example.com"
def test_parse_structured_output_with_think_tags(self) -> None:
"""Test parsing structured output with think tags."""
parser: ReasoningStructuredOutputParser[MockPerson] = (
ReasoningStructuredOutputParser(pydantic_object=MockPerson)
)
text = '<think>Let me create a person\
object</think>{"name": "John Doe", "age": 30}'
generation = Generation(text=text)
result = parser.parse_result([generation])
assert isinstance(result, MockPerson)
assert result.name == "John Doe"
assert result.age == 30
assert result.email is None
def test_parse_structured_output_with_multiple_think_tags(self) -> None:
"""Test parsing with multiple think tags."""
parser: ReasoningStructuredOutputParser[MockPerson] = (
ReasoningStructuredOutputParser(pydantic_object=MockPerson)
)
text = """<think>Step 1: Determine name</think>
<think>Step 2: Determine age</think>
{"name": "Jane Smith", "age": 25}"""
generation = Generation(text=text)
result = parser.parse_result([generation])
assert isinstance(result, MockPerson)
assert result.name == "Jane Smith"
assert result.age == 25
def test_parse_structured_output_markdown_with_think_tags(self) -> None:
"""Test parsing markdown-wrapped structured output with think tags."""
parser: ReasoningStructuredOutputParser[MockPerson] = (
ReasoningStructuredOutputParser(pydantic_object=MockPerson)
)
text = """<think>Building person object</think>
```json
{"name": "Alice Brown", "age": 35, "email": "alice@example.com"}
```"""
generation = Generation(text=text)
result = parser.parse_result([generation])
assert isinstance(result, MockPerson)
assert result.name == "Alice Brown"
assert result.age == 35
assert result.email == "alice@example.com"
def test_parse_nested_structured_output_with_think_tags(self) -> None:
"""Test parsing nested Pydantic models with think tags."""
parser: ReasoningStructuredOutputParser[MockCompany] = (
ReasoningStructuredOutputParser(pydantic_object=MockCompany)
)
text = """<think>Creating company with employees</think>
{
"company_name": "Tech Corp",
"founded_year": 2020,
"employees": [
{"name": "John", "age": 30},
{"name": "Jane", "age": 28}
]
}"""
generation = Generation(text=text)
result = parser.parse_result([generation])
assert isinstance(result, MockCompany)
assert result.company_name == "Tech Corp"
assert result.founded_year == 2020
assert len(result.employees) == 2
assert result.employees[0].name == "John"
Source
Frequently Asked Questions
What is the TestReasoningStructuredOutputParser class?
TestReasoningStructuredOutputParser is a class in the langchain codebase, defined in libs/partners/perplexity/tests/unit_tests/test_output_parsers.py.
Where is TestReasoningStructuredOutputParser defined?
TestReasoningStructuredOutputParser is defined in libs/partners/perplexity/tests/unit_tests/test_output_parsers.py at line 191.
What does TestReasoningStructuredOutputParser extend?
TestReasoningStructuredOutputParser extends MockPerson, MockCompany, OutputParserException.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free