From fe0c6aff45ac80241e10566aa0f7811ee43fedb5 Mon Sep 17 00:00:00 2001 From: Alessandra Romero <24320222+alexgromero@users.noreply.github.com> Date: Wed, 26 Nov 2025 15:28:18 -0500 Subject: [PATCH 1/8] Add integration tests for Bedrock Runtime (#37) --- clients/aws-sdk-bedrock-runtime/CHANGELOG.md | 5 +- .../tests/integration/__init__.py | 26 ++ .../tests/integration/assets/test.pcm | Bin 0 -> 81836 bytes .../test_bidirectional_streaming.py | 282 ++++++++++++++++++ .../tests/integration/test_non_streaming.py | 37 +++ .../integration/test_output_streaming.py | 45 +++ 6 files changed, 394 insertions(+), 1 deletion(-) create mode 100644 clients/aws-sdk-bedrock-runtime/tests/integration/__init__.py create mode 100644 clients/aws-sdk-bedrock-runtime/tests/integration/assets/test.pcm create mode 100644 clients/aws-sdk-bedrock-runtime/tests/integration/test_bidirectional_streaming.py create mode 100644 clients/aws-sdk-bedrock-runtime/tests/integration/test_non_streaming.py create mode 100644 clients/aws-sdk-bedrock-runtime/tests/integration/test_output_streaming.py diff --git a/clients/aws-sdk-bedrock-runtime/CHANGELOG.md b/clients/aws-sdk-bedrock-runtime/CHANGELOG.md index f7cc37e..aa7b89b 100644 --- a/clients/aws-sdk-bedrock-runtime/CHANGELOG.md +++ b/clients/aws-sdk-bedrock-runtime/CHANGELOG.md @@ -2,6 +2,9 @@ ## Unreleased +### Enhancements +* Add comprehensive integration tests for non-streaming, output streaming, and bidirectional streaming operations. + ## v0.2.0 ### API Changes @@ -26,7 +29,7 @@ * New stop reason for Converse and ConverseStream ### Enhancements -* Improvements to the underlying AWS CRT HTTP client result in a signifigant decrease in CPU usage. Addresses [aws-sdk-python#11](https://github.com/awslabs/aws-sdk-python/issues/11). +* Improvements to the underlying AWS CRT HTTP client result in a significant decrease in CPU usage. Addresses [aws-sdk-python#11](https://github.com/awslabs/aws-sdk-python/issues/11). ### Dependencies diff --git a/clients/aws-sdk-bedrock-runtime/tests/integration/__init__.py b/clients/aws-sdk-bedrock-runtime/tests/integration/__init__.py new file mode 100644 index 0000000..3373189 --- /dev/null +++ b/clients/aws-sdk-bedrock-runtime/tests/integration/__init__.py @@ -0,0 +1,26 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 + + +from pathlib import Path + +from smithy_aws_core.identity import EnvironmentCredentialsResolver + +from aws_sdk_bedrock_runtime.client import BedrockRuntimeClient +from aws_sdk_bedrock_runtime.config import Config + +MODEL_ID = "amazon.titan-text-express-v1" +BIDIRECTIONAL_MODEL_ID = "amazon.nova-sonic-v1:0" +MESSAGE = "Who created the Python programming language?" +AUDIO_FILE = Path(__file__).parent / "assets" / "test.pcm" + + +def create_bedrock_client(region: str) -> BedrockRuntimeClient: + """Helper to create a BedrockRuntimeClient for a given region.""" + return BedrockRuntimeClient( + config=Config( + endpoint_uri=f"https://bedrock-runtime.{region}.amazonaws.com", + region=region, + aws_credentials_identity_resolver=EnvironmentCredentialsResolver(), + ) + ) diff --git a/clients/aws-sdk-bedrock-runtime/tests/integration/assets/test.pcm b/clients/aws-sdk-bedrock-runtime/tests/integration/assets/test.pcm new file mode 100644 index 0000000000000000000000000000000000000000..0fc61db6d309790ccf4d8275a17a228329bec061 GIT binary patch literal 81836 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 ag6{eHDC7FS?f-h None: + """Send a raw event JSON string to the Bedrock stream.""" + event = InvokeModelWithBidirectionalStreamInputChunk( + value=BidirectionalInputPayloadPart(bytes_=event_json.encode("utf-8")) + ) + await stream.input_stream.send(event) + + +async def _send_audio_chunks( + stream: DuplexEventStream[ + InvokeModelWithBidirectionalStreamInput, + InvokeModelWithBidirectionalStreamOutput, + InvokeModelWithBidirectionalStreamOperationOutput, + ], + prompt_name: str, + audio_content_name: str, +) -> None: + """Send audio chunks from file simulating real-time delay.""" + chunk_count = 0 + with AUDIO_FILE.open("rb") as f: + while chunk := f.read(CHUNK_SIZE): + chunk_count += 1 + encoded_chunk = base64.b64encode(chunk).decode("utf-8") + await _send_event( + stream, + AUDIO_INPUT_EVENT % (prompt_name, audio_content_name, encoded_chunk), + ) + # 512 bytes / (16000 Hz * 2 bytes/sample) = 0.016s per chunk + await asyncio.sleep(0.016) + + assert chunk_count > 0, f"No audio chunks were sent from {AUDIO_FILE}" + + silence_chunk = bytes(CHUNK_SIZE) + encoded_silence = base64.b64encode(silence_chunk).decode("utf-8") + for _ in range(SILENCE_CHUNKS): + await _send_event( + stream, + AUDIO_INPUT_EVENT % (prompt_name, audio_content_name, encoded_silence), + ) + await asyncio.sleep(0.016) + + await _send_event(stream, CONTENT_END_EVENT % (prompt_name, audio_content_name)) + await asyncio.sleep(RESPONSE_WAIT_TIME) + await _send_event(stream, PROMPT_END_EVENT % prompt_name) + await _send_event(stream, SESSION_END_EVENT) + + +async def _receive_stream_output( + stream: DuplexEventStream[ + InvokeModelWithBidirectionalStreamInput, + InvokeModelWithBidirectionalStreamOutput, + InvokeModelWithBidirectionalStreamOperationOutput, + ], +) -> tuple[bool, bool, list[str]]: + """Receive and collect output from the bidirectional stream. + + Returns: + Tuple of (got_text, got_audio, all_text_output) + """ + got_text = False + got_audio = False + all_text_output: list[str] = [] + + await stream.await_output() + output_stream = stream.output_stream + if output_stream is None: + return got_text, got_audio, all_text_output + + async for out in output_stream: + if not isinstance(out, InvokeModelWithBidirectionalStreamOutputChunk): + raise RuntimeError( + f"Received unexpected event type in stream: {type(out).__name__}" + ) + + payload = out.value.bytes_ + if not payload: + continue + + msg = json.loads(payload.decode("utf-8")) + event_data = msg.get("event", {}) + + if "textOutput" in event_data: + got_text = True + text_content = event_data["textOutput"].get("content", "") + all_text_output.append(text_content) + if "audioOutput" in event_data: + got_audio = True + if "completionEnd" in event_data: + break + + return got_text, got_audio, all_text_output + + +async def test_invoke_model_with_bidirectional_stream() -> None: + """Test bidirectional streaming with audio input and text/audio output.""" + bedrock_client = create_bedrock_client("us-east-1") + + stream = await bedrock_client.invoke_model_with_bidirectional_stream( + InvokeModelWithBidirectionalStreamOperationInput( + model_id=BIDIRECTIONAL_MODEL_ID + ) + ) + + prompt_name = str(uuid.uuid4()) + content_name = str(uuid.uuid4()) + audio_content_name = str(uuid.uuid4()) + + init_events = [ + START_SESSION_EVENT, + START_PROMPT_EVENT % prompt_name, + TEXT_CONTENT_START_EVENT % (prompt_name, content_name, "SYSTEM"), + TEXT_INPUT_EVENT % (prompt_name, content_name, DEFAULT_SYSTEM_PROMPT), + CONTENT_END_EVENT % (prompt_name, content_name), + ] + + for event in init_events: + await _send_event(stream, event) + + await _send_event( + stream, AUDIO_CONTENT_START_EVENT % (prompt_name, audio_content_name) + ) + + results = await asyncio.gather( + _send_audio_chunks(stream, prompt_name, audio_content_name), + _receive_stream_output(stream), + ) + got_text, got_audio, all_text_output = results[1] + + assert got_text, "Expected to receive text output" + assert got_audio, "Expected to receive audio output" + assert len(all_text_output) > 0, "Expected non-empty text output" diff --git a/clients/aws-sdk-bedrock-runtime/tests/integration/test_non_streaming.py b/clients/aws-sdk-bedrock-runtime/tests/integration/test_non_streaming.py new file mode 100644 index 0000000..aefb9de --- /dev/null +++ b/clients/aws-sdk-bedrock-runtime/tests/integration/test_non_streaming.py @@ -0,0 +1,37 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 + +"""Test non-streaming output type handling.""" + +from aws_sdk_bedrock_runtime.models import ( + ContentBlockText, + ConverseInput, + ConverseOperationOutput, + ConverseOutputMessage, + Message, +) + +from . import MESSAGE, MODEL_ID, create_bedrock_client + + +async def test_converse() -> None: + bedrock_client = create_bedrock_client("us-west-2") + + input_message = Message(role="user", content=[ContentBlockText(value=MESSAGE)]) + response = await bedrock_client.converse( + ConverseInput(model_id=MODEL_ID, messages=[input_message]) + ) + + assert isinstance(response, ConverseOperationOutput) + assert isinstance(response.output, ConverseOutputMessage) + + output_message = response.output.value + assert output_message.role == "assistant" + assert len(output_message.content) > 0 + + content_block = output_message.content[0] + assert isinstance(content_block, ContentBlockText) + assert isinstance(content_block.value, str) and content_block.value + + assert response.usage.input_tokens > 0 + assert response.usage.output_tokens > 0 diff --git a/clients/aws-sdk-bedrock-runtime/tests/integration/test_output_streaming.py b/clients/aws-sdk-bedrock-runtime/tests/integration/test_output_streaming.py new file mode 100644 index 0000000..b06b53e --- /dev/null +++ b/clients/aws-sdk-bedrock-runtime/tests/integration/test_output_streaming.py @@ -0,0 +1,45 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 + +"""Test output streaming event stream handling.""" + +from aws_sdk_bedrock_runtime.models import ( + ContentBlockDeltaText, + ContentBlockText, + ConverseStreamInput, + ConverseStreamOperationOutput, + ConverseStreamOutputContentBlockDelta, + ConverseStreamOutputMetadata, + Message, +) + +from . import MESSAGE, MODEL_ID, create_bedrock_client + + +async def test_converse_stream() -> None: + bedrock_client = create_bedrock_client("us-west-2") + + input_message = Message(role="user", content=[ContentBlockText(value=MESSAGE)]) + response = await bedrock_client.converse_stream( + ConverseStreamInput(model_id=MODEL_ID, messages=[input_message]) + ) + + received_text: list[str] = [] + metadata_received = False + + async with response as stream: + async for event in stream.output_stream: + if isinstance(event, ConverseStreamOutputContentBlockDelta): + delta = event.value.delta + if isinstance(delta, ContentBlockDeltaText): + received_text.append(delta.value) + elif isinstance(event, ConverseStreamOutputMetadata): + metadata_received = True + assert event.value.usage.input_tokens > 0 + assert event.value.usage.output_tokens > 0 + + full_response = "".join(received_text) + assert full_response + + assert metadata_received + assert isinstance(stream.output, ConverseStreamOperationOutput) From 1ca29c6b361c62f213d31a34551a9d9cfac193f2 Mon Sep 17 00:00:00 2001 From: Alessandra Romero <24320222+alexgromero@users.noreply.github.com> Date: Wed, 3 Dec 2025 11:56:15 -0500 Subject: [PATCH 2/8] Add integration tests for Transcribe Streaming (#38) --- .../tests/integration/__init__.py | 22 ++++ .../tests/integration/assets/test.wav | Bin 0 -> 228786 bytes .../test_bidirectional_streaming.py | 112 ++++++++++++++++ .../tests/integration/test_non_streaming.py | 123 ++++++++++++++++++ .../tests/setup_resources.py | 97 ++++++++++++++ 5 files changed, 354 insertions(+) create mode 100644 clients/aws-sdk-transcribe-streaming/tests/integration/__init__.py create mode 100644 clients/aws-sdk-transcribe-streaming/tests/integration/assets/test.wav create mode 100644 clients/aws-sdk-transcribe-streaming/tests/integration/test_bidirectional_streaming.py create mode 100644 clients/aws-sdk-transcribe-streaming/tests/integration/test_non_streaming.py create mode 100644 clients/aws-sdk-transcribe-streaming/tests/setup_resources.py diff --git a/clients/aws-sdk-transcribe-streaming/tests/integration/__init__.py b/clients/aws-sdk-transcribe-streaming/tests/integration/__init__.py new file mode 100644 index 0000000..d5b39d3 --- /dev/null +++ b/clients/aws-sdk-transcribe-streaming/tests/integration/__init__.py @@ -0,0 +1,22 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 + +from pathlib import Path + +from smithy_aws_core.identity import EnvironmentCredentialsResolver + +from aws_sdk_transcribe_streaming.client import TranscribeStreamingClient +from aws_sdk_transcribe_streaming.config import Config + +AUDIO_FILE = Path(__file__).parent / "assets" / "test.wav" + + +def create_transcribe_client(region: str) -> TranscribeStreamingClient: + """Helper to create a TranscribeStreamingClient for a given region.""" + return TranscribeStreamingClient( + config=Config( + endpoint_uri=f"https://transcribestreaming.{region}.amazonaws.com", + region=region, + aws_credentials_identity_resolver=EnvironmentCredentialsResolver(), + ) + ) diff --git a/clients/aws-sdk-transcribe-streaming/tests/integration/assets/test.wav b/clients/aws-sdk-transcribe-streaming/tests/integration/assets/test.wav new file mode 100644 index 0000000000000000000000000000000000000000..5f6ca0278f12cd3b6c92b92ee43e23cbcc8c4e0c GIT binary patch literal 228786 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
-ZV*S!h$WV+}c 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 afByG1L9GAh|KR)o|J%UC|MSj&AN60;Q=$L> literal 0 HcmV?d00001 diff --git a/clients/aws-sdk-transcribe-streaming/tests/integration/test_bidirectional_streaming.py b/clients/aws-sdk-transcribe-streaming/tests/integration/test_bidirectional_streaming.py new file mode 100644 index 0000000..d4582e5 --- /dev/null +++ b/clients/aws-sdk-transcribe-streaming/tests/integration/test_bidirectional_streaming.py @@ -0,0 +1,112 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 + +"""Test bidirectional event stream handling.""" + +import asyncio +import time + +from smithy_core.aio.eventstream import DuplexEventStream + +from aws_sdk_transcribe_streaming.models import ( + AudioEvent, + AudioStream, + AudioStreamAudioEvent, + LanguageCode, + MediaEncoding, + StartStreamTranscriptionInput, + StartStreamTranscriptionOutput, + TranscriptResultStream, + TranscriptResultStreamTranscriptEvent, +) + +from . import AUDIO_FILE, create_transcribe_client + + +SAMPLE_RATE = 16000 +BYTES_PER_SAMPLE = 2 +CHANNEL_NUMS = 1 +CHUNK_SIZE = 1024 * 8 + + +async def _send_audio_chunks( + stream: DuplexEventStream[ + AudioStream, TranscriptResultStream, StartStreamTranscriptionOutput + ], +) -> None: + """Send audio chunks from file simulating real-time delay.""" + start_time = time.time() + elapsed_audio_time = 0.0 + + with AUDIO_FILE.open("rb") as f: + while chunk := f.read(CHUNK_SIZE): + await stream.input_stream.send( + AudioStreamAudioEvent(value=AudioEvent(audio_chunk=chunk)) + ) + elapsed_audio_time += len(chunk) / ( + BYTES_PER_SAMPLE * SAMPLE_RATE * CHANNEL_NUMS + ) + wait_time = start_time + elapsed_audio_time - time.time() + await asyncio.sleep(wait_time) + + # Send an empty audio event to signal end of input + await stream.input_stream.send( + AudioStreamAudioEvent(value=AudioEvent(audio_chunk=b"")) + ) + await asyncio.sleep(0.4) + await stream.input_stream.close() + + +async def _receive_transcription_output( + stream: DuplexEventStream[ + AudioStream, TranscriptResultStream, StartStreamTranscriptionOutput + ], +) -> tuple[bool, list[str]]: + """Receive and collect transcription output from the stream. + + Returns: + Tuple of (got_transcript_events, transcripts) + """ + got_transcript_events = False + transcripts: list[str] = [] + + _, output_stream = await stream.await_output() + if output_stream is None: + return got_transcript_events, transcripts + + async for event in output_stream: + if not isinstance(event, TranscriptResultStreamTranscriptEvent): + raise RuntimeError( + f"Received unexpected event type in stream: {type(event).__name__}" + ) + + got_transcript_events = True + if event.value.transcript and event.value.transcript.results: + for result in event.value.transcript.results: + if result.alternatives: + for alt in result.alternatives: + if alt.transcript: + transcripts.append(alt.transcript) + + return got_transcript_events, transcripts + + +async def test_start_stream_transcription() -> None: + """Test bidirectional streaming with audio input and transcription output.""" + transcribe_client = create_transcribe_client("us-west-2") + + stream = await transcribe_client.start_stream_transcription( + input=StartStreamTranscriptionInput( + language_code=LanguageCode.EN_US, + media_sample_rate_hertz=SAMPLE_RATE, + media_encoding=MediaEncoding.PCM, + ) + ) + + results = await asyncio.gather( + _send_audio_chunks(stream), _receive_transcription_output(stream) + ) + got_transcript_events, transcripts = results[1] + + assert got_transcript_events, "Expected to receive transcript events" + assert len(transcripts) > 0, "Expected to receive at least one transcript" diff --git a/clients/aws-sdk-transcribe-streaming/tests/integration/test_non_streaming.py b/clients/aws-sdk-transcribe-streaming/tests/integration/test_non_streaming.py new file mode 100644 index 0000000..80137bd --- /dev/null +++ b/clients/aws-sdk-transcribe-streaming/tests/integration/test_non_streaming.py @@ -0,0 +1,123 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 + +"""Test non-streaming output type handling. + +This test requires AWS resources (an IAM role and an S3 bucket). +To set them up locally, run: + + uv run scripts/setup_resources.py + +Then export the environment variables shown in the output. +""" + +import asyncio +import os +import time +import uuid + +import pytest + +from aws_sdk_transcribe_streaming.models import ( + ClinicalNoteGenerationSettings, + GetMedicalScribeStreamInput, + GetMedicalScribeStreamOutput, + LanguageCode, + MedicalScribeAudioEvent, + MedicalScribeConfigurationEvent, + MedicalScribeInputStreamAudioEvent, + MedicalScribeInputStreamConfigurationEvent, + MedicalScribeInputStreamSessionControlEvent, + MedicalScribePostStreamAnalyticsSettings, + MedicalScribeSessionControlEvent, + MedicalScribeSessionControlEventType, + MediaEncoding, + StartMedicalScribeStreamInput, +) + +from . import AUDIO_FILE, create_transcribe_client + +SAMPLE_RATE = 16000 +BYTES_PER_SAMPLE = 2 +CHANNEL_NUMS = 1 +CHUNK_SIZE = 1024 * 8 + + +async def test_get_medical_scribe_stream() -> None: + role_arn = os.environ.get("HEALTHSCRIBE_ROLE_ARN") + s3_bucket = os.environ.get("HEALTHSCRIBE_S3_BUCKET") + + if not role_arn or not s3_bucket: + pytest.fail("HEALTHSCRIBE_ROLE_ARN or HEALTHSCRIBE_S3_BUCKET not set") + + transcribe_client = create_transcribe_client("us-east-1") + session_id = str(uuid.uuid4()) + + stream = await transcribe_client.start_medical_scribe_stream( + input=StartMedicalScribeStreamInput( + language_code=LanguageCode.EN_US, + media_sample_rate_hertz=SAMPLE_RATE, + media_encoding=MediaEncoding.PCM, + session_id=session_id, + ) + ) + + await stream.input_stream.send( + MedicalScribeInputStreamConfigurationEvent( + value=MedicalScribeConfigurationEvent( + resource_access_role_arn=role_arn, + post_stream_analytics_settings=MedicalScribePostStreamAnalyticsSettings( + clinical_note_generation_settings=ClinicalNoteGenerationSettings( + output_bucket_name=s3_bucket + ) + ), + ) + ) + ) + + start_time = time.time() + elapsed_audio_time = 0.0 + + with AUDIO_FILE.open("rb") as f: + while chunk := f.read(CHUNK_SIZE): + await stream.input_stream.send( + MedicalScribeInputStreamAudioEvent( + value=MedicalScribeAudioEvent(audio_chunk=chunk) + ) + ) + elapsed_audio_time += len(chunk) / ( + BYTES_PER_SAMPLE * SAMPLE_RATE * CHANNEL_NUMS + ) + wait_time = start_time + elapsed_audio_time - time.time() + if wait_time > 0: + await asyncio.sleep(wait_time) + + await stream.input_stream.send( + MedicalScribeInputStreamSessionControlEvent( + value=MedicalScribeSessionControlEvent( + type=MedicalScribeSessionControlEventType.END_OF_SESSION + ) + ) + ) + await stream.input_stream.close() + + await stream.await_output() + + # Consume output stream events to properly close the connection + if stream.output_stream: + async for _ in stream.output_stream: + pass + + response = await transcribe_client.get_medical_scribe_stream( + input=GetMedicalScribeStreamInput(session_id=session_id) + ) + + assert isinstance(response, GetMedicalScribeStreamOutput) + assert response.medical_scribe_stream_details is not None + + details = response.medical_scribe_stream_details + assert details.session_id == session_id + assert details.stream_status == "COMPLETED" + assert details.language_code == "en-US" + assert details.media_encoding == "pcm" + assert details.media_sample_rate_hertz == SAMPLE_RATE diff --git a/clients/aws-sdk-transcribe-streaming/tests/setup_resources.py b/clients/aws-sdk-transcribe-streaming/tests/setup_resources.py new file mode 100644 index 0000000..35c05f7 --- /dev/null +++ b/clients/aws-sdk-transcribe-streaming/tests/setup_resources.py @@ -0,0 +1,97 @@ +# /// script +# requires-python = ">=3.12" +# dependencies = [ +# "boto3", +# ] +# /// +# +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 + +"""Setup script to create AWS resources for integration tests. + +Creates an IAM role and S3 bucket needed for medical scribe integration tests. + +Note: + This script is intended for local testing only and should not be used for + production setups. + +Usage: + uv run scripts/setup_resources.py +""" + +import json +from typing import Any + +import boto3 + + +def create_iam_role(iam_client: Any, role_name: str, bucket_name: str) -> None: + trust_policy = { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "transcribe.streaming.amazonaws.com" + ] + }, + "Action": "sts:AssumeRole", + } + ] + } + + try: + iam_client.create_role( + RoleName=role_name, AssumeRolePolicyDocument=json.dumps(trust_policy) + ) + except iam_client.exceptions.EntityAlreadyExistsException: + pass + + permissions_policy = { + "Version": "2012-10-17", + "Statement": [ + { + "Action": [ + "s3:PutObject" + ], + "Resource": [ + f"arn:aws:s3:::{bucket_name}", + f"arn:aws:s3:::{bucket_name}/*", + ], + "Effect": "Allow" + } + ] + } + + iam_client.put_role_policy( + RoleName=role_name, + PolicyName="HealthScribeS3Access", + PolicyDocument=json.dumps(permissions_policy), + ) + + +def setup_healthscribe_resources() -> tuple[str, str]: + region = "us-east-1" + iam = boto3.client("iam") + s3 = boto3.client("s3", region_name=region) + sts = boto3.client("sts") + + account_id = sts.get_caller_identity()["Account"] + bucket_name = f"healthscribe-test-{account_id}-{region}" + role_name = "HealthScribeIntegrationTestRole" + + s3.create_bucket(Bucket=bucket_name) + create_iam_role(iam, role_name, bucket_name) + + role_arn = f"arn:aws:iam::{account_id}:role/{role_name}" + return role_arn, bucket_name + + +if __name__ == "__main__": + role_arn, bucket_name = setup_healthscribe_resources() + + print("Setup complete. Export these environment variables before running tests:") + print(f"export HEALTHSCRIBE_ROLE_ARN={role_arn}") + print(f"export HEALTHSCRIBE_S3_BUCKET={bucket_name}") From e86779729a8e20ce8bc772c157c25868eafbfa00 Mon Sep 17 00:00:00 2001 From: jonathan343 <43360731+jonathan343@users.noreply.github.com> Date: Tue, 23 Dec 2025 12:41:40 -0600 Subject: [PATCH 3/8] Update integration tests to use the latest Amazon Nova 2 models (#39) --- clients/aws-sdk-bedrock-runtime/tests/integration/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clients/aws-sdk-bedrock-runtime/tests/integration/__init__.py b/clients/aws-sdk-bedrock-runtime/tests/integration/__init__.py index 3373189..44217f9 100644 --- a/clients/aws-sdk-bedrock-runtime/tests/integration/__init__.py +++ b/clients/aws-sdk-bedrock-runtime/tests/integration/__init__.py @@ -9,8 +9,8 @@ from aws_sdk_bedrock_runtime.client import BedrockRuntimeClient from aws_sdk_bedrock_runtime.config import Config -MODEL_ID = "amazon.titan-text-express-v1" -BIDIRECTIONAL_MODEL_ID = "amazon.nova-sonic-v1:0" +MODEL_ID = "global.amazon.nova-2-lite-v1:0" +BIDIRECTIONAL_MODEL_ID = "amazon.nova-2-sonic-v1:0" MESSAGE = "Who created the Python programming language?" AUDIO_FILE = Path(__file__).parent / "assets" / "test.pcm" From e0e4103b80256e23a15bdf5c5c599c1958850d5d Mon Sep 17 00:00:00 2001 From: Nate Prewitt Date: Fri, 2 Jan 2026 08:55:22 -0700 Subject: [PATCH 4/8] Update to latest bedrock-runtime model --- codegen/aws-models/bedrock-runtime.json | 248 +++++++++++++++++++++++- 1 file changed, 247 insertions(+), 1 deletion(-) diff --git a/codegen/aws-models/bedrock-runtime.json b/codegen/aws-models/bedrock-runtime.json index c19a306..fc1ac68 100644 --- a/codegen/aws-models/bedrock-runtime.json +++ b/codegen/aws-models/bedrock-runtime.json @@ -1068,6 +1068,153 @@ "smithy.api#documentation": "

