aws-lambda-powertools 3.0.0.dev9__py3-none-any.whl → 3.0.0.dev11__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,2 @@
1
- from pydantic import ConfigDict
2
-
3
1
  DEFAULT_API_VERSION = "1.0.0"
4
2
  DEFAULT_OPENAPI_VERSION = "3.1.0"
5
- MODEL_CONFIG_ALLOW = ConfigDict(extra="allow")
6
- MODEL_CONFIG_IGNORE = ConfigDict(extra="ignore")
@@ -2,14 +2,13 @@
2
2
  from enum import Enum
3
3
  from typing import Any, Dict, List, Literal, Optional, Set, Union
4
4
 
5
- from pydantic import AnyUrl, BaseModel, Field
5
+ from pydantic import AnyUrl, BaseModel, ConfigDict, Field
6
6
  from typing_extensions import Annotated
7
7
 
8
8
  from aws_lambda_powertools.event_handler.openapi.compat import model_rebuild
9
- from aws_lambda_powertools.event_handler.openapi.constants import (
10
- MODEL_CONFIG_ALLOW,
11
- MODEL_CONFIG_IGNORE,
12
- )
9
+
10
+ MODEL_CONFIG_ALLOW = ConfigDict(extra="allow")
11
+ MODEL_CONFIG_IGNORE = ConfigDict(extra="ignore")
13
12
 
14
13
  """
15
14
  The code defines Pydantic models for the various OpenAPI objects like OpenAPI, PathItem, Operation, Parameter etc.
@@ -4,7 +4,7 @@ from typing import Dict, Optional, Sequence
4
4
 
5
5
  from pydantic import BaseModel, Field, field_validator
6
6
 
7
- from aws_lambda_powertools.event_handler.openapi.constants import (
7
+ from aws_lambda_powertools.event_handler.openapi.models import (
8
8
  MODEL_CONFIG_ALLOW,
9
9
  )
10
10
  from aws_lambda_powertools.shared.functions import powertools_dev_is_set
@@ -4,14 +4,13 @@ import types
4
4
  from enum import Enum
5
5
  from typing import TYPE_CHECKING, Any, Callable, Dict, Set, Type, TypedDict, Union
6
6
 
7
- from pydantic import BaseModel
8
-
9
7
  if TYPE_CHECKING:
8
+ from pydantic import BaseModel # noqa: F401
10
9
  from typing_extensions import NotRequired
11
10
 
12
11
  CacheKey = Union[Callable[..., Any], None]
13
12
  IncEx = Union[Set[int], Set[str], Dict[int, Any], Dict[str, Any]]
14
- TypeModelOrEnum = Union[Type[BaseModel], Type[Enum]]
13
+ TypeModelOrEnum = Union[Type["BaseModel"], Type[Enum]]
15
14
  ModelNameMap = Dict[TypeModelOrEnum, str]
16
15
  UnionType = getattr(types, "UnionType", Union)
17
16
 
@@ -1,3 +1,3 @@
1
1
  """Exposes version constant to avoid circular dependencies."""
2
2
 
3
- VERSION = "3.0.0.dev9"
3
+ VERSION = "3.0.0.dev11"
@@ -2,7 +2,10 @@ from __future__ import annotations
2
2
 
3
3
  import enum
4
4
  import re
5
- from typing import Any
5
+ import warnings
6
+ from typing import Any, overload
7
+
8
+ from typing_extensions import deprecated
6
9
 
7
10
  from aws_lambda_powertools.utilities.data_classes.common import (
8
11
  BaseRequestContext,
@@ -10,6 +13,10 @@ from aws_lambda_powertools.utilities.data_classes.common import (
10
13
  CaseInsensitiveDict,
11
14
  DictWrapper,
12
15
  )
16
+ from aws_lambda_powertools.utilities.data_classes.shared_functions import (
17
+ get_header_value,
18
+ )
19
+ from aws_lambda_powertools.warnings import PowertoolsDeprecationWarning
13
20
 
14
21
 
15
22
  class APIGatewayRouteArn:
@@ -162,6 +169,55 @@ class APIGatewayAuthorizerRequestEvent(DictWrapper):
162
169
  def request_context(self) -> BaseRequestContext:
163
170
  return BaseRequestContext(self._data)
164
171
 
172
+ @overload
173
+ def get_header_value(
174
+ self,
175
+ name: str,
176
+ default_value: str,
177
+ case_sensitive: bool = False,
178
+ ) -> str: ...
179
+
180
+ @overload
181
+ def get_header_value(
182
+ self,
183
+ name: str,
184
+ default_value: str | None = None,
185
+ case_sensitive: bool = False,
186
+ ) -> str | None: ...
187
+
188
+ @deprecated(
189
+ "`get_header_value` function is deprecated; Access headers directly using event.headers.get('HeaderName')",
190
+ category=None,
191
+ )
192
+ def get_header_value(
193
+ self,
194
+ name: str,
195
+ default_value: str | None = None,
196
+ case_sensitive: bool = False,
197
+ ) -> str | None:
198
+ """Get header value by name
199
+ Parameters
200
+ ----------
201
+ name: str
202
+ Header name
203
+ default_value: str, optional
204
+ Default value if no value was found by name
205
+ case_sensitive: bool
206
+ Whether to use a case-sensitive look up
207
+ Returns
208
+ -------
209
+ str, optional
210
+ Header value
211
+ """
212
+ warnings.warn(
213
+ "The `get_header_value` function is deprecated in V3 and the `case_sensitive` parameter "
214
+ "no longer has any effect. This function will be removed in the next major version. "
215
+ "Instead, access headers directly using event.headers.get('HeaderName'), which is case insensitive.",
216
+ category=PowertoolsDeprecationWarning,
217
+ stacklevel=2,
218
+ )
219
+ return get_header_value(self.headers, name, default_value, case_sensitive)
220
+
165
221
 
166
222
  class APIGatewayAuthorizerEventV2(DictWrapper):
167
223
  """API Gateway Authorizer Event Format 2.0
