aws-lambda-powertools 3.34.0__tar.gz → 3.36.0__tar.gz

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.
Files changed (348) hide show
  1. aws_lambda_powertools-3.36.0/.gitignore +326 -0
  2. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/PKG-INFO +38 -24
  3. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/api_gateway.py +98 -10
  4. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/exceptions.py +19 -0
  5. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/http_resolver.py +68 -13
  6. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/encoders.py +6 -6
  7. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/params.py +1 -1
  8. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/schema_generator.py +1 -1
  9. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/base.py +3 -3
  10. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/metrics.py +9 -7
  11. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/cloudwatch.py +10 -6
  12. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/cookies.py +1 -1
  13. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/dynamodb_deserializer.py +12 -10
  14. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/version.py +1 -1
  15. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/__init__.py +32 -0
  16. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/_internal/__init__.py +1 -0
  17. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/_internal/deadline.py +26 -0
  18. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/_internal/errors.py +30 -0
  19. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/_internal/http.py +146 -0
  20. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/_internal/scopes.py +14 -0
  21. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/_internal/transport.py +101 -0
  22. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/_internal/validation.py +69 -0
  23. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/exceptions.py +29 -0
  24. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/__init__.py +32 -0
  25. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/_internal/authorization.py +81 -0
  26. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/_internal/base.py +147 -0
  27. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/_internal/errors.py +3 -0
  28. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/_internal/jwks.py +141 -0
  29. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/exceptions.py +48 -0
  30. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/integrations/__init__.py +1 -0
  31. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/integrations/api_gateway.py +164 -0
  32. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/integrations/event_handler.py +119 -0
  33. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/testing.py +32 -0
  34. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/verifier.py +345 -0
  35. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/oauth2/__init__.py +23 -0
  36. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/oauth2/client.py +387 -0
  37. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/oauth2/exceptions.py +32 -0
  38. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/batch/exceptions.py +2 -2
  39. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/batch/types.py +5 -4
  40. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/base.py +2 -2
  41. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/persistence/base.py +5 -5
  42. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/persistence/dynamodb.py +2 -2
  43. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/api_gateway_authorizer_event.py +5 -2
  44. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/appsync/scalar_types_utils.py +6 -6
  45. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/common.py +1 -1
  46. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/base.py +23 -24
  47. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/data_masking/exceptions.py +40 -0
  48. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/provider/base.py +3 -2
  49. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/appconfig.py +11 -1
  50. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/comparators.py +7 -2
  51. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/constants.py +1 -1
  52. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/feature_flags.py +66 -7
  53. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/schema.py +40 -4
  54. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/base.py +2 -2
  55. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/persistence/base.py +34 -8
  56. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/persistence/datarecord.py +4 -4
  57. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/persistence/dynamodb.py +2 -2
  58. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/persistence/redis.py +9 -7
  59. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/consumer_records.py +6 -0
  60. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/deserializer/avro.py +35 -2
  61. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/deserializer/deserializer.py +20 -6
  62. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/schema_config.py +26 -0
  63. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/kafka/serialization/__init__.py +0 -0
  64. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/serialization/custom_dict.py +4 -2
  65. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/ssm.py +6 -1
  66. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/parser/__init__.py +44 -0
  67. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/apigw.py +36 -36
  68. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/apigw_websocket.py +3 -3
  69. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/apigwv2.py +20 -20
  70. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/appsync.py +10 -10
  71. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/appsync_events.py +6 -6
  72. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/bedrock_agent.py +4 -4
  73. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/cloudwatch.py +2 -2
  74. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/cognito.py +42 -42
  75. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/dynamodb.py +6 -6
  76. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/event_bridge.py +2 -2
  77. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/iot_registry_events.py +6 -6
  78. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/kafka.py +4 -4
  79. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose.py +3 -3
  80. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose_sqs.py +3 -3
  81. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/s3.py +19 -19
  82. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/s3_batch_operation.py +5 -5
  83. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/s3_object_event.py +4 -4
  84. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/ses.py +5 -5
  85. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/sns.py +6 -6
  86. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/sqs.py +9 -9
  87. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/transfer_family.py +2 -2
  88. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/vpc_latticev2.py +14 -14
  89. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/_s3_seekable_io.py +21 -6
  90. aws_lambda_powertools-3.36.0/pyproject.toml +266 -0
  91. aws_lambda_powertools-3.34.0/aws_lambda_powertools/utilities/data_masking/exceptions.py +0 -34
  92. aws_lambda_powertools-3.34.0/aws_lambda_powertools/utilities/parser/__init__.py +0 -19
  93. aws_lambda_powertools-3.34.0/pyproject.toml +0 -246
  94. aws_lambda_powertools-3.34.0/setup.py +0 -94
  95. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/LICENSE +0 -0
  96. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/README.md +0 -0
  97. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/THIRD-PARTY-LICENSES +0 -0
  98. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/__init__.py +0 -0
  99. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/__init__.py +0 -0
  100. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/appsync.py +0 -0
  101. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/bedrock_agent.py +0 -0
  102. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/bedrock_agent_function.py +0 -0
  103. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/content_types.py +0 -0
  104. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/depends.py +0 -0
  105. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/__init__.py +0 -0
  106. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/_registry.py +0 -0
  107. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/appsync_events.py +0 -0
  108. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/base.py +0 -0
  109. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/exceptions.py +0 -0
  110. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/functions.py +0 -0
  111. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/router.py +0 -0
  112. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/types.py +0 -0
  113. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/exception_handling.py +0 -0
  114. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/graphql_appsync/__init__.py +0 -0
  115. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/graphql_appsync/_registry.py +0 -0
  116. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/graphql_appsync/base.py +0 -0
  117. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/graphql_appsync/exceptions.py +0 -0
  118. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/graphql_appsync/router.py +0 -0
  119. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/lambda_function_url.py +0 -0
  120. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/middlewares/__init__.py +0 -0
  121. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/middlewares/async_utils.py +0 -0
  122. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/middlewares/base.py +0 -0
  123. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/middlewares/openapi_validation.py +0 -0
  124. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/middlewares/schema_validation.py +0 -0
  125. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/__init__.py +0 -0
  126. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/compat.py +0 -0
  127. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/config.py +0 -0
  128. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/constants.py +0 -0
  129. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/dependant.py +0 -0
  130. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/exceptions.py +0 -0
  131. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/merge.py +0 -0
  132. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/models.py +0 -0
  133. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/pydantic_loader.py +0 -0
  134. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/__init__.py +0 -0
  135. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/html.py +0 -0
  136. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/oauth2.py +0 -0
  137. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/swagger-ui-bundle.min.js +0 -0
  138. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/swagger-ui.min.css +0 -0
  139. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/types.py +0 -0
  140. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/request.py +0 -0
  141. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/router.py +0 -0
  142. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/types.py +0 -0
  143. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/util.py +0 -0
  144. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/vpc_lattice.py +0 -0
  145. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/exceptions/__init__.py +0 -0
  146. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/__init__.py +0 -0
  147. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/buffer/__init__.py +0 -0
  148. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/buffer/cache.py +0 -0
  149. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/buffer/config.py +0 -0
  150. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/buffer/functions.py +0 -0
  151. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/buffer/handler.py +0 -0
  152. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/constants.py +0 -0
  153. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/correlation_paths.py +0 -0
  154. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/exceptions.py +0 -0
  155. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/filters.py +0 -0
  156. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/formatter.py +0 -0
  157. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/formatters/__init__.py +0 -0
  158. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/formatters/datadog.py +0 -0
  159. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/lambda_context.py +0 -0
  160. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/logger.py +0 -0
  161. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/types.py +0 -0
  162. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/utils.py +0 -0
  163. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/__init__.py +0 -0
  164. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/exceptions.py +0 -0
  165. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/functions.py +0 -0
  166. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/metric.py +0 -0
  167. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/__init__.py +0 -0
  168. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/base.py +0 -0
  169. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/__init__.py +0 -0
  170. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/constants.py +0 -0
  171. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/exceptions.py +0 -0
  172. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/metric_properties.py +0 -0
  173. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/types.py +0 -0
  174. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cold_start.py +0 -0
  175. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/datadog/__init__.py +0 -0
  176. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/datadog/datadog.py +0 -0
  177. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/datadog/metrics.py +0 -0
  178. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/datadog/warnings.py +0 -0
  179. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/types.py +0 -0
  180. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/middleware_factory/__init__.py +0 -0
  181. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/middleware_factory/exceptions.py +0 -0
  182. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/middleware_factory/factory.py +0 -0
  183. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/package_logger.py +0 -0
  184. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/py.typed +0 -0
  185. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/__init__.py +0 -0
  186. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/cache_dict.py +0 -0
  187. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/constants.py +0 -0
  188. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/functions.py +0 -0
  189. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/headers_serializer.py +0 -0
  190. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/json_encoder.py +0 -0
  191. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/lazy_import.py +0 -0
  192. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/types.py +0 -0
  193. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/user_agent.py +0 -0
  194. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/tracing/__init__.py +0 -0
  195. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/tracing/base.py +0 -0
  196. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/tracing/extensions.py +0 -0
  197. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/tracing/tracer.py +0 -0
  198. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/__init__.py +0 -0
  199. {aws_lambda_powertools-3.34.0/aws_lambda_powertools/utilities/data_classes/appsync → aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/_internal}/__init__.py +0 -0
  200. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/batch/__init__.py +0 -0
  201. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/batch/base.py +0 -0
  202. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/batch/decorators.py +0 -0
  203. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/batch/sqs_fifo_partial_processor.py +0 -0
  204. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/__init__.py +0 -0
  205. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/circuit_breaker.py +0 -0
  206. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/config.py +0 -0
  207. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/exceptions.py +0 -0
  208. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/persistence/__init__.py +0 -0
  209. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/persistence/record.py +0 -0
  210. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/states.py +0 -0
  211. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/__init__.py +0 -0
  212. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/active_mq_event.py +0 -0
  213. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/alb_event.py +0 -0
  214. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/api_gateway_proxy_event.py +0 -0
  215. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/api_gateway_websocket_event.py +0 -0
  216. {aws_lambda_powertools-3.34.0/aws_lambda_powertools/utilities/idempotency/persistence → aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/data_classes/appsync}/__init__.py +0 -0
  217. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/appsync_authorizer_event.py +0 -0
  218. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/appsync_resolver_event.py +0 -0
  219. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/appsync_resolver_events_event.py +0 -0
  220. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/aws_config_rule_event.py +0 -0
  221. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/bedrock_agent_event.py +0 -0
  222. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/bedrock_agent_function_event.py +0 -0
  223. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_alarm_event.py +0 -0
  224. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_custom_widget_event.py +0 -0
  225. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_logs_event.py +0 -0
  226. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/cloudformation_custom_resource_event.py +0 -0
  227. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/code_deploy_lifecycle_hook_event.py +0 -0
  228. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/code_pipeline_job_event.py +0 -0
  229. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/cognito_user_pool_event.py +0 -0
  230. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/connect_contact_flow_event.py +0 -0
  231. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/dynamo_db_stream_event.py +0 -0
  232. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/event_bridge_event.py +0 -0
  233. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/event_source.py +0 -0
  234. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/iot_registry_event.py +0 -0
  235. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/kafka_event.py +0 -0
  236. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/kinesis_firehose_event.py +0 -0
  237. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/kinesis_stream_event.py +0 -0
  238. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/lambda_function_url_event.py +0 -0
  239. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/rabbit_mq_event.py +0 -0
  240. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/s3_batch_operation_event.py +0 -0
  241. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/s3_event.py +0 -0
  242. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/s3_object_event.py +0 -0
  243. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/secrets_manager_event.py +0 -0
  244. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/ses_event.py +0 -0
  245. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/shared_functions.py +0 -0
  246. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/sns_event.py +0 -0
  247. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/sqs_event.py +0 -0
  248. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/transfer_family_event.py +0 -0
  249. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/vpc_lattice.py +0 -0
  250. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/__init__.py +0 -0
  251. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/constants.py +0 -0
  252. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/provider/__init__.py +0 -0
  253. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/provider/kms/__init__.py +0 -0
  254. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/provider/kms/aws_encryption_sdk.py +0 -0
  255. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/__init__.py +0 -0
  256. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/base.py +0 -0
  257. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/exceptions.py +0 -0
  258. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/types.py +0 -0
  259. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/__init__.py +0 -0
  260. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/config.py +0 -0
  261. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/exceptions.py +0 -0
  262. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/hook.py +0 -0
  263. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/idempotency.py +0 -0
  264. {aws_lambda_powertools-3.34.0/aws_lambda_powertools/utilities/idempotency/serialization → aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/idempotency/persistence}/__init__.py +0 -0
  265. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/persistence/cache.py +0 -0
  266. {aws_lambda_powertools-3.34.0/aws_lambda_powertools/utilities/kafka/deserializer → aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/idempotency/serialization}/__init__.py +0 -0
  267. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/serialization/base.py +0 -0
  268. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/serialization/custom_dict.py +0 -0
  269. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/serialization/dataclass.py +0 -0
  270. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/serialization/functions.py +0 -0
  271. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/serialization/no_op.py +0 -0
  272. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/serialization/pydantic.py +0 -0
  273. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/jmespath_utils/__init__.py +0 -0
  274. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/jmespath_utils/envelopes.py +0 -0
  275. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/__init__.py +0 -0
  276. {aws_lambda_powertools-3.34.0/aws_lambda_powertools/utilities/kafka/serialization → aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/kafka/deserializer}/__init__.py +0 -0
  277. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/deserializer/base.py +0 -0
  278. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/deserializer/default.py +0 -0
  279. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/deserializer/json.py +0 -0
  280. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/deserializer/protobuf.py +0 -0
  281. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/exceptions.py +0 -0
  282. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/kafka_consumer.py +0 -0
  283. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/serialization/base.py +0 -0
  284. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/serialization/dataclass.py +0 -0
  285. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/serialization/pydantic.py +0 -0
  286. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/serialization/serialization.py +0 -0
  287. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/serialization/types.py +0 -0
  288. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/metadata/__init__.py +0 -0
  289. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/metadata/exceptions.py +0 -0
  290. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/metadata/lambda_metadata.py +0 -0
  291. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/__init__.py +0 -0
  292. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/appconfig.py +0 -0
  293. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/base.py +0 -0
  294. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/constants.py +0 -0
  295. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/dynamodb.py +0 -0
  296. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/exceptions.py +0 -0
  297. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/secrets.py +0 -0
  298. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/types.py +0 -0
  299. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/__init__.py +0 -0
  300. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/apigw.py +0 -0
  301. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/apigw_websocket.py +0 -0
  302. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/apigwv2.py +0 -0
  303. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/base.py +0 -0
  304. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/bedrock_agent.py +0 -0
  305. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/cloudwatch.py +0 -0
  306. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/dynamodb.py +0 -0
  307. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/event_bridge.py +0 -0
  308. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/kafka.py +0 -0
  309. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/kinesis.py +0 -0
  310. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/kinesis_firehose.py +0 -0
  311. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/lambda_function_url.py +0 -0
  312. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/sns.py +0 -0
  313. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/sqs.py +0 -0
  314. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/vpc_lattice.py +0 -0
  315. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/vpc_latticev2.py +0 -0
  316. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/exceptions.py +0 -0
  317. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/functions.py +0 -0
  318. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/__init__.py +0 -0
  319. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/alb.py +0 -0
  320. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/cloudformation_custom_resource.py +0 -0
  321. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/kinesis.py +0 -0
  322. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/lambda_function_url.py +0 -0
  323. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/s3_event_notification.py +0 -0
  324. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/vpc_lattice.py +0 -0
  325. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/parser.py +0 -0
  326. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/types.py +0 -0
  327. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/serialization.py +0 -0
  328. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/__init__.py +0 -0
  329. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/compat.py +0 -0
  330. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/constants.py +0 -0
  331. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/s3_object.py +0 -0
  332. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/transformations/__init__.py +0 -0
  333. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/transformations/base.py +0 -0
  334. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/transformations/csv.py +0 -0
  335. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/transformations/gzip.py +0 -0
  336. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/transformations/zip.py +0 -0
  337. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/types.py +0 -0
  338. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/typing/__init__.py +0 -0
  339. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/typing/lambda_client_context.py +0 -0
  340. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/typing/lambda_client_context_mobile_client.py +0 -0
  341. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/typing/lambda_cognito_identity.py +0 -0
  342. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/typing/lambda_context.py +0 -0
  343. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/validation/__init__.py +0 -0
  344. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/validation/base.py +0 -0
  345. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/validation/envelopes.py +0 -0
  346. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/validation/exceptions.py +0 -0
  347. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/validation/validator.py +0 -0
  348. {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/warnings/__init__.py +0 -0
@@ -0,0 +1,326 @@
1
+ # Created by https://www.gitignore.io/api/osx,linux,python,windows,pycharm,visualstudiocode
2
+ # Edit at https://www.gitignore.io/?templates=osx,linux,python,windows,pycharm,visualstudiocode
3
+
4
+ ### Linux ###
5
+ *~
6
+
7
+ # temporary files which can be created if a process still has a handle open of a deleted file
8
+ .fuse_hidden*
9
+
10
+ # KDE directory preferences
11
+ .directory
12
+
13
+ # Linux trash folder which might appear on any partition or disk
14
+ .Trash-*
15
+
16
+ # .nfs files are created when an open file is removed but is still being accessed
17
+ .nfs*
18
+
19
+ ### OSX ###
20
+ # General
21
+ .DS_Store
22
+ .AppleDouble
23
+ .LSOverride
24
+
25
+ # Icon must end with two \r
26
+ Icon
27
+
28
+ # Thumbnails
29
+ ._*
30
+
31
+ # Files that might appear in the root of a volume
32
+ .DocumentRevisions-V100
33
+ .fseventsd
34
+ .Spotlight-V100
35
+ .TemporaryItems
36
+ .Trashes
37
+ .VolumeIcon.icns
38
+ .com.apple.timemachine.donotpresent
39
+
40
+ # Directories potentially created on remote AFP share
41
+ .AppleDB
42
+ .AppleDesktop
43
+ Network Trash Folder
44
+ Temporary Items
45
+ .apdisk
46
+
47
+ ### PyCharm ###
48
+ # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
49
+ # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
50
+
51
+ # User-specific stuff
52
+ .idea/**/workspace.xml
53
+ .idea/**/tasks.xml
54
+ .idea/**/usage.statistics.xml
55
+ .idea/**/dictionaries
56
+ .idea/**/shelf
57
+
58
+ # Generated files
59
+ .idea/**/contentModel.xml
60
+
61
+ # Sensitive or high-churn files
62
+ .idea/**/dataSources/
63
+ .idea/**/dataSources.ids
64
+ .idea/**/dataSources.local.xml
65
+ .idea/**/sqlDataSources.xml
66
+ .idea/**/dynamic.xml
67
+ .idea/**/uiDesigner.xml
68
+ .idea/**/dbnavigator.xml
69
+
70
+ # Gradle
71
+ .idea/**/gradle.xml
72
+ .idea/**/libraries
73
+
74
+ # Gradle and Maven with auto-import
75
+ # When using Gradle or Maven with auto-import, you should exclude module files,
76
+ # since they will be recreated, and may cause churn. Uncomment if using
77
+ # auto-import.
78
+ # .idea/modules.xml
79
+ # .idea/*.iml
80
+ # .idea/modules
81
+ # *.iml
82
+ # *.ipr
83
+
84
+ # CMake
85
+ cmake-build-*/
86
+
87
+ # Mongo Explorer plugin
88
+ .idea/**/mongoSettings.xml
89
+
90
+ # File-based project format
91
+ *.iws
92
+
93
+ # IntelliJ
94
+ out/
95
+
96
+ # mpeltonen/sbt-idea plugin
97
+ .idea_modules/
98
+
99
+ # JIRA plugin
100
+ atlassian-ide-plugin.xml
101
+
102
+ # Cursive Clojure plugin
103
+ .idea/replstate.xml
104
+
105
+ # Crashlytics plugin (for Android Studio and IntelliJ)
106
+ com_crashlytics_export_strings.xml
107
+ crashlytics.properties
108
+ crashlytics-build.properties
109
+ fabric.properties
110
+
111
+ # Editor-based Rest Client
112
+ .idea/httpRequests
113
+
114
+ # Android studio 3.1+ serialized cache file
115
+ .idea/caches/build_file_checksums.ser
116
+
117
+ ### PyCharm Patch ###
118
+ # Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
119
+
120
+ # *.iml
121
+ # modules.xml
122
+ # .idea/misc.xml
123
+ # *.ipr
124
+
125
+ # Sonarlint plugin
126
+ .idea/sonarlint
127
+
128
+ ### Python ###
129
+ # Byte-compiled / optimized / DLL files
130
+ __pycache__/
131
+ *.py[cod]
132
+ *$py.class
133
+
134
+ # C extensions
135
+ *.so
136
+
137
+ # Distribution / packaging
138
+ .Python
139
+ build/
140
+ develop-eggs/
141
+ dist/
142
+ downloads/
143
+ eggs/
144
+ .eggs/
145
+ lib/
146
+ lib64/
147
+ parts/
148
+ sdist/
149
+ var/
150
+ wheels/
151
+ pip-wheel-metadata/
152
+ share/python-wheels/
153
+ *.egg-info/
154
+ .installed.cfg
155
+ *.egg
156
+ MANIFEST
157
+
158
+ # PyInstaller
159
+ # Usually these files are written by a python script from a template
160
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
161
+ *.manifest
162
+ *.spec
163
+
164
+ # Installer logs
165
+ pip-log.txt
166
+ pip-delete-this-directory.txt
167
+
168
+ # Unit test / coverage reports
169
+ htmlcov/
170
+ .tox/
171
+ .nox/
172
+ .coverage
173
+ .coverage.*
174
+ .cache
175
+ nosetests.xml
176
+ coverage.xml
177
+ *.cover
178
+ .hypothesis/
179
+ .pytest_cache/
180
+
181
+ # Translations
182
+ *.mo
183
+ *.pot
184
+
185
+ # Django stuff:
186
+ *.log
187
+ local_settings.py
188
+ db.sqlite3
189
+ db.sqlite3-journal
190
+
191
+ # Flask stuff:
192
+ instance/
193
+ .webassets-cache
194
+
195
+ # Scrapy stuff:
196
+ .scrapy
197
+
198
+ # Sphinx documentation
199
+ docs/_build/
200
+
201
+ # PyBuilder
202
+ target/
203
+
204
+ # Jupyter Notebook
205
+ .ipynb_checkpoints
206
+
207
+ # IPython
208
+ profile_default/
209
+ ipython_config.py
210
+
211
+ # pyenv
212
+ .python-version
213
+
214
+ # pipenv
215
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
216
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
217
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
218
+ # install all needed dependencies.
219
+ #Pipfile.lock
220
+
221
+ # celery beat schedule file
222
+ celerybeat-schedule
223
+
224
+ # SageMath parsed files
225
+ *.sage.py
226
+
227
+ # Environments
228
+ .env
229
+ .venv
230
+ env/
231
+ venv/
232
+ ENV/
233
+ env.bak/
234
+ venv.bak/
235
+
236
+ # Spyder project settings
237
+ .spyderproject
238
+ .spyproject
239
+
240
+ # Rope project settings
241
+ .ropeproject
242
+
243
+ # mkdocs documentation
244
+ /site
245
+
246
+ # mypy
247
+ .mypy_cache/
248
+ .dmypy.json
249
+ dmypy.json
250
+
251
+ # Pyre type checker
252
+ .pyre/
253
+
254
+ ### VisualStudioCode ###
255
+ .vscode
256
+ .vscode/*
257
+ !.vscode/tasks.json
258
+ !.vscode/launch.json
259
+ !.vscode/extensions.json
260
+
261
+ ### VisualStudioCode Patch ###
262
+ # Ignore all local history of files
263
+ .history
264
+
265
+ ### Windows ###
266
+ # Windows thumbnail cache files
267
+ Thumbs.db
268
+ Thumbs.db:encryptable
269
+ ehthumbs.db
270
+ ehthumbs_vista.db
271
+
272
+ # Dump file
273
+ *.stackdump
274
+
275
+ # Folder config file
276
+ [Dd]esktop.ini
277
+
278
+ # Recycle Bin used on file shares
279
+ $RECYCLE.BIN/
280
+
281
+ # Windows Installer files
282
+ *.cab
283
+ *.msi
284
+ *.msix
285
+ *.msm
286
+ *.msp
287
+
288
+ # Windows shortcuts
289
+ *.lnk
290
+
291
+ # End of https://www.gitignore.io/api/osx,linux,python,windows,pycharm,visualstudiocode
292
+
293
+ # Misc
294
+ test_report
295
+ wheelhouse
296
+ /.idea/*
297
+ *.html
298
+ TMP_CHANGELOG.md
299
+
300
+ # Docs files
301
+ docs/.cache/
302
+ docs/public
303
+ node_modules
304
+ api/
305
+ site/
306
+ !404.html
307
+ !docs/overrides/*.html
308
+
309
+ # CDK
310
+ .cdk
311
+
312
+ !.github/workflows/lib
313
+ examples/**/sam/.aws-sam
314
+
315
+ cdk.out
316
+ # NOTE: different accounts will be used for E2E thus creating unnecessary git clutter
317
+ cdk.context.json
318
+
319
+ # vim
320
+ *.swp
321
+
322
+ # LLMs
323
+ .claude
324
+ .amazonq
325
+ .kiro
326
+ .github/instructions
@@ -1,11 +1,15 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.5
2
2
  Name: aws_lambda_powertools
3
- Version: 3.34.0
3
+ Version: 3.36.0
4
4
  Summary: Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless best practices and increase developer velocity.
5
- License: MIT
6
- Keywords: aws_lambda_powertools,aws,tracing,logging,lambda,powertools,feature_flags,idempotency,middleware
5
+ Project-URL: Repository, https://github.com/aws-powertools/powertools-lambda-python
6
+ Project-URL: Documentation, https://docs.powertools.aws.dev/lambda/python/
7
+ Project-URL: Issue tracker, https://github.com/aws-powertools/powertools-lambda-python/issues
8
+ Project-URL: Releases, https://github.com/aws-powertools/powertools-lambda-python/releases
7
9
  Author: Amazon Web Services
8
- Requires-Python: >=3.10,<4.0.0
10
+ License: MIT
11
+ License-File: LICENSE
12
+ Keywords: aws,aws_lambda_powertools,feature_flags,idempotency,lambda,logging,middleware,powertools,tracing
9
13
  Classifier: Development Status :: 5 - Production/Stable
10
14
  Classifier: Intended Audience :: Developers
11
15
  Classifier: License :: OSI Approved :: MIT License
@@ -17,35 +21,46 @@ Classifier: Programming Language :: Python :: 3.11
17
21
  Classifier: Programming Language :: Python :: 3.12
18
22
  Classifier: Programming Language :: Python :: 3.13
19
23
  Classifier: Programming Language :: Python :: 3.14
24
+ Requires-Python: <4.0.0,>=3.10
25
+ Requires-Dist: jmespath<2.0.0,>=1.0.1
26
+ Requires-Dist: typing-extensions<5.0.0,>=4.11.0
20
27
  Provides-Extra: all
28
+ Requires-Dist: aws-encryption-sdk<5.0.0,>=4.0.5; extra == 'all'
29
+ Requires-Dist: aws-xray-sdk<3.0.0,>=2.8.0; extra == 'all'
30
+ Requires-Dist: cryptography<51.0.0,>=50.0.1; extra == 'all'
31
+ Requires-Dist: fastjsonschema<3.0.0,>=2.14.5; extra == 'all'
32
+ Requires-Dist: jsonpath-ng<2.0.0,>=1.6.0; extra == 'all'
33
+ Requires-Dist: pydantic-settings<3.0.0,>=2.6.1; extra == 'all'
34
+ Requires-Dist: pydantic<3.0.0,>=2.4.0; extra == 'all'
35
+ Requires-Dist: pyjwt<3.0.0,>=2.14.0; extra == 'all'
36
+ Requires-Dist: urllib3<3.0.0,>=2.7.0; extra == 'all'
21
37
  Provides-Extra: aws-sdk
38
+ Requires-Dist: boto3<2.0.0,>=1.34.32; extra == 'aws-sdk'
22
39
  Provides-Extra: datadog
40
+ Requires-Dist: datadog-lambda<9.0.0,>=8.114.0; extra == 'datadog'
23
41
  Provides-Extra: datamasking
42
+ Requires-Dist: aws-encryption-sdk<5.0.0,>=4.0.5; extra == 'datamasking'
43
+ Requires-Dist: jsonpath-ng<2.0.0,>=1.6.0; extra == 'datamasking'
44
+ Provides-Extra: jwt
45
+ Requires-Dist: cryptography<51.0.0,>=50.0.1; extra == 'jwt'
46
+ Requires-Dist: pyjwt<3.0.0,>=2.14.0; extra == 'jwt'
47
+ Requires-Dist: urllib3<3.0.0,>=2.7.0; extra == 'jwt'
24
48
  Provides-Extra: kafka-consumer-avro
49
+ Requires-Dist: avro<2.0.0,>=1.12.0; extra == 'kafka-consumer-avro'
25
50
  Provides-Extra: kafka-consumer-protobuf
51
+ Requires-Dist: protobuf<8.0.0,>=6.30.2; extra == 'kafka-consumer-protobuf'
52
+ Provides-Extra: oauth2
53
+ Requires-Dist: urllib3<3.0.0,>=2.7.0; extra == 'oauth2'
26
54
  Provides-Extra: parser
55
+ Requires-Dist: pydantic<3.0.0,>=2.4.0; extra == 'parser'
27
56
  Provides-Extra: redis
57
+ Requires-Dist: redis<9.0,>=4.4; extra == 'redis'
28
58
  Provides-Extra: tracer
59
+ Requires-Dist: aws-xray-sdk<3.0.0,>=2.8.0; extra == 'tracer'
29
60
  Provides-Extra: validation
61
+ Requires-Dist: fastjsonschema<3.0.0,>=2.14.5; extra == 'validation'
30
62
  Provides-Extra: valkey
31
- Requires-Dist: avro (>=1.12.0,<2.0.0) ; extra == "kafka-consumer-avro"
32
- Requires-Dist: aws-encryption-sdk (>=4.0.5,<5.0.0) ; extra == "all" or extra == "datamasking"
33
- Requires-Dist: aws-xray-sdk (>=2.8.0,<3.0.0) ; extra == "tracer" or extra == "all"
34
- Requires-Dist: boto3 (>=1.34.32,<2.0.0) ; extra == "aws-sdk"
35
- Requires-Dist: datadog-lambda (>=8.114.0,<9.0.0) ; extra == "datadog"
36
- Requires-Dist: fastjsonschema (>=2.14.5,<3.0.0) ; extra == "validation" or extra == "all"
37
- Requires-Dist: jmespath (>=1.0.1,<2.0.0)
38
- Requires-Dist: jsonpath-ng (>=1.6.0,<2.0.0) ; extra == "all" or extra == "datamasking"
39
- Requires-Dist: protobuf (>=6.30.2,<8.0.0) ; extra == "kafka-consumer-protobuf"
40
- Requires-Dist: pydantic (>=2.4.0,<3.0.0) ; extra == "parser" or extra == "all"
41
- Requires-Dist: pydantic-settings (>=2.6.1,<3.0.0) ; extra == "all"
42
- Requires-Dist: redis (>=4.4,<9.0) ; extra == "redis"
43
- Requires-Dist: typing-extensions (>=4.11.0,<5.0.0)
44
- Requires-Dist: valkey-glide (>=1.3.5,<3.0) ; extra == "valkey"
45
- Project-URL: Documentation, https://docs.powertools.aws.dev/lambda/python/
46
- Project-URL: Issue tracker, https://github.com/aws-powertools/powertools-lambda-python/issues
47
- Project-URL: Repository, https://github.com/aws-powertools/powertools-lambda-python
48
- Project-URL: Releases, https://github.com/aws-powertools/powertools-lambda-python/releases
63
+ Requires-Dist: valkey-glide<3.0,>=1.3.5; extra == 'valkey'
49
64
  Description-Content-Type: text/markdown
50
65
 
51
66
  <!-- markdownlint-disable MD013 MD041 MD043 -->
@@ -161,4 +176,3 @@ If you think you’ve found a potential security issue, please do not post it in
161
176
  ## License
162
177
 
163
178
  This library is licensed under the MIT-0 License. See the LICENSE file.
164
-
@@ -3,6 +3,7 @@ from __future__ import annotations
3
3
  import base64
4
4
  import json
5
5
  import logging
6
+ import os
6
7
  import re
7
8
  import traceback
8
9
  import warnings
@@ -18,7 +19,7 @@ from typing_extensions import override
18
19
 
19
20
  from aws_lambda_powertools.event_handler import content_types
20
21
  from aws_lambda_powertools.event_handler.exception_handling import ExceptionHandlerManager
21
- from aws_lambda_powertools.event_handler.exceptions import NotFoundError, ServiceError
22
+ from aws_lambda_powertools.event_handler.exceptions import NotFoundError, ResponseSizeExceededError, ServiceError
22
23
  from aws_lambda_powertools.event_handler.openapi.config import OpenAPIConfig
23
24
  from aws_lambda_powertools.event_handler.openapi.constants import (
24
25
  DEFAULT_API_VERSION,
@@ -72,6 +73,7 @@ _UNSAFE_URI = r"%<> \[\]{}|^"
72
73
  _NAMED_GROUP_BOUNDARY_PATTERN = rf"(?P\1[{_SAFE_URI}{_UNSAFE_URI}\\w]+)"
73
74
  _ROUTE_REGEX = "^{}$"
74
75
  _JSON_DUMP_CALL = partial(json.dumps, separators=(",", ":"), cls=Encoder)
76
+ _ALB_MAX_RESPONSE_SIZE = 1024 * 1024
75
77
 
76
78
  ResponseEventT = TypeVar("ResponseEventT", bound=BaseProxyEvent)
77
79
  ResponseT = TypeVar("ResponseT")
@@ -810,6 +812,11 @@ class ResponseBuilder(Generic[ResponseEventT]):
810
812
 
811
813
  def _compress(self):
812
814
  """Compress the response body, but only if `Accept-Encoding` headers includes gzip."""
815
+ # A response without a body, such as 204 No Content or 304 Not Modified, has nothing to compress
816
+ if self.response.body is None:
817
+ logger.debug("Response has no body; skipping compression")
818
+ return
819
+
813
820
  self.response.headers["Content-Encoding"] = "gzip"
814
821
  if isinstance(self.response.body, str):
815
822
  logger.debug("Converting string response to bytes before compressing it")
@@ -2553,7 +2560,7 @@ class ApiGatewayResolver(BaseRouter):
2553
2560
  BaseRouter.current_event = self._to_proxy_event(cast(dict, event))
2554
2561
  BaseRouter.lambda_context = context
2555
2562
 
2556
- response = self._resolve().build(self.current_event, self._cors)
2563
+ response = self._build_response(self._resolve())
2557
2564
 
2558
2565
  # Debug print Processed Middlewares
2559
2566
  if self._debug:
@@ -2614,7 +2621,7 @@ class ApiGatewayResolver(BaseRouter):
2614
2621
  BaseRouter.current_event = self._to_proxy_event(cast(dict, event))
2615
2622
  BaseRouter.lambda_context = context
2616
2623
 
2617
- response = (await self._resolve_async()).build(self.current_event, self._cors)
2624
+ response = self._build_response(await self._resolve_async())
2618
2625
 
2619
2626
  if self._debug:
2620
2627
  print("\nProcessed Middlewares:")
@@ -2626,6 +2633,10 @@ class ApiGatewayResolver(BaseRouter):
2626
2633
 
2627
2634
  return response
2628
2635
 
2636
+ def _build_response(self, response_builder: ResponseBuilder) -> dict[str, Any]:
2637
+ """Build the final integration response after route and middleware processing."""
2638
+ return response_builder.build(self.current_event, self._cors)
2639
+
2629
2640
  async def _resolve_async(self) -> ResponseBuilder:
2630
2641
  method = self.current_event.http_method.upper()
2631
2642
  path = self._remove_prefix(self.current_event.path)
@@ -3035,21 +3046,18 @@ class ApiGatewayResolver(BaseRouter):
3035
3046
  An optional prefix to be added to the originally defined rule
3036
3047
  """
3037
3048
 
3038
- # Add reference to parent ApiGatewayResolver to support use cases where people subclass it to add custom logic
3039
- router.api_resolver = self
3040
-
3041
3049
  logger.debug("Merging App context with Router context")
3042
3050
  self.context.update(**router.context)
3043
3051
 
3052
+ # Delegate request state to the resolver after preserving the router context.
3053
+ router.api_resolver = self
3054
+
3044
3055
  logger.debug("Appending Router middlewares into App middlewares.")
3045
3056
  self._router_middlewares = self._router_middlewares + router._router_middlewares
3046
3057
 
3047
3058
  logger.debug("Appending Router exception_handler into App exception_handler.")
3048
3059
  self.exception_handler_manager.update_exception_handlers(router._exception_handlers)
3049
3060
 
3050
- # use pointer to allow context clearance after event is processed e.g., resolve(evt, ctx)
3051
- router.context = self.context
3052
-
3053
3061
  # Iterate through the routes defined in the router to configure and apply middlewares for each route
3054
3062
  for route, func in router._routes.items():
3055
3063
  new_route = route
@@ -3112,9 +3120,48 @@ class Router(BaseRouter):
3112
3120
  self._routes: dict[tuple, Callable] = {}
3113
3121
  self._routes_with_middleware: dict[tuple, list[Callable]] = {}
3114
3122
  self.api_resolver: BaseRouter | None = None
3115
- self.context = {} # early init as customers might add context before event resolution
3123
+ self._context: dict = {} # early init as customers might add context before event resolution
3116
3124
  self._exception_handlers: dict[type, Callable] = {}
3117
3125
 
3126
+ @property
3127
+ def current_event(self) -> BaseProxyEvent:
3128
+ if self.api_resolver is not None:
3129
+ return self.api_resolver.current_event
3130
+ return BaseRouter.current_event
3131
+
3132
+ @current_event.setter
3133
+ def current_event(self, value: BaseProxyEvent) -> None:
3134
+ if self.api_resolver is not None:
3135
+ self.api_resolver.current_event = value
3136
+ else:
3137
+ BaseRouter.current_event = value
3138
+
3139
+ @property
3140
+ def lambda_context(self) -> LambdaContext:
3141
+ if self.api_resolver is not None:
3142
+ return self.api_resolver.lambda_context
3143
+ return BaseRouter.lambda_context
3144
+
3145
+ @lambda_context.setter
3146
+ def lambda_context(self, value: LambdaContext) -> None:
3147
+ if self.api_resolver is not None:
3148
+ self.api_resolver.lambda_context = value
3149
+ else:
3150
+ BaseRouter.lambda_context = value
3151
+
3152
+ @property
3153
+ def context(self) -> dict:
3154
+ if self.api_resolver is not None:
3155
+ return self.api_resolver.context
3156
+ return self._context
3157
+
3158
+ @context.setter
3159
+ def context(self, value: dict) -> None:
3160
+ if self.api_resolver is not None:
3161
+ self.api_resolver.context = value
3162
+ else:
3163
+ self._context = value
3164
+
3118
3165
  def route(
3119
3166
  self,
3120
3167
  rule: str,
@@ -3301,6 +3348,7 @@ class ALBResolver(ApiGatewayResolver):
3301
3348
  response_validation_error_http_code: HTTPStatus | int | None = None,
3302
3349
  json_body_deserializer: Callable[[str], dict] | None = None,
3303
3350
  decode_query_parameters: bool = False,
3351
+ enable_response_size_validation: bool = False,
3304
3352
  ):
3305
3353
  """Amazon Application Load Balancer (ALB) resolver
3306
3354
 
@@ -3327,6 +3375,10 @@ class ALBResolver(ApiGatewayResolver):
3327
3375
  by default json.loads when integrating with EventSource data class
3328
3376
  decode_query_parameters: bool | None
3329
3377
  Enables URL-decoding of query parameters (both keys and values), by default False.
3378
+ enable_response_size_validation: bool
3379
+ Validate the complete serialized response against ALB's 1 MB limit, by default False.
3380
+ Raises ResponseSizeExceededError when the limit is exceeded. Registered exception handlers
3381
+ can return a smaller response, which is also validated.
3330
3382
  """
3331
3383
  super().__init__(
3332
3384
  cors=cors,
@@ -3338,6 +3390,42 @@ class ALBResolver(ApiGatewayResolver):
3338
3390
  json_body_deserializer=json_body_deserializer,
3339
3391
  )
3340
3392
  self.decode_query_parameters = decode_query_parameters
3393
+ self._enable_response_size_validation = enable_response_size_validation
3394
+
3395
+ @override
3396
+ def _build_response(self, response_builder: ResponseBuilder) -> dict[str, Any]:
3397
+ response = super()._build_response(response_builder)
3398
+ if not self._enable_response_size_validation:
3399
+ return response
3400
+
3401
+ try:
3402
+ self._validate_response_size(response)
3403
+ except ResponseSizeExceededError as exc:
3404
+ try:
3405
+ # Resolved responses retain their route, including not-found and preflight responses.
3406
+ handled_response = self._call_exception_handler(exc, cast(Route, response_builder.route))
3407
+ if handled_response is None:
3408
+ raise
3409
+
3410
+ handled_response.response = cast(Response, self._to_response(handled_response.response))
3411
+ response = super()._build_response(handled_response)
3412
+ # Validate once more without invoking an exception handler recursively.
3413
+ self._validate_response_size(response)
3414
+ except Exception:
3415
+ self.clear_context()
3416
+ raise
3417
+
3418
+ return response
3419
+
3420
+ @staticmethod
3421
+ def _validate_response_size(response: dict[str, Any]) -> None:
3422
+ # Match the Lambda Python runtime's outer JSON encoding, including its default separators.
3423
+ # Managed Python 3.12+ runtimes return Unicode directly; older/custom runtimes escape it.
3424
+ runtime = re.fullmatch(r"AWS_Lambda_python3\.(\d+)", os.getenv("AWS_EXECUTION_ENV", ""))
3425
+ ensure_ascii = runtime is None or int(runtime[1]) < 12
3426
+ actual_size = len(json.dumps(response, ensure_ascii=ensure_ascii).encode("utf-8"))
3427
+ if actual_size > _ALB_MAX_RESPONSE_SIZE:
3428
+ raise ResponseSizeExceededError(actual_size=actual_size, max_size=_ALB_MAX_RESPONSE_SIZE)
3341
3429
 
3342
3430
  def _get_base_path(self) -> str:
3343
3431
  # ALB doesn't have a stage variable, so we just return an empty string
@@ -3,6 +3,25 @@ from __future__ import annotations
3
3
  from http import HTTPStatus
4
4
 
5
5
 
6
+ class ResponseSizeExceededError(Exception):
7
+ """The serialized Lambda response exceeds the integration's size limit."""
8
+
9
+ def __init__(self, *, actual_size: int, max_size: int):
10
+ """
11
+ Parameters
12
+ ----------
13
+ actual_size: int
14
+ Size of the complete serialized response in bytes.
15
+ max_size: int
16
+ Maximum allowed serialized response size in bytes.
17
+ """
18
+ self.actual_size = actual_size
19
+ self.max_size = max_size
20
+ super().__init__(
21
+ f"Serialized response size ({actual_size} bytes) exceeds the maximum allowed size ({max_size} bytes)",
22
+ )
23
+
24
+
6
25
  class ServiceError(Exception):
7
26
  """Powertools class HTTP Service Error"""
8
27