A summary of an asynchronous invocation.

" } }, + "com.amazonaws.bedrockruntime#AudioBlock": { + "type": "structure", + "members": { + "format": { + "target": "com.amazonaws.bedrockruntime#AudioFormat", + "traits": { + "smithy.api#documentation": "

The format of the audio data, such as MP3, WAV, FLAC, or other supported audio formats.

", + "smithy.api#required": {} + } + }, + "source": { + "target": "com.amazonaws.bedrockruntime#AudioSource", + "traits": { + "smithy.api#documentation": "

The source of the audio data, which can be provided as raw bytes or an S3 location.

", + "smithy.api#required": {} + } + }, + "error": { + "target": "com.amazonaws.bedrockruntime#ErrorBlock", + "traits": { + "smithy.api#documentation": "

Error information if the audio block could not be processed or contains invalid data.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

An audio content block that contains audio data in various supported formats.

" + } + }, + "com.amazonaws.bedrockruntime#AudioFormat": { + "type": "enum", + "members": { + "MP3": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "mp3" + } + }, + "OPUS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "opus" + } + }, + "WAV": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "wav" + } + }, + "AAC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "aac" + } + }, + "FLAC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "flac" + } + }, + "MP4": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "mp4" + } + }, + "OGG": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ogg" + } + }, + "MKV": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "mkv" + } + }, + "MKA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "mka" + } + }, + "X_AAC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "x-aac" + } + }, + "M4A": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "m4a" + } + }, + "MPEG": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "mpeg" + } + }, + "MPGA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "mpga" + } + }, + "PCM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "pcm" + } + }, + "WEBM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "webm" + } + } + } + }, + "com.amazonaws.bedrockruntime#AudioSource": { + "type": "union", + "members": { + "bytes": { + "target": "smithy.api#Blob", + "traits": { + "smithy.api#documentation": "