@@ -244,6 +300,50 @@ class APIGatewayAuthorizerEventV2(DictWrapper):
244
300
  def stage_variables(self) -> dict[str, str]:
245
301
  return self.get("stageVariables") or {}
246
302
 
303
+ @overload
304
+ def get_header_value(self, name: str, default_value: str, case_sensitive: bool = False) -> str: ...
305
+
306
+ @overload
307
+ def get_header_value(
308
+ self,
309
+ name: str,
310
+ default_value: str | None = None,
311
+ case_sensitive: bool = False,
312
+ ) -> str | None: ...
313
+
314
+ @deprecated(
315
+ "`get_header_value` function is deprecated; Access headers directly using event.headers.get('HeaderName')",
316
+ category=None,
317
+ )
318
+ def get_header_value(
319
+ self,
320
+ name: str,
321
+ default_value: str | None = None,
322
+ case_sensitive: bool = False,
323
+ ) -> str | None:
324
+ """Get header value by name
325
+ Parameters
326
+ ----------
327
+ name: str
328
+ Header name
329
+ default_value: str, optional
330
+ Default value if no value was found by name
331
+ case_sensitive: bool
332
+ Whether to use a case-sensitive look up
333
+ Returns
334
+ -------
335
+ str, optional
336
+ Header value
337
+ """
338
+ warnings.warn(
339
+ "The `get_header_value` function is deprecated in V3 and the `case_sensitive` parameter "
340
+ "no longer has any effect. This function will be removed in the next major version. "
341
+ "Instead, access headers directly using event.headers.get('HeaderName'), which is case insensitive.",
342
+ category=PowertoolsDeprecationWarning,
343
+ stacklevel=2,
344
+ )
345
+ return get_header_value(self.headers, name, default_value, case_sensitive)
346
+
247
347
 
248
348
  class APIGatewayAuthorizerResponseV2:
249
349
  """Api Gateway HTTP API V2 payload authorizer simple response helper
@@ -1,8 +1,15 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Any
3
+ import warnings
4
+ from typing import Any, overload
5
+
6
+ from typing_extensions import deprecated
4
7
 
5
8
  from aws_lambda_powertools.utilities.data_classes.common import CaseInsensitiveDict, DictWrapper
9
+ from aws_lambda_powertools.utilities.data_classes.shared_functions import (
10
+ get_header_value,
11
+ )
12
+ from aws_lambda_powertools.warnings import PowertoolsDeprecationWarning
6
13
 
7
14
 
8
15
  def get_identity_object(identity: dict | None) -> Any:
@@ -212,3 +219,52 @@ class AppSyncResolverEvent(DictWrapper):
212
219
  stash to pass arbitrary data across request and response mapping templates, and across functions in
213
220
  a pipeline resolver."""
214
221
  return self.get("stash") or {}
222
+
223
+ @overload
224
+ def get_header_value(
225
+ self,
226
+ name: str,
227
+ default_value: str,
228
+ case_sensitive: bool = False,
229
+ ) -> str: ...
230
+
231
+ @overload
232
+ def get_header_value(
233
+ self,
234
+ name: str,
235
+ default_value: str | None = None,
236
+ case_sensitive: bool = False,
237
+ ) -> str | None: ...
238
+
239
+ @deprecated(
240
+ "`get_header_value` function is deprecated; Access headers directly using event.headers.get('HeaderName')",
241
+ category=None,
242
+ )
243
+ def get_header_value(
244
+ self,
245
+ name: str,
246
+ default_value: str | None = None,
247
+ case_sensitive: bool = False,
248
+ ) -> str | None:
249
+ """Get header value by name
250
+ Parameters
251
+ ----------
252
+ name: str
253
+ Header name
254
+ default_value: str, optional
255
+ Default value if no value was found by name
256
+ case_sensitive: bool
257
+ Whether to use a case-sensitive look up
258
+ Returns
259
+ -------
260
+ str, optional
261
+ Header value
262
+ """
263
+ warnings.warn(
264
+ "The `get_header_value` function is deprecated in V3 and the `case_sensitive` parameter "
265
+ "no longer has any effect. This function will be removed in the next major version. "
266
+ "Instead, access headers directly using event.headers.get('HeaderName'), which is case insensitive.",
267
+ category=PowertoolsDeprecationWarning,
268
+ stacklevel=2,
269
+ )
270
+ return get_header_value(self.request_headers, name, default_value, case_sensitive)
@@ -2,12 +2,23 @@ from __future__ import annotations
2
2
 
