aws-lambda-powertools 3.35.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 (346) hide show
  1. aws_lambda_powertools-3.36.0/.gitignore +326 -0
  2. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/PKG-INFO +38 -24
  3. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/api_gateway.py +55 -3
  4. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/exceptions.py +19 -0
  5. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/encoders.py +6 -6
  6. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/params.py +1 -1
  7. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/base.py +3 -3
  8. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/metrics.py +8 -3
  9. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/cloudwatch.py +8 -4
  10. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/cookies.py +1 -1
  11. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/dynamodb_deserializer.py +12 -10
  12. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/version.py +1 -1
  13. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/__init__.py +32 -0
  14. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/_internal/__init__.py +1 -0
  15. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/_internal/deadline.py +26 -0
  16. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/_internal/errors.py +30 -0
  17. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/_internal/http.py +146 -0
  18. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/_internal/scopes.py +14 -0
  19. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/_internal/transport.py +101 -0
  20. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/_internal/validation.py +69 -0
  21. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/exceptions.py +29 -0
  22. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/__init__.py +32 -0
  23. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/_internal/authorization.py +81 -0
  24. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/_internal/base.py +147 -0
  25. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/_internal/errors.py +3 -0
  26. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/_internal/jwks.py +141 -0
  27. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/exceptions.py +48 -0
  28. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/integrations/__init__.py +1 -0
  29. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/integrations/api_gateway.py +164 -0
  30. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/integrations/event_handler.py +119 -0
  31. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/testing.py +32 -0
  32. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/verifier.py +345 -0
  33. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/oauth2/__init__.py +23 -0
  34. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/oauth2/client.py +387 -0
  35. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/oauth2/exceptions.py +32 -0
  36. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/base.py +2 -2
  37. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/persistence/base.py +5 -5
  38. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/persistence/dynamodb.py +2 -2
  39. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/appsync/scalar_types_utils.py +6 -6
  40. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/common.py +1 -1
  41. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/feature_flags.py +23 -1
  42. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/base.py +2 -2
  43. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/persistence/base.py +30 -7
  44. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/persistence/datarecord.py +4 -4
  45. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/persistence/dynamodb.py +2 -2
  46. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/persistence/redis.py +3 -3
  47. aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/kafka/serialization/__init__.py +0 -0
  48. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/serialization/custom_dict.py +4 -2
  49. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/_s3_seekable_io.py +17 -4
  50. aws_lambda_powertools-3.36.0/pyproject.toml +266 -0
  51. aws_lambda_powertools-3.35.0/pyproject.toml +0 -246
  52. aws_lambda_powertools-3.35.0/setup.py +0 -94
  53. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/LICENSE +0 -0
  54. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/README.md +0 -0
  55. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/THIRD-PARTY-LICENSES +0 -0
  56. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/__init__.py +0 -0
  57. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/__init__.py +0 -0
  58. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/appsync.py +0 -0
  59. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/bedrock_agent.py +0 -0
  60. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/bedrock_agent_function.py +0 -0
  61. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/content_types.py +0 -0
  62. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/depends.py +0 -0
  63. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/__init__.py +0 -0
  64. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/_registry.py +0 -0
  65. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/appsync_events.py +0 -0
  66. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/base.py +0 -0
  67. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/exceptions.py +0 -0
  68. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/functions.py +0 -0
  69. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/router.py +0 -0
  70. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/types.py +0 -0
  71. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/exception_handling.py +0 -0
  72. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/graphql_appsync/__init__.py +0 -0
  73. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/graphql_appsync/_registry.py +0 -0
  74. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/graphql_appsync/base.py +0 -0
  75. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/graphql_appsync/exceptions.py +0 -0
  76. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/graphql_appsync/router.py +0 -0
  77. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/http_resolver.py +0 -0
  78. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/lambda_function_url.py +0 -0
  79. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/middlewares/__init__.py +0 -0
  80. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/middlewares/async_utils.py +0 -0
  81. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/middlewares/base.py +0 -0
  82. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/middlewares/openapi_validation.py +0 -0
  83. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/middlewares/schema_validation.py +0 -0
  84. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/__init__.py +0 -0
  85. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/compat.py +0 -0
  86. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/config.py +0 -0
  87. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/constants.py +0 -0
  88. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/dependant.py +0 -0
  89. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/exceptions.py +0 -0
  90. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/merge.py +0 -0
  91. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/models.py +0 -0
  92. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/pydantic_loader.py +0 -0
  93. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/schema_generator.py +0 -0
  94. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/__init__.py +0 -0
  95. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/html.py +0 -0
  96. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/oauth2.py +0 -0
  97. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/swagger-ui-bundle.min.js +0 -0
  98. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/swagger-ui.min.css +0 -0
  99. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/types.py +0 -0
  100. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/request.py +0 -0
  101. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/router.py +0 -0
  102. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/types.py +0 -0
  103. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/util.py +0 -0
  104. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/vpc_lattice.py +0 -0
  105. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/exceptions/__init__.py +0 -0
  106. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/__init__.py +0 -0
  107. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/buffer/__init__.py +0 -0
  108. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/buffer/cache.py +0 -0
  109. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/buffer/config.py +0 -0
  110. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/buffer/functions.py +0 -0
  111. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/buffer/handler.py +0 -0
  112. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/constants.py +0 -0
  113. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/correlation_paths.py +0 -0
  114. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/exceptions.py +0 -0
  115. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/filters.py +0 -0
  116. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/formatter.py +0 -0
  117. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/formatters/__init__.py +0 -0
  118. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/formatters/datadog.py +0 -0
  119. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/lambda_context.py +0 -0
  120. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/logger.py +0 -0
  121. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/types.py +0 -0
  122. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/utils.py +0 -0
  123. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/__init__.py +0 -0
  124. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/exceptions.py +0 -0
  125. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/functions.py +0 -0
  126. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/metric.py +0 -0
  127. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/__init__.py +0 -0
  128. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/base.py +0 -0
  129. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/__init__.py +0 -0
  130. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/constants.py +0 -0
  131. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/exceptions.py +0 -0
  132. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/metric_properties.py +0 -0
  133. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/types.py +0 -0
  134. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cold_start.py +0 -0
  135. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/datadog/__init__.py +0 -0
  136. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/datadog/datadog.py +0 -0
  137. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/datadog/metrics.py +0 -0
  138. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/datadog/warnings.py +0 -0
  139. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/types.py +0 -0
  140. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/middleware_factory/__init__.py +0 -0
  141. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/middleware_factory/exceptions.py +0 -0
  142. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/middleware_factory/factory.py +0 -0
  143. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/package_logger.py +0 -0
  144. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/py.typed +0 -0
  145. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/__init__.py +0 -0
  146. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/cache_dict.py +0 -0
  147. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/constants.py +0 -0
  148. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/functions.py +0 -0
  149. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/headers_serializer.py +0 -0
  150. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/json_encoder.py +0 -0
  151. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/lazy_import.py +0 -0
  152. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/types.py +0 -0
  153. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/user_agent.py +0 -0
  154. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/tracing/__init__.py +0 -0
  155. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/tracing/base.py +0 -0
  156. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/tracing/extensions.py +0 -0
  157. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/tracing/tracer.py +0 -0
  158. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/__init__.py +0 -0
  159. {aws_lambda_powertools-3.35.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
  160. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/batch/__init__.py +0 -0
  161. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/batch/base.py +0 -0
  162. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/batch/decorators.py +0 -0
  163. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/batch/exceptions.py +0 -0
  164. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/batch/sqs_fifo_partial_processor.py +0 -0
  165. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/batch/types.py +0 -0
  166. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/__init__.py +0 -0
  167. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/circuit_breaker.py +0 -0
  168. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/config.py +0 -0
  169. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/exceptions.py +0 -0
  170. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/persistence/__init__.py +0 -0
  171. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/persistence/record.py +0 -0
  172. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/states.py +0 -0
  173. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/__init__.py +0 -0
  174. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/active_mq_event.py +0 -0
  175. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/alb_event.py +0 -0
  176. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/api_gateway_authorizer_event.py +0 -0
  177. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/api_gateway_proxy_event.py +0 -0
  178. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/api_gateway_websocket_event.py +0 -0
  179. {aws_lambda_powertools-3.35.0/aws_lambda_powertools/utilities/idempotency/persistence → aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/data_classes/appsync}/__init__.py +0 -0
  180. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/appsync_authorizer_event.py +0 -0
  181. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/appsync_resolver_event.py +0 -0
  182. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/appsync_resolver_events_event.py +0 -0
  183. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/aws_config_rule_event.py +0 -0
  184. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/bedrock_agent_event.py +0 -0
  185. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/bedrock_agent_function_event.py +0 -0
  186. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_alarm_event.py +0 -0
  187. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_custom_widget_event.py +0 -0
  188. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_logs_event.py +0 -0
  189. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/cloudformation_custom_resource_event.py +0 -0
  190. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/code_deploy_lifecycle_hook_event.py +0 -0
  191. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/code_pipeline_job_event.py +0 -0
  192. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/cognito_user_pool_event.py +0 -0
  193. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/connect_contact_flow_event.py +0 -0
  194. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/dynamo_db_stream_event.py +0 -0
  195. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/event_bridge_event.py +0 -0
  196. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/event_source.py +0 -0
  197. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/iot_registry_event.py +0 -0
  198. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/kafka_event.py +0 -0
  199. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/kinesis_firehose_event.py +0 -0
  200. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/kinesis_stream_event.py +0 -0
  201. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/lambda_function_url_event.py +0 -0
  202. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/rabbit_mq_event.py +0 -0
  203. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/s3_batch_operation_event.py +0 -0
  204. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/s3_event.py +0 -0
  205. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/s3_object_event.py +0 -0
  206. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/secrets_manager_event.py +0 -0
  207. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/ses_event.py +0 -0
  208. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/shared_functions.py +0 -0
  209. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/sns_event.py +0 -0
  210. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/sqs_event.py +0 -0
  211. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/transfer_family_event.py +0 -0
  212. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/vpc_lattice.py +0 -0
  213. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/__init__.py +0 -0
  214. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/base.py +0 -0
  215. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/constants.py +0 -0
  216. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/exceptions.py +0 -0
  217. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/provider/__init__.py +0 -0
  218. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/provider/base.py +0 -0
  219. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/provider/kms/__init__.py +0 -0
  220. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/provider/kms/aws_encryption_sdk.py +0 -0
  221. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/__init__.py +0 -0
  222. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/appconfig.py +0 -0
  223. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/base.py +0 -0
  224. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/comparators.py +0 -0
  225. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/constants.py +0 -0
  226. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/exceptions.py +0 -0
  227. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/schema.py +0 -0
  228. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/types.py +0 -0
  229. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/__init__.py +0 -0
  230. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/config.py +0 -0
  231. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/exceptions.py +0 -0
  232. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/hook.py +0 -0
  233. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/idempotency.py +0 -0
  234. {aws_lambda_powertools-3.35.0/aws_lambda_powertools/utilities/idempotency/serialization → aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/idempotency/persistence}/__init__.py +0 -0
  235. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/persistence/cache.py +0 -0
  236. {aws_lambda_powertools-3.35.0/aws_lambda_powertools/utilities/kafka/deserializer → aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/idempotency/serialization}/__init__.py +0 -0
  237. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/serialization/base.py +0 -0
  238. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/serialization/custom_dict.py +0 -0
  239. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/serialization/dataclass.py +0 -0
  240. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/serialization/functions.py +0 -0
  241. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/serialization/no_op.py +0 -0
  242. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/serialization/pydantic.py +0 -0
  243. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/jmespath_utils/__init__.py +0 -0
  244. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/jmespath_utils/envelopes.py +0 -0
  245. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/__init__.py +0 -0
  246. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/consumer_records.py +0 -0
  247. {aws_lambda_powertools-3.35.0/aws_lambda_powertools/utilities/kafka/serialization → aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/kafka/deserializer}/__init__.py +0 -0
  248. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/deserializer/avro.py +0 -0
  249. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/deserializer/base.py +0 -0
  250. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/deserializer/default.py +0 -0
  251. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/deserializer/deserializer.py +0 -0
  252. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/deserializer/json.py +0 -0
  253. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/deserializer/protobuf.py +0 -0
  254. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/exceptions.py +0 -0
  255. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/kafka_consumer.py +0 -0
  256. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/schema_config.py +0 -0
  257. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/serialization/base.py +0 -0
  258. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/serialization/dataclass.py +0 -0
  259. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/serialization/pydantic.py +0 -0
  260. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/serialization/serialization.py +0 -0
  261. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/serialization/types.py +0 -0
  262. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/metadata/__init__.py +0 -0
  263. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/metadata/exceptions.py +0 -0
  264. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/metadata/lambda_metadata.py +0 -0
  265. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/__init__.py +0 -0
  266. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/appconfig.py +0 -0
  267. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/base.py +0 -0
  268. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/constants.py +0 -0
  269. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/dynamodb.py +0 -0
  270. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/exceptions.py +0 -0
  271. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/secrets.py +0 -0
  272. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/ssm.py +0 -0
  273. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/types.py +0 -0
  274. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/__init__.py +0 -0
  275. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/__init__.py +0 -0
  276. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/apigw.py +0 -0
  277. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/apigw_websocket.py +0 -0
  278. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/apigwv2.py +0 -0
  279. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/base.py +0 -0
  280. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/bedrock_agent.py +0 -0
  281. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/cloudwatch.py +0 -0
  282. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/dynamodb.py +0 -0
  283. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/event_bridge.py +0 -0
  284. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/kafka.py +0 -0
  285. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/kinesis.py +0 -0
  286. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/kinesis_firehose.py +0 -0
  287. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/lambda_function_url.py +0 -0
  288. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/sns.py +0 -0
  289. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/sqs.py +0 -0
  290. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/vpc_lattice.py +0 -0
  291. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/vpc_latticev2.py +0 -0
  292. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/exceptions.py +0 -0
  293. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/functions.py +0 -0
  294. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/__init__.py +0 -0
  295. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/alb.py +0 -0
  296. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/apigw.py +0 -0
  297. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/apigw_websocket.py +0 -0
  298. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/apigwv2.py +0 -0
  299. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/appsync.py +0 -0
  300. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/appsync_events.py +0 -0
  301. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/bedrock_agent.py +0 -0
  302. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/cloudformation_custom_resource.py +0 -0
  303. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/cloudwatch.py +0 -0
  304. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/cognito.py +0 -0
  305. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/dynamodb.py +0 -0
  306. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/event_bridge.py +0 -0
  307. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/iot_registry_events.py +0 -0
  308. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/kafka.py +0 -0
  309. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/kinesis.py +0 -0
  310. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose.py +0 -0
  311. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose_sqs.py +0 -0
  312. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/lambda_function_url.py +0 -0
  313. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/s3.py +0 -0
  314. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/s3_batch_operation.py +0 -0
  315. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/s3_event_notification.py +0 -0
  316. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/s3_object_event.py +0 -0
  317. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/ses.py +0 -0
  318. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/sns.py +0 -0
  319. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/sqs.py +0 -0
  320. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/transfer_family.py +0 -0
  321. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/vpc_lattice.py +0 -0
  322. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/vpc_latticev2.py +0 -0
  323. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/parser.py +0 -0
  324. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/types.py +0 -0
  325. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/serialization.py +0 -0
  326. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/__init__.py +0 -0
  327. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/compat.py +0 -0
  328. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/constants.py +0 -0
  329. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/s3_object.py +0 -0
  330. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/transformations/__init__.py +0 -0
  331. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/transformations/base.py +0 -0
  332. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/transformations/csv.py +0 -0
  333. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/transformations/gzip.py +0 -0
  334. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/transformations/zip.py +0 -0
  335. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/types.py +0 -0
  336. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/typing/__init__.py +0 -0
  337. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/typing/lambda_client_context.py +0 -0
  338. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/typing/lambda_client_context_mobile_client.py +0 -0
  339. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/typing/lambda_cognito_identity.py +0 -0
  340. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/typing/lambda_context.py +0 -0
  341. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/validation/__init__.py +0 -0
  342. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/validation/base.py +0 -0
  343. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/validation/envelopes.py +0 -0
  344. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/validation/exceptions.py +0 -0
  345. {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/validation/validator.py +0 -0
  346. {aws_lambda_powertools-3.35.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.35.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)
@@ -3337,6 +3348,7 @@ class ALBResolver(ApiGatewayResolver):
3337
3348
  response_validation_error_http_code: HTTPStatus | int | None = None,
3338
3349
  json_body_deserializer: Callable[[str], dict] | None = None,
3339
3350
  decode_query_parameters: bool = False,
3351
+ enable_response_size_validation: bool = False,
3340
3352
  ):
3341
3353
  """Amazon Application Load Balancer (ALB) resolver
3342
3354
 
@@ -3363,6 +3375,10 @@ class ALBResolver(ApiGatewayResolver):
3363
3375
  by default json.loads when integrating with EventSource data class
3364
3376
  decode_query_parameters: bool | None
3365
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.
3366
3382
  """
3367
3383
  super().__init__(
3368
3384
  cors=cors,
@@ -3374,6 +3390,42 @@ class ALBResolver(ApiGatewayResolver):
3374
3390
  json_body_deserializer=json_body_deserializer,
3375
3391
  )
3376
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)
3377
3429
 