Audio data encoded in base64.

", + "smithy.api#length": { + "min": 1 + } + } + }, + "s3Location": { + "target": "com.amazonaws.bedrockruntime#S3Location", + "traits": { + "smithy.api#documentation": "

A reference to audio data stored in an Amazon S3 bucket. To see which models support S3 uploads, see Supported models and features for Converse.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

The source of audio data, which can be provided either as raw bytes or a reference to an S3 location.

", + "smithy.api#sensitive": {} + } + }, "com.amazonaws.bedrockruntime#AutoToolChoice": { "type": "structure", "members": {}, @@ -1392,6 +1539,12 @@ "smithy.api#documentation": "

Video to include in the message.

" } }, + "audio": { + "target": "com.amazonaws.bedrockruntime#AudioBlock", + "traits": { + "smithy.api#documentation": "

An audio content block containing audio data in the conversation.

" + } + }, "toolUse": { "target": "com.amazonaws.bedrockruntime#ToolUseBlock", "traits": { @@ -1471,6 +1624,12 @@ "traits": { "smithy.api#documentation": "

Incremental citation information that is streamed as part of the response generation process.

" } + }, + "image": { + "target": "com.amazonaws.bedrockruntime#ImageBlockDelta", + "traits": { + "smithy.api#documentation": "

A streaming delta event containing incremental image data.

" + } } }, "traits": { @@ -1513,6 +1672,12 @@ "traits": { "smithy.api#documentation": "

The

" } + }, + "image": { + "target": "com.amazonaws.bedrockruntime#ImageBlockStart", + "traits": { + "smithy.api#documentation": "

The initial event indicating the start of a streaming image block.

" + } } }, "traits": { @@ -2518,6 +2683,21 @@ "smithy.api#documentation": "

Contains the content of a document.

" } }, + "com.amazonaws.bedrockruntime#ErrorBlock": { + "type": "structure", + "members": { + "message": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "

A human-readable error message describing what went wrong during content processing.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

A block containing error information when content processing fails.

", + "smithy.api#sensitive": {} + } + }, "com.amazonaws.bedrockruntime#FoundationModelVersionIdentifier": { "type": "string", "traits": { @@ -4763,12 +4943,53 @@ "smithy.api#documentation": "

The source for the image.

", "smithy.api#required": {} } + }, + "error": { + "target": "com.amazonaws.bedrockruntime#ErrorBlock", + "traits": { + "smithy.api#documentation": "

Error information if the image block could not be processed or contains invalid data.

" + } } }, "traits": { "smithy.api#documentation": "

Image content for a message.

" } }, + "com.amazonaws.bedrockruntime#ImageBlockDelta": { + "type": "structure", + "members": { + "source": { + "target": "com.amazonaws.bedrockruntime#ImageSource", + "traits": { + "smithy.api#documentation": "

The incremental image source data for this delta event.

" + } + }, + "error": { + "target": "com.amazonaws.bedrockruntime#ErrorBlock", + "traits": { + "smithy.api#documentation": "

Error information if this image delta could not be processed.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

A streaming delta event that contains incremental image data during streaming responses.

" + } + }, + "com.amazonaws.bedrockruntime#ImageBlockStart": { + "type": "structure", + "members": { + "format": { + "target": "com.amazonaws.bedrockruntime#ImageFormat", + "traits": { + "smithy.api#documentation": "

The format of the image data that will be streamed in subsequent delta events.

", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "

The initial event in a streaming image block that indicates the start of image content.

" + } + }, "com.amazonaws.bedrockruntime#ImageFormat": { "type": "enum", "members": { @@ -4818,7 +5039,8 @@ } }, "traits": { - "smithy.api#documentation": "

The source for an image.

" + "smithy.api#documentation": "

The source for an image.

", + "smithy.api#sensitive": {} } }, "com.amazonaws.bedrockruntime#ImagesGuarded": { @@ -6188,6 +6410,12 @@ "traits": { "smithy.api#enumValue": "flex" } + }, + "RESERVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "reserved" + } } } }, @@ -6396,6 +6624,18 @@ "smithy.api#enumValue": "content_filtered" } }, + "MALFORMED_MODEL_OUTPUT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "malformed_model_output" + } + }, + "MALFORMED_TOOL_USE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "malformed_tool_use" + } + }, "MODEL_CONTEXT_WINDOW_EXCEEDED": { "target": "smithy.api#Unit", "traits": { @@ -6736,6 +6976,12 @@ "traits": { "smithy.api#documentation": "

The reasoning the model used to return the output.

" } + }, + "json": { + "target": "smithy.api#Document", + "traits": { + "smithy.api#documentation": "

The JSON schema for the tool result content block. see JSON Schema Reference.