3
3
  import base64
4
4
  import json
5
+ import warnings
5
6
  from functools import cached_property
6
- from typing import TYPE_CHECKING, Any, Callable, Iterator, Mapping
7
+ from typing import TYPE_CHECKING, Any, Callable, Iterator, Mapping, overload
8
+
9
+ from typing_extensions import deprecated
10
+
11
+ from aws_lambda_powertools.warnings import PowertoolsDeprecationWarning
7
12
 
8
13
  if TYPE_CHECKING:
9
14
  from aws_lambda_powertools.shared.headers_serializer import BaseHeadersSerializer
10
15
 
16
+ from aws_lambda_powertools.utilities.data_classes.shared_functions import (
17
+ get_header_value,
18
+ get_multi_value_query_string_values,
19
+ get_query_string_value,
20
+ )
21
+
11
22
 
12
23
  class CaseInsensitiveDict(dict):
13
24
  """Case insensitive dict implementation. Assumes string keys only."""
@@ -208,6 +219,108 @@ class BaseProxyEvent(DictWrapper):
208
219
  """The HTTP method used. Valid values include: DELETE, GET, HEAD, OPTIONS, PATCH, POST, and PUT."""
209
220
  return self["httpMethod"]
210
221
 
222
+ @overload
223
+ def get_query_string_value(self, name: str, default_value: str) -> str: ...
224
+
225
+ @overload
226
+ def get_query_string_value(self, name: str, default_value: str | None = None) -> str | None: ...
227
+
228
+ def get_query_string_value(self, name: str, default_value: str | None = None) -> str | None:
229
+ """Get query string value by name
230
+ Parameters
231
+ ----------
232
+ name: str
233
+ Query string parameter name
234
+ default_value: str, optional
235
+ Default value if no value was found by name
236
+ Returns
237
+ -------
238
+ str, optional
239
+ Query string parameter value
240
+ """
241
+ return get_query_string_value(
242
+ query_string_parameters=self.query_string_parameters,
243
+ name=name,
244
+ default_value=default_value,
245
+ )
246
+
247
+ def get_multi_value_query_string_values(
248
+ self,
249
+ name: str,
250
+ default_values: list[str] | None = None,
251
+ ) -> list[str]:
252
+ """Get multi-value query string parameter values by name
253
+ Parameters
254
+ ----------
255
+ name: str
256
+ Multi-Value query string parameter name
257
+ default_values: List[str], optional
258
+ Default values is no values are found by name
259
+ Returns
260
+ -------
261
+ List[str], optional
262
+ List of query string values
263
+ """
264
+ return get_multi_value_query_string_values(
265
+ multi_value_query_string_parameters=self.multi_value_query_string_parameters,
266
+ name=name,
267
+ default_values=default_values,
268
+ )
269
+
270
+ @overload
271
+ def get_header_value(
272
+ self,
273
+ name: str,
274
+ default_value: str,
275
+ case_sensitive: bool = False,
276
+ ) -> str: ...
277
+
278
+ @overload
279
+ def get_header_value(
280
+ self,
281
+ name: str,
282
+ default_value: str | None = None,
283
+ case_sensitive: bool = False,
284
+ ) -> str | None: ...
285
+
286
+ @deprecated(
287
+ "`get_header_value` function is deprecated; Access headers directly using event.headers.get('HeaderName')",
288
+ category=None,
289
+ )
290
+ def get_header_value(
291
+ self,
292
+ name: str,
293
+ default_value: str | None = None,
294
+ case_sensitive: bool = False,
295
+ ) -> str | None:
296
+ """Get header value by name
297
+ Parameters
298
+ ----------
299
+ name: str
300
+ Header name
301
+ default_value: str, optional
302
+ Default value if no value was found by name
303
+ case_sensitive: bool
304
+ Whether to use a case-sensitive look up. By default we make a case-insensitive lookup.
305
+ Returns
306
+ -------
307
+ str, optional
308
+ Header value
309
+ """
310
+ warnings.warn(
311
+ "The `get_header_value` function is deprecated in V3 and the `case_sensitive` parameter "
312
+ "no longer has any effect. This function will be removed in the next major version. "
313
+ "Instead, access headers directly using event.headers.get('HeaderName'), which is case insensitive.",
314
+ category=PowertoolsDeprecationWarning,
315
+ stacklevel=2,
316
+ )
317
+ return get_header_value(
318
+ headers=self.headers,
319
+ name=name,
320
+ default_value=default_value,
321
+ case_sensitive=case_sensitive,
322
+ )
323
+
211
324
  def header_serializer(self) -> BaseHeadersSerializer:
