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.
@@ -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
- # Process the response body if it exists
140
- if response.body:
141
- # Validate and serialize the response, if it's JSON
142
- if response.is_json():
143
- response.body = self._serialize_response(
144
- field=route.dependant.return_param,
145
- response_content=response.body,
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,3 +1,3 @@
1
1
  """Exposes version constant to avoid circular dependencies."""
2
2
 
3
- VERSION = "3.6.1a6"
3
+ VERSION = "3.6.1a8"
@@ -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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: aws_lambda_powertools
3
- Version: 3.6.1a6
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
  [![Build](https://github.com/aws-powertools/powertools-lambda-python/actions/workflows/quality_check.yml/badge.svg)](https://github.com/aws-powertools/powertools-lambda-python/actions/workflows/python_build.yml)
49
49
  [![codecov.io](https://codecov.io/github/aws-powertools/powertools-lambda-python/branch/develop/graphs/badge.svg)](https://app.codecov.io/gh/aws-powertools/powertools-lambda-python)
50
- ![PythonSupport](https://img.shields.io/static/v1?label=python&message=%203.8|%203.9|%203.10|%203.11|%203.12&color=blue?style=flat-square&logo=python) ![PyPI version](https://badge.fury.io/py/aws-lambda-powertools.svg) ![PyPi monthly downloads](https://img.shields.io/pypi/dm/aws-lambda-powertools) [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/aws-powertools/powertools-lambda-python/badge)](https://api.securityscorecards.dev/projects/github.com/aws-powertools/powertools-lambda-python) [![Join our Discord](https://dcbadge.vercel.app/api/server/B8zZKbbyET?style=flat-square)](https://discord.gg/B8zZKbbyET)
50
+ ![PythonSupport](https://img.shields.io/static/v1?label=python&message=%203.9|%203.10|%203.11|%203.12|%203.13&color=blue?style=flat-square&logo=python) ![PyPI version](https://badge.fury.io/py/aws-lambda-powertools.svg) ![PyPi monthly downloads](https://img.shields.io/pypi/dm/aws-lambda-powertools) [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/aws-powertools/powertools-lambda-python/badge)](https://api.securityscorecards.dev/projects/github.com/aws-powertools/powertools-lambda-python) [![Join our Discord](https://dcbadge.vercel.app/api/server/B8zZKbbyET?style=flat-square)](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=fA_CKkprxr2cZgFMqH0Ma_-t4YyeCD0kYQS7L5hoHz8,15441
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=TFSZEJxOxt1fg0Hcls4HgdYQl7jOiw9d-lQ59UySc-E,84
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=KKv1z_NpLgcx86hvo--KwffqHiBuqxtzgPzduqCsAOA,570
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.1a6.dist-info/LICENSE,sha256=vMHS2eBgmwPUIMPb7LQ4p7ib_FPVQXarVjAasflrTwo,951
254
- aws_lambda_powertools-3.6.1a6.dist-info/METADATA,sha256=1wPvNkJTutmPDn_Dwrfn0z3-3oX-SmqZPhvvFoxNRi0,11150
255
- aws_lambda_powertools-3.6.1a6.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
256
- aws_lambda_powertools-3.6.1a6.dist-info/RECORD,,
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,,