1
- from re import Match
2
- from typing import Any , Callable , Dict , List , Optional
1
+ from __future__ import annotations
2
+
3
+ from typing import TYPE_CHECKING , Any , Callable
3
4
4
5
from typing_extensions import override
5
6
9
10
ProxyEventType ,
10
11
ResponseBuilder ,
11
12
)
12
- from aws_lambda_powertools .event_handler .openapi .types import OpenAPIResponse
13
- from aws_lambda_powertools .utilities .data_classes import BedrockAgentEvent
13
+
14
+ if TYPE_CHECKING :
15
+ from re import Match
16
+
17
+ from aws_lambda_powertools .event_handler .openapi .types import OpenAPIResponse
18
+ from aws_lambda_powertools .utilities .data_classes import BedrockAgentEvent
14
19
15
20
16
21
class BedrockResponseBuilder (ResponseBuilder ):
@@ -21,7 +26,7 @@ class BedrockResponseBuilder(ResponseBuilder):
21
26
"""
22
27
23
28
@override
24
- def build (self , event : BedrockAgentEvent , * args ) -> Dict [str , Any ]:
29
+ def build (self , event : BedrockAgentEvent , * args ) -> dict [str , Any ]:
25
30
"""Build the full response dict to be returned by the lambda"""
26
31
self ._route (event , None )
27
32
@@ -91,16 +96,16 @@ def get( # type: ignore[override]
91
96
self ,
92
97
rule : str ,
93
98
description : str ,
94
- cors : Optional [ bool ] = None ,
99
+ cors : bool | None = None ,
95
100
compress : bool = False ,
96
- cache_control : Optional [ str ] = None ,
97
- summary : Optional [ str ] = None ,
98
- responses : Optional [ Dict [ int , OpenAPIResponse ]] = None ,
101
+ cache_control : str | None = None ,
102
+ summary : str | None = None ,
103
+ responses : dict [ int , OpenAPIResponse ] | None = None ,
99
104
response_description : str = _DEFAULT_OPENAPI_RESPONSE_DESCRIPTION ,
100
- tags : Optional [ List [ str ]] = None ,
101
- operation_id : Optional [ str ] = None ,
105
+ tags : list [ str ] | None = None ,
106
+ operation_id : str | None = None ,
102
107
include_in_schema : bool = True ,
103
- middlewares : Optional [ List [ Callable [..., Any ]]] = None ,
108
+ middlewares : list [ Callable [..., Any ]] | None = None ,
104
109
) -> Callable [[Callable [..., Any ]], Callable [..., Any ]]:
105
110
security = None
106
111
@@ -126,16 +131,16 @@ def post( # type: ignore[override]
126
131
self ,
127
132
rule : str ,
128
133
description : str ,
129
- cors : Optional [ bool ] = None ,
134
+ cors : bool | None = None ,
130
135
compress : bool = False ,
131
- cache_control : Optional [ str ] = None ,
132
- summary : Optional [ str ] = None ,
133
- responses : Optional [ Dict [ int , OpenAPIResponse ]] = None ,
136
+ cache_control : str | None = None ,
137
+ summary : str | None = None ,
138
+ responses : dict [ int , OpenAPIResponse ] | None = None ,
134
139
response_description : str = _DEFAULT_OPENAPI_RESPONSE_DESCRIPTION ,
135
- tags : Optional [ List [ str ]] = None ,
136
- operation_id : Optional [ str ] = None ,
140
+ tags : list [ str ] | None = None ,
141
+ operation_id : str | None = None ,
137
142
include_in_schema : bool = True ,
138
- middlewares : Optional [ List [ Callable [..., Any ]]] = None ,
143
+ middlewares : list [ Callable [..., Any ]] | None = None ,
139
144
):
140
145
security = None
141
146
@@ -161,16 +166,16 @@ def put( # type: ignore[override]
161
166
self ,
162
167
rule : str ,
163
168
description : str ,
164
- cors : Optional [ bool ] = None ,
169
+ cors : bool | None = None ,
165
170
compress : bool = False ,
166
- cache_control : Optional [ str ] = None ,
167
- summary : Optional [ str ] = None ,
168
- responses : Optional [ Dict [ int , OpenAPIResponse ]] = None ,
171
+ cache_control : str | None = None ,
172
+ summary : str | None = None ,
173
+ responses : dict [ int , OpenAPIResponse ] | None = None ,
169
174
response_description : str = _DEFAULT_OPENAPI_RESPONSE_DESCRIPTION ,
170
- tags : Optional [ List [ str ]] = None ,
171
- operation_id : Optional [ str ] = None ,
175
+ tags : list [ str ] | None = None ,
176
+ operation_id : str | None = None ,
172
177
include_in_schema : bool = True ,
173
- middlewares : Optional [ List [ Callable [..., Any ]]] = None ,
178
+ middlewares : list [ Callable [..., Any ]] | None = None ,
174
179
):
175
180
security = None
176
181
@@ -196,16 +201,16 @@ def patch( # type: ignore[override]
196
201
self ,
197
202
rule : str ,
198
203
description : str ,
199
- cors : Optional [ bool ] = None ,
204
+ cors : bool | None = None ,
200
205
compress : bool = False ,
201
- cache_control : Optional [ str ] = None ,
202
- summary : Optional [ str ] = None ,
203
- responses : Optional [ Dict [ int , OpenAPIResponse ]] = None ,
206
+ cache_control : str | None = None ,
207
+ summary : str | None = None ,
208
+ responses : dict [ int , OpenAPIResponse ] | None = None ,
204
209
response_description : str = _DEFAULT_OPENAPI_RESPONSE_DESCRIPTION ,
205
- tags : Optional [ List [ str ]] = None ,
206
- operation_id : Optional [ str ] = None ,
210
+ tags : list [ str ] | None = None ,
211
+ operation_id : str | None = None ,
207
212
include_in_schema : bool = True ,
208
- middlewares : Optional [ List [ Callable ]] = None ,
213
+ middlewares : list [ Callable ] | None = None ,
209
214
):
210
215
security = None
211
216
@@ -231,16 +236,16 @@ def delete( # type: ignore[override]
231
236
self ,
232
237
rule : str ,
233
238
description : str ,
234
- cors : Optional [ bool ] = None ,
239
+ cors : bool | None = None ,
235
240
compress : bool = False ,
236
- cache_control : Optional [ str ] = None ,
237
- summary : Optional [ str ] = None ,
238
- responses : Optional [ Dict [ int , OpenAPIResponse ]] = None ,
241
+ cache_control : str | None = None ,
242
+ summary : str | None = None ,
243
+ responses : dict [ int , OpenAPIResponse ] | None = None ,
239
244
response_description : str = _DEFAULT_OPENAPI_RESPONSE_DESCRIPTION ,
240
- tags : Optional [ List [ str ]] = None ,
241
- operation_id : Optional [ str ] = None ,
245
+ tags : list [ str ] | None = None ,
246
+ operation_id : str | None = None ,
242
247
include_in_schema : bool = True ,
243
- middlewares : Optional [ List [ Callable [..., Any ]]] = None ,
248
+ middlewares : list [ Callable [..., Any ]] | None = None ,
244
249
):
245
250
security = None
246
251
@@ -261,10 +266,10 @@ def delete( # type: ignore[override]
261
266
)
262
267
263
268
@override
264
- def _convert_matches_into_route_keys (self , match : Match ) -> Dict [str , str ]:
269
+ def _convert_matches_into_route_keys (self , match : Match ) -> dict [str , str ]:
265
270
# In Bedrock Agents, all the parameters come inside the "parameters" key, not on the apiPath
266
271
# So we have to search for route parameters in the parameters key
267
- parameters : Dict [str , str ] = {}
272
+ parameters : dict [str , str ] = {}
268
273
if match .groupdict () and self .current_event .parameters :
269
274
parameters = {parameter ["name" ]: parameter ["value" ] for parameter in self .current_event .parameters }
270
275
return parameters
0 commit comments