212
325
  raise NotImplementedError()
213
326
 
@@ -1,4 +1,12 @@
1
+ from __future__ import annotations
2
+
1
3
  import base64
4
+ import warnings
5
+ from typing import Any, overload
6
+
7
+ from typing_extensions import deprecated
8
+
9
+ from aws_lambda_powertools.warnings import PowertoolsDeprecationWarning
2
10
 
3
11
 
4
12
  def base64_decode(value: str) -> str:
@@ -16,3 +24,136 @@ def base64_decode(value: str) -> str:
16
24
  The decoded string value.
17
25
  """
18
26
  return base64.b64decode(value).decode("UTF-8")
27
+
28
+
29
+ @overload
30
+ def get_header_value(
31
+ headers: dict[str, Any],
32
+ name: str,
33
+ default_value: str,
34
+ case_sensitive: bool = False,
35
+ ) -> str: ...
36
+
37
+
38
+ @overload
39
+ def get_header_value(
40
+ headers: dict[str, Any],
41
+ name: str,
42
+ default_value: str | None = None,
43
+ case_sensitive: bool = False,
44
+ ) -> str | None: ...
45
+
46
+
47
+ @deprecated(
48
+ "`get_header_value` function is deprecated; Access headers directly using event.headers.get('HeaderName')",
49
+ category=None,
50
+ )
51
+ def get_header_value(
52
+ headers: dict[str, Any],
53
+ name: str,
54
+ default_value: str | None = None,
55
+ case_sensitive: bool = False,
56
+ ) -> str | None:
57
+ """
58
+ Get the value of a header by its name.
59
+ Parameters
60
+ ----------
61
+ headers: Dict[str, str]
62
+ The dictionary of headers.
63
+ name: str
64
+ The name of the header to retrieve.
65
+ default_value: str, optional
66
+ The default value to return if the header is not found. Default is None.
67
+ case_sensitive: bool, optional
68
+ Indicates whether the header name should be case-sensitive. Default is False.
69
+ Returns
70
+ -------
71
+ str, optional
72
+ The value of the header if found, otherwise the default value or None.
73
+ """
74
+
75
+ warnings.warn(
76
+ "The `get_header_value` function is deprecated in V3 and the `case_sensitive` parameter "
77
+ "no longer has any effect. This function will be removed in the next major version. "
78
+ "Instead, access headers directly using event.headers.get('HeaderName'), which is case insensitive.",
79
+ category=PowertoolsDeprecationWarning,
80
+ stacklevel=2,
81
+ )
82
+
83
+ # If headers is NoneType, return default value
84
+ if not headers:
85
+ return default_value
86
+
87
+ if case_sensitive:
88
+ return headers.get(name, default_value)
89
+ name_lower = name.lower()
90
+
91
+ return next(
92
+ # Iterate over the dict and do a case-insensitive key comparison
93
+ (value for key, value in headers.items() if key.lower() == name_lower),
94
+ # Default value is returned if no matches was found
95
+ default_value,
96
+ )
97
+
98
+
99
+ @overload
100
+ def get_query_string_value(
101
+ query_string_parameters: dict[str, str] | None,
102
+ name: str,
103
+ default_value: str,
104
+ ) -> str: ...
105
+
106
+
107
+ @overload
108
+ def get_query_string_value(
109
+ query_string_parameters: dict[str, str] | None,
110
+ name: str,
111
+ default_value: str | None = None,
112
+ ) -> str | None: ...
113
+
114
+
115
+ def get_query_string_value(
116
+ query_string_parameters: dict[str, str] | None,
117
+ name: str,
118
+ default_value: str | None = None,
119
+ ) -> str | None:
120
+ """
121
+ Retrieves the value of a query string parameter specified by the given name.
122
+ Parameters
123
+ ----------
124
+ name: str
125
+ The name of the query string parameter to retrieve.
126
+ default_value: str, optional
127
+ The default value to return if the parameter is not found. Defaults to None.
128
+ Returns
129
+ -------
130
+ str. optional
131
+ The value of the query string parameter if found, or the default value if not found.
132
+ """
133
+ params = query_string_parameters
134
+ return default_value if params is None else params.get(name, default_value)
135
+
136
+
137
+ def get_multi_value_query_string_values(
138
+ multi_value_query_string_parameters: dict[str, list[str]] | None,
139
+ name: str,
140
+ default_values: list[str] | None = None,
141
+ ) -> list[str]:
142
+ """
143
+ Retrieves the values of a multi-value string parameters specified by the given name.
144
+ Parameters
145
+ ----------
146
+ name: str
147
+ The name of the query string parameter to retrieve.
148
+ default_value: list[str], optional
149
+ The default value to return if the parameter is not found. Defaults to None.
150
+ Returns
151
+ -------
152
+ List[str]. optional
153
+ The values of the query string parameter if found, or the default values if not found.
154
+ """
155
+
156
+ default = default_values or []
157
+ params = multi_value_query_string_parameters or {}
158
+
159
+ return params.get(name) or default
@@ -35,9 +35,7 @@ class VPCLatticeEventBase(BaseProxyEvent):
35
35
  def decoded_body(self) -> str:
36
36
  """Dynamically base64 decode body as a str"""
37
37
  body: str = self["body"]
38
- if self.is_base64_encoded:
39
- return base64_decode(body)
40
- return body
38
+ return base64_decode(body) if self.is_base64_encoded else body
41
39
 
42
40
  @property
43
41
  def method(self) -> str:
@@ -92,3 +92,24 @@ class DataRecord:
92
92
  previous response data deserialized
93
93
  """
