aws-lambda-powertools 3.6.1a6__py3-none-any.whl → 3.6.1a8__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.
- aws_lambda_powertools/event_handler/middlewares/openapi_validation.py +8 -19
- aws_lambda_powertools/shared/version.py +1 -1
- aws_lambda_powertools/utilities/parser/models/event_bridge.py +7 -1
- {aws_lambda_powertools-3.6.1a6.dist-info → aws_lambda_powertools-3.6.1a8.dist-info}/METADATA +2 -2
- {aws_lambda_powertools-3.6.1a6.dist-info → aws_lambda_powertools-3.6.1a8.dist-info}/RECORD +7 -7
- {aws_lambda_powertools-3.6.1a6.dist-info → aws_lambda_powertools-3.6.1a8.dist-info}/LICENSE +0 -0
- {aws_lambda_powertools-3.6.1a6.dist-info → aws_lambda_powertools-3.6.1a8.dist-info}/WHEEL +0 -0
@@ -136,14 +136,13 @@ class OpenAPIValidationMiddleware(BaseMiddlewareHandler):
|
|
136
136
|
return self._handle_response(route=route, response=response)
|
137
137
|
|
138
138
|
def _handle_response(self, *, route: Route, response: Response):
|
139
|
-
#
|
140
|
-
if
|
141
|
-
# Validate and serialize the response,
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
)
|
139
|
+
# Check if we have a return type defined
|
140
|
+
if route.dependant.return_param:
|
141
|
+
# Validate and serialize the response, including None
|
142
|
+
response.body = self._serialize_response(
|
143
|
+
field=route.dependant.return_param,
|
144
|
+
response_content=response.body,
|
145
|
+
)
|
147
146
|
|
148
147
|
return response
|
149
148
|
|
@@ -164,15 +163,6 @@ class OpenAPIValidationMiddleware(BaseMiddlewareHandler):
|
|
164
163
|
"""
|
165
164
|
if field:
|
166
165
|
errors: list[dict[str, Any]] = []
|
167
|
-
# MAINTENANCE: remove this when we drop pydantic v1
|
168
|
-
if not hasattr(field, "serializable"):
|
169
|
-
response_content = self._prepare_response_content(
|
170
|
-
response_content,
|
171
|
-
exclude_unset=exclude_unset,
|
172
|
-
exclude_defaults=exclude_defaults,
|
173
|
-
exclude_none=exclude_none,
|
174
|
-
)
|
175
|
-
|
176
166
|
value = _validate_field(field=field, value=response_content, loc=("response",), existing_errors=errors)
|
177
167
|
if errors:
|
178
168
|
raise RequestValidationError(errors=_normalize_errors(errors), body=response_content)
|
@@ -187,7 +177,6 @@ class OpenAPIValidationMiddleware(BaseMiddlewareHandler):
|
|
187
177
|
exclude_defaults=exclude_defaults,
|
188
178
|
exclude_none=exclude_none,
|
189
179
|
)
|
190
|
-
|
191
180
|
return jsonable_encoder(
|
192
181
|
value,
|
193
182
|
include=include,
|
@@ -199,7 +188,7 @@ class OpenAPIValidationMiddleware(BaseMiddlewareHandler):
|
|
199
188
|
custom_serializer=self._validation_serializer,
|
200
189
|
)
|
201
190
|
else:
|
202
|
-
# Just serialize the response content returned from the handler
|
191
|
+
# Just serialize the response content returned from the handler.
|
203
192
|
return jsonable_encoder(response_content, custom_serializer=self._validation_serializer)
|
204
193
|
|
205
194
|
def _prepare_response_content(
|
@@ -1,7 +1,7 @@
|
|
1
1
|
from datetime import datetime
|
2
2
|
from typing import List, Optional
|
3
3
|
|
4
|
-
from pydantic import BaseModel, ConfigDict, Field
|
4
|
+
from pydantic import BaseModel, ConfigDict, Field, field_validator
|
5
5
|
|
6
6
|
from aws_lambda_powertools.utilities.parser.types import RawDictOrModel
|
7
7
|
|
@@ -19,3 +19,9 @@ class EventBridgeModel(BaseModel):
|
|
19
19
|
detail_type: str = Field(..., alias="detail-type")
|
20
20
|
detail: RawDictOrModel
|
21
21
|
replay_name: Optional[str] = Field(None, alias="replay-name")
|
22
|
+
|
23
|
+
@field_validator("detail", mode="before")
|
24
|
+
def validate_detail(cls, v, fields):
|
25
|
+
# EventBridge Scheduler sends detail field as '{}' string when no payload is present
|
26
|
+
# See: https://github.com/aws-powertools/powertools-lambda-python/issues/6112
|
27
|
+
return {} if fields.data.get("source") == "aws.scheduler" and v == "{}" else v
|
{aws_lambda_powertools-3.6.1a6.dist-info → aws_lambda_powertools-3.6.1a8.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: aws_lambda_powertools
|
3
|
-
Version: 3.6.
|
3
|
+
Version: 3.6.1a8
|
4
4
|
Summary: Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless best practices and increase developer velocity.
|
5
5
|
License: MIT
|
6
6
|
Keywords: aws_lambda_powertools,aws,tracing,logging,lambda,powertools,feature_flags,idempotency,middleware
|
@@ -47,7 +47,7 @@ Description-Content-Type: text/markdown
|
|
47
47
|
|
48
48
|
[](https://github.com/aws-powertools/powertools-lambda-python/actions/workflows/python_build.yml)
|
49
49
|
[](https://app.codecov.io/gh/aws-powertools/powertools-lambda-python)
|
50
|
-
   [](https://api.securityscorecards.dev/projects/github.com/aws-powertools/powertools-lambda-python) [](https://discord.gg/B8zZKbbyET)
|
51
51
|
|
52
52
|
Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless [best practices and increase developer velocity](https://docs.powertools.aws.dev/lambda/python/latest/#features).
|
53
53
|
|
@@ -13,7 +13,7 @@ aws_lambda_powertools/event_handler/graphql_appsync/router.py,sha256=f6jFQ3ZbJz9
|
|
13
13
|
aws_lambda_powertools/event_handler/lambda_function_url.py,sha256=aJtTUR9DD6UzFcpRfbUki7mm2BDozFmuECrTWXxLjng,2153
|
14
14
|
aws_lambda_powertools/event_handler/middlewares/__init__.py,sha256=3R5XptoCT8owm4swcAEG0lsV_zbL4X-gU5nv8eJ0jQs,158
|
15
15
|
aws_lambda_powertools/event_handler/middlewares/base.py,sha256=llr1_sGaAsyMY9Gn4zKUDxePQ5X7ClcqgjqPesg5FJw,3724
|
16
|
-
aws_lambda_powertools/event_handler/middlewares/openapi_validation.py,sha256=
|
16
|
+
aws_lambda_powertools/event_handler/middlewares/openapi_validation.py,sha256=DZqkFFtft6WbtzRBzM4nA3FFtEKw-pGIgPixSvOJLcs,15017
|
17
17
|
aws_lambda_powertools/event_handler/middlewares/schema_validation.py,sha256=gEX0lgO8e7sxNQZwFbhK3ExQyb_b_Fw3l6k5SeZyHqk,5204
|
18
18
|
aws_lambda_powertools/event_handler/openapi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
19
19
|
aws_lambda_powertools/event_handler/openapi/compat.py,sha256=elvYmcsKx9TjRnTAief8Xfpd5bgKADoM-9BlQ4Q37iY,10877
|
@@ -83,7 +83,7 @@ aws_lambda_powertools/shared/json_encoder.py,sha256=JQeWNu-4M7_xI_hqYExrxsb3OcEH
|
|
83
83
|
aws_lambda_powertools/shared/lazy_import.py,sha256=TbXQm2bcwXdZrYdBaJJXIswyLlumM85RJ_A_0w-h-GU,2019
|
84
84
|
aws_lambda_powertools/shared/types.py,sha256=APkI38HbiTpSF19NSNii8Ydx73vmVUVotgEQ9jHruEI,124
|
85
85
|
aws_lambda_powertools/shared/user_agent.py,sha256=DrCMFQuT4a4iIrpcWpAIjY37EFqR9-QxlxDGD-Nn9Gg,7081
|
86
|
-
aws_lambda_powertools/shared/version.py,sha256=
|
86
|
+
aws_lambda_powertools/shared/version.py,sha256=nm9AVxq7PFYS3OZDRFPgPvV7qx8W7E9mKKMIhaNAQNU,84
|
87
87
|
aws_lambda_powertools/tracing/__init__.py,sha256=f4bMThOPBPWTPVcYqcAIErAJPerMsf3H_Z4gCXCsK9I,141
|
88
88
|
aws_lambda_powertools/tracing/base.py,sha256=DbLD8OSK05KLdSV36oNA5wDSGv8KbcOD19qMUqoXh58,4513
|
89
89
|
aws_lambda_powertools/tracing/extensions.py,sha256=APOfXOq-hRBKaK5WyfIyrd_6M1_9SWJZ3zxLA9jDZzU,492
|
@@ -208,7 +208,7 @@ aws_lambda_powertools/utilities/parser/models/bedrock_agent.py,sha256=YFu2cFxBZt
|
|
208
208
|
aws_lambda_powertools/utilities/parser/models/cloudformation_custom_resource.py,sha256=DySFMeZ50qOZ1FkwSzM70IlcCmjKkoynmmKqLYfTL6E,1465
|
209
209
|
aws_lambda_powertools/utilities/parser/models/cloudwatch.py,sha256=1y2WmgBbIo6GkEtw75YzNaz9qREHl_-ThT0Iz7Ntd_k,1291
|
210
210
|
aws_lambda_powertools/utilities/parser/models/dynamodb.py,sha256=ktjvd5L7LLvitgi1yPFbtc_TK8J_3yzqIHmaZ4UfTt8,2197
|
211
|
-
aws_lambda_powertools/utilities/parser/models/event_bridge.py,sha256=
|
211
|
+
aws_lambda_powertools/utilities/parser/models/event_bridge.py,sha256=Fanggwc7Ug_YTzFGl1utSRn7fjxILNR_GnkrNG9IQ88,941
|
212
212
|
aws_lambda_powertools/utilities/parser/models/iot_registry_events.py,sha256=hnuCxt9jYri_MRI9Z-n7aknA2CcBIHkPD__G9jSQEZ4,5448
|
213
213
|
aws_lambda_powertools/utilities/parser/models/kafka.py,sha256=XukgaGbhY0-yOGJ-36dwjJM2xvWk9z-XQd_rZGAheZs,1849
|
214
214
|
aws_lambda_powertools/utilities/parser/models/kinesis.py,sha256=-8zJh1GJd69QCo0tGQkg7SEqbcWJCbwmeSb1Rx8Jt40,1790
|
@@ -250,7 +250,7 @@ aws_lambda_powertools/utilities/validation/envelopes.py,sha256=YD5HOFx6IClQgii0n
|
|
250
250
|
aws_lambda_powertools/utilities/validation/exceptions.py,sha256=PKy_19zQMBJGCMMFl-sMkcm-cc0v3zZBn_bhGE4wKNo,2084
|
251
251
|
aws_lambda_powertools/utilities/validation/validator.py,sha256=x_1qpuKJBuWpgNU-zCD3Di-vXrZfyUu7oA5RmjZjr84,10034
|
252
252
|
aws_lambda_powertools/warnings/__init__.py,sha256=vqDVeZz8wGtD8WGYNSkQE7AHwqtIrPGRxuoJR_BBnSs,1193
|
253
|
-
aws_lambda_powertools-3.6.
|
254
|
-
aws_lambda_powertools-3.6.
|
255
|
-
aws_lambda_powertools-3.6.
|
256
|
-
aws_lambda_powertools-3.6.
|
253
|
+
aws_lambda_powertools-3.6.1a8.dist-info/LICENSE,sha256=vMHS2eBgmwPUIMPb7LQ4p7ib_FPVQXarVjAasflrTwo,951
|
254
|
+
aws_lambda_powertools-3.6.1a8.dist-info/METADATA,sha256=T6WKaGCdOgFiTw9jRucS33K78CkovLD9SryjyuoMYXI,11151
|
255
|
+
aws_lambda_powertools-3.6.1a8.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
|
256
|
+
aws_lambda_powertools-3.6.1a8.dist-info/RECORD,,
|
File without changes
|
File without changes
|