3378
3430
  def _get_base_path(self) -> str:
3379
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
 
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import dataclasses
4
- import datetime
4
+ import datetime as dt
5
5
  from collections import defaultdict, deque
6
6
  from decimal import Decimal
7
7
  from enum import Enum
@@ -306,7 +306,7 @@ def _dump_other(
306
306
  )
307
307
 
308
308
 
309
- def iso_format(o: datetime.date | datetime.time) -> str:
309
+ def iso_format(o: dt.date | dt.time) -> str:
310
310
  """
311
311
  ISO format for date and time
312
312
  """
@@ -341,10 +341,10 @@ ENCODERS_BY_TYPE: dict[type[Any], Callable[[Any], Any]] = {
341
341
  str: lambda o: o,
342
342
  type(None): lambda o: o,
343
343
  bytes: lambda o: o.decode(),
344
- datetime.date: iso_format,
345
- datetime.datetime: iso_format,
346
- datetime.time: iso_format,
347
- datetime.timedelta: lambda td: td.total_seconds(),
344
+ dt.date: iso_format,
345
+ dt.datetime: iso_format,
346
+ dt.time: iso_format,
347
+ dt.timedelta: lambda td: td.total_seconds(),
348
348
  Decimal: decimal_encoder,
349
349
  Enum: lambda o: o.value,
350
350
  PurePath: str,
@@ -1059,7 +1059,7 @@ def get_field_info_annotated_type(annotation, value, is_path_param: bool) -> tup
1059
1059
  # Reconstruct type_annotation with non-FieldInfo metadata if present
1060
1060
  # This ensures constraints like Interval are preserved
1061
1061
  if other_metadata and not preserve_full_annotation:
1062
- type_annotation = Annotated[(type_annotation, *other_metadata)]
1062
+ type_annotation = Annotated[(type_annotation,) + tuple(other_metadata)]
1063
1063
 
1064
1064
  # Process the annotation if it exists
1065
1065
  field_info: FieldInfo | None = None
@@ -6,7 +6,7 @@ Metrics utility
6
6
 
7
7
  from __future__ import annotations
8
8
 
9
- import datetime
9
+ import datetime as dt
10
10
  import functools
11
11
  import json
12
12
  import logging
@@ -250,7 +250,7 @@ class MetricManager:
250
250
 
251
251
  return {
252
252
  "_aws": {
253
- "Timestamp": self.timestamp or int(datetime.datetime.now().timestamp() * 1000), # epoch
253
+ "Timestamp": self.timestamp or int(dt.datetime.now().timestamp() * 1000), # epoch
254
254
  "CloudWatchMetrics": [
255
255
  {
256
256
  "Namespace": self.namespace, # "test_namespace"
@@ -322,7 +322,7 @@ class MetricManager:
322
322
  else:
323
323
  self.metadata_set[str(key)] = value
324
324
 
325
- def set_timestamp(self, timestamp: int | datetime.datetime):
325
+ def set_timestamp(self, timestamp: int | dt.datetime):
326
326
  """
327
327
  Set the timestamp for the metric.
328
328
 
@@ -6,7 +6,7 @@ from typing import TYPE_CHECKING, Any
6
6
  from aws_lambda_powertools.metrics.provider.cloudwatch_emf.cloudwatch import AmazonCloudWatchEMFProvider
7
7
 
8
8
  if TYPE_CHECKING:
9
- import datetime
9
+ import datetime as dt
10
10
  from collections.abc import Callable
11
11
 
12
12
  from aws_lambda_powertools.metrics.base import MetricResolution, MetricUnit
@@ -96,7 +96,12 @@ class Metrics:
96
96
  self.default_dimensions = self._default_dimensions
97
97
  self.dimension_set = self._dimensions
98
98
 
99
- self.dimension_set.update(**self._default_dimensions)
99
+ self.dimension_set.update(
100
+ **{
101
+ name: value if isinstance(value, str) else str(value)
102
+ for name, value in self._default_dimensions.items()
103
+ },
104
+ )
100
105
 
101
106
  if provider is None:
102
107
  self.provider = AmazonCloudWatchEMFProvider(
@@ -141,7 +146,7 @@ class Metrics:
141
146
  def add_metadata(self, key: str, value: Any) -> None:
142
147
  self.provider.add_metadata(key=key, value=value)
143
148
 
144
- def set_timestamp(self, timestamp: int | datetime.datetime):
149
+ def set_timestamp(self, timestamp: int | dt.datetime):
145
150
  """
146
151
  Set the timestamp for the metric.
147
152