94
94
  return json.loads(self.response_data) if self.response_data else None
95
+
96
+ def get_expiration_datetime(self) -> datetime.datetime | None:
97
+ """
98
+ Converts the expiry timestamp to a datetime object.
99
+
100
+ This method checks if an expiry timestamp exists and converts it to a
101
+ datetime object. If no timestamp is present, it returns None.
102
+
103
+ Returns:
104
+ -------
105
+ datetime.datetime | None
106
+ A datetime object representing the expiration time, or None if no expiry timestamp is set.
107
+
108
+ Note:
109
+ ----
110
+ The returned datetime object is timezone-naive and assumes the timestamp
111
+ is in the system's local timezone. Lambda default timezone is UTC.
112
+ """
113
+ if self.expiry_timestamp:
114
+ return datetime.datetime.fromtimestamp(int(self.expiry_timestamp))
115
+ return None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: aws-lambda-powertools
3
- Version: 3.0.0.dev9
3
+ Version: 3.0.0.dev11
4
4
  Summary: Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless best practices and increase developer velocity.
5
5
  Home-page: https://github.com/aws-powertools/powertools-lambda-python
6
6
  License: MIT
@@ -13,19 +13,19 @@ aws_lambda_powertools/event_handler/middlewares/openapi_validation.py,sha256=ss7
13
13
  aws_lambda_powertools/event_handler/middlewares/schema_validation.py,sha256=c3i04kuq_T341_1xxiEw_LZr43H_kU0HY80lIHPNDz8,5205
14
14
  aws_lambda_powertools/event_handler/openapi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  aws_lambda_powertools/event_handler/openapi/compat.py,sha256=iY9bpPZMg5bs1ndf8r1ezRFWooiD5sb68PiawtM8u9w,10857
16
- aws_lambda_powertools/event_handler/openapi/constants.py,sha256=qtful2sERvRlODI6fuoDMqzI34xMB-YhFqOJHN9mBig,193
16
+ aws_lambda_powertools/event_handler/openapi/constants.py,sha256=79IF4spKAHvMAO3bQARCIENM5rIFX5BSwdjfUNl3XT4,64
17
17
  aws_lambda_powertools/event_handler/openapi/dependant.py,sha256=RTYgsWmRyV5mOC5FedKbcInR4Q4n57nc7EdOsCn2nrk,12521
18
18
  aws_lambda_powertools/event_handler/openapi/encoders.py,sha256=guQRV6CcLgLWUh-XRzfP5rsDPS_kNFz2cGf0xKl_tGU,10220
19
19
  aws_lambda_powertools/event_handler/openapi/exceptions.py,sha256=T8Zn4Iq0IeDOrvqDoBi7rQCCkIw0Ya8rl9E1BMwdxP8,559
20
- aws_lambda_powertools/event_handler/openapi/models.py,sha256=xFWZLlnWo5unWL142rw_mICUyICUrxokgkQjhSxY08I,15561
20
+ aws_lambda_powertools/event_handler/openapi/models.py,sha256=3N7ACecMmlorXpixT2To6ZX-FGu1s4S7YRozLz8pBHk,15551
21
21
  aws_lambda_powertools/event_handler/openapi/params.py,sha256=b8V9D35VHH6MGzbMHcMZtPpegTrqSKohSBbvGn53Om4,41119
22
22
  aws_lambda_powertools/event_handler/openapi/pydantic_loader.py,sha256=Bud_yzI_Cao7UN_9zx6NeP0H2rQOZJbdbDAjgtthB-g,217
23
23
  aws_lambda_powertools/event_handler/openapi/swagger_ui/__init__.py,sha256=52wY3inOe1EPunrNl5cUqVQWHM6FsJHU5wpObSAX7-M,335
24
24
  aws_lambda_powertools/event_handler/openapi/swagger_ui/html.py,sha256=z1xLx7obaHUdZYpyuO7HkWfn5PMxn2lQlo4a-DBtCgA,2827
