From 01cff26a0dd48d6447d104a3db0678a0bf080e62 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 25 Feb 2026 19:17:40 +0000 Subject: [PATCH 1/6] codegen metadata --- .stats.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.stats.yml b/.stats.yml index 83cae016..401e16a9 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 34 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/anthropic%2Fanthropic-60fbf504538934c934f523d456bbf3cd99e7f1e2275041f74d5beb627bf38e19.yml openapi_spec_hash: 58021ab18daccd5c45a930ffd7d6ab4d -config_hash: bf86c14604e5705bfb2f351adf702c02 +config_hash: e07d695b5d2034d76e68b19aedf2b73c From 5052d66bfafd1242be8d61538d3e31540ab43d2d Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 25 Feb 2026 19:38:26 +0000 Subject: [PATCH 2/6] codegen metadata --- .stats.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.stats.yml b/.stats.yml index 401e16a9..1e2535ba 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 34 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/anthropic%2Fanthropic-60fbf504538934c934f523d456bbf3cd99e7f1e2275041f74d5beb627bf38e19.yml openapi_spec_hash: 58021ab18daccd5c45a930ffd7d6ab4d -config_hash: e07d695b5d2034d76e68b19aedf2b73c +config_hash: a9182513cad7c15456caf65589453253 From 42b886e09ccf416645e99bffd78693a05ad5de88 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 25 Feb 2026 22:49:05 +0000 Subject: [PATCH 3/6] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 1e2535ba..257b3ca3 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 34 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/anthropic%2Fanthropic-60fbf504538934c934f523d456bbf3cd99e7f1e2275041f74d5beb627bf38e19.yml +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/anthropic%2Fanthropic-b67d0c7de1f0bf96172a508a9bdc51cb6d766d7e0783a9b986220b369e02949b.yml openapi_spec_hash: 58021ab18daccd5c45a930ffd7d6ab4d -config_hash: a9182513cad7c15456caf65589453253 +config_hash: a52ab5e81a19280010e599841a123b1a From 09656acef77fa459d30d811bd51aa780a567182b Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 26 Feb 2026 17:23:47 +0000 Subject: [PATCH 4/6] chore(ci): bump uv version --- .github/workflows/ci.yml | 6 +++--- .github/workflows/detect-breaking-changes.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f7d266c7..b0239b58 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,7 +24,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v5 with: - version: '0.9.13' + version: '0.10.2' - name: Install dependencies run: uv sync --all-extras @@ -46,7 +46,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v5 with: - version: '0.9.13' + version: '0.10.2' - name: Install dependencies run: uv sync --all-extras @@ -80,7 +80,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v5 with: - version: '0.9.13' + version: '0.10.2' - name: Bootstrap run: ./scripts/bootstrap diff --git a/.github/workflows/detect-breaking-changes.yml b/.github/workflows/detect-breaking-changes.yml index bbdff7d5..4a1f43e5 100644 --- a/.github/workflows/detect-breaking-changes.yml +++ b/.github/workflows/detect-breaking-changes.yml @@ -23,7 +23,7 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v5 with: - version: '0.9.13' + version: '0.10.2' - name: Install dependencies run: uv sync --all-extras - name: Detect removed symbols From 3ae7ff6ff7af8a881706ae8068b1040a23c96fbd Mon Sep 17 00:00:00 2001 From: Kar Petrosyan <92274156+karpetrosyan@users.noreply.github.com> Date: Fri, 27 Feb 2026 03:13:53 +0400 Subject: [PATCH 5/6] fix(tool runner): propagate container_id for programmatic tool calling (#1462) * fix(tool_runner): propagate container_id for programmatic tool calling When using programmatic tool calling (PTC), the API returns a container_id in the response that must be passed in subsequent requests. Without this, the API returns an error: 'container_id is required when there are pending tool uses generated by code execution with tools.' This change updates both sync and async tool runners to extract the container.id from responses and pass it in subsequent API calls. * add a test, take container id from last message in the current state --------- Co-authored-by: Stephanie Pang --- src/anthropic/lib/tools/_beta_functions.py | 11 +- src/anthropic/lib/tools/_beta_runner.py | 32 +- .../092be1de-d3f8-4c22-a4ea-a7ad54689836.json | 317 ++++++++++++++++++ tests/lib/tools/test_runners.py | 37 ++ 4 files changed, 389 insertions(+), 8 deletions(-) create mode 100644 tests/lib/tools/__inline_snapshot__/test_runners/TestSyncRunTools/092be1de-d3f8-4c22-a4ea-a7ad54689836.json diff --git a/src/anthropic/lib/tools/_beta_functions.py b/src/anthropic/lib/tools/_beta_functions.py index e346a573..c5d73b07 100644 --- a/src/anthropic/lib/tools/_beta_functions.py +++ b/src/anthropic/lib/tools/_beta_functions.py @@ -32,10 +32,12 @@ class ToolError(Exception): Example:: - raise ToolError([ - {"type": "text", "text": "Error details here"}, - {"type": "image", "source": {"type": "base64", "data": "...", "media_type": "image/png"}}, - ]) + raise ToolError( + [ + {"type": "text", "text": "Error details here"}, + {"type": "image", "source": {"type": "base64", "data": "...", "media_type": "image/png"}}, + ] + ) """ content: BetaFunctionToolResultType @@ -55,6 +57,7 @@ def __init__(self, content: BetaFunctionToolResultType) -> None: super().__init__(message) self.content = content + Function = Callable[..., BetaFunctionToolResultType] FunctionT = TypeVar("FunctionT", bound=Function) diff --git a/src/anthropic/lib/tools/_beta_runner.py b/src/anthropic/lib/tools/_beta_runner.py index d31eaf5a..5a401a76 100644 --- a/src/anthropic/lib/tools/_beta_runner.py +++ b/src/anthropic/lib/tools/_beta_runner.py @@ -255,6 +255,11 @@ def __run__(self) -> Iterator[RunnerItemT]: message = self._get_last_message() assert message is not None + # Update container from response for programmatic tool calling support + last_assistant_message = self._get_last_assistant_message() + if last_assistant_message is not None and last_assistant_message.container is not None: + self._params["container"] = last_assistant_message.container.id + self._iteration_count += 1 # If the compaction was performed, skip tool call generation this iteration @@ -356,12 +361,19 @@ def _get_last_message(self) -> ParsedBetaMessage[ResponseFormatT] | None: return self._last_message() return self._last_message - def _get_last_assistant_message_content(self) -> list[ParsedBetaContentBlock[ResponseFormatT]] | None: + def _get_last_assistant_message(self) -> ParsedBetaMessage[ResponseFormatT] | None: last_message = self._get_last_message() if last_message is None or last_message.role != "assistant" or not last_message.content: return None - return last_message.content + return last_message + + def _get_last_assistant_message_content(self) -> list[ParsedBetaContentBlock[ResponseFormatT]] | None: + last_assistant_message = self._get_last_assistant_message() + if last_assistant_message is None: + return None + + return last_assistant_message.content class BetaToolRunner(BaseSyncToolRunner[ParsedBetaMessage[ResponseFormatT], ResponseFormatT]): @@ -515,6 +527,11 @@ async def __run__(self) -> AsyncIterator[RunnerItemT]: message = await self._get_last_message() assert message is not None + # Update container from response for programmatic tool calling support + last_assistant_message = await self._get_last_assistant_message() + if last_assistant_message is not None and last_assistant_message.container is not None: + self._params["container"] = last_assistant_message.container.id + self._iteration_count += 1 # If the compaction was performed, skip tool call generation this iteration @@ -560,12 +577,19 @@ async def _get_last_message(self) -> ParsedBetaMessage[ResponseFormatT] | None: return await self._last_message() return self._last_message - async def _get_last_assistant_message_content(self) -> list[ParsedBetaContentBlock[ResponseFormatT]] | None: + async def _get_last_assistant_message(self) -> ParsedBetaMessage[ResponseFormatT] | None: last_message = await self._get_last_message() if last_message is None or last_message.role != "assistant" or not last_message.content: return None - return last_message.content + return last_message + + async def _get_last_assistant_message_content(self) -> list[ParsedBetaContentBlock[ResponseFormatT]] | None: + last_assistant_message = await self._get_last_assistant_message() + if last_assistant_message is None: + return None + + return last_assistant_message.content async def _generate_tool_call_response(self) -> BetaMessageParam | None: content = await self._get_last_assistant_message_content() diff --git a/tests/lib/tools/__inline_snapshot__/test_runners/TestSyncRunTools/092be1de-d3f8-4c22-a4ea-a7ad54689836.json b/tests/lib/tools/__inline_snapshot__/test_runners/TestSyncRunTools/092be1de-d3f8-4c22-a4ea-a7ad54689836.json new file mode 100644 index 00000000..41793543 --- /dev/null +++ b/tests/lib/tools/__inline_snapshot__/test_runners/TestSyncRunTools/092be1de-d3f8-4c22-a4ea-a7ad54689836.json @@ -0,0 +1,317 @@ +[ + { + "request": { + "method": "POST", + "url": "https://api.anthropic.com/v1/messages?beta=true", + "headers": { + "host": "api.anthropic.com", + "accept-encoding": "gzip, deflate", + "connection": "keep-alive", + "x-stainless-timeout": "600", + "accept": "application/json", + "content-type": "application/json", + "user-agent": "Anthropic/Python 0.84.0", + "x-stainless-lang": "python", + "x-stainless-package-version": "0.84.0", + "x-stainless-os": "MacOS", + "x-stainless-arch": "arm64", + "x-stainless-runtime": "CPython", + "x-stainless-runtime-version": "3.12.6", + "x-stainless-async": "false", + "anthropic-version": "2023-06-01", + "x-stainless-helper": "BetaToolRunner", + "anthropic-beta": "structured-outputs-2025-12-15", + "x-stainless-retry-count": "0", + "x-stainless-read-timeout": "600", + "content-length": "660" + }, + "body": { + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "What is the weather in SF, NY, and London in Celsius?" + } + ], + "model": "claude-opus-4-5", + "tools": [ + { + "name": "get_weather", + "description": "Lookup the weather for a given city in either celsius or fahrenheit", + "input_schema": { + "additionalProperties": false, + "properties": { + "location": { + "description": "The city and state, e.g. San Francisco, CA", + "title": "Location", + "type": "string" + }, + "units": { + "description": "Unit for the output, either 'c' for celsius or 'f' for fahrenheit", + "enum": [ + "c", + "f" + ], + "title": "Units", + "type": "string" + } + }, + "required": [ + "location", + "units" + ], + "type": "object" + }, + "allowed_callers": [ + "code_execution_20260120" + ] + } + ] + } + }, + "response": { + "status_code": 200, + "headers": { + "content-type": "application/json", + "connection": "keep-alive", + "anthropic-ratelimit-input-tokens-limit": "30000", + "anthropic-ratelimit-input-tokens-remaining": "28000", + "anthropic-ratelimit-input-tokens-reset": "2026-02-25T20:02:37Z", + "anthropic-ratelimit-output-tokens-limit": "8000", + "anthropic-ratelimit-output-tokens-remaining": "8000", + "anthropic-ratelimit-output-tokens-reset": "2026-02-25T20:02:36Z", + "anthropic-ratelimit-requests-limit": "50", + "anthropic-ratelimit-requests-remaining": "49", + "anthropic-ratelimit-requests-reset": "2026-02-25T20:02:32Z", + "anthropic-ratelimit-tokens-limit": "38000", + "anthropic-ratelimit-tokens-remaining": "36000", + "anthropic-ratelimit-tokens-reset": "2026-02-25T20:02:36Z", + "x-robots-tag": "none", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "server": "cloudflare", + "content-security-policy": "default-src 'none'; frame-ancestors 'none'", + "cf-cache-status": "DYNAMIC" + }, + "body": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01LAwUK3MeXUxoNW5ZgnPpGy", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'll check the weather for all three cities in Celsius simultaneously." + }, + { + "type": "server_tool_use", + "id": "srvtoolu_017SzB73BSitzNFo1Xb3bq7S", + "name": "code_execution", + "input": { + "code": "import json\n\n# Get weather for all three cities in Celsius\nsf_weather = await get_weather({\"location\": \"San Francisco, CA\", \"units\": \"c\"})\nny_weather = await get_weather({\"location\": \"New York, NY\", \"units\": \"c\"})\nlondon_weather = await get_weather({\"location\": \"London, UK\", \"units\": \"c\"})\n\n# Parse and display results\nsf = json.loads(sf_weather)\nny = json.loads(ny_weather)\nlondon = json.loads(london_weather)\n\nprint(\"Weather in Celsius:\")\nprint(f\"San Francisco: {sf}\")\nprint(f\"New York: {ny}\")\nprint(f\"London: {london}\")\n" + }, + "caller": { + "type": "direct" + } + }, + { + "type": "tool_use", + "id": "toolu_011MDRpaZRMRRjtFkJizD6nS", + "name": "get_weather", + "input": { + "location": "San Francisco, CA", + "units": "c" + }, + "caller": { + "type": "code_execution_20260120", + "tool_id": "srvtoolu_017SzB73BSitzNFo1Xb3bq7S" + } + } + ], + "container": { + "id": "container_011CYVPF4iP8oD6Vsz1NhVih", + "expires_at": "2026-02-25T20:07:37.475893Z" + }, + "stop_reason": "tool_use", + "stop_sequence": null, + "usage": { + "input_tokens": 3182, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 237, + "service_tier": "standard", + "inference_geo": "not_available", + "server_tool_use": { + "web_search_requests": 0, + "web_fetch_requests": 0 + } + } + } + } + }, + { + "request": { + "method": "POST", + "url": "https://api.anthropic.com/v1/messages?beta=true", + "headers": { + "host": "api.anthropic.com", + "accept-encoding": "gzip, deflate", + "connection": "keep-alive", + "x-stainless-timeout": "600", + "accept": "application/json", + "content-type": "application/json", + "user-agent": "Anthropic/Python 0.84.0", + "x-stainless-lang": "python", + "x-stainless-package-version": "0.84.0", + "x-stainless-os": "MacOS", + "x-stainless-arch": "arm64", + "x-stainless-runtime": "CPython", + "x-stainless-runtime-version": "3.12.6", + "x-stainless-async": "false", + "anthropic-version": "2023-06-01", + "x-stainless-helper": "BetaToolRunner", + "anthropic-beta": "structured-outputs-2025-12-15", + "x-stainless-retry-count": "0", + "x-stainless-read-timeout": "600", + "content-length": "1978" + }, + "body": { + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "What is the weather in SF, NY, and London in Celsius?" + }, + { + "role": "assistant", + "content": [ + { + "text": "I'll check the weather for all three cities in Celsius simultaneously.", + "type": "text" + }, + { + "id": "srvtoolu_017SzB73BSitzNFo1Xb3bq7S", + "input": { + "code": "import json\n\n# Get weather for all three cities in Celsius\nsf_weather = await get_weather({\"location\": \"San Francisco, CA\", \"units\": \"c\"})\nny_weather = await get_weather({\"location\": \"New York, NY\", \"units\": \"c\"})\nlondon_weather = await get_weather({\"location\": \"London, UK\", \"units\": \"c\"})\n\n# Parse and display results\nsf = json.loads(sf_weather)\nny = json.loads(ny_weather)\nlondon = json.loads(london_weather)\n\nprint(\"Weather in Celsius:\")\nprint(f\"San Francisco: {sf}\")\nprint(f\"New York: {ny}\")\nprint(f\"London: {london}\")\n" + }, + "name": "code_execution", + "type": "server_tool_use", + "caller": { + "type": "direct" + } + }, + { + "id": "toolu_011MDRpaZRMRRjtFkJizD6nS", + "input": { + "location": "San Francisco, CA", + "units": "c" + }, + "name": "get_weather", + "type": "tool_use", + "caller": { + "tool_id": "srvtoolu_017SzB73BSitzNFo1Xb3bq7S", + "type": "code_execution_20260120" + } + } + ] + }, + { + "role": "user", + "content": [ + { + "type": "tool_result", + "tool_use_id": "toolu_011MDRpaZRMRRjtFkJizD6nS", + "content": "{\"location\": \"San Francisco, CA\", \"temperature\": \"20\\u00b0C\", \"condition\": \"Sunny\"}" + } + ] + } + ], + "model": "claude-opus-4-5", + "container": "container_011CYVPF4iP8oD6Vsz1NhVih", + "tools": [ + { + "name": "get_weather", + "description": "Lookup the weather for a given city in either celsius or fahrenheit", + "input_schema": { + "additionalProperties": false, + "properties": { + "location": { + "description": "The city and state, e.g. San Francisco, CA", + "title": "Location", + "type": "string" + }, + "units": { + "description": "Unit for the output, either 'c' for celsius or 'f' for fahrenheit", + "enum": [ + "c", + "f" + ], + "title": "Units", + "type": "string" + } + }, + "required": [ + "location", + "units" + ], + "type": "object" + }, + "allowed_callers": [ + "code_execution_20260120" + ] + } + ] + } + }, + "response": { + "status_code": 200, + "headers": { + "content-type": "application/json", + "connection": "keep-alive", + "x-robots-tag": "none", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "server": "cloudflare", + "content-security-policy": "default-src 'none'; frame-ancestors 'none'", + "cf-cache-status": "DYNAMIC" + }, + "body": { + "model": "claude-opus-4-5-20251101", + "id": "msg_0147NV7w8PyZ6bSUsNY79cYj", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01RXQDRjwv5Un7n98xFahjo8", + "name": "get_weather", + "input": { + "location": "New York, NY", + "units": "c" + }, + "caller": { + "type": "code_execution_20260120", + "tool_id": "srvtoolu_017SzB73BSitzNFo1Xb3bq7S" + } + } + ], + "container": { + "id": "container_011CYVPF4iP8oD6Vsz1NhVih", + "expires_at": "2026-02-25T20:07:39.078916Z" + }, + "stop_reason": "tool_use", + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "output_tokens": 0, + "server_tool_use": { + "web_search_requests": 0, + "web_fetch_requests": 0 + } + } + } + } + } +] \ No newline at end of file diff --git a/tests/lib/tools/test_runners.py b/tests/lib/tools/test_runners.py index b5b8da19..77cc6748 100644 --- a/tests/lib/tools/test_runners.py +++ b/tests/lib/tools/test_runners.py @@ -594,6 +594,43 @@ def test_server_side_tool( assert "server_tool_use" in content_types assert "web_search_tool_result" in content_types + @pytest.mark.parametrize( + "http_snapshot", + [ + cast(Any, external("uuid:092be1de-d3f8-4c22-a4ea-a7ad54689836.json")), + ], + ) + def test_programmatic_tool_call(self, snapshot_client: Anthropic) -> None: + @beta_tool(allowed_callers=["code_execution_20260120"]) + def get_weather(location: str, units: Literal["c", "f"]) -> BetaFunctionToolResultType: + """Lookup the weather for a given city in either celsius or fahrenheit + + Args: + location: The city and state, e.g. San Francisco, CA + units: Unit for the output, either 'c' for celsius or 'f' for fahrenheit + Returns: + A dictionary containing the location, temperature, and weather condition. + """ + return json.dumps(_get_weather(location, units)) + + runner = snapshot_client.beta.messages.tool_runner( + max_tokens=1024, + model="claude-opus-4-5", + tools=[get_weather], + messages=[{"role": "user", "content": "What is the weather in SF, NY, and London in Celsius?"}], + ) + + first_response = next(runner) + + # one more iteration so runner can process the tool call response and update its params with the container info + next(runner) + + assert first_response.container is not None + container_id = first_response.container.id + assert "container" in runner._params + assert runner._params["container"] is not None + assert container_id == runner._params["container"] + @pytest.mark.skipif(PYDANTIC_V1, reason="tool runner not supported with pydantic v1") @pytest.mark.parametrize( From b3088a42a24b2fc555f0305ac3bdad846baef5fd Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Sun, 1 Mar 2026 05:22:50 +0000 Subject: [PATCH 6/6] release: 0.84.1 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 13 +++++++++++++ pyproject.toml | 2 +- src/anthropic/_version.py | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 47dd76c1..c31737f2 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.84.0" + ".": "0.84.1" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 9428abb1..71acd46e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## 0.84.1 (2026-03-01) + +Full Changelog: [v0.84.0...v0.84.1](https://github.com/anthropics/anthropic-sdk-python/compare/v0.84.0...v0.84.1) + +### Bug Fixes + +* **tool runner:** propagate container_id for programmatic tool calling ([#1462](https://github.com/anthropics/anthropic-sdk-python/issues/1462)) ([3ae7ff6](https://github.com/anthropics/anthropic-sdk-python/commit/3ae7ff6ff7af8a881706ae8068b1040a23c96fbd)) + + +### Chores + +* **ci:** bump uv version ([09656ac](https://github.com/anthropics/anthropic-sdk-python/commit/09656acef77fa459d30d811bd51aa780a567182b)) + ## 0.84.0 (2026-02-25) Full Changelog: [v0.83.0...v0.84.0](https://github.com/anthropics/anthropic-sdk-python/compare/v0.83.0...v0.84.0) diff --git a/pyproject.toml b/pyproject.toml index 876c4aaa..efc9cc48 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "anthropic" -version = "0.84.0" +version = "0.84.1" description = "The official Python library for the anthropic API" dynamic = ["readme"] license = "MIT" diff --git a/src/anthropic/_version.py b/src/anthropic/_version.py index bfb20efd..243c7df1 100644 --- a/src/anthropic/_version.py +++ b/src/anthropic/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "anthropic" -__version__ = "0.84.0" # x-release-please-version +__version__ = "0.84.1" # x-release-please-version