Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

from typing import Union
from typing_extensions import Literal, TypeAlias
from typing_extensions import Literal, Annotated, TypeAlias

from ..._utils import PropertyInfo
from ..._models import BaseModel
from .beta_tool_search_tool_result_error import BetaToolSearchToolResultError
from .beta_tool_search_tool_search_result_block import BetaToolSearchToolSearchResultBlock

__all__ = ["BetaToolSearchToolResultBlock", "Content"]

Content: TypeAlias = Union[BetaToolSearchToolResultError, BetaToolSearchToolSearchResultBlock]
Content: TypeAlias = Annotated[
Union[BetaToolSearchToolResultError, BetaToolSearchToolSearchResultBlock], PropertyInfo(discriminator="type")
]


class BetaToolSearchToolResultBlock(BaseModel):
Expand Down
7 changes: 5 additions & 2 deletions src/anthropic/types/tool_search_tool_result_block.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

from typing import Union
from typing_extensions import Literal, TypeAlias
from typing_extensions import Literal, Annotated, TypeAlias

from .._utils import PropertyInfo
from .._models import BaseModel
from .tool_search_tool_result_error import ToolSearchToolResultError
from .tool_search_tool_search_result_block import ToolSearchToolSearchResultBlock

__all__ = ["ToolSearchToolResultBlock", "Content"]

Content: TypeAlias = Union[ToolSearchToolResultError, ToolSearchToolSearchResultBlock]
Content: TypeAlias = Annotated[
Union[ToolSearchToolResultError, ToolSearchToolSearchResultBlock], PropertyInfo(discriminator="type")
]


class ToolSearchToolResultBlock(BaseModel):
Expand Down
32 changes: 32 additions & 0 deletions tests/test_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -891,6 +891,38 @@ class ModelB(BaseModel):
assert isinstance(m, ModelB)


def test_tool_search_tool_result_construct_discriminates_loose_content() -> None:
from anthropic.types.tool_search_tool_result_block import ToolSearchToolResultBlock
from anthropic.types.tool_search_tool_search_result_block import ToolSearchToolSearchResultBlock

block = ToolSearchToolResultBlock.construct(
content={
"type": "tool_search_tool_search_result",
"tool_references": [{"type": "tool_reference"}],
},
tool_use_id="srvtoolu_test",
type="tool_search_tool_result",
)

assert isinstance(block.content, ToolSearchToolSearchResultBlock)


def test_beta_tool_search_tool_result_construct_discriminates_loose_content() -> None:
from anthropic.types.beta.beta_tool_search_tool_result_block import BetaToolSearchToolResultBlock
from anthropic.types.beta.beta_tool_search_tool_search_result_block import BetaToolSearchToolSearchResultBlock

block = BetaToolSearchToolResultBlock.construct(
content={
"type": "tool_search_tool_search_result",
"tool_references": [{"type": "tool_reference"}],
},
tool_use_id="srvtoolu_test",
type="tool_search_tool_result",
)

assert isinstance(block.content, BetaToolSearchToolSearchResultBlock)


def test_nested_discriminated_union() -> None:
class InnerType1(BaseModel):
type: Literal["type_1"]
Expand Down