25
- aws_lambda_powertools/event_handler/openapi/swagger_ui/oauth2.py,sha256=LmLvs-Mh-dLObMd14uqRmRCi3bWXBmNzf6RDhZhx3_0,5564
25
+ aws_lambda_powertools/event_handler/openapi/swagger_ui/oauth2.py,sha256=YEG3ICbwtArNrUYWZARcD4npULajyID5odB3VZ5zpe8,5561
26
26
  aws_lambda_powertools/event_handler/openapi/swagger_ui/swagger-ui-bundle.min.js,sha256=s_tWqUyVGy4dmU9BppKMNDoKgC9Q9qzvnB3XJEtGEQk,1265807
27
27
  aws_lambda_powertools/event_handler/openapi/swagger_ui/swagger-ui.min.css,sha256=Q0DBjhDAqyjE6KmzTrq1DGYU1UeF7aHQSuTiou_pLS0,151723
28
- aws_lambda_powertools/event_handler/openapi/types.py,sha256=bi0Dz9RWZU6EQf3ZAEwaXqbsQHvnbxEZy7pm0enTBLs,1746
28
+ aws_lambda_powertools/event_handler/openapi/types.py,sha256=IcARgTPNeSH8tbU1UFz9n4IZeAnInjXmtdUpQRvBZ4k,1765
29
29
  aws_lambda_powertools/event_handler/router.py,sha256=cxL3MtN2Q8_RkPndNtAAcjJSqDJ4WN02dro_O83nxAM,980
30
30
  aws_lambda_powertools/event_handler/types.py,sha256=yppbl_2wdyXSK_oTkSnkwPdAlJibc-uTm1IWmlB1RfU,177
31
31
  aws_lambda_powertools/event_handler/util.py,sha256=7d_Bl3LouPB_lx3ssiHvkSoEhHMBAk38KKAGce5YvT0,1160
@@ -79,7 +79,7 @@ aws_lambda_powertools/shared/json_encoder.py,sha256=JQeWNu-4M7_xI_hqYExrxsb3OcEH
79
79
  aws_lambda_powertools/shared/lazy_import.py,sha256=TbXQm2bcwXdZrYdBaJJXIswyLlumM85RJ_A_0w-h-GU,2019
80
80
  aws_lambda_powertools/shared/types.py,sha256=APkI38HbiTpSF19NSNii8Ydx73vmVUVotgEQ9jHruEI,124
81
81
  aws_lambda_powertools/shared/user_agent.py,sha256=DrCMFQuT4a4iIrpcWpAIjY37EFqR9-QxlxDGD-Nn9Gg,7081
82
- aws_lambda_powertools/shared/version.py,sha256=V35hE4jNPJNz0kCe1OLR4DUX_Sk2i-O7g6igiibgyhU,87
82
+ aws_lambda_powertools/shared/version.py,sha256=DxZibxPis5bKle-m68iMuw6zd-sFlinFJKUeeLwPdeQ,88
83
83
  aws_lambda_powertools/tracing/__init__.py,sha256=Zdk7mE8lUMICbYOnx_1yFjvghzoPOpPmRv-Wkj-kzkU,142
84
84
  aws_lambda_powertools/tracing/base.py,sha256=VNqc9CtywKJSuD1H0etuFVzUgpyfskQ9e1N2m_S28R0,4416
85
85
  aws_lambda_powertools/tracing/extensions.py,sha256=APOfXOq-hRBKaK5WyfIyrd_6M1_9SWJZ3zxLA9jDZzU,492
@@ -94,12 +94,12 @@ aws_lambda_powertools/utilities/batch/types.py,sha256=XgUSbOIfzY4d2z3cFntQHAe6hc
94
94
  aws_lambda_powertools/utilities/data_classes/__init__.py,sha256=Aeo1Z49JN36WxslUojIQxmfe2C8i2IP1Nn_FhWzUyzw,2961
95
95
  aws_lambda_powertools/utilities/data_classes/active_mq_event.py,sha256=gJPzcSmw1JsPGKZHUkVGNjveuqQ6OpaibWy6WfJZyHQ,4373
96
96
  aws_lambda_powertools/utilities/data_classes/alb_event.py,sha256=3WUxCa9tympp9isYD7-WylR93aD6gB4td0it4W99fH8,1997
97
- aws_lambda_powertools/utilities/data_classes/api_gateway_authorizer_event.py,sha256=9YHMEn1RJdZmxCrgnpBMqtx36M0hlE8aTYR8jPLyJTY,17991
97
+ aws_lambda_powertools/utilities/data_classes/api_gateway_authorizer_event.py,sha256=ntT2Wzb1KMsAfGbm3E67Nha5DwpBmv_zV13PYEdfU5U,21288
98
98
  aws_lambda_powertools/utilities/data_classes/api_gateway_proxy_event.py,sha256=NzH97yxoJLbkzDlTVALlvM9yJMlZhWZFJEZ5OoiJPX8,10919
