Home / Class/ TestReasoningStructuredOutputParser Class — langchain Architecture

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"

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