@@ -85,6 +85,7 @@ class _BedrockCapabilities:
8585
8686
8787def _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
9798def _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
145147def _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
155158def _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
173177def _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
185190def _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
202208def _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
213220def _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
227235def _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
286295def _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
349359class 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.
353366for _resource_name in (
354367 "admin" ,
355368 "audio" ,
0 commit comments