" + } } }, "traits": { From e34e131cab46f1ec4511a3af980b14aa4d90d30f Mon Sep 17 00:00:00 2001 From: Nate Prewitt Date: Fri, 2 Jan 2026 09:06:09 -0700 Subject: [PATCH 5/8] Release: aws-sdk-bedrock-runtime-0.3.0 --- clients/aws-sdk-bedrock-runtime/CHANGELOG.md | 16 + clients/aws-sdk-bedrock-runtime/docs/conf.py | 2 +- .../docs/models/AudioBlock.rst | 8 + .../docs/models/AudioSource.rst | 9 + .../docs/models/AudioSourceBytes.rst | 9 + .../docs/models/AudioSourceS3Location.rst | 9 + .../docs/models/AudioSourceUnknown.rst | 9 + .../docs/models/ContentBlockAudio.rst | 9 + .../docs/models/ContentBlockDeltaImage.rst | 9 + .../docs/models/ContentBlockStartImage.rst | 9 + .../docs/models/ErrorBlock.rst | 8 + .../docs/models/ImageBlockDelta.rst | 8 + .../docs/models/ImageBlockStart.rst | 8 + .../docs/models/ToolResultBlockDeltaJson.rst | 9 + .../aws-sdk-bedrock-runtime/pyproject.toml | 10 +- .../src/aws_sdk_bedrock_runtime/__init__.py | 2 +- .../_private/schemas.py | 169 +++++- .../src/aws_sdk_bedrock_runtime/client.py | 193 +----- .../src/aws_sdk_bedrock_runtime/models.py | 567 ++++++++++++++++-- clients/aws-sdk-python/pyproject.toml | 2 +- 20 files changed, 823 insertions(+), 242 deletions(-) create mode 100644 clients/aws-sdk-bedrock-runtime/docs/models/AudioBlock.rst create mode 100644 clients/aws-sdk-bedrock-runtime/docs/models/AudioSource.rst create mode 100644 clients/aws-sdk-bedrock-runtime/docs/models/AudioSourceBytes.rst create mode 100644 clients/aws-sdk-bedrock-runtime/docs/models/AudioSourceS3Location.rst create mode 100644 clients/aws-sdk-bedrock-runtime/docs/models/AudioSourceUnknown.rst create mode 100644 clients/aws-sdk-bedrock-runtime/docs/models/ContentBlockAudio.rst create mode 100644 clients/aws-sdk-bedrock-runtime/docs/models/ContentBlockDeltaImage.rst create mode 100644 clients/aws-sdk-bedrock-runtime/docs/models/ContentBlockStartImage.rst create mode 100644 clients/aws-sdk-bedrock-runtime/docs/models/ErrorBlock.rst create mode 100644 clients/aws-sdk-bedrock-runtime/docs/models/ImageBlockDelta.rst create mode 100644 clients/aws-sdk-bedrock-runtime/docs/models/ImageBlockStart.rst create mode 100644 clients/aws-sdk-bedrock-runtime/docs/models/ToolResultBlockDeltaJson.rst diff --git a/clients/aws-sdk-bedrock-runtime/CHANGELOG.md b/clients/aws-sdk-bedrock-runtime/CHANGELOG.md index aa7b89b..37e8b79 100644 --- a/clients/aws-sdk-bedrock-runtime/CHANGELOG.md +++ b/clients/aws-sdk-bedrock-runtime/CHANGELOG.md @@ -2,9 +2,25 @@ ## Unreleased +* None Yet. + +## v0.3.0 + +### API Changes +* Adds support for Audio Blocks and Streaming Image Output plus new Stop Reasons of malformed_model_output and malformed_tool_use. +* Adds support for Bedrock Runtime Reserved Service. + +### Breaking +* Function signature for `resolve_retry_strategy` has been changed to prevent unnecessary code duplication in operation methods. This will affect all 0.3.0 clients. + +### Dependencies +* **Updated**: `smithy_aws_core[eventstream, json]` from `~=0.2.0` to `~=0.3.0`. +* **Updated**: `smithy_core` from `~=0.2.0` to `~=0.3.0`. + ### Enhancements * Add comprehensive integration tests for non-streaming, output streaming, and bidirectional streaming operations. + ## v0.2.0 ### API Changes diff --git a/clients/aws-sdk-bedrock-runtime/docs/conf.py b/clients/aws-sdk-bedrock-runtime/docs/conf.py index 8a68fa8..205b692 100644 --- a/clients/aws-sdk-bedrock-runtime/docs/conf.py +++ b/clients/aws-sdk-bedrock-runtime/docs/conf.py @@ -7,7 +7,7 @@ project = "Amazon Bedrock Runtime" author = "Amazon Web Services" -release = "0.2.0" +release = "0.3.0" extensions = ["sphinx.ext.autodoc", "sphinx.ext.viewcode"] diff --git a/clients/aws-sdk-bedrock-runtime/docs/models/AudioBlock.rst b/clients/aws-sdk-bedrock-runtime/docs/models/AudioBlock.rst new file mode 100644 index 0000000..501d94f --- /dev/null +++ b/clients/aws-sdk-bedrock-runtime/docs/models/AudioBlock.rst @@ -0,0 +1,8 @@ +.. + Code generated by smithy-python-codegen DO NOT EDIT. + +AudioBlock +========== + +.. autoclass:: aws_sdk_bedrock_runtime.models.AudioBlock + :members: diff --git a/clients/aws-sdk-bedrock-runtime/docs/models/AudioSource.rst b/clients/aws-sdk-bedrock-runtime/docs/models/AudioSource.rst new file mode 100644 index 0000000..9bef7a0 --- /dev/null +++ b/clients/aws-sdk-bedrock-runtime/docs/models/AudioSource.rst @@ -0,0 +1,9 @@ +.. + Code generated by smithy-python-codegen DO NOT EDIT. + +.. _AudioSource: + +AudioSource +=========== + +.. autodata:: aws_sdk_bedrock_runtime.models.AudioSource diff --git a/clients/aws-sdk-bedrock-runtime/docs/models/AudioSourceBytes.rst b/clients/aws-sdk-bedrock-runtime/docs/models/AudioSourceBytes.rst new file mode 100644 index 0000000..ca6c558 --- /dev/null +++ b/clients/aws-sdk-bedrock-runtime/docs/models/AudioSourceBytes.rst @@ -0,0 +1,9 @@ +.. + Code generated by smithy-python-codegen DO NOT EDIT. + +.. _AudioSourceBytes: + +AudioSourceBytes +================ + +.. autoclass:: aws_sdk_bedrock_runtime.models.AudioSourceBytes diff --git a/clients/aws-sdk-bedrock-runtime/docs/models/AudioSourceS3Location.rst b/clients/aws-sdk-bedrock-runtime/docs/models/AudioSourceS3Location.rst new file mode 100644 index 0000000..8af80b0 --- /dev/null +++ b/clients/aws-sdk-bedrock-runtime/docs/models/AudioSourceS3Location.rst @@ -0,0 +1,9 @@ +.. + Code generated by smithy-python-codegen DO NOT EDIT. + +.. _AudioSourceS3Location: + +AudioSourceS3Location +===================== + +.. autoclass:: aws_sdk_bedrock_runtime.models.AudioSourceS3Location diff --git a/clients/aws-sdk-bedrock-runtime/docs/models/AudioSourceUnknown.rst b/clients/aws-sdk-bedrock-runtime/docs/models/AudioSourceUnknown.rst new file mode 100644 index 0000000..fed9644 --- /dev/null +++ b/clients/aws-sdk-bedrock-runtime/docs/models/AudioSourceUnknown.rst @@ -0,0 +1,9 @@ +.. + Code generated by smithy-python-codegen DO NOT EDIT. + +.. _AudioSourceUnknown: + +AudioSourceUnknown +================== + +.. autoclass:: aws_sdk_bedrock_runtime.models.AudioSourceUnknown diff --git a/clients/aws-sdk-bedrock-runtime/docs/models/ContentBlockAudio.rst b/clients/aws-sdk-bedrock-runtime/docs/models/ContentBlockAudio.rst new file mode 100644 index 0000000..5b5e67f --- /dev/null +++ b/clients/aws-sdk-bedrock-runtime/docs/models/ContentBlockAudio.rst @@ -0,0 +1,9 @@ +.. + Code generated by smithy-python-codegen DO NOT EDIT. + +.. _ContentBlockAudio: + +ContentBlockAudio +================= + +.. autoclass:: aws_sdk_bedrock_runtime.models.ContentBlockAudio diff --git a/clients/aws-sdk-bedrock-runtime/docs/models/ContentBlockDeltaImage.rst b/clients/aws-sdk-bedrock-runtime/docs/models/ContentBlockDeltaImage.rst new file mode 100644 index 0000000..bb03cac --- /dev/null +++ b/clients/aws-sdk-bedrock-runtime/docs/models/ContentBlockDeltaImage.rst @@ -0,0 +1,9 @@ +.. + Code generated by smithy-python-codegen DO NOT EDIT. + +.. _ContentBlockDeltaImage: + +ContentBlockDeltaImage +====================== + +.. autoclass:: aws_sdk_bedrock_runtime.models.ContentBlockDeltaImage diff --git a/clients/aws-sdk-bedrock-runtime/docs/models/ContentBlockStartImage.rst b/clients/aws-sdk-bedrock-runtime/docs/models/ContentBlockStartImage.rst new file mode 100644 index 0000000..2f096f6 --- /dev/null +++ b/clients/aws-sdk-bedrock-runtime/docs/models/ContentBlockStartImage.rst @@ -0,0 +1,9 @@ +.. + Code generated by smithy-python-codegen DO NOT EDIT. + +.. _ContentBlockStartImage: + +ContentBlockStartImage +====================== + +.. autoclass:: aws_sdk_bedrock_runtime.models.ContentBlockStartImage diff --git a/clients/aws-sdk-bedrock-runtime/docs/models/ErrorBlock.rst b/clients/aws-sdk-bedrock-runtime/docs/models/ErrorBlock.rst new file mode 100644 index 0000000..3f33edd --- /dev/null +++ b/clients/aws-sdk-bedrock-runtime/docs/models/ErrorBlock.rst @@ -0,0 +1,8 @@ +.. + Code generated by smithy-python-codegen DO NOT EDIT. + +ErrorBlock +========== + +.. autoclass:: aws_sdk_bedrock_runtime.models.ErrorBlock + :members: diff --git a/clients/aws-sdk-bedrock-runtime/docs/models/ImageBlockDelta.rst b/clients/aws-sdk-bedrock-runtime/docs/models/ImageBlockDelta.rst new file mode 100644 index 0000000..416140e --- /dev/null +++ b/clients/aws-sdk-bedrock-runtime/docs/models/ImageBlockDelta.rst @@ -0,0 +1,8 @@ +.. + Code generated by smithy-python-codegen DO NOT EDIT. + +ImageBlockDelta +=============== + +.. autoclass:: aws_sdk_bedrock_runtime.models.ImageBlockDelta + :members: diff --git a/clients/aws-sdk-bedrock-runtime/docs/models/ImageBlockStart.rst b/clients/aws-sdk-bedrock-runtime/docs/models/ImageBlockStart.rst new file mode 100644 index 0000000..c538b92 --- /dev/null +++ b/clients/aws-sdk-bedrock-runtime/docs/models/ImageBlockStart.rst @@ -0,0 +1,8 @@ +.. + Code generated by smithy-python-codegen DO NOT EDIT. + +ImageBlockStart +=============== + +.. autoclass:: aws_sdk_bedrock_runtime.models.ImageBlockStart + :members: diff --git a/clients/aws-sdk-bedrock-runtime/docs/models/ToolResultBlockDeltaJson.rst b/clients/aws-sdk-bedrock-runtime/docs/models/ToolResultBlockDeltaJson.rst new file mode 100644 index 0000000..f30dc03 --- /dev/null +++ b/clients/aws-sdk-bedrock-runtime/docs/models/ToolResultBlockDeltaJson.rst @@ -0,0 +1,9 @@ +.. + Code generated by smithy-python-codegen DO NOT EDIT. + +.. _ToolResultBlockDeltaJson: + +ToolResultBlockDeltaJson +======================== + +.. autoclass:: aws_sdk_bedrock_runtime.models.ToolResultBlockDeltaJson diff --git a/clients/aws-sdk-bedrock-runtime/pyproject.toml b/clients/aws-sdk-bedrock-runtime/pyproject.toml index 67f1c3d..d79eaa7 100644 --- a/clients/aws-sdk-bedrock-runtime/pyproject.toml +++ b/clients/aws-sdk-bedrock-runtime/pyproject.toml @@ -3,7 +3,7 @@ [project] name = "aws_sdk_bedrock_runtime" -version = "0.2.0" +version = "0.3.0" description = "aws_sdk_bedrock_runtime client" readme = "README.md" requires-python = ">=3.12" @@ -24,15 +24,15 @@ classifiers = [ ] dependencies = [ - "smithy_aws_core[eventstream, json]~=0.2.0", - "smithy_core~=0.2.0", + "smithy_aws_core[eventstream, json]~=0.3.0", + "smithy_core~=0.3.0", "smithy_http[awscrt]~=0.3.0" ] [dependency-groups] test = [ - "pytest>=7.2.0,<8.0.0", - "pytest-asyncio>=0.20.3,<0.21.0" + "pytest>=9.0.1,<10.0.0", + "pytest-asyncio>=1.3.0,<1.4.0" ] docs = [ diff --git a/clients/aws-sdk-bedrock-runtime/src/aws_sdk_bedrock_runtime/__init__.py b/clients/aws-sdk-bedrock-runtime/src/aws_sdk_bedrock_runtime/__init__.py index c8417da..768ec96 100644 --- a/clients/aws-sdk-bedrock-runtime/src/aws_sdk_bedrock_runtime/__init__.py +++ b/clients/aws-sdk-bedrock-runtime/src/aws_sdk_bedrock_runtime/__init__.py @@ -1,3 +1,3 @@ # Code generated by smithy-python-codegen DO NOT EDIT. -__version__: str = "0.2.0" +__version__: str = "0.3.0" diff --git a/clients/aws-sdk-bedrock-runtime/src/aws_sdk_bedrock_runtime/_private/schemas.py b/clients/aws-sdk-bedrock-runtime/src/aws_sdk_bedrock_runtime/_private/schemas.py index 103a5f5..fde8457 100644 --- a/clients/aws-sdk-bedrock-runtime/src/aws_sdk_bedrock_runtime/_private/schemas.py +++ b/clients/aws-sdk-bedrock-runtime/src/aws_sdk_bedrock_runtime/_private/schemas.py @@ -2249,6 +2249,122 @@ }, ) +ERROR_BLOCK = Schema.collection( + id=ShapeID("com.amazonaws.bedrockruntime#ErrorBlock"), + traits=[Trait.new(id=ShapeID("smithy.api#sensitive"))], + members={"message": {"target": STRING}}, +) + +AUDIO_FORMAT = Schema.collection( + id=ShapeID("com.amazonaws.bedrockruntime#AudioFormat"), + shape_type=ShapeType.ENUM, + members={ + "MP3": { + "target": UNIT, + "traits": [Trait.new(id=ShapeID("smithy.api#enumValue"), value="mp3")], + }, + "OPUS": { + "target": UNIT, + "traits": [Trait.new(id=ShapeID("smithy.api#enumValue"), value="opus")], + }, + "WAV": { + "target": UNIT, + "traits": [Trait.new(id=ShapeID("smithy.api#enumValue"), value="wav")], + }, + "AAC": { + "target": UNIT, + "traits": [Trait.new(id=ShapeID("smithy.api#enumValue"), value="aac")], + }, + "FLAC": { + "target": UNIT, + "traits": [Trait.new(id=ShapeID("smithy.api#enumValue"), value="flac")], + }, + "MP4": { + "target": UNIT, + "traits": [Trait.new(id=ShapeID("smithy.api#enumValue"), value="mp4")], + }, + "OGG": { + "target": UNIT, + "traits": [Trait.new(id=ShapeID("smithy.api#enumValue"), value="ogg")], + }, + "MKV": { + "target": UNIT, + "traits": [Trait.new(id=ShapeID("smithy.api#enumValue"), value="mkv")], + }, + "MKA": { + "target": UNIT, + "traits": [Trait.new(id=ShapeID("smithy.api#enumValue"), value="mka")], + }, + "X_AAC": { + "target": UNIT, + "traits": [Trait.new(id=ShapeID("smithy.api#enumValue"), value="x-aac")], + }, + "M4A": { + "target": UNIT, + "traits": [Trait.new(id=ShapeID("smithy.api#enumValue"), value="m4a")], + }, + "MPEG": { + "target": UNIT, + "traits": [Trait.new(id=ShapeID("smithy.api#enumValue"), value="mpeg")], + }, + "MPGA": { + "target": UNIT, + "traits": [Trait.new(id=ShapeID("smithy.api#enumValue"), value="mpga")], + }, + "PCM": { + "target": UNIT, + "traits": [Trait.new(id=ShapeID("smithy.api#enumValue"), value="pcm")], + }, + "WEBM": { + "target": UNIT, + "traits": [Trait.new(id=ShapeID("smithy.api#enumValue"), value="webm")], + }, + }, +) + +S3_LOCATION = Schema.collection( + id=ShapeID("com.amazonaws.bedrockruntime#S3Location"), + members={ + "uri": { + "target": S3_URI, + "traits": [Trait.new(id=ShapeID("smithy.api#required"))], + }, + "bucketOwner": {"target": ACCOUNT_ID}, + }, +) + +AUDIO_SOURCE = Schema.collection( + id=ShapeID("com.amazonaws.bedrockruntime#AudioSource"), + shape_type=ShapeType.UNION, + traits=[Trait.new(id=ShapeID("smithy.api#sensitive"))], + members={ + "bytes": { + "target": BLOB, + "traits": [ + Trait.new( + id=ShapeID("smithy.api#length"), value=MappingProxyType({"min": 1}) + ) + ], + }, + "s3Location": {"target": S3_LOCATION}, + }, +) + +AUDIO_BLOCK = Schema.collection( + id=ShapeID("com.amazonaws.bedrockruntime#AudioBlock"), + members={ + "format": { + "target": AUDIO_FORMAT, + "traits": [Trait.new(id=ShapeID("smithy.api#required"))], + }, + "source": { + "target": AUDIO_SOURCE, + "traits": [Trait.new(id=ShapeID("smithy.api#required"))], + }, + "error": {"target": ERROR_BLOCK}, + }, +) + CACHE_POINT_TYPE = Schema.collection( id=ShapeID("com.amazonaws.bedrockruntime#CachePointType"), shape_type=ShapeType.ENUM, @@ -2520,17 +2636,6 @@ members={"member": {"target": DOCUMENT_CONTENT_BLOCK}}, ) -S3_LOCATION = Schema.collection( - id=ShapeID("com.amazonaws.bedrockruntime#S3Location"), - members={ - "uri": { - "target": S3_URI, - "traits": [Trait.new(id=ShapeID("smithy.api#required"))], - }, - "bucketOwner": {"target": ACCOUNT_ID}, - }, -) - DOCUMENT_SOURCE = Schema.collection( id=ShapeID("com.amazonaws.bedrockruntime#DocumentSource"), shape_type=ShapeType.UNION, @@ -2699,6 +2804,7 @@ IMAGE_SOURCE = Schema.collection( id=ShapeID("com.amazonaws.bedrockruntime#ImageSource"), shape_type=ShapeType.UNION, + traits=[Trait.new(id=ShapeID("smithy.api#sensitive"))], members={ "bytes": { "target": BLOB, @@ -2723,6 +2829,7 @@ "target": IMAGE_SOURCE, "traits": [Trait.new(id=ShapeID("smithy.api#required"))], }, + "error": {"target": ERROR_BLOCK}, }, ) @@ -2970,6 +3077,7 @@ "image": {"target": IMAGE_BLOCK}, "document": {"target": DOCUMENT_BLOCK}, "video": {"target": VIDEO_BLOCK}, + "audio": {"target": AUDIO_BLOCK}, "toolUse": {"target": TOOL_USE_BLOCK}, "toolResult": {"target": TOOL_RESULT_BLOCK}, "guardContent": {"target": GUARDRAIL_CONVERSE_CONTENT_BLOCK}, @@ -3134,6 +3242,10 @@ "target": UNIT, "traits": [Trait.new(id=ShapeID("smithy.api#enumValue"), value="flex")], }, + "RESERVED": { + "target": UNIT, + "traits": [Trait.new(id=ShapeID("smithy.api#enumValue"), value="reserved")], + }, }, ) @@ -3346,6 +3458,22 @@ Trait.new(id=ShapeID("smithy.api#enumValue"), value="content_filtered") ], }, + "MALFORMED_MODEL_OUTPUT": { + "target": UNIT, + "traits": [ + Trait.new( + id=ShapeID("smithy.api#enumValue"), value="malformed_model_output" + ) + ], + }, + "MALFORMED_TOOL_USE": { + "target": UNIT, + "traits": [ + Trait.new( + id=ShapeID("smithy.api#enumValue"), value="malformed_tool_use" + ) + ], + }, "MODEL_CONTEXT_WINDOW_EXCEEDED": { "target": UNIT, "traits": [ @@ -3660,6 +3788,11 @@ }, ) +IMAGE_BLOCK_DELTA = Schema.collection( + id=ShapeID("com.amazonaws.bedrockruntime#ImageBlockDelta"), + members={"source": {"target": IMAGE_SOURCE}, "error": {"target": ERROR_BLOCK}}, +) + REASONING_CONTENT_BLOCK_DELTA = Schema.collection( id=ShapeID("com.amazonaws.bedrockruntime#ReasoningContentBlockDelta"), shape_type=ShapeType.UNION, @@ -3674,7 +3807,7 @@ TOOL_RESULT_BLOCK_DELTA = Schema.collection( id=ShapeID("com.amazonaws.bedrockruntime#ToolResultBlockDelta"), shape_type=ShapeType.UNION, - members={"text": {"target": STRING}}, + members={"text": {"target": STRING}, "json": {"target": DOCUMENT}}, ) TOOL_RESULT_BLOCKS_DELTA = Schema.collection( @@ -3702,6 +3835,7 @@ "toolResult": {"target": TOOL_RESULT_BLOCKS_DELTA}, "reasoningContent": {"target": REASONING_CONTENT_BLOCK_DELTA}, "citation": {"target": CITATIONS_DELTA}, + "image": {"target": IMAGE_BLOCK_DELTA}, }, ) @@ -3719,6 +3853,16 @@ }, ) +IMAGE_BLOCK_START = Schema.collection( + id=ShapeID("com.amazonaws.bedrockruntime#ImageBlockStart"), + members={ + "format": { + "target": IMAGE_FORMAT, + "traits": [Trait.new(id=ShapeID("smithy.api#required"))], + } + }, +) + TOOL_RESULT_BLOCK_START = Schema.collection( id=ShapeID("com.amazonaws.bedrockruntime#ToolResultBlockStart"), members={ @@ -3752,6 +3896,7 @@ members={ "toolUse": {"target": TOOL_USE_BLOCK_START}, "toolResult": {"target": TOOL_RESULT_BLOCK_START}, + "image": {"target": IMAGE_BLOCK_START}, }, ) diff --git a/clients/aws-sdk-bedrock-runtime/src/aws_sdk_bedrock_runtime/client.py b/clients/aws-sdk-bedrock-runtime/src/aws_sdk_bedrock_runtime/client.py index 763178c..e93f02b 100644 --- a/clients/aws-sdk-bedrock-runtime/src/aws_sdk_bedrock_runtime/client.py +++ b/clients/aws-sdk-bedrock-runtime/src/aws_sdk_bedrock_runtime/client.py @@ -7,8 +7,7 @@ from smithy_core.aio.eventstream import DuplexEventStream, OutputEventStream from smithy_core.exceptions import ExpectationNotMetError from smithy_core.interceptors import InterceptorChain -from smithy_core.interfaces.retries import RetryStrategy -from smithy_core.retries import RetryStrategyOptions, RetryStrategyResolver +from smithy_core.retries import RetryStrategyResolver from smithy_core.types import TypedProperties from smithy_http.plugins import user_agent_plugin @@ -110,22 +109,9 @@ async def apply_guardrail( "protocol and transport MUST be set on the config to make calls." ) - # Resolve retry strategy from config - if isinstance(config.retry_strategy, RetryStrategy): - retry_strategy = config.retry_strategy - elif isinstance(config.retry_strategy, RetryStrategyOptions): - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=config.retry_strategy - ) - elif config.retry_strategy is None: - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=RetryStrategyOptions() - ) - else: - raise TypeError( - f"retry_strategy must be RetryStrategy, RetryStrategyOptions, or None, " - f"got {type(config.retry_strategy).__name__}" - ) + retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( + retry_strategy=config.retry_strategy + ) pipeline = RequestPipeline(protocol=config.protocol, transport=config.transport) call = ClientCall( @@ -201,22 +187,9 @@ async def converse( "protocol and transport MUST be set on the config to make calls." ) - # Resolve retry strategy from config - if isinstance(config.retry_strategy, RetryStrategy): - retry_strategy = config.retry_strategy - elif isinstance(config.retry_strategy, RetryStrategyOptions): - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=config.retry_strategy - ) - elif config.retry_strategy is None: - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=RetryStrategyOptions() - ) - else: - raise TypeError( - f"retry_strategy must be RetryStrategy, RetryStrategyOptions, or None, " - f"got {type(config.retry_strategy).__name__}" - ) + retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( + retry_strategy=config.retry_strategy + ) pipeline = RequestPipeline(protocol=config.protocol, transport=config.transport) call = ClientCall( @@ -300,22 +273,9 @@ async def converse_stream( "protocol and transport MUST be set on the config to make calls." ) - # Resolve retry strategy from config - if isinstance(config.retry_strategy, RetryStrategy): - retry_strategy = config.retry_strategy - elif isinstance(config.retry_strategy, RetryStrategyOptions): - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=config.retry_strategy - ) - elif config.retry_strategy is None: - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=RetryStrategyOptions() - ) - else: - raise TypeError( - f"retry_strategy must be RetryStrategy, RetryStrategyOptions, or None, " - f"got {type(config.retry_strategy).__name__}" - ) + retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( + retry_strategy=config.retry_strategy + ) pipeline = RequestPipeline(protocol=config.protocol, transport=config.transport) call = ClientCall( @@ -384,22 +344,9 @@ async def count_tokens( "protocol and transport MUST be set on the config to make calls." ) - # Resolve retry strategy from config - if isinstance(config.retry_strategy, RetryStrategy): - retry_strategy = config.retry_strategy - elif isinstance(config.retry_strategy, RetryStrategyOptions): - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=config.retry_strategy - ) - elif config.retry_strategy is None: - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=RetryStrategyOptions() - ) - else: - raise TypeError( - f"retry_strategy must be RetryStrategy, RetryStrategyOptions, or None, " - f"got {type(config.retry_strategy).__name__}" - ) + retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( + retry_strategy=config.retry_strategy + ) pipeline = RequestPipeline(protocol=config.protocol, transport=config.transport) call = ClientCall( @@ -438,22 +385,9 @@ async def get_async_invoke( "protocol and transport MUST be set on the config to make calls." ) - # Resolve retry strategy from config - if isinstance(config.retry_strategy, RetryStrategy): - retry_strategy = config.retry_strategy - elif isinstance(config.retry_strategy, RetryStrategyOptions): - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=config.retry_strategy - ) - elif config.retry_strategy is None: - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=RetryStrategyOptions() - ) - else: - raise TypeError( - f"retry_strategy must be RetryStrategy, RetryStrategyOptions, or None, " - f"got {type(config.retry_strategy).__name__}" - ) + retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( + retry_strategy=config.retry_strategy + ) pipeline = RequestPipeline(protocol=config.protocol, transport=config.transport) call = ClientCall( @@ -510,22 +444,9 @@ async def invoke_model( "protocol and transport MUST be set on the config to make calls." ) - # Resolve retry strategy from config - if isinstance(config.retry_strategy, RetryStrategy): - retry_strategy = config.retry_strategy - elif isinstance(config.retry_strategy, RetryStrategyOptions): - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=config.retry_strategy - ) - elif config.retry_strategy is None: - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=RetryStrategyOptions() - ) - else: - raise TypeError( - f"retry_strategy must be RetryStrategy, RetryStrategyOptions, or None, " - f"got {type(config.retry_strategy).__name__}" - ) + retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( + retry_strategy=config.retry_strategy + ) pipeline = RequestPipeline(protocol=config.protocol, transport=config.transport) call = ClientCall( @@ -578,22 +499,9 @@ async def invoke_model_with_bidirectional_stream( "protocol and transport MUST be set on the config to make calls." ) - # Resolve retry strategy from config - if isinstance(config.retry_strategy, RetryStrategy): - retry_strategy = config.retry_strategy - elif isinstance(config.retry_strategy, RetryStrategyOptions): - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=config.retry_strategy - ) - elif config.retry_strategy is None: - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=RetryStrategyOptions() - ) - else: - raise TypeError( - f"retry_strategy must be RetryStrategy, RetryStrategyOptions, or None, " - f"got {type(config.retry_strategy).__name__}" - ) + retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( + retry_strategy=config.retry_strategy + ) pipeline = RequestPipeline(protocol=config.protocol, transport=config.transport) call = ClientCall( @@ -665,22 +573,9 @@ async def invoke_model_with_response_stream( "protocol and transport MUST be set on the config to make calls." ) - # Resolve retry strategy from config - if isinstance(config.retry_strategy, RetryStrategy): - retry_strategy = config.retry_strategy - elif isinstance(config.retry_strategy, RetryStrategyOptions): - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=config.retry_strategy - ) - elif config.retry_strategy is None: - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=RetryStrategyOptions() - ) - else: - raise TypeError( - f"retry_strategy must be RetryStrategy, RetryStrategyOptions, or None, " - f"got {type(config.retry_strategy).__name__}" - ) + retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( + retry_strategy=config.retry_strategy + ) pipeline = RequestPipeline(protocol=config.protocol, transport=config.transport) call = ClientCall( @@ -721,22 +616,9 @@ async def list_async_invokes( "protocol and transport MUST be set on the config to make calls." ) - # Resolve retry strategy from config - if isinstance(config.retry_strategy, RetryStrategy): - retry_strategy = config.retry_strategy - elif isinstance(config.retry_strategy, RetryStrategyOptions): - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=config.retry_strategy - ) - elif config.retry_strategy is None: - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=RetryStrategyOptions() - ) - else: - raise TypeError( - f"retry_strategy must be RetryStrategy, RetryStrategyOptions, or None, " - f"got {type(config.retry_strategy).__name__}" - ) + retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( + retry_strategy=config.retry_strategy + ) pipeline = RequestPipeline(protocol=config.protocol, transport=config.transport) call = ClientCall( @@ -784,22 +666,9 @@ async def start_async_invoke( "protocol and transport MUST be set on the config to make calls." ) - # Resolve retry strategy from config - if isinstance(config.retry_strategy, RetryStrategy): - retry_strategy = config.retry_strategy - elif isinstance(config.retry_strategy, RetryStrategyOptions): - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=config.retry_strategy - ) - elif config.retry_strategy is None: - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=RetryStrategyOptions() - ) - else: - raise TypeError( - f"retry_strategy must be RetryStrategy, RetryStrategyOptions, or None, " - f"got {type(config.retry_strategy).__name__}" - ) + retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( + retry_strategy=config.retry_strategy + ) pipeline = RequestPipeline(protocol=config.protocol, transport=config.transport) call = ClientCall( diff --git a/clients/aws-sdk-bedrock-runtime/src/aws_sdk_bedrock_runtime/models.py b/clients/aws-sdk-bedrock-runtime/src/aws_sdk_bedrock_runtime/models.py index 653e020..3e96a2b 100644 --- a/clients/aws-sdk-bedrock-runtime/src/aws_sdk_bedrock_runtime/models.py +++ b/clients/aws-sdk-bedrock-runtime/src/aws_sdk_bedrock_runtime/models.py @@ -23,6 +23,8 @@ ASYNC_INVOKE_OUTPUT_DATA_CONFIG as _SCHEMA_ASYNC_INVOKE_OUTPUT_DATA_CONFIG, ASYNC_INVOKE_S3_OUTPUT_DATA_CONFIG as _SCHEMA_ASYNC_INVOKE_S3_OUTPUT_DATA_CONFIG, ASYNC_INVOKE_SUMMARY as _SCHEMA_ASYNC_INVOKE_SUMMARY, + AUDIO_BLOCK as _SCHEMA_AUDIO_BLOCK, + AUDIO_SOURCE as _SCHEMA_AUDIO_SOURCE, AUTO_TOOL_CHOICE as _SCHEMA_AUTO_TOOL_CHOICE, BIDIRECTIONAL_INPUT_PAYLOAD_PART as _SCHEMA_BIDIRECTIONAL_INPUT_PAYLOAD_PART, BIDIRECTIONAL_OUTPUT_PAYLOAD_PART as _SCHEMA_BIDIRECTIONAL_OUTPUT_PAYLOAD_PART, @@ -66,6 +68,7 @@ DOCUMENT_CONTENT_BLOCK as _SCHEMA_DOCUMENT_CONTENT_BLOCK, DOCUMENT_PAGE_LOCATION as _SCHEMA_DOCUMENT_PAGE_LOCATION, DOCUMENT_SOURCE as _SCHEMA_DOCUMENT_SOURCE, + ERROR_BLOCK as _SCHEMA_ERROR_BLOCK, GET_ASYNC_INVOKE as _SCHEMA_GET_ASYNC_INVOKE, GET_ASYNC_INVOKE_INPUT as _SCHEMA_GET_ASYNC_INVOKE_INPUT, GET_ASYNC_INVOKE_OUTPUT as _SCHEMA_GET_ASYNC_INVOKE_OUTPUT, @@ -116,6 +119,8 @@ GUARDRAIL_USAGE as _SCHEMA_GUARDRAIL_USAGE, GUARDRAIL_WORD_POLICY_ASSESSMENT as _SCHEMA_GUARDRAIL_WORD_POLICY_ASSESSMENT, IMAGE_BLOCK as _SCHEMA_IMAGE_BLOCK, + IMAGE_BLOCK_DELTA as _SCHEMA_IMAGE_BLOCK_DELTA, + IMAGE_BLOCK_START as _SCHEMA_IMAGE_BLOCK_START, IMAGE_SOURCE as _SCHEMA_IMAGE_SOURCE, INFERENCE_CONFIGURATION as _SCHEMA_INFERENCE_CONFIGURATION, INTERNAL_SERVER_EXCEPTION as _SCHEMA_INTERNAL_SERVER_EXCEPTION, @@ -6101,6 +6106,283 @@ def _consumer(schema: Schema, de: ShapeDeserializer) -> None: return kwargs +@dataclass(kw_only=True) +class ErrorBlock: + """ + A block containing error information when content processing fails. + """ + + message: str | None = None + """ + A human-readable error message describing what went wrong during content + processing. + """ + + def serialize(self, serializer: ShapeSerializer): + serializer.write_struct(_SCHEMA_ERROR_BLOCK, self) + + def serialize_members(self, serializer: ShapeSerializer): + if self.message is not None: + serializer.write_string( + _SCHEMA_ERROR_BLOCK.members["message"], self.message + ) + + @classmethod + def deserialize(cls, deserializer: ShapeDeserializer) -> Self: + return cls(**cls.deserialize_kwargs(deserializer)) + + @classmethod + def deserialize_kwargs(cls, deserializer: ShapeDeserializer) -> dict[str, Any]: + kwargs: dict[str, Any] = {} + + def _consumer(schema: Schema, de: ShapeDeserializer) -> None: + match schema.expect_member_index(): + case 0: + kwargs["message"] = de.read_string( + _SCHEMA_ERROR_BLOCK.members["message"] + ) + + case _: + logger.debug("Unexpected member schema: %s", schema) + + deserializer.read_struct(_SCHEMA_ERROR_BLOCK, consumer=_consumer) + return kwargs + + +class AudioFormat(StrEnum): + MP3 = "mp3" + OPUS = "opus" + WAV = "wav" + AAC = "aac" + FLAC = "flac" + MP4 = "mp4" + OGG = "ogg" + MKV = "mkv" + MKA = "mka" + X_AAC = "x-aac" + M4_A = "m4a" + MPEG = "mpeg" + MPGA = "mpga" + PCM = "pcm" + WEBM = "webm" + + +@dataclass(kw_only=True) +class S3Location: + """ + A storage location in an Amazon S3 bucket. + """ + + uri: str + """ + An object URI starting with ``s3://``. + """ + + bucket_owner: str | None = None + """ + If the bucket belongs to another AWS account, specify that account's ID. + """ + + def serialize(self, serializer: ShapeSerializer): + serializer.write_struct(_SCHEMA_S3_LOCATION, self) + + def serialize_members(self, serializer: ShapeSerializer): + serializer.write_string(_SCHEMA_S3_LOCATION.members["uri"], self.uri) + if self.bucket_owner is not None: + serializer.write_string( + _SCHEMA_S3_LOCATION.members["bucketOwner"], self.bucket_owner + ) + + @classmethod + def deserialize(cls, deserializer: ShapeDeserializer) -> Self: + return cls(**cls.deserialize_kwargs(deserializer)) + + @classmethod + def deserialize_kwargs(cls, deserializer: ShapeDeserializer) -> dict[str, Any]: + kwargs: dict[str, Any] = {} + + def _consumer(schema: Schema, de: ShapeDeserializer) -> None: + match schema.expect_member_index(): + case 0: + kwargs["uri"] = de.read_string(_SCHEMA_S3_LOCATION.members["uri"]) + + case 1: + kwargs["bucket_owner"] = de.read_string( + _SCHEMA_S3_LOCATION.members["bucketOwner"] + ) + + case _: + logger.debug("Unexpected member schema: %s", schema) + + deserializer.read_struct(_SCHEMA_S3_LOCATION, consumer=_consumer) + return kwargs + + +@dataclass +class AudioSourceBytes: + """ + Audio data encoded in base64. + """ + + value: bytes + + def serialize(self, serializer: ShapeSerializer): + serializer.write_struct(_SCHEMA_AUDIO_SOURCE, self) + + def serialize_members(self, serializer: ShapeSerializer): + serializer.write_blob(_SCHEMA_AUDIO_SOURCE.members["bytes"], self.value) + + @classmethod + def deserialize(cls, deserializer: ShapeDeserializer) -> Self: + return cls(value=deserializer.read_blob(_SCHEMA_AUDIO_SOURCE.members["bytes"])) + + +@dataclass +class AudioSourceS3Location: + """ + A reference to audio data stored in an Amazon S3 bucket. To see which models + support S3 uploads, see `Supported models and features for Converse `_ + . + """ + + value: S3Location + + def serialize(self, serializer: ShapeSerializer): + serializer.write_struct(_SCHEMA_AUDIO_SOURCE, self) + + def serialize_members(self, serializer: ShapeSerializer): + serializer.write_struct(_SCHEMA_AUDIO_SOURCE.members["s3Location"], self.value) + + @classmethod + def deserialize(cls, deserializer: ShapeDeserializer) -> Self: + return cls(value=S3Location.deserialize(deserializer)) + + +@dataclass +class AudioSourceUnknown: + """Represents an unknown variant. + + If you receive this value, you will need to update your library to receive the + parsed value. + + This value may not be deliberately sent. + """ + + tag: str + + def serialize(self, serializer: ShapeSerializer): + raise SerializationError("Unknown union variants may not be serialized.") + + def serialize_members(self, serializer: ShapeSerializer): + raise SerializationError("Unknown union variants may not be serialized.") + + @classmethod + def deserialize(cls, deserializer: ShapeDeserializer) -> Self: + raise NotImplementedError() + + +AudioSource = Union[AudioSourceBytes | AudioSourceS3Location | AudioSourceUnknown] + +""" +The source of audio data, which can be provided either as raw bytes or a +reference to an S3 location. +""" + + +class _AudioSourceDeserializer: + _result: AudioSource | None = None + + def deserialize(self, deserializer: ShapeDeserializer) -> AudioSource: + self._result = None + deserializer.read_struct(_SCHEMA_AUDIO_SOURCE, self._consumer) + + if self._result is None: + raise SerializationError( + "Unions must have exactly one value, but found none." + ) + + return self._result + + def _consumer(self, schema: Schema, de: ShapeDeserializer) -> None: + match schema.expect_member_index(): + case 0: + self._set_result(AudioSourceBytes.deserialize(de)) + + case 1: + self._set_result(AudioSourceS3Location.deserialize(de)) + + case _: + logger.debug("Unexpected member schema: %s", schema) + + def _set_result(self, value: AudioSource) -> None: + if self._result is not None: + raise SerializationError( + "Unions must have exactly one value, but found more than one." + ) + self._result = value + + +@dataclass(kw_only=True) +class AudioBlock: + """ + An audio content block that contains audio data in various supported formats. + """ + + format: str + """ + The format of the audio data, such as MP3, WAV, FLAC, or other supported audio + formats. + """ + + source: AudioSource = field(repr=False) + """ + The source of the audio data, which can be provided as raw bytes or an S3 + location. + """ + + error: ErrorBlock | None = field(repr=False, default=None) + """ + Error information if the audio block could not be processed or contains invalid + data. + """ + + def serialize(self, serializer: ShapeSerializer): + serializer.write_struct(_SCHEMA_AUDIO_BLOCK, self) + + def serialize_members(self, serializer: ShapeSerializer): + serializer.write_string(_SCHEMA_AUDIO_BLOCK.members["format"], self.format) + serializer.write_struct(_SCHEMA_AUDIO_BLOCK.members["source"], self.source) + if self.error is not None: + serializer.write_struct(_SCHEMA_AUDIO_BLOCK.members["error"], self.error) + + @classmethod + def deserialize(cls, deserializer: ShapeDeserializer) -> Self: + return cls(**cls.deserialize_kwargs(deserializer)) + + @classmethod + def deserialize_kwargs(cls, deserializer: ShapeDeserializer) -> dict[str, Any]: + kwargs: dict[str, Any] = {} + + def _consumer(schema: Schema, de: ShapeDeserializer) -> None: + match schema.expect_member_index(): + case 0: + kwargs["format"] = de.read_string( + _SCHEMA_AUDIO_BLOCK.members["format"] + ) + + case 1: + kwargs["source"] = _AudioSourceDeserializer().deserialize(de) + + case 2: + kwargs["error"] = ErrorBlock.deserialize(de) + + case _: + logger.debug("Unexpected member schema: %s", schema) + + deserializer.read_struct(_SCHEMA_AUDIO_BLOCK, consumer=_consumer) + return kwargs + + class CachePointType(StrEnum): DEFAULT = "default" @@ -7248,57 +7530,6 @@ def _read_value(d: ShapeDeserializer): return result -@dataclass(kw_only=True) -class S3Location: - """ - A storage location in an Amazon S3 bucket. - """ - - uri: str - """ - An object URI starting with ``s3://``. - """ - - bucket_owner: str | None = None - """ - If the bucket belongs to another AWS account, specify that account's ID. - """ - - def serialize(self, serializer: ShapeSerializer): - serializer.write_struct(_SCHEMA_S3_LOCATION, self) - - def serialize_members(self, serializer: ShapeSerializer): - serializer.write_string(_SCHEMA_S3_LOCATION.members["uri"], self.uri) - if self.bucket_owner is not None: - serializer.write_string( - _SCHEMA_S3_LOCATION.members["bucketOwner"], self.bucket_owner - ) - - @classmethod - def deserialize(cls, deserializer: ShapeDeserializer) -> Self: - return cls(**cls.deserialize_kwargs(deserializer)) - - @classmethod - def deserialize_kwargs(cls, deserializer: ShapeDeserializer) -> dict[str, Any]: - kwargs: dict[str, Any] = {} - - def _consumer(schema: Schema, de: ShapeDeserializer) -> None: - match schema.expect_member_index(): - case 0: - kwargs["uri"] = de.read_string(_SCHEMA_S3_LOCATION.members["uri"]) - - case 1: - kwargs["bucket_owner"] = de.read_string( - _SCHEMA_S3_LOCATION.members["bucketOwner"] - ) - - case _: - logger.debug("Unexpected member schema: %s", schema) - - deserializer.read_struct(_SCHEMA_S3_LOCATION, consumer=_consumer) - return kwargs - - @dataclass class DocumentSourceBytes: """ @@ -8055,17 +8286,25 @@ class ImageBlock: The format of the image. """ - source: ImageSource + source: ImageSource = field(repr=False) """ The source for the image. """ + error: ErrorBlock | None = field(repr=False, default=None) + """ + Error information if the image block could not be processed or contains invalid + data. + """ + def serialize(self, serializer: ShapeSerializer): serializer.write_struct(_SCHEMA_IMAGE_BLOCK, self) def serialize_members(self, serializer: ShapeSerializer): serializer.write_string(_SCHEMA_IMAGE_BLOCK.members["format"], self.format) serializer.write_struct(_SCHEMA_IMAGE_BLOCK.members["source"], self.source) + if self.error is not None: + serializer.write_struct(_SCHEMA_IMAGE_BLOCK.members["error"], self.error) @classmethod def deserialize(cls, deserializer: ShapeDeserializer) -> Self: @@ -8085,6 +8324,9 @@ def _consumer(schema: Schema, de: ShapeDeserializer) -> None: case 1: kwargs["source"] = _ImageSourceDeserializer().deserialize(de) + case 2: + kwargs["error"] = ErrorBlock.deserialize(de) + case _: logger.debug("Unexpected member schema: %s", schema) @@ -9082,6 +9324,25 @@ def deserialize(cls, deserializer: ShapeDeserializer) -> Self: return cls(value=VideoBlock.deserialize(deserializer)) +@dataclass +class ContentBlockAudio: + """ + An audio content block containing audio data in the conversation. + """ + + value: AudioBlock + + def serialize(self, serializer: ShapeSerializer): + serializer.write_struct(_SCHEMA_CONTENT_BLOCK, self) + + def serialize_members(self, serializer: ShapeSerializer): + serializer.write_struct(_SCHEMA_CONTENT_BLOCK.members["audio"], self.value) + + @classmethod + def deserialize(cls, deserializer: ShapeDeserializer) -> Self: + return cls(value=AudioBlock.deserialize(deserializer)) + + @dataclass class ContentBlockToolUse: """ @@ -9261,6 +9522,7 @@ def deserialize(cls, deserializer: ShapeDeserializer) -> Self: | ContentBlockImage | ContentBlockDocument | ContentBlockVideo + | ContentBlockAudio | ContentBlockToolUse | ContentBlockToolResult | ContentBlockGuardContent @@ -9308,24 +9570,27 @@ def _consumer(self, schema: Schema, de: ShapeDeserializer) -> None: self._set_result(ContentBlockVideo.deserialize(de)) case 4: - self._set_result(ContentBlockToolUse.deserialize(de)) + self._set_result(ContentBlockAudio.deserialize(de)) case 5: - self._set_result(ContentBlockToolResult.deserialize(de)) + self._set_result(ContentBlockToolUse.deserialize(de)) case 6: - self._set_result(ContentBlockGuardContent.deserialize(de)) + self._set_result(ContentBlockToolResult.deserialize(de)) case 7: - self._set_result(ContentBlockCachePoint.deserialize(de)) + self._set_result(ContentBlockGuardContent.deserialize(de)) case 8: - self._set_result(ContentBlockReasoningContent.deserialize(de)) + self._set_result(ContentBlockCachePoint.deserialize(de)) case 9: - self._set_result(ContentBlockCitationsContent.deserialize(de)) + self._set_result(ContentBlockReasoningContent.deserialize(de)) case 10: + self._set_result(ContentBlockCitationsContent.deserialize(de)) + + case 11: self._set_result(ContentBlockSearchResult.deserialize(de)) case _: @@ -9647,6 +9912,7 @@ class ServiceTierType(StrEnum): PRIORITY = "priority" DEFAULT = "default" FLEX = "flex" + RESERVED = "reserved" @dataclass(kw_only=True) @@ -10873,6 +11139,8 @@ class StopReason(StrEnum): STOP_SEQUENCE = "stop_sequence" GUARDRAIL_INTERVENED = "guardrail_intervened" CONTENT_FILTERED = "content_filtered" + MALFORMED_MODEL_OUTPUT = "malformed_model_output" + MALFORMED_TOOL_USE = "malformed_tool_use" MODEL_CONTEXT_WINDOW_EXCEEDED = "model_context_window_exceeded" @@ -12124,6 +12392,60 @@ def _consumer(schema: Schema, de: ShapeDeserializer) -> None: return kwargs +@dataclass(kw_only=True) +class ImageBlockDelta: + """ + A streaming delta event that contains incremental image data during streaming + responses. + """ + + source: ImageSource | None = field(repr=False, default=None) + """ + The incremental image source data for this delta event. + """ + + error: ErrorBlock | None = field(repr=False, default=None) + """ + Error information if this image delta could not be processed. + """ + + def serialize(self, serializer: ShapeSerializer): + serializer.write_struct(_SCHEMA_IMAGE_BLOCK_DELTA, self) + + def serialize_members(self, serializer: ShapeSerializer): + if self.source is not None: + serializer.write_struct( + _SCHEMA_IMAGE_BLOCK_DELTA.members["source"], self.source + ) + + if self.error is not None: + serializer.write_struct( + _SCHEMA_IMAGE_BLOCK_DELTA.members["error"], self.error + ) + + @classmethod + def deserialize(cls, deserializer: ShapeDeserializer) -> Self: + return cls(**cls.deserialize_kwargs(deserializer)) + + @classmethod + def deserialize_kwargs(cls, deserializer: ShapeDeserializer) -> dict[str, Any]: + kwargs: dict[str, Any] = {} + + def _consumer(schema: Schema, de: ShapeDeserializer) -> None: + match schema.expect_member_index(): + case 0: + kwargs["source"] = _ImageSourceDeserializer().deserialize(de) + + case 1: + kwargs["error"] = ErrorBlock.deserialize(de) + + case _: + logger.debug("Unexpected member schema: %s", schema) + + deserializer.read_struct(_SCHEMA_IMAGE_BLOCK_DELTA, consumer=_consumer) + return kwargs + + @dataclass class ReasoningContentBlockDeltaText: """ @@ -12305,6 +12627,32 @@ def deserialize(cls, deserializer: ShapeDeserializer) -> Self: ) +@dataclass +class ToolResultBlockDeltaJson: + """ + The JSON schema for the tool result content block. see `JSON Schema Reference `_ + . + """ + + value: Document + + def serialize(self, serializer: ShapeSerializer): + serializer.write_struct(_SCHEMA_TOOL_RESULT_BLOCK_DELTA, self) + + def serialize_members(self, serializer: ShapeSerializer): + serializer.write_document( + _SCHEMA_TOOL_RESULT_BLOCK_DELTA.members["json"], self.value + ) + + @classmethod + def deserialize(cls, deserializer: ShapeDeserializer) -> Self: + return cls( + value=deserializer.read_document( + _SCHEMA_TOOL_RESULT_BLOCK_DELTA.members["json"] + ) + ) + + @dataclass class ToolResultBlockDeltaUnknown: """Represents an unknown variant. @@ -12328,7 +12676,9 @@ def deserialize(cls, deserializer: ShapeDeserializer) -> Self: raise NotImplementedError() -ToolResultBlockDelta = Union[ToolResultBlockDeltaText | ToolResultBlockDeltaUnknown] +ToolResultBlockDelta = Union[ + ToolResultBlockDeltaText | ToolResultBlockDeltaJson | ToolResultBlockDeltaUnknown +] """ Contains incremental updates to tool results information during streaming @@ -12356,6 +12706,9 @@ def _consumer(self, schema: Schema, de: ShapeDeserializer) -> None: case 0: self._set_result(ToolResultBlockDeltaText.deserialize(de)) + case 1: + self._set_result(ToolResultBlockDeltaJson.deserialize(de)) + case _: logger.debug("Unexpected member schema: %s", schema) @@ -12547,6 +12900,27 @@ def deserialize(cls, deserializer: ShapeDeserializer) -> Self: return cls(value=CitationsDelta.deserialize(deserializer)) +@dataclass +class ContentBlockDeltaImage: + """ + A streaming delta event containing incremental image data. + """ + + value: ImageBlockDelta + + def serialize(self, serializer: ShapeSerializer): + serializer.write_struct(_SCHEMA_CONTENT_BLOCK_DELTA, self) + + def serialize_members(self, serializer: ShapeSerializer): + serializer.write_struct( + _SCHEMA_CONTENT_BLOCK_DELTA.members["image"], self.value + ) + + @classmethod + def deserialize(cls, deserializer: ShapeDeserializer) -> Self: + return cls(value=ImageBlockDelta.deserialize(deserializer)) + + @dataclass class ContentBlockDeltaUnknown: """Represents an unknown variant. @@ -12576,6 +12950,7 @@ def deserialize(cls, deserializer: ShapeDeserializer) -> Self: | ContentBlockDeltaToolResult | ContentBlockDeltaReasoningContent | ContentBlockDeltaCitation + | ContentBlockDeltaImage | ContentBlockDeltaUnknown ] @@ -12615,6 +12990,9 @@ def _consumer(self, schema: Schema, de: ShapeDeserializer) -> None: case 4: self._set_result(ContentBlockDeltaCitation.deserialize(de)) + case 5: + self._set_result(ContentBlockDeltaImage.deserialize(de)) + case _: logger.debug("Unexpected member schema: %s", schema) @@ -12679,6 +13057,48 @@ def _consumer(schema: Schema, de: ShapeDeserializer) -> None: return kwargs +@dataclass(kw_only=True) +class ImageBlockStart: + """ + The initial event in a streaming image block that indicates the start of image + content. + """ + + format: str + """ + The format of the image data that will be streamed in subsequent delta events. + """ + + def serialize(self, serializer: ShapeSerializer): + serializer.write_struct(_SCHEMA_IMAGE_BLOCK_START, self) + + def serialize_members(self, serializer: ShapeSerializer): + serializer.write_string( + _SCHEMA_IMAGE_BLOCK_START.members["format"], self.format + ) + + @classmethod + def deserialize(cls, deserializer: ShapeDeserializer) -> Self: + return cls(**cls.deserialize_kwargs(deserializer)) + + @classmethod + def deserialize_kwargs(cls, deserializer: ShapeDeserializer) -> dict[str, Any]: + kwargs: dict[str, Any] = {} + + def _consumer(schema: Schema, de: ShapeDeserializer) -> None: + match schema.expect_member_index(): + case 0: + kwargs["format"] = de.read_string( + _SCHEMA_IMAGE_BLOCK_START.members["format"] + ) + + case _: + logger.debug("Unexpected member schema: %s", schema) + + deserializer.read_struct(_SCHEMA_IMAGE_BLOCK_START, consumer=_consumer) + return kwargs + + @dataclass(kw_only=True) class ToolResultBlockStart: """ @@ -12859,6 +13279,27 @@ def deserialize(cls, deserializer: ShapeDeserializer) -> Self: return cls(value=ToolResultBlockStart.deserialize(deserializer)) +@dataclass +class ContentBlockStartImage: + """ + The initial event indicating the start of a streaming image block. + """ + + value: ImageBlockStart + + def serialize(self, serializer: ShapeSerializer): + serializer.write_struct(_SCHEMA_CONTENT_BLOCK_START, self) + + def serialize_members(self, serializer: ShapeSerializer): + serializer.write_struct( + _SCHEMA_CONTENT_BLOCK_START.members["image"], self.value + ) + + @classmethod + def deserialize(cls, deserializer: ShapeDeserializer) -> Self: + return cls(value=ImageBlockStart.deserialize(deserializer)) + + @dataclass class ContentBlockStartUnknown: """Represents an unknown variant. @@ -12883,7 +13324,10 @@ def deserialize(cls, deserializer: ShapeDeserializer) -> Self: ContentBlockStart = Union[ - ContentBlockStartToolUse | ContentBlockStartToolResult | ContentBlockStartUnknown + ContentBlockStartToolUse + | ContentBlockStartToolResult + | ContentBlockStartImage + | ContentBlockStartUnknown ] """ @@ -12913,6 +13357,9 @@ def _consumer(self, schema: Schema, de: ShapeDeserializer) -> None: case 1: self._set_result(ContentBlockStartToolResult.deserialize(de)) + case 2: + self._set_result(ContentBlockStartImage.deserialize(de)) + case _: logger.debug("Unexpected member schema: %s", schema) diff --git a/clients/aws-sdk-python/pyproject.toml b/clients/aws-sdk-python/pyproject.toml index 09548ec..9457083 100644 --- a/clients/aws-sdk-python/pyproject.toml +++ b/clients/aws-sdk-python/pyproject.toml @@ -22,7 +22,7 @@ classifiers = [ dependencies = [] [project.optional-dependencies] -bedrock_runtime = ["aws_sdk_bedrock_runtime==0.2.0"] +bedrock_runtime = ["aws_sdk_bedrock_runtime==0.3.0"] sagemaker_runtime_http2 = ["aws_sdk_sagemaker_runtime_http2==0.1.0"] transcribe_streaming = ["aws_sdk_transcribe_streaming==0.2.0"] all = [ From 3c94529e548dc30cfa4a11a2d532edf6bbb288b8 Mon Sep 17 00:00:00 2001 From: Nate Prewitt Date: Fri, 2 Jan 2026 09:54:59 -0700 Subject: [PATCH 6/8] Release: AWS SDK Transcribe Streaming 0.3.0 --- clients/aws-sdk-python/pyproject.toml | 2 +- .../aws-sdk-transcribe-streaming/CHANGELOG.md | 11 +++ .../aws-sdk-transcribe-streaming/docs/conf.py | 2 +- .../pyproject.toml | 10 +- .../aws_sdk_transcribe_streaming/__init__.py | 2 +- .../aws_sdk_transcribe_streaming/client.py | 98 +++---------------- 6 files changed, 35 insertions(+), 90 deletions(-) diff --git a/clients/aws-sdk-python/pyproject.toml b/clients/aws-sdk-python/pyproject.toml index 9457083..e6fea37 100644 --- a/clients/aws-sdk-python/pyproject.toml +++ b/clients/aws-sdk-python/pyproject.toml @@ -24,7 +24,7 @@ dependencies = [] [project.optional-dependencies] bedrock_runtime = ["aws_sdk_bedrock_runtime==0.3.0"] sagemaker_runtime_http2 = ["aws_sdk_sagemaker_runtime_http2==0.1.0"] -transcribe_streaming = ["aws_sdk_transcribe_streaming==0.2.0"] +transcribe_streaming = ["aws_sdk_transcribe_streaming==0.3.0"] all = [ "aws_sdk_python[bedrock_runtime]", "aws_sdk_python[sagemaker_runtime_http2]", diff --git a/clients/aws-sdk-transcribe-streaming/CHANGELOG.md b/clients/aws-sdk-transcribe-streaming/CHANGELOG.md index e2ec005..8be04cc 100644 --- a/clients/aws-sdk-transcribe-streaming/CHANGELOG.md +++ b/clients/aws-sdk-transcribe-streaming/CHANGELOG.md @@ -2,6 +2,17 @@ ## Unreleased +* None yet. + +## v0.3.0 + +### Breaking +* Function signature for `resolve_retry_strategy` has been changed to prevent unnecessary code duplication in operation methods. This will affect all 0.3.0 clients. + +### Dependencies +* **Updated**: `smithy_aws_core[eventstream, json]` from `~=0.2.0` to `~=0.3.0`. +* **Updated**: `smithy_core` from `~=0.2.0` to `~=0.3.0`. + ## v0.2.0 ### API Changes diff --git a/clients/aws-sdk-transcribe-streaming/docs/conf.py b/clients/aws-sdk-transcribe-streaming/docs/conf.py index e746b4c..c4f201a 100644 --- a/clients/aws-sdk-transcribe-streaming/docs/conf.py +++ b/clients/aws-sdk-transcribe-streaming/docs/conf.py @@ -7,7 +7,7 @@ project = "Amazon Transcribe Streaming Service" author = "Amazon Web Services" -release = "0.2.0" +release = "0.3.0" extensions = ["sphinx.ext.autodoc", "sphinx.ext.viewcode"] diff --git a/clients/aws-sdk-transcribe-streaming/pyproject.toml b/clients/aws-sdk-transcribe-streaming/pyproject.toml index 17e258a..d80bde3 100644 --- a/clients/aws-sdk-transcribe-streaming/pyproject.toml +++ b/clients/aws-sdk-transcribe-streaming/pyproject.toml @@ -3,7 +3,7 @@ [project] name = "aws_sdk_transcribe_streaming" -version = "0.2.0" +version = "0.3.0" description = "aws_sdk_transcribe_streaming client" readme = "README.md" requires-python = ">=3.12" @@ -24,15 +24,15 @@ classifiers = [ ] dependencies = [ - "smithy_aws_core[eventstream, json]~=0.2.0", - "smithy_core~=0.2.0", + "smithy_aws_core[eventstream, json]~=0.3.0", + "smithy_core~=0.3.0", "smithy_http[awscrt]~=0.3.0" ] [dependency-groups] test = [ - "pytest>=7.2.0,<8.0.0", - "pytest-asyncio>=0.20.3,<0.21.0" + "pytest>=9.0.1,<10.0.0", + "pytest-asyncio>=1.3.0,<1.4.0" ] docs = [ diff --git a/clients/aws-sdk-transcribe-streaming/src/aws_sdk_transcribe_streaming/__init__.py b/clients/aws-sdk-transcribe-streaming/src/aws_sdk_transcribe_streaming/__init__.py index c8417da..768ec96 100644 --- a/clients/aws-sdk-transcribe-streaming/src/aws_sdk_transcribe_streaming/__init__.py +++ b/clients/aws-sdk-transcribe-streaming/src/aws_sdk_transcribe_streaming/__init__.py @@ -1,3 +1,3 @@ # Code generated by smithy-python-codegen DO NOT EDIT. -__version__: str = "0.2.0" +__version__: str = "0.3.0" diff --git a/clients/aws-sdk-transcribe-streaming/src/aws_sdk_transcribe_streaming/client.py b/clients/aws-sdk-transcribe-streaming/src/aws_sdk_transcribe_streaming/client.py index d8155f9..346ac89 100644 --- a/clients/aws-sdk-transcribe-streaming/src/aws_sdk_transcribe_streaming/client.py +++ b/clients/aws-sdk-transcribe-streaming/src/aws_sdk_transcribe_streaming/client.py @@ -7,8 +7,7 @@ from smithy_core.aio.eventstream import DuplexEventStream from smithy_core.exceptions import ExpectationNotMetError from smithy_core.interceptors import InterceptorChain -from smithy_core.interfaces.retries import RetryStrategy -from smithy_core.retries import RetryStrategyOptions, RetryStrategyResolver +from smithy_core.retries import RetryStrategyResolver from smithy_core.types import TypedProperties from smithy_http.plugins import user_agent_plugin @@ -105,22 +104,9 @@ async def get_medical_scribe_stream( "protocol and transport MUST be set on the config to make calls." ) - # Resolve retry strategy from config - if isinstance(config.retry_strategy, RetryStrategy): - retry_strategy = config.retry_strategy - elif isinstance(config.retry_strategy, RetryStrategyOptions): - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=config.retry_strategy - ) - elif config.retry_strategy is None: - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=RetryStrategyOptions() - ) - else: - raise TypeError( - f"retry_strategy must be RetryStrategy, RetryStrategyOptions, or None, " - f"got {type(config.retry_strategy).__name__}" - ) + retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( + retry_strategy=config.retry_strategy + ) pipeline = RequestPipeline(protocol=config.protocol, transport=config.transport) call = ClientCall( @@ -179,22 +165,9 @@ async def start_call_analytics_stream_transcription( "protocol and transport MUST be set on the config to make calls." ) - # Resolve retry strategy from config - if isinstance(config.retry_strategy, RetryStrategy): - retry_strategy = config.retry_strategy - elif isinstance(config.retry_strategy, RetryStrategyOptions): - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=config.retry_strategy - ) - elif config.retry_strategy is None: - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=RetryStrategyOptions() - ) - else: - raise TypeError( - f"retry_strategy must be RetryStrategy, RetryStrategyOptions, or None, " - f"got {type(config.retry_strategy).__name__}" - ) + retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( + retry_strategy=config.retry_strategy + ) pipeline = RequestPipeline(protocol=config.protocol, transport=config.transport) call = ClientCall( @@ -277,22 +250,9 @@ async def start_medical_scribe_stream( "protocol and transport MUST be set on the config to make calls." ) - # Resolve retry strategy from config - if isinstance(config.retry_strategy, RetryStrategy): - retry_strategy = config.retry_strategy - elif isinstance(config.retry_strategy, RetryStrategyOptions): - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=config.retry_strategy - ) - elif config.retry_strategy is None: - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=RetryStrategyOptions() - ) - else: - raise TypeError( - f"retry_strategy must be RetryStrategy, RetryStrategyOptions, or None, " - f"got {type(config.retry_strategy).__name__}" - ) + retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( + retry_strategy=config.retry_strategy + ) pipeline = RequestPipeline(protocol=config.protocol, transport=config.transport) call = ClientCall( @@ -356,22 +316,9 @@ async def start_medical_stream_transcription( "protocol and transport MUST be set on the config to make calls." ) - # Resolve retry strategy from config - if isinstance(config.retry_strategy, RetryStrategy): - retry_strategy = config.retry_strategy - elif isinstance(config.retry_strategy, RetryStrategyOptions): - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=config.retry_strategy - ) - elif config.retry_strategy is None: - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=RetryStrategyOptions() - ) - else: - raise TypeError( - f"retry_strategy must be RetryStrategy, RetryStrategyOptions, or None, " - f"got {type(config.retry_strategy).__name__}" - ) + retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( + retry_strategy=config.retry_strategy + ) pipeline = RequestPipeline(protocol=config.protocol, transport=config.transport) call = ClientCall( @@ -430,22 +377,9 @@ async def start_stream_transcription( "protocol and transport MUST be set on the config to make calls." ) - # Resolve retry strategy from config - if isinstance(config.retry_strategy, RetryStrategy): - retry_strategy = config.retry_strategy - elif isinstance(config.retry_strategy, RetryStrategyOptions): - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=config.retry_strategy - ) - elif config.retry_strategy is None: - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=RetryStrategyOptions() - ) - else: - raise TypeError( - f"retry_strategy must be RetryStrategy, RetryStrategyOptions, or None, " - f"got {type(config.retry_strategy).__name__}" - ) + retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( + retry_strategy=config.retry_strategy + ) pipeline = RequestPipeline(protocol=config.protocol, transport=config.transport) call = ClientCall( From 5a0f03567e36df47a8f9d46d1607eda848eb4485 Mon Sep 17 00:00:00 2001 From: Nate Prewitt Date: Fri, 2 Jan 2026 10:54:18 -0700 Subject: [PATCH 7/8] Release: AWS SDK Sagemaker Runtime HTTP2 0.3.0 --- clients/aws-sdk-python/pyproject.toml | 2 +- .../CHANGELOG.md | 14 ++++++++++++ .../docs/conf.py | 2 +- .../pyproject.toml | 10 ++++----- .../__init__.py | 2 +- .../aws_sdk_sagemaker_runtime_http2/client.py | 22 ++++--------------- 6 files changed, 26 insertions(+), 26 deletions(-) diff --git a/clients/aws-sdk-python/pyproject.toml b/clients/aws-sdk-python/pyproject.toml index e6fea37..0be0e54 100644 --- a/clients/aws-sdk-python/pyproject.toml +++ b/clients/aws-sdk-python/pyproject.toml @@ -23,7 +23,7 @@ dependencies = [] [project.optional-dependencies] bedrock_runtime = ["aws_sdk_bedrock_runtime==0.3.0"] -sagemaker_runtime_http2 = ["aws_sdk_sagemaker_runtime_http2==0.1.0"] +sagemaker_runtime_http2 = ["aws_sdk_sagemaker_runtime_http2==0.3.0"] transcribe_streaming = ["aws_sdk_transcribe_streaming==0.3.0"] all = [ "aws_sdk_python[bedrock_runtime]", diff --git a/clients/aws-sdk-sagemaker-runtime-http2/CHANGELOG.md b/clients/aws-sdk-sagemaker-runtime-http2/CHANGELOG.md index b0ce462..8bc9e07 100644 --- a/clients/aws-sdk-sagemaker-runtime-http2/CHANGELOG.md +++ b/clients/aws-sdk-sagemaker-runtime-http2/CHANGELOG.md @@ -2,6 +2,20 @@ ## Unreleased +* None yet. + +## v0.3.0 + +This release proceeds 0.1.0. There is no 0.2.0 as the initial release was intended to be inline +with the `smithy-aws-core` version used in the client. + +### Breaking +* Function signature for `resolve_retry_strategy` has been changed to prevent unnecessary code duplication in operation methods. This will affect all 0.3.0 clients. + +### Dependencies +* **Updated**: `smithy_aws_core[eventstream, json]` from `~=0.2.0` to `~=0.3.0`. +* **Updated**: `smithy_core` from `~=0.2.0` to `~=0.3.0`. + ## v0.1.0 ### Features diff --git a/clients/aws-sdk-sagemaker-runtime-http2/docs/conf.py b/clients/aws-sdk-sagemaker-runtime-http2/docs/conf.py index 0ff545c..c25a79d 100644 --- a/clients/aws-sdk-sagemaker-runtime-http2/docs/conf.py +++ b/clients/aws-sdk-sagemaker-runtime-http2/docs/conf.py @@ -7,7 +7,7 @@ project = "Amazon SageMaker Runtime HTTP2" author = "Amazon Web Services" -release = "0.1.0" +release = "0.3.0" extensions = ["sphinx.ext.autodoc", "sphinx.ext.viewcode"] diff --git a/clients/aws-sdk-sagemaker-runtime-http2/pyproject.toml b/clients/aws-sdk-sagemaker-runtime-http2/pyproject.toml index 8b9a41a..cafc944 100644 --- a/clients/aws-sdk-sagemaker-runtime-http2/pyproject.toml +++ b/clients/aws-sdk-sagemaker-runtime-http2/pyproject.toml @@ -3,7 +3,7 @@ [project] name = "aws_sdk_sagemaker_runtime_http2" -version = "0.1.0" +version = "0.3.0" description = "aws_sdk_sagemaker_runtime_http2 client" readme = "README.md" requires-python = ">=3.12" @@ -24,15 +24,15 @@ classifiers = [ ] dependencies = [ - "smithy_aws_core[eventstream, json]~=0.2.0", - "smithy_core~=0.2.0", + "smithy_aws_core[eventstream, json]~=0.3.0", + "smithy_core~=0.3.0", "smithy_http[awscrt]~=0.3.0" ] [dependency-groups] test = [ - "pytest>=7.2.0,<8.0.0", - "pytest-asyncio>=0.20.3,<0.21.0" + "pytest>=9.0.1,<10.0.0", + "pytest-asyncio>=1.3.0,<1.4.0" ] docs = [ diff --git a/clients/aws-sdk-sagemaker-runtime-http2/src/aws_sdk_sagemaker_runtime_http2/__init__.py b/clients/aws-sdk-sagemaker-runtime-http2/src/aws_sdk_sagemaker_runtime_http2/__init__.py index e1ee049..768ec96 100644 --- a/clients/aws-sdk-sagemaker-runtime-http2/src/aws_sdk_sagemaker_runtime_http2/__init__.py +++ b/clients/aws-sdk-sagemaker-runtime-http2/src/aws_sdk_sagemaker_runtime_http2/__init__.py @@ -1,3 +1,3 @@ # Code generated by smithy-python-codegen DO NOT EDIT. -__version__: str = "0.1.0" +__version__: str = "0.3.0" diff --git a/clients/aws-sdk-sagemaker-runtime-http2/src/aws_sdk_sagemaker_runtime_http2/client.py b/clients/aws-sdk-sagemaker-runtime-http2/src/aws_sdk_sagemaker_runtime_http2/client.py index 2829a88..a9b015d 100644 --- a/clients/aws-sdk-sagemaker-runtime-http2/src/aws_sdk_sagemaker_runtime_http2/client.py +++ b/clients/aws-sdk-sagemaker-runtime-http2/src/aws_sdk_sagemaker_runtime_http2/client.py @@ -7,8 +7,7 @@ from smithy_core.aio.eventstream import DuplexEventStream from smithy_core.exceptions import ExpectationNotMetError from smithy_core.interceptors import InterceptorChain -from smithy_core.interfaces.retries import RetryStrategy -from smithy_core.retries import RetryStrategyOptions, RetryStrategyResolver +from smithy_core.retries import RetryStrategyResolver from smithy_core.types import TypedProperties from smithy_http.plugins import user_agent_plugin @@ -108,22 +107,9 @@ async def invoke_endpoint_with_bidirectional_stream( "protocol and transport MUST be set on the config to make calls." ) - # Resolve retry strategy from config - if isinstance(config.retry_strategy, RetryStrategy): - retry_strategy = config.retry_strategy - elif isinstance(config.retry_strategy, RetryStrategyOptions): - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=config.retry_strategy - ) - elif config.retry_strategy is None: - retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( - options=RetryStrategyOptions() - ) - else: - raise TypeError( - f"retry_strategy must be RetryStrategy, RetryStrategyOptions, or None, " - f"got {type(config.retry_strategy).__name__}" - ) + retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy( + retry_strategy=config.retry_strategy + ) pipeline = RequestPipeline(protocol=config.protocol, transport=config.transport) call = ClientCall( From 1983248894b9edfa7ba0337af080977fa06dca80 Mon Sep 17 00:00:00 2001 From: Nate Prewitt Date: Fri, 2 Jan 2026 10:55:50 -0700 Subject: [PATCH 8/8] Release: aws-sdk-python 0.3.0 --- clients/aws-sdk-python/src/aws_sdk_python/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clients/aws-sdk-python/src/aws_sdk_python/__init__.py b/clients/aws-sdk-python/src/aws_sdk_python/__init__.py index f326146..57db727 100644 --- a/clients/aws-sdk-python/src/aws_sdk_python/__init__.py +++ b/clients/aws-sdk-python/src/aws_sdk_python/__init__.py @@ -1,6 +1,6 @@ # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 -__version__ = "0.2.0" +__version__ = "0.3.0" # TODO: Consider adding relative imports for services from the top level namespace?