99
99
  aws_lambda_powertools/utilities/data_classes/appsync/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
100
100
  aws_lambda_powertools/utilities/data_classes/appsync/scalar_types_utils.py,sha256=EjaJKZsPwyM6XY-FrooZzadfAtvZRbYS1BHiyQi-GrQ,2662
101
101
  aws_lambda_powertools/utilities/data_classes/appsync_authorizer_event.py,sha256=49tvu-4w7fB7piJUkyIrS5HoDoK7M8r8AvLJCPTh4Kc,3929
102
- aws_lambda_powertools/utilities/data_classes/appsync_resolver_event.py,sha256=PnNbMO379KZk0uF7w1LyveVgNrbKSas-et5ulc49DO4,7198
102
+ aws_lambda_powertools/utilities/data_classes/appsync_resolver_event.py,sha256=bqsfH60i7_d8OsNsr-jN-eGx9MyMvMmc0-jn_mQ-wPQ,8994
103
103
  aws_lambda_powertools/utilities/data_classes/aws_config_rule_event.py,sha256=BwSG8R96yGLlYRgY0qe2Y49k2gGvkXkfsglvMuES38s,12228
104
104
  aws_lambda_powertools/utilities/data_classes/bedrock_agent_event.py,sha256=u1hYHhZXD1BHrC5NVO6nzdwtAGFt-yhFXQgrRBAbijs,3624
105
105
  aws_lambda_powertools/utilities/data_classes/cloud_watch_alarm_event.py,sha256=_5IOvCWhyQvbmmzV4Xg6Yee1LKyLe4oBeYmAMxoRlEA,6398
@@ -108,7 +108,7 @@ aws_lambda_powertools/utilities/data_classes/cloud_watch_logs_event.py,sha256=uu
108
108
  aws_lambda_powertools/utilities/data_classes/cloudformation_custom_resource_event.py,sha256=EextMoBG9v_e5bS9Q1DlzVvzljGtIL1ddBszt5fgTeY,1191
109
109
  aws_lambda_powertools/utilities/data_classes/code_pipeline_job_event.py,sha256=dj3RXkOnnIyIyxqoUcekeDN_5SJV_6-xgM-pJrDLyhs,8098
110
110
  aws_lambda_powertools/utilities/data_classes/cognito_user_pool_event.py,sha256=VINf71ovp34QtlhDQLcpyhl7_8pNO8UMzqILEGEI7bk,32549
111
- aws_lambda_powertools/utilities/data_classes/common.py,sha256=rOoMXn0fMM8gg-9FG303-KNw_2GCrelC2wSCjzX93LY,16788
111
+ aws_lambda_powertools/utilities/data_classes/common.py,sha256=JbJBu_9ESITyLqDK3zPqV4A2EEWrLBQXz6V3xVbZ1p4,20374
112
112
  aws_lambda_powertools/utilities/data_classes/connect_contact_flow_event.py,sha256=4_L73ATO-M_2zUD3r0zS4c6I4zoLxTK9l8JQc-dATog,5468
113
113
  aws_lambda_powertools/utilities/data_classes/dynamo_db_stream_event.py,sha256=BrgOyFREC9gjj_ULhKB3L_7EbQ6ptV-8Was1TulPeWE,6102
114
114
  aws_lambda_powertools/utilities/data_classes/event_bridge_event.py,sha256=TeTtx2jOKyZSVdSPFrtxZUgv0Yt6HW_H7J5NNxy_mHo,2434
@@ -123,10 +123,10 @@ aws_lambda_powertools/utilities/data_classes/s3_event.py,sha256=pUYnL33eCdMFVl-s
123
123
  aws_lambda_powertools/utilities/data_classes/s3_object_event.py,sha256=iccgwNIiZF879jQOGGRMuDHIFAthpMzD0Wa38eE2Dn8,12349
124
124
  aws_lambda_powertools/utilities/data_classes/secrets_manager_event.py,sha256=5G7Qg04-wCMNHSqKB1KWOGaaPfykEf9rdOxifYsqeMg,869
125
125
  aws_lambda_powertools/utilities/data_classes/ses_event.py,sha256=dqZ89HoOxA-ZXr1G_yva9CGhVhtzHHQ4Hf1S-s9Vu00,8844
126
- aws_lambda_powertools/utilities/data_classes/shared_functions.py,sha256=BAQPkpTnIzHcT3LR1AWisU4bIMIXiuHnbOfUDXKpoAw,346
126
+ aws_lambda_powertools/utilities/data_classes/shared_functions.py,sha256=zAv_JzSJy_k3ZhLKyARXoX6zH7exqw9pjTDsmGB7qxw,4426
127
127
  aws_lambda_powertools/utilities/data_classes/sns_event.py,sha256=bUL57gmObClTGrd_TFBLd1sNobnaurum0QkXyOJoNmI,3853
