Skip to content

Commit 780bd12

Browse files
committed
Document Bedrock helpers
1 parent 0808054 commit 780bd12

1 file changed

Lines changed: 13 additions & 0 deletions

File tree

src/openai/lib/bedrock.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ class _BedrockCapabilities:
8585

8686

8787
def _normalize_bedrock_base_url(base_url: str | httpx.URL) -> httpx.URL:
88+
"""Normalize a Bedrock Responses URL variant back to the provider API root."""
8889
url = httpx.URL(base_url)
8990
path = url.path.rstrip("/")
9091
responses_match = re.search(r"/responses(?:/.*)?$", path)
@@ -95,6 +96,7 @@ def _normalize_bedrock_base_url(base_url: str | httpx.URL) -> httpx.URL:
9596

9697

9798
def _resolve_bedrock_base_url(base_url: str | httpx.URL | None, aws_region: str | None) -> httpx.URL:
99+
"""Resolve Bedrock base URL precedence from explicit, env, then region config."""
98100
if isinstance(base_url, str) and not base_url.strip():
99101
base_url = None
100102

@@ -143,6 +145,7 @@ def _iter_values(value: object) -> Iterable[object]:
143145

144146

145147
def _validate_tool_like(value: object) -> None:
148+
"""Reject denylisted Responses tool definitions and tool choices."""
146149
tool_type = _mapping_type(value)
147150
if tool_type in _BEDROCK_CAPABILITIES.unsupported_tool_types:
148151
_unsupported_feature(f"responses tools of type `{tool_type}`")
@@ -153,6 +156,7 @@ def _validate_tool_like(value: object) -> None:
153156

154157

155158
def _validate_input_value(value: object) -> None:
159+
"""Walk nested Responses input values and reject denylisted item types."""
156160
item_type = _mapping_type(value)
157161
if item_type in _BEDROCK_CAPABILITIES.unsupported_input_item_types:
158162
_unsupported_feature(f"responses input items of type `{item_type}`")
@@ -171,6 +175,7 @@ def _validate_include(include: object) -> None:
171175

172176

173177
def _merge_response_body(values: Mapping[str, object], extra_body: Body | None = None) -> dict[str, object]:
178+
"""Reconstruct a generated Responses body for Bedrock capability validation."""
174179
body = {
175180
key: value
176181
for key, value in values.items()
@@ -183,6 +188,7 @@ def _merge_response_body(values: Mapping[str, object], extra_body: Body | None =
183188

184189

185190
def _validate_response_create_body(body: Mapping[str, object]) -> None:
191+
"""Fail early only for Bedrock Responses features known to be unsupported."""
186192
for tool in _iter_values(body.get("tools", ())):
187193
_validate_tool_like(tool)
188194

@@ -200,6 +206,7 @@ def _validate_response_create_body(body: Mapping[str, object]) -> None:
200206

201207

202208
def _bedrock_token_provider(provider: BedrockTokenProvider) -> BedrockTokenProvider:
209+
"""Adapt a sync Bedrock token provider to the base client's api_key callback."""
203210
def get_token() -> str:
204211
token = cast(object, provider())
205212
if not isinstance(token, str) or not token:
@@ -211,6 +218,7 @@ def get_token() -> str:
211218

212219

213220
def _async_bedrock_token_provider(provider: AsyncBedrockTokenProvider) -> Callable[[], Awaitable[str]]:
221+
"""Adapt a sync or async Bedrock token provider to the async api_key callback."""
214222
async def get_token() -> str:
215223
token = cast(object, provider())
216224
if inspect.isawaitable(token):
@@ -225,6 +233,7 @@ async def get_token() -> str:
225233

226234

227235
def _guard_responses(responses: Responses) -> Responses:
236+
"""Wrap generated Responses helpers with Bedrock-specific early validation."""
228237
create = responses.create
229238
compact = responses.compact
230239
parse = responses.parse
@@ -284,6 +293,7 @@ def guarded_connect(*args: Any, **kwargs: Any) -> Any:
284293

285294

286295
def _guard_async_responses(responses: AsyncResponses) -> AsyncResponses:
296+
"""Wrap generated async Responses helpers with Bedrock-specific early validation."""
287297
create = responses.create
288298
compact = responses.compact
289299
parse = responses.parse
@@ -347,9 +357,12 @@ def _unsupported_resource_property(resource_name: str) -> property:
347357

348358

349359
class BaseBedrockClient:
360+
"""Shared Responses-only surface restrictions for Bedrock client wrappers."""
361+
350362
aws_region: str | None
351363

352364

365+
# Bedrock v1 intentionally exposes Responses only; raw/streaming wrappers inherit these guards.
353366
for _resource_name in (
354367
"admin",
355368
"audio",

0 commit comments

Comments
 (0)