Home / File/ _response.py — anthropic-sdk-python Source File

_response.py — anthropic-sdk-python Source File

Architecture documentation for _response.py, a python file in the anthropic-sdk-python codebase. 8 imports, 0 dependents.

File python AnthropicClient AsyncAPI 8 imports 3 functions

Entity Profile

Dependency Diagram

graph LR
  aa7d21d4_f6f0_8301_73f8_2ea17597e81e["_response.py"]
  ae7ef022_1bd6_7df9_dff5_878c21d5bd81["_types"]
  aa7d21d4_f6f0_8301_73f8_2ea17597e81e --> ae7ef022_1bd6_7df9_dff5_878c21d5bd81
  e013f75f_3bf9_6b70_751b_8998e8987d31["_models"]
  aa7d21d4_f6f0_8301_73f8_2ea17597e81e --> e013f75f_3bf9_6b70_751b_8998e8987d31
  7c680b7a_888d_7e7d_6ff4_7d8f815c2ccd["_utils._utils"]
  aa7d21d4_f6f0_8301_73f8_2ea17597e81e --> 7c680b7a_888d_7e7d_6ff4_7d8f815c2ccd
  9cd8aadd_3a49_437e_4d19_96e96790f1df["types.message"]
  aa7d21d4_f6f0_8301_73f8_2ea17597e81e --> 9cd8aadd_3a49_437e_4d19_96e96790f1df
  94853ebc_5c35_de66_c152_15bdbefe4121["types.parsed_message"]
  aa7d21d4_f6f0_8301_73f8_2ea17597e81e --> 94853ebc_5c35_de66_c152_15bdbefe4121
  72d245f0_1707_28a2_cfb9_7f975e24af4f["types.beta.beta_message"]
  aa7d21d4_f6f0_8301_73f8_2ea17597e81e --> 72d245f0_1707_28a2_cfb9_7f975e24af4f
  b9d3c142_4c97_eff9_2f08_8f4bcc8752fa["types.beta.parsed_beta_message"]
  aa7d21d4_f6f0_8301_73f8_2ea17597e81e --> b9d3c142_4c97_eff9_2f08_8f4bcc8752fa
  37c05070_ca59_d596_7250_de9d1939227f["typing_extensions"]
  aa7d21d4_f6f0_8301_73f8_2ea17597e81e --> 37c05070_ca59_d596_7250_de9d1939227f
  style aa7d21d4_f6f0_8301_73f8_2ea17597e81e fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

from __future__ import annotations

from typing_extensions import TypeVar

from ..._types import NotGiven
from ..._models import TypeAdapter, construct_type_unchecked
from ..._utils._utils import is_given
from ...types.message import Message
from ...types.parsed_message import ParsedMessage, ParsedTextBlock, ParsedContentBlock
from ...types.beta.beta_message import BetaMessage
from ...types.beta.parsed_beta_message import ParsedBetaMessage, ParsedBetaTextBlock, ParsedBetaContentBlock

ResponseFormatT = TypeVar("ResponseFormatT", default=None)


def parse_text(text: str, output_format: ResponseFormatT | NotGiven) -> ResponseFormatT | None:
    if is_given(output_format):
        adapted_type: TypeAdapter[ResponseFormatT] = TypeAdapter(output_format)
        return adapted_type.validate_json(text)
    return None


def parse_beta_response(
    *,
    output_format: ResponseFormatT | NotGiven,
    response: BetaMessage,
) -> ParsedBetaMessage[ResponseFormatT]:
    content_list: list[ParsedBetaContentBlock[ResponseFormatT]] = []
    for content in response.content:
        if content.type == "text":
            content_list.append(
                construct_type_unchecked(
                    type_=ParsedBetaTextBlock[ResponseFormatT],
                    value={**content.to_dict(), "parsed_output": parse_text(content.text, output_format)},
                )
            )
        else:
            content_list.append(content)  # type: ignore

    return construct_type_unchecked(
        type_=ParsedBetaMessage[ResponseFormatT],
        value={
            **response.to_dict(),
            "content": content_list,
        },
    )


def parse_response(
    *,
    output_format: ResponseFormatT | NotGiven,
    response: Message,
) -> ParsedMessage[ResponseFormatT]:
    content_list: list[ParsedContentBlock[ResponseFormatT]] = []
    for content in response.content:
        if content.type == "text":
            content_list.append(
                construct_type_unchecked(
                    type_=ParsedTextBlock[ResponseFormatT],
                    value={**content.to_dict(), "parsed_output": parse_text(content.text, output_format)},
                )
            )
        else:
            content_list.append(content)  # type: ignore

    return construct_type_unchecked(
        type_=ParsedMessage[ResponseFormatT],
        value={
            **response.to_dict(),
            "content": content_list,
        },
    )

Subdomains

Dependencies

  • _models
  • _types
  • _utils._utils
  • types.beta.beta_message
  • types.beta.parsed_beta_message
  • types.message
  • types.parsed_message
  • typing_extensions

Frequently Asked Questions

What does _response.py do?
_response.py is a source file in the anthropic-sdk-python codebase, written in python. It belongs to the AnthropicClient domain, AsyncAPI subdomain.
What functions are defined in _response.py?
_response.py defines 3 function(s): parse_beta_response, parse_response, parse_text.
What does _response.py depend on?
_response.py imports 8 module(s): _models, _types, _utils._utils, types.beta.beta_message, types.beta.parsed_beta_message, types.message, types.parsed_message, typing_extensions.
Where is _response.py in the architecture?
_response.py is located at src/anthropic/lib/_parse/_response.py (domain: AnthropicClient, subdomain: AsyncAPI, directory: src/anthropic/lib/_parse).

Analyze Your Own Codebase

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

Try Supermodel Free