128
128
  aws_lambda_powertools/utilities/data_classes/sqs_event.py,sha256=seWIKCpPbzKpPdXZWvrs94C92Nj2XwfGC1vXcI5gdQA,8804
129
- aws_lambda_powertools/utilities/data_classes/vpc_lattice.py,sha256=L3g6pm4-Ok7_5eWvDKDOAJ78VW93bnA-t4IHEJzufV4,6417
129
+ aws_lambda_powertools/utilities/data_classes/vpc_lattice.py,sha256=oIyQPFHAPGrNVW6hnlYipKhXSWjGpzzLRb-eKq6pdww,6394
130
130
  aws_lambda_powertools/utilities/data_masking/__init__.py,sha256=Ez0MABo8ARkgWKSu8Dog4uFSkkZuHkW7DoWcexJGeyU,108
131
131
  aws_lambda_powertools/utilities/data_masking/base.py,sha256=6Z3VGDH0ZmUiCIFoqFhd0_3JeU7v2S4_L6yFDwve60k,10461
132
132
  aws_lambda_powertools/utilities/data_masking/constants.py,sha256=hKeeWDE4g53zxCq6fOD0D1vUTjuqVXNrr9oXCv-7mGg,752
@@ -152,7 +152,7 @@ aws_lambda_powertools/utilities/idempotency/hook.py,sha256=XHj6q0dP65C8Cj-TPJ9a8
152
152
  aws_lambda_powertools/utilities/idempotency/idempotency.py,sha256=z5Ctxlp5WH5419L6k2CgL9dVnsMGQPwTez74Vkz_K3Q,6097
153
153
  aws_lambda_powertools/utilities/idempotency/persistence/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
154
154
  aws_lambda_powertools/utilities/idempotency/persistence/base.py,sha256=VBnWo2E8r09kWfE5Gg45E-A6Bo_nsad1wUGz9hLNmb8,15565
155
- aws_lambda_powertools/utilities/idempotency/persistence/datarecord.py,sha256=6VO1ZuUHcPtb4F_FkFNHI8rWOsO_VH1HyHE6_HgHosc,2708
155
+ aws_lambda_powertools/utilities/idempotency/persistence/datarecord.py,sha256=qqX-Z5GxzoTOE7URFRLyLKesKTOetwE19FCrctulxrQ,3496
156
156
  aws_lambda_powertools/utilities/idempotency/persistence/dynamodb.py,sha256=ABgvDqtl2PilHrOFeElMa3lzp7QU8J1RZlZNS2tlxCI,13818
157
157
  aws_lambda_powertools/utilities/idempotency/persistence/redis.py,sha256=TOsKuJLNWQ5_2XZ7i9hVOQ8qLTffXCWrcSmSjX-F3NM,21589
158
158
  aws_lambda_powertools/utilities/idempotency/serialization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -239,7 +239,7 @@ aws_lambda_powertools/utilities/validation/envelopes.py,sha256=YD5HOFx6IClQgii0n
239
239
  aws_lambda_powertools/utilities/validation/exceptions.py,sha256=F-Wpkb3yChHDLgDTKaQy4ngpaMXXH3NJxe27UHoM_dA,2043
240
240
  aws_lambda_powertools/utilities/validation/validator.py,sha256=0eMxxPxxKIlANBYWImm3LYShj6SL0V8pxQL-Fv4GQGk,8231
241
241
  aws_lambda_powertools/warnings/__init__.py,sha256=vqDVeZz8wGtD8WGYNSkQE7AHwqtIrPGRxuoJR_BBnSs,1193
242
- aws_lambda_powertools-3.0.0.dev9.dist-info/LICENSE,sha256=vMHS2eBgmwPUIMPb7LQ4p7ib_FPVQXarVjAasflrTwo,951
243
- aws_lambda_powertools-3.0.0.dev9.dist-info/METADATA,sha256=D1Ichlh5LKkb4nSqsPxkHccpwYP0rLpmr8TomHz_8cg,10733
244
- aws_lambda_powertools-3.0.0.dev9.dist-info/WHEEL,sha256=WGfLGfLX43Ei_YORXSnT54hxFygu34kMpcQdmgmEwCQ,88
245
- aws_lambda_powertools-3.0.0.dev9.dist-info/RECORD,,
242
+ aws_lambda_powertools-3.0.0.dev11.dist-info/LICENSE,sha256=vMHS2eBgmwPUIMPb7LQ4p7ib_FPVQXarVjAasflrTwo,951
243
+ aws_lambda_powertools-3.0.0.dev11.dist-info/METADATA,sha256=igyminRHSEcQgs9xorhVExfQ5TEy5P7Idf3YvhrfK4c,10734
244
+ aws_lambda_powertools-3.0.0.dev11.dist-info/WHEEL,sha256=WGfLGfLX43Ei_YORXSnT54hxFygu34kMpcQdmgmEwCQ,88
245
+ aws_lambda_powertools-3.0.0.dev11.dist-info/RECORD,,