Home / Class/ TestStructuredOutputsBetaHeader Class — anthropic-sdk-python Architecture

TestStructuredOutputsBetaHeader Class — anthropic-sdk-python Architecture

Architecture documentation for the TestStructuredOutputsBetaHeader class in test_output_format_conversion.py from the anthropic-sdk-python codebase.

Entity Profile

Dependency Diagram

graph TD
  91bf20e2_262e_34e5_0c93_658022fb45df["TestStructuredOutputsBetaHeader"]
  17ce5647_6f06_0676_a4a5_e378a3f57cb1["BaseModel"]
  91bf20e2_262e_34e5_0c93_658022fb45df -->|extends| 17ce5647_6f06_0676_a4a5_e378a3f57cb1
  95c8f4d2_e4af_bb89_0668_a558e9dbecb5["test_output_format_conversion.py"]
  91bf20e2_262e_34e5_0c93_658022fb45df -->|defined in| 95c8f4d2_e4af_bb89_0668_a558e9dbecb5
  810805ee_0bad_061b_3d83_a44520475e52["test_parse_adds_structured_outputs_beta_header()"]
  91bf20e2_262e_34e5_0c93_658022fb45df -->|method| 810805ee_0bad_061b_3d83_a44520475e52
  96b04993_07b0_0234_0ee9_323dc41eebc8["test_parse_preserves_existing_betas()"]
  91bf20e2_262e_34e5_0c93_658022fb45df -->|method| 96b04993_07b0_0234_0ee9_323dc41eebc8
  bc6e183d_614b_c54b_133a_4b51b5c3a0f7["test_parse_does_not_duplicate_beta_header()"]
  91bf20e2_262e_34e5_0c93_658022fb45df -->|method| bc6e183d_614b_c54b_133a_4b51b5c3a0f7

Relationship Graph

Source Code

tests/api_resources/beta/test_output_format_conversion.py lines 380–490

class TestStructuredOutputsBetaHeader:
    """Test that structured-outputs-2025-12-15 beta header is added for .parse()."""

    @pytest.mark.skipif(_compat.PYDANTIC_V1, reason="parse with Pydantic models requires Pydantic v2")
    def test_parse_adds_structured_outputs_beta_header(self, client: Anthropic, respx_mock: MockRouter) -> None:
        """Verify .parse() auto-adds structured-outputs-2025-12-15 beta header."""

        class DataModel(BaseModel):
            value: int

        respx_mock.post("/v1/messages?beta=true").mock(
            return_value=httpx.Response(
                200,
                json={
                    "id": "msg_123",
                    "type": "message",
                    "role": "assistant",
                    "model": "claude-sonnet-4-5",
                    "content": [{"text": '{"value": 42}', "type": "text"}],
                    "stop_reason": "end_turn",
                    "usage": {"input_tokens": 10, "output_tokens": 20},
                },
            )
        )

        with warnings.catch_warnings(record=True):
            warnings.simplefilter("always")
            client.beta.messages.parse(
                max_tokens=1024,
                messages=[{"role": "user", "content": "Test"}],
                model="claude-sonnet-4-5",
                output_format=DataModel,
            )

        request = respx_mock.calls.last.request
        assert "anthropic-beta" in request.headers
        assert "structured-outputs-2025-12-15" in request.headers["anthropic-beta"]

    @pytest.mark.skipif(_compat.PYDANTIC_V1, reason="parse with Pydantic models requires Pydantic v2")
    def test_parse_preserves_existing_betas(self, client: Anthropic, respx_mock: MockRouter) -> None:
        """Verify .parse() preserves other beta headers when adding structured-outputs."""

        class DataModel(BaseModel):
            value: int

        respx_mock.post("/v1/messages?beta=true").mock(
            return_value=httpx.Response(
                200,
                json={
                    "id": "msg_123",
                    "type": "message",
                    "role": "assistant",
                    "model": "claude-sonnet-4-5",
                    "content": [{"text": '{"value": 42}', "type": "text"}],
                    "stop_reason": "end_turn",
                    "usage": {"input_tokens": 10, "output_tokens": 20},
                },
            )
        )

        with warnings.catch_warnings(record=True):
            warnings.simplefilter("always")
            client.beta.messages.parse(
                max_tokens=1024,
                messages=[{"role": "user", "content": "Test"}],
                model="claude-sonnet-4-5",
                output_format=DataModel,
                betas=["some-other-beta-feature"],
            )

        request = respx_mock.calls.last.request
        beta_header = request.headers["anthropic-beta"]
        assert "structured-outputs-2025-12-15" in beta_header
        assert "some-other-beta-feature" in beta_header

    @pytest.mark.skipif(_compat.PYDANTIC_V1, reason="parse with Pydantic models requires Pydantic v2")
    def test_parse_does_not_duplicate_beta_header(self, client: Anthropic, respx_mock: MockRouter) -> None:
        """Verify .parse() doesn't duplicate structured-outputs beta if already present."""

        class DataModel(BaseModel):
            value: int

Extends

Frequently Asked Questions

What is the TestStructuredOutputsBetaHeader class?
TestStructuredOutputsBetaHeader is a class in the anthropic-sdk-python codebase, defined in tests/api_resources/beta/test_output_format_conversion.py.
Where is TestStructuredOutputsBetaHeader defined?
TestStructuredOutputsBetaHeader is defined in tests/api_resources/beta/test_output_format_conversion.py at line 380.
What does TestStructuredOutputsBetaHeader extend?
TestStructuredOutputsBetaHeader extends BaseModel.

Analyze Your Own Codebase

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

Try Supermodel Free