aws-lambda-powertools 3.25.0__tar.gz → 3.26.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 (306) hide show
  1. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/PKG-INFO +1 -1
  2. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/middlewares/openapi_validation.py +40 -36
  3. aws_lambda_powertools-3.26.0/aws_lambda_powertools/logging/buffer/handler.py +72 -0
  4. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/logging/utils.py +24 -1
  5. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/shared/constants.py +7 -0
  6. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/shared/version.py +1 -1
  7. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/batch/base.py +23 -2
  8. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/batch/decorators.py +43 -12
  9. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/batch/types.py +22 -2
  10. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/api_gateway_authorizer_event.py +5 -5
  11. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/appsync/scalar_types_utils.py +3 -3
  12. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/appsync_resolver_event.py +2 -2
  13. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/common.py +6 -6
  14. aws_lambda_powertools-3.26.0/aws_lambda_powertools/utilities/metadata/__init__.py +17 -0
  15. aws_lambda_powertools-3.26.0/aws_lambda_powertools/utilities/metadata/exceptions.py +11 -0
  16. aws_lambda_powertools-3.26.0/aws_lambda_powertools/utilities/metadata/lambda_metadata.py +174 -0
  17. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parameters/appconfig.py +1 -1
  18. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parameters/secrets.py +1 -1
  19. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parameters/ssm.py +6 -4
  20. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/functions.py +2 -2
  21. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/parser.py +1 -1
  22. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/pyproject.toml +5 -5
  23. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/setup.py +2 -1
  24. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/LICENSE +0 -0
  25. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/README.md +0 -0
  26. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/THIRD-PARTY-LICENSES +0 -0
  27. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/__init__.py +0 -0
  28. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/__init__.py +0 -0
  29. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/api_gateway.py +0 -0
  30. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/appsync.py +0 -0
  31. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/bedrock_agent.py +0 -0
  32. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/bedrock_agent_function.py +0 -0
  33. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/content_types.py +0 -0
  34. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/events_appsync/__init__.py +0 -0
  35. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/events_appsync/_registry.py +0 -0
  36. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/events_appsync/appsync_events.py +0 -0
  37. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/events_appsync/base.py +0 -0
  38. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/events_appsync/exceptions.py +0 -0
  39. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/events_appsync/functions.py +0 -0
  40. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/events_appsync/router.py +0 -0
  41. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/events_appsync/types.py +0 -0
  42. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/exception_handling.py +0 -0
  43. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/exceptions.py +0 -0
  44. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/graphql_appsync/__init__.py +0 -0
  45. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/graphql_appsync/_registry.py +0 -0
  46. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/graphql_appsync/base.py +0 -0
  47. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/graphql_appsync/exceptions.py +0 -0
  48. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/graphql_appsync/router.py +0 -0
  49. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/http_resolver.py +0 -0
  50. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/lambda_function_url.py +0 -0
  51. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/middlewares/__init__.py +0 -0
  52. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/middlewares/base.py +0 -0
  53. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/middlewares/schema_validation.py +0 -0
  54. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/openapi/__init__.py +0 -0
  55. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/openapi/compat.py +0 -0
  56. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/openapi/config.py +0 -0
  57. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/openapi/constants.py +0 -0
  58. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/openapi/dependant.py +0 -0
  59. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/openapi/encoders.py +0 -0
  60. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/openapi/exceptions.py +0 -0
  61. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/openapi/merge.py +0 -0
  62. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/openapi/models.py +0 -0
  63. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/openapi/params.py +0 -0
  64. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/openapi/pydantic_loader.py +0 -0
  65. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/__init__.py +0 -0
  66. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/html.py +0 -0
  67. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/oauth2.py +0 -0
  68. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/swagger-ui-bundle.min.js +0 -0
  69. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/swagger-ui.min.css +0 -0
  70. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/openapi/types.py +0 -0
  71. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/router.py +0 -0
  72. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/types.py +0 -0
  73. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/util.py +0 -0
  74. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/event_handler/vpc_lattice.py +0 -0
  75. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/exceptions/__init__.py +0 -0
  76. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/logging/__init__.py +0 -0
  77. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/logging/buffer/__init__.py +0 -0
  78. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/logging/buffer/cache.py +0 -0
  79. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/logging/buffer/config.py +0 -0
  80. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/logging/buffer/functions.py +0 -0
  81. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/logging/constants.py +0 -0
  82. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/logging/correlation_paths.py +0 -0
  83. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/logging/exceptions.py +0 -0
  84. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/logging/filters.py +0 -0
  85. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/logging/formatter.py +0 -0
  86. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/logging/formatters/__init__.py +0 -0
  87. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/logging/formatters/datadog.py +0 -0
  88. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/logging/lambda_context.py +0 -0
  89. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/logging/logger.py +0 -0
  90. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/logging/types.py +0 -0
  91. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/metrics/__init__.py +0 -0
  92. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/metrics/base.py +0 -0
  93. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/metrics/exceptions.py +0 -0
  94. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/metrics/functions.py +0 -0
  95. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/metrics/metric.py +0 -0
  96. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/metrics/metrics.py +0 -0
  97. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/metrics/provider/__init__.py +0 -0
  98. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/metrics/provider/base.py +0 -0
  99. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/__init__.py +0 -0
  100. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/cloudwatch.py +0 -0
  101. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/constants.py +0 -0
  102. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/exceptions.py +0 -0
  103. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/metric_properties.py +0 -0
  104. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/types.py +0 -0
  105. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/metrics/provider/cold_start.py +0 -0
  106. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/metrics/provider/datadog/__init__.py +0 -0
  107. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/metrics/provider/datadog/datadog.py +0 -0
  108. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/metrics/provider/datadog/metrics.py +0 -0
  109. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/metrics/provider/datadog/warnings.py +0 -0
  110. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/metrics/types.py +0 -0
  111. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/middleware_factory/__init__.py +0 -0
  112. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/middleware_factory/exceptions.py +0 -0
  113. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/middleware_factory/factory.py +0 -0
  114. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/package_logger.py +0 -0
  115. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/py.typed +0 -0
  116. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/shared/__init__.py +0 -0
  117. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/shared/cache_dict.py +0 -0
  118. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/shared/cookies.py +0 -0
  119. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/shared/dynamodb_deserializer.py +0 -0
  120. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/shared/functions.py +0 -0
  121. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/shared/headers_serializer.py +0 -0
  122. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/shared/json_encoder.py +0 -0
  123. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/shared/lazy_import.py +0 -0
  124. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/shared/types.py +0 -0
  125. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/shared/user_agent.py +0 -0
  126. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/tracing/__init__.py +0 -0
  127. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/tracing/base.py +0 -0
  128. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/tracing/extensions.py +0 -0
  129. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/tracing/tracer.py +0 -0
  130. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/__init__.py +0 -0
  131. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/batch/__init__.py +0 -0
  132. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/batch/exceptions.py +0 -0
  133. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/batch/sqs_fifo_partial_processor.py +0 -0
  134. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/__init__.py +0 -0
  135. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/active_mq_event.py +0 -0
  136. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/alb_event.py +0 -0
  137. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/api_gateway_proxy_event.py +0 -0
  138. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/api_gateway_websocket_event.py +0 -0
  139. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/appsync/__init__.py +0 -0
  140. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/appsync_authorizer_event.py +0 -0
  141. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/appsync_resolver_events_event.py +0 -0
  142. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/aws_config_rule_event.py +0 -0
  143. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/bedrock_agent_event.py +0 -0
  144. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/bedrock_agent_function_event.py +0 -0
  145. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_alarm_event.py +0 -0
  146. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_custom_widget_event.py +0 -0
  147. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_logs_event.py +0 -0
  148. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/cloudformation_custom_resource_event.py +0 -0
  149. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/code_deploy_lifecycle_hook_event.py +0 -0
  150. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/code_pipeline_job_event.py +0 -0
  151. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/cognito_user_pool_event.py +0 -0
  152. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/connect_contact_flow_event.py +0 -0
  153. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/dynamo_db_stream_event.py +0 -0
  154. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/event_bridge_event.py +0 -0
  155. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/event_source.py +0 -0
  156. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/iot_registry_event.py +0 -0
  157. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/kafka_event.py +0 -0
  158. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/kinesis_firehose_event.py +0 -0
  159. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/kinesis_stream_event.py +0 -0
  160. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/lambda_function_url_event.py +0 -0
  161. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/rabbit_mq_event.py +0 -0
  162. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/s3_batch_operation_event.py +0 -0
  163. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/s3_event.py +0 -0
  164. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/s3_object_event.py +0 -0
  165. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/secrets_manager_event.py +0 -0
  166. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/ses_event.py +0 -0
  167. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/shared_functions.py +0 -0
  168. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/sns_event.py +0 -0
  169. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/sqs_event.py +0 -0
  170. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/transfer_family_event.py +0 -0
  171. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_classes/vpc_lattice.py +0 -0
  172. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_masking/__init__.py +0 -0
  173. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_masking/base.py +0 -0
  174. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_masking/constants.py +0 -0
  175. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_masking/exceptions.py +0 -0
  176. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_masking/provider/__init__.py +0 -0
  177. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_masking/provider/base.py +0 -0
  178. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_masking/provider/kms/__init__.py +0 -0
  179. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/data_masking/provider/kms/aws_encryption_sdk.py +0 -0
  180. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/feature_flags/__init__.py +0 -0
  181. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/feature_flags/appconfig.py +0 -0
  182. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/feature_flags/base.py +0 -0
  183. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/feature_flags/comparators.py +0 -0
  184. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/feature_flags/constants.py +0 -0
  185. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/feature_flags/exceptions.py +0 -0
  186. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/feature_flags/feature_flags.py +0 -0
  187. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/feature_flags/schema.py +0 -0
  188. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/feature_flags/types.py +0 -0
  189. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/idempotency/__init__.py +0 -0
  190. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/idempotency/base.py +0 -0
  191. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/idempotency/config.py +0 -0
  192. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/idempotency/exceptions.py +0 -0
  193. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/idempotency/hook.py +0 -0
  194. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/idempotency/idempotency.py +0 -0
  195. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/idempotency/persistence/__init__.py +0 -0
  196. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/idempotency/persistence/base.py +0 -0
  197. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/idempotency/persistence/cache.py +0 -0
  198. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/idempotency/persistence/datarecord.py +0 -0
  199. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/idempotency/persistence/dynamodb.py +0 -0
  200. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/idempotency/persistence/redis.py +0 -0
  201. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/idempotency/serialization/__init__.py +0 -0
  202. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/idempotency/serialization/base.py +0 -0
  203. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/idempotency/serialization/custom_dict.py +0 -0
  204. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/idempotency/serialization/dataclass.py +0 -0
  205. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/idempotency/serialization/functions.py +0 -0
  206. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/idempotency/serialization/no_op.py +0 -0
  207. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/idempotency/serialization/pydantic.py +0 -0
  208. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/jmespath_utils/__init__.py +0 -0
  209. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/jmespath_utils/envelopes.py +0 -0
  210. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/kafka/__init__.py +0 -0
  211. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/kafka/consumer_records.py +0 -0
  212. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/kafka/deserializer/__init__.py +0 -0
  213. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/kafka/deserializer/avro.py +0 -0
  214. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/kafka/deserializer/base.py +0 -0
  215. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/kafka/deserializer/default.py +0 -0
  216. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/kafka/deserializer/deserializer.py +0 -0
  217. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/kafka/deserializer/json.py +0 -0
  218. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/kafka/deserializer/protobuf.py +0 -0
  219. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/kafka/exceptions.py +0 -0
  220. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/kafka/kafka_consumer.py +0 -0
  221. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/kafka/schema_config.py +0 -0
  222. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/kafka/serialization/__init__.py +0 -0
  223. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/kafka/serialization/base.py +0 -0
  224. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/kafka/serialization/custom_dict.py +0 -0
  225. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/kafka/serialization/dataclass.py +0 -0
  226. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/kafka/serialization/pydantic.py +0 -0
  227. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/kafka/serialization/serialization.py +0 -0
  228. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/kafka/serialization/types.py +0 -0
  229. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parameters/__init__.py +0 -0
  230. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parameters/base.py +0 -0
  231. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parameters/constants.py +0 -0
  232. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parameters/dynamodb.py +0 -0
  233. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parameters/exceptions.py +0 -0
  234. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parameters/types.py +0 -0
  235. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/__init__.py +0 -0
  236. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/envelopes/__init__.py +0 -0
  237. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/envelopes/apigw.py +0 -0
  238. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/envelopes/apigw_websocket.py +0 -0
  239. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/envelopes/apigwv2.py +0 -0
  240. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/envelopes/base.py +0 -0
  241. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/envelopes/bedrock_agent.py +0 -0
  242. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/envelopes/cloudwatch.py +0 -0
  243. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/envelopes/dynamodb.py +0 -0
  244. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/envelopes/event_bridge.py +0 -0
  245. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/envelopes/kafka.py +0 -0
  246. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/envelopes/kinesis.py +0 -0
  247. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/envelopes/kinesis_firehose.py +0 -0
  248. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/envelopes/lambda_function_url.py +0 -0
  249. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/envelopes/sns.py +0 -0
  250. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/envelopes/sqs.py +0 -0
  251. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/envelopes/vpc_lattice.py +0 -0
  252. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/envelopes/vpc_latticev2.py +0 -0
  253. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/exceptions.py +0 -0
  254. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/__init__.py +0 -0
  255. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/alb.py +0 -0
  256. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/apigw.py +0 -0
  257. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/apigw_websocket.py +0 -0
  258. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/apigwv2.py +0 -0
  259. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/appsync.py +0 -0
  260. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/appsync_events.py +0 -0
  261. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/bedrock_agent.py +0 -0
  262. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/cloudformation_custom_resource.py +0 -0
  263. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/cloudwatch.py +0 -0
  264. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/cognito.py +0 -0
  265. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/dynamodb.py +0 -0
  266. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/event_bridge.py +0 -0
  267. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/iot_registry_events.py +0 -0
  268. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/kafka.py +0 -0
  269. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/kinesis.py +0 -0
  270. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose.py +0 -0
  271. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose_sqs.py +0 -0
  272. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/lambda_function_url.py +0 -0
  273. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/s3.py +0 -0
  274. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/s3_batch_operation.py +0 -0
  275. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/s3_event_notification.py +0 -0
  276. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/s3_object_event.py +0 -0
  277. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/ses.py +0 -0
  278. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/sns.py +0 -0
  279. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/sqs.py +0 -0
  280. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/transfer_family.py +0 -0
  281. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/vpc_lattice.py +0 -0
  282. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/models/vpc_latticev2.py +0 -0
  283. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/parser/types.py +0 -0
  284. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/serialization.py +0 -0
  285. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/streaming/__init__.py +0 -0
  286. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/streaming/_s3_seekable_io.py +0 -0
  287. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/streaming/compat.py +0 -0
  288. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/streaming/constants.py +0 -0
  289. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/streaming/s3_object.py +0 -0
  290. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/streaming/transformations/__init__.py +0 -0
  291. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/streaming/transformations/base.py +0 -0
  292. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/streaming/transformations/csv.py +0 -0
  293. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/streaming/transformations/gzip.py +0 -0
  294. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/streaming/transformations/zip.py +0 -0
  295. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/streaming/types.py +0 -0
  296. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/typing/__init__.py +0 -0
  297. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/typing/lambda_client_context.py +0 -0
  298. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/typing/lambda_client_context_mobile_client.py +0 -0
  299. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/typing/lambda_cognito_identity.py +0 -0
  300. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/typing/lambda_context.py +0 -0
  301. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/validation/__init__.py +0 -0
  302. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/validation/base.py +0 -0
  303. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/validation/envelopes.py +0 -0
  304. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/validation/exceptions.py +0 -0
  305. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/utilities/validation/validator.py +0 -0
  306. {aws_lambda_powertools-3.25.0 → aws_lambda_powertools-3.26.0}/aws_lambda_powertools/warnings/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: aws_lambda_powertools
3
- Version: 3.25.0
3
+ Version: 3.26.0
4
4
  Summary: Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless best practices and increase developer velocity.
5
5
  License: MIT
6
6
  Keywords: aws_lambda_powertools,aws,tracing,logging,lambda,powertools,feature_flags,idempotency,middleware
@@ -228,20 +228,27 @@ class OpenAPIResponseValidationMiddleware(BaseMiddlewareHandler):
228
228
  return self._handle_response(route=route, response=response)
229
229
 
230
230
  def _handle_response(self, *, route: Route, response: Response):
231
- # Process the response body if it exists
232
- if response.body and response.is_json():
233
- response.body = self._serialize_response(
234
- field=route.dependant.return_param,
231
+ field = route.dependant.return_param
232
+
233
+ if field is None:
234
+ if not response.is_json():
235
+ return response
236
+ else:
237
+ # JSON serialize the body without validation
238
+ response.body = jsonable_encoder(response.body, custom_serializer=self._validation_serializer)
239
+ else:
240
+ response.body = self._serialize_response_with_validation(
241
+ field=field,
235
242
  response_content=response.body,
236
243
  has_route_custom_response_validation=route.custom_response_validation_http_code is not None,
237
244
  )
238
245
 
239
246
  return response
240
247
 
241
- def _serialize_response(
248
+ def _serialize_response_with_validation(
242
249
  self,
243
250
  *,
244
- field: ModelField | None = None,
251
+ field: ModelField,
245
252
  response_content: Any,
246
253
  include: IncEx | None = None,
247
254
  exclude: IncEx | None = None,
@@ -254,33 +261,23 @@ class OpenAPIResponseValidationMiddleware(BaseMiddlewareHandler):
254
261
  """
255
262
  Serialize the response content according to the field type.
256
263
  """
257
- if field:
258
- errors: list[dict[str, Any]] = []
259
- value = _validate_field(field=field, value=response_content, loc=("response",), existing_errors=errors)
260
- if errors:
261
- # route-level validation must take precedence over app-level
262
- if has_route_custom_response_validation:
263
- raise ResponseValidationError(
264
- errors=_normalize_errors(errors),
265
- body=response_content,
266
- source="route",
267
- )
268
- if self._has_response_validation_error:
269
- raise ResponseValidationError(errors=_normalize_errors(errors), body=response_content, source="app")
270
-
271
- raise RequestValidationError(errors=_normalize_errors(errors), body=response_content)
272
-
273
- if hasattr(field, "serialize"):
274
- return field.serialize(
275
- value,
276
- include=include,
277
- exclude=exclude,
278
- by_alias=by_alias,
279
- exclude_unset=exclude_unset,
280
- exclude_defaults=exclude_defaults,
281
- exclude_none=exclude_none,
264
+ errors: list[dict[str, Any]] = []
265
+ value = _validate_field(field=field, value=response_content, loc=("response",), existing_errors=errors)
266
+ if errors:
267
+ # route-level validation must take precedence over app-level
268
+ if has_route_custom_response_validation:
269
+ raise ResponseValidationError(
270
+ errors=_normalize_errors(errors),
271
+ body=response_content,
272
+ source="route",
282
273
  )
283
- return jsonable_encoder(
274
+ if self._has_response_validation_error:
275
+ raise ResponseValidationError(errors=_normalize_errors(errors), body=response_content, source="app")
276
+
277
+ raise RequestValidationError(errors=_normalize_errors(errors), body=response_content)
278
+
279
+ if hasattr(field, "serialize"):
280
+ return field.serialize(
284
281
  value,
285
282
  include=include,
286
283
  exclude=exclude,
@@ -288,11 +285,18 @@ class OpenAPIResponseValidationMiddleware(BaseMiddlewareHandler):
288
285
  exclude_unset=exclude_unset,
289
286
  exclude_defaults=exclude_defaults,
290
287
  exclude_none=exclude_none,
291
- custom_serializer=self._validation_serializer,
292
288
  )
293
- else:
294
- # Just serialize the response content returned from the handler.
295
- return jsonable_encoder(response_content, custom_serializer=self._validation_serializer)
289
+
290
+ return jsonable_encoder(
291
+ value,
292
+ include=include,
293
+ exclude=exclude,
294
+ by_alias=by_alias,
295
+ exclude_unset=exclude_unset,
296
+ exclude_defaults=exclude_defaults,
297
+ exclude_none=exclude_none,
298
+ custom_serializer=self._validation_serializer,
299
+ )
296
300
 
297
301
  def _prepare_response_content(
298
302
  self,
@@ -0,0 +1,72 @@
1
+ from __future__ import annotations
2
+
3
+ import logging
4
+ from typing import TYPE_CHECKING
5
+
6
+ from aws_lambda_powertools.logging.buffer.functions import _check_minimum_buffer_log_level
7
+
8
+ if TYPE_CHECKING:
9
+ from aws_lambda_powertools.logging.buffer.cache import LoggerBufferCache
10
+ from aws_lambda_powertools.logging.buffer.config import LoggerBufferConfig
11
+ from aws_lambda_powertools.logging.logger import Logger
12
+
13
+
14
+ class BufferingHandler(logging.Handler):
15
+ """
16
+ Handler that buffers logs from external libraries using the source logger's buffer.
17
+
18
+ The handler intercepts log records from external libraries and
19
+ stores them in the source logger's buffer using the same tracer_id mechanism.
20
+ Logs above the buffer verbosity threshold are emitted directly through the source logger.
21
+ Logs at or below the threshold are buffered and flushed together with application logs.
22
+ """
23
+
24
+ def __init__(
25
+ self,
26
+ buffer_cache: LoggerBufferCache,
27
+ buffer_config: LoggerBufferConfig,
28
+ source_logger: Logger,
29
+ ):
30
+ """
31
+ Initialize the BufferingHandler.
32
+
33
+ Parameters
34
+ ----------
35
+ buffer_cache : LoggerBufferCache
36
+ Shared buffer cache from the source logger
37
+ buffer_config : LoggerBufferConfig
38
+ Buffer configuration from the source logger
39
+ source_logger : Logger
40
+ The Powertools Logger instance to delegate buffering logic to
41
+ """
42
+ super().__init__()
43
+ self.buffer_cache = buffer_cache
44
+ self.buffer_config = buffer_config
45
+ self.source_logger = source_logger
46
+
47
+ def emit(self, record: logging.LogRecord) -> None:
48
+ """
49
+ Buffer or emit the log record based on the buffer verbosity threshold.
50
+
51
+ Logs above the configured buffer_at_verbosity are emitted directly
52
+ through the source logger. Logs at or below the threshold are buffered.
53
+
54
+ Parameters
55
+ ----------
56
+ record : logging.LogRecord
57
+ The log record from an external logger
58
+ """
59
+ level_name = logging.getLevelName(record.levelno)
60
+
61
+ # If log level exceeds buffer threshold, emit directly through source logger
62
+ if _check_minimum_buffer_log_level(self.buffer_config.buffer_at_verbosity, level_name):
63
+ self.source_logger._logger.handle(record)
64
+ return
65
+
66
+ self.source_logger._add_log_record_to_buffer(
67
+ level=record.levelno,
68
+ msg=record.msg,
69
+ args=record.args,
70
+ exc_info=record.exc_info,
71
+ stack_info=False,
72
+ )
@@ -3,6 +3,8 @@ from __future__ import annotations
3
3
  import logging
4
4
  from typing import TYPE_CHECKING
5
5
 
6
+ from aws_lambda_powertools.logging.buffer.handler import BufferingHandler
7
+
6
8
  if TYPE_CHECKING:
7
9
  from collections.abc import Callable
8
10
 
@@ -16,6 +18,7 @@ def copy_config_to_registered_loggers(
16
18
  source_logger: Logger,
17
19
  log_level: int | str | None = None,
18
20
  ignore_log_level=False,
21
+ include_buffering=False,
19
22
  exclude: set[str] | None = None,
20
23
  include: set[str] | None = None,
21
24
  ) -> None:
@@ -30,6 +33,8 @@ def copy_config_to_registered_loggers(
30
33
  Logging level to set to registered loggers, by default uses source_logger logging level
31
34
  ignore_log_level: bool
32
35
  Whether to not touch log levels for discovered loggers. log_level param is disregarded when this is set.
36
+ include_buffering: bool
37
+ Whether to buffer logs from external libraries and report to powertools logger
33
38
  include : set[str] | None, optional
34
39
  List of logger names to include, by default all registered loggers are included
35
40
  exclude : set[str] | None, optional
@@ -64,7 +69,13 @@ def copy_config_to_registered_loggers(
64
69
 
65
70
  registered_loggers = _find_registered_loggers(loggers=loggers, filter_func=filter_func)
66
71
  for logger in registered_loggers:
67
- _configure_logger(source_logger=source_logger, logger=logger, level=level, ignore_log_level=ignore_log_level)
72
+ _configure_logger(
73
+ source_logger=source_logger,
74
+ logger=logger,
75
+ level=level,
76
+ ignore_log_level=ignore_log_level,
77
+ include_buffering=include_buffering,
78
+ )
68
79
 
69
80
 
70
81
  def _include_registered_loggers_filter(loggers: set[str]):
@@ -92,6 +103,7 @@ def _configure_logger(
92
103
  logger: logging.Logger,
93
104
  level: int | str,
94
105
  ignore_log_level: bool = False,
106
+ include_buffering: bool = False,
95
107
  ) -> None:
96
108
  # customers may not want to copy the same log level from Logger to discovered loggers
97
109
  if not ignore_log_level:
@@ -102,6 +114,17 @@ def _configure_logger(
102
114
  logger.propagate = False # ensure we don't propagate logs to existing loggers, #1073
103
115
  source_logger.append_keys(name="%(name)s") # include logger name, see #1267
104
116
 
117
+ buffer_config = getattr(source_logger, "_buffer_config", None)
118
+ if include_buffering and buffer_config is not None:
119
+ buffer_handler = BufferingHandler(
120
+ buffer_cache=source_logger._buffer_cache,
121
+ buffer_config=buffer_config,
122
+ source_logger=source_logger,
123
+ )
124
+ logger.addHandler(buffer_handler)
125
+ LOGGER.debug(f"Logger {logger} configured with BufferingHandler")
126
+ return # exit earlier and don't add source handlers, would cause double logging
127
+
105
128
  for source_handler in source_logger.handlers:
106
129
  logger.addHandler(source_handler)
107
130
  LOGGER.debug(f"Logger {logger} reconfigured to use {source_handler}")
@@ -67,5 +67,12 @@ POWERTOOLS_DEBUG_ENV: str = "POWERTOOLS_DEBUG"
67
67
  PRETTY_INDENT: int = 4
68
68
  COMPACT_INDENT: None = None
69
69
 
70
+ # Metadata constants
71
+ LAMBDA_METADATA_API_ENV: str = "AWS_LAMBDA_METADATA_API"
72
+ LAMBDA_METADATA_TOKEN_ENV: str = "AWS_LAMBDA_METADATA_TOKEN"
73
+ METADATA_API_VERSION: str = "2026-01-15"
74
+ METADATA_PATH: str = "/metadata/execution-environment"
75
+ METADATA_DEFAULT_TIMEOUT_SECS: float = 1.0
76
+
70
77
  # Idempotency constants
71
78
  IDEMPOTENCY_DISABLED_ENV: str = "POWERTOOLS_IDEMPOTENCY_DISABLED"
@@ -1,3 +1,3 @@
1
1
  """Exposes version constant to avoid circular dependencies."""
2
2
 
3
- VERSION = "3.25.0"
3
+ VERSION = "3.26.0"
@@ -25,6 +25,9 @@ from aws_lambda_powertools.utilities.batch.types import BatchTypeModels
25
25
  from aws_lambda_powertools.utilities.data_classes.dynamo_db_stream_event import (
26
26
  DynamoDBRecord,
27
27
  )
28
+ from aws_lambda_powertools.utilities.data_classes.kafka_event import (
29
+ KafkaEventRecord,
30
+ )
28
31
  from aws_lambda_powertools.utilities.data_classes.kinesis_stream_event import (
29
32
  KinesisStreamRecord,
30
33
  )
@@ -46,12 +49,13 @@ class EventType(Enum):
46
49
  SQS = "SQS"
47
50
  KinesisDataStreams = "KinesisDataStreams"
48
51
  DynamoDBStreams = "DynamoDBStreams"
52
+ Kafka = "Kafka"
49
53
 
50
54
 
51
55
  # When using processor with default arguments, records will carry EventSourceDataClassTypes
52
56
  # and depending on what EventType it's passed it'll correctly map to the right record
53
- # When using Pydantic Models, it'll accept any subclass from SQS, DynamoDB and Kinesis
54
- EventSourceDataClassTypes = Union[SQSRecord, KinesisStreamRecord, DynamoDBRecord]
57
+ # When using Pydantic Models, it'll accept any subclass from SQS, DynamoDB, Kinesis and Kafka
58
+ EventSourceDataClassTypes = Union[SQSRecord, KinesisStreamRecord, DynamoDBRecord, KafkaEventRecord]
55
59
  BatchEventTypes = Union[EventSourceDataClassTypes, BatchTypeModels]
56
60
  SuccessResponse = Tuple[str, Any, BatchEventTypes]
57
61
  FailureResponse = Tuple[str, str, BatchEventTypes]
@@ -272,11 +276,13 @@ class BasePartialBatchProcessor(BasePartialProcessor): # noqa
272
276
  EventType.SQS: self._collect_sqs_failures,
273
277
  EventType.KinesisDataStreams: self._collect_kinesis_failures,
274
278
  EventType.DynamoDBStreams: self._collect_dynamodb_failures,
279
+ EventType.Kafka: self._collect_kafka_failures,
275
280
  }
276
281
  self._DATA_CLASS_MAPPING = {
277
282
  EventType.SQS: SQSRecord,
278
283
  EventType.KinesisDataStreams: KinesisStreamRecord,
279
284
  EventType.DynamoDBStreams: DynamoDBRecord,
285
+ EventType.Kafka: KafkaEventRecord,
280
286
  }
281
287
 
282
288
  super().__init__()
@@ -365,6 +371,21 @@ class BasePartialBatchProcessor(BasePartialProcessor): # noqa
365
371
  failures.append({"itemIdentifier": msg_id})
366
372
  return failures
367
373
 
374
+ def _collect_kafka_failures(self):
375
+ failures = []
376
+ for msg in self.fail_messages:
377
+ # Kafka uses a composite identifier with partition and offset
378
+ # Both data class and Pydantic model use the same field names
379
+ failures.append(
380
+ {
381
+ "itemIdentifier": {
382
+ "partition": f"{msg.topic}-{msg.partition}",
383
+ "offset": msg.offset,
384
+ },
385
+ },
386
+ )
387
+ return failures
388
+
368
389
  @overload
369
390
  def _to_batch_type(
370
391
  self,
@@ -22,6 +22,47 @@ if TYPE_CHECKING:
22
22
  from aws_lambda_powertools.utilities.typing import LambdaContext
23
23
 
24
24
 
25
+ def _get_records_from_event(
26
+ event: dict[str, Any],
27
+ processor: BasePartialBatchProcessor,
28
+ ) -> list[dict]:
29
+ """
30
+ Extract records from the event based on the processor's event type.
31
+
32
+ For SQS, Kinesis, and DynamoDB: Records are in event["Records"] as a list
33
+ For Kafka: Records are in event["records"] as a dict with topic-partition keys
34
+
35
+ Parameters
36
+ ----------
37
+ event: dict
38
+ Lambda's original event
39
+ processor: BasePartialBatchProcessor
40
+ Batch Processor to determine event type
41
+
42
+ Returns
43
+ -------
44
+ records: list[dict]
45
+ Flattened list of records to process
46
+ """
47
+ # Kafka events use lowercase "records" and have a nested dict structure
48
+ if processor.event_type == EventType.Kafka:
49
+ kafka_records = event.get("records", {})
50
+ if not kafka_records or not isinstance(kafka_records, dict):
51
+ raise UnexpectedBatchTypeError(
52
+ "Invalid Kafka event structure. Expected 'records' to be a non-empty dict with topic-partition keys.",
53
+ )
54
+ # Flatten the nested dict: {"topic-0": [r1, r2], "topic-1": [r3]} -> [r1, r2, r3]
55
+ return [record for topic_records in kafka_records.values() for record in topic_records]
56
+
57
+ # SQS, Kinesis, DynamoDB use uppercase "Records" as a list
58
+ records = event.get("Records", [])
59
+ if not records or not isinstance(records, list):
60
+ raise UnexpectedBatchTypeError(
61
+ "Unexpected batch event type. Possible values are: SQS, KinesisDataStreams, DynamoDBStreams, Kafka",
62
+ )
63
+ return records
64
+
65
+
25
66
  @lambda_handler_decorator
26
67
  @deprecated(
27
68
  "`async_batch_processor` decorator is deprecated; use `async_process_partial_response` function instead.",
@@ -206,12 +247,7 @@ def process_partial_response(
206
247
  * Async batch processors. Use `async_process_partial_response` instead.
207
248
  """
208
249
  try:
209
- records: list[dict] = event.get("Records", [])
210
- if not records or not isinstance(records, list):
211
- raise UnexpectedBatchTypeError(
212
- "Unexpected batch event type. Possible values are: SQS, KinesisDataStreams, DynamoDBStreams",
213
- )
214
-
250
+ records = _get_records_from_event(event, processor)
215
251
  except AttributeError:
216
252
  event_types = ", ".join(list(EventType.__members__))
217
253
  docs = "https://docs.powertools.aws.dev/lambda/python/latest/utilities/batch/#processing-messages-from-sqs" # noqa: E501 # long-line
@@ -275,12 +311,7 @@ def async_process_partial_response(
275
311
  * Sync batch processors. Use `process_partial_response` instead.
276
312
  """
277
313
  try:
278
- records: list[dict] = event.get("Records", [])
279
- if not records or not isinstance(records, list):
280
- raise UnexpectedBatchTypeError(
281
- "Unexpected batch event type. Possible values are: SQS, KinesisDataStreams, DynamoDBStreams",
282
- )
283
-
314
+ records = _get_records_from_event(event, processor)
284
315
  except AttributeError:
285
316
  event_types = ", ".join(list(EventType.__members__))
286
317
  docs = "https://docs.powertools.aws.dev/lambda/python/latest/utilities/batch/#processing-messages-from-sqs" # noqa: E501 # long-line
@@ -12,9 +12,15 @@ if has_pydantic: # pragma: no cover
12
12
  from aws_lambda_powertools.utilities.parser.models import (
13
13
  KinesisDataStreamRecord as KinesisDataStreamRecordModel,
14
14
  )
15
+ from aws_lambda_powertools.utilities.parser.models.kafka import KafkaRecordModel
15
16
 
16
17
  BatchTypeModels = Optional[
17
- Union[Type[SqsRecordModel], Type[DynamoDBStreamRecordModel], Type[KinesisDataStreamRecordModel]]
18
+ Union[
19
+ Type[SqsRecordModel],
20
+ Type[DynamoDBStreamRecordModel],
21
+ Type[KinesisDataStreamRecordModel],
22
+ Type[KafkaRecordModel],
23
+ ]
18
24
  ]
19
25
  BatchSqsTypeModel = Optional[Type[SqsRecordModel]]
20
26
  else: # pragma: no cover
@@ -22,8 +28,22 @@ else: # pragma: no cover
22
28
  BatchSqsTypeModel = "BatchSqsTypeModel" # type: ignore
23
29
 
24
30
 
31
+ class KafkaItemIdentifier(TypedDict):
32
+ """Kafka uses a composite identifier with partition and offset."""
33
+
34
+ partition: str
35
+ offset: int
36
+
37
+
25
38
  class PartialItemFailures(TypedDict):
26
- itemIdentifier: str
39
+ """
40
+ Represents a partial item failure response.
41
+
42
+ For SQS, Kinesis, and DynamoDB: itemIdentifier is a string (message_id or sequence_number)
43
+ For Kafka: itemIdentifier is a KafkaItemIdentifier dict with partition and offset
44
+ """
45
+
46
+ itemIdentifier: str | KafkaItemIdentifier
27
47
 
28
48
 
29
49
  class PartialItemFailureResponse(TypedDict):
@@ -14,7 +14,7 @@ from aws_lambda_powertools.utilities.data_classes.common import (
14
14
  DictWrapper,
15
15
  )
16
16
  from aws_lambda_powertools.utilities.data_classes.shared_functions import (
17
- get_header_value,
17
+ get_header_value, # ty: ignore[deprecated]
18
18
  )
19
19
  from aws_lambda_powertools.warnings import PowertoolsDeprecationWarning
20
20
 
@@ -232,7 +232,7 @@ class APIGatewayAuthorizerRequestEvent(DictWrapper):
232
232
  category=PowertoolsDeprecationWarning,
233
233
  stacklevel=2,
234
234
  )
235
- return get_header_value(self.headers, name, default_value, case_sensitive)
235
+ return get_header_value(self.headers, name, default_value, case_sensitive) # ty: ignore[deprecated]
236
236
 
237
237
 
238
238
  class APIGatewayAuthorizerEventV2(DictWrapper):
@@ -358,7 +358,7 @@ class APIGatewayAuthorizerEventV2(DictWrapper):
358
358
  category=PowertoolsDeprecationWarning,
359
359
  stacklevel=2,
360
360
  )
361
- return get_header_value(self.headers, name, default_value, case_sensitive)
361
+ return get_header_value(self.headers, name, default_value, case_sensitive) # ty: ignore[deprecated]
362
362
 
363
363
 
364
364
  class APIGatewayAuthorizerResponseV2:
@@ -691,12 +691,12 @@ class APIGatewayAuthorizerResponseWebSocket(APIGatewayAuthorizerResponse):
691
691
  self._deny_routes.append(route)
692
692
 
693
693
  @override
694
- def allow_all_routes(self):
694
+ def allow_all_routes(self, http_method: str = HttpVerb.ALL.value): # type: ignore[override] # noqa: ARG002
695
695
  """Adds a '*' allow to the policy to authorize access to all methods of an API"""
696
696
  self._add_route(effect="Allow", resource="*")
697
697
 
698
698
  @override
699
- def deny_all_routes(self):
699
+ def deny_all_routes(self, http_method: str = HttpVerb.ALL.value): # type: ignore[override] # noqa: ARG002
700
700
  """Adds a '*' allow to the policy to deny access to all methods of an API"""
701
701
 
702
702
  self._add_route(effect="Deny", resource="*")
@@ -55,7 +55,7 @@ def aws_date(timezone_offset: int = 0) -> str:
55
55
  str
56
56
  Returns current time as AWSDate scalar string with optional timezone offset
57
57
  """
58
- return _formatted_time(datetime.datetime.utcnow(), "%Y-%m-%d", timezone_offset)
58
+ return _formatted_time(datetime.datetime.now(datetime.timezone.utc), "%Y-%m-%d", timezone_offset)
59
59
 
60
60
 
61
61
  def aws_time(timezone_offset: int = 0) -> str:
@@ -71,7 +71,7 @@ def aws_time(timezone_offset: int = 0) -> str:
71
71
  str
72
72
  Returns current time as AWSTime scalar string with optional timezone offset
73
73
  """
74
- return _formatted_time(datetime.datetime.utcnow(), "%H:%M:%S.%f", timezone_offset)
74
+ return _formatted_time(datetime.datetime.now(datetime.timezone.utc), "%H:%M:%S.%f", timezone_offset)
75
75
 
76
76
 
77
77
  def aws_datetime(timezone_offset: int = 0) -> str:
@@ -87,7 +87,7 @@ def aws_datetime(timezone_offset: int = 0) -> str:
87
87
  str
88
88
  Returns current time as AWSDateTime scalar string with optional timezone offset
89
89
  """
90
- return _formatted_time(datetime.datetime.utcnow(), "%Y-%m-%dT%H:%M:%S.%f", timezone_offset)
90
+ return _formatted_time(datetime.datetime.now(datetime.timezone.utc), "%Y-%m-%dT%H:%M:%S.%f", timezone_offset)
91
91
 
92
92
 
93
93
  def aws_timestamp() -> int:
@@ -7,7 +7,7 @@ from typing_extensions import deprecated
7
7
 
8
8
  from aws_lambda_powertools.utilities.data_classes.common import CaseInsensitiveDict, DictWrapper
9
9
  from aws_lambda_powertools.utilities.data_classes.shared_functions import (
10
- get_header_value,
10
+ get_header_value, # ty: ignore[deprecated]
11
11
  )
12
12
  from aws_lambda_powertools.warnings import PowertoolsDeprecationWarning
13
13
 
@@ -275,4 +275,4 @@ class AppSyncResolverEvent(AppSyncEventBase):
275
275
  category=PowertoolsDeprecationWarning,
276
276
  stacklevel=2,
277
277
  )
278
- return get_header_value(self.request_headers, name, default_value, case_sensitive)
278
+ return get_header_value(self.request_headers, name, default_value, case_sensitive) # ty: ignore[deprecated]
@@ -23,7 +23,7 @@ if TYPE_CHECKING:
23
23
  from aws_lambda_powertools.shared.headers_serializer import BaseHeadersSerializer
24
24
 
25
25
  from aws_lambda_powertools.utilities.data_classes.shared_functions import (
26
- get_header_value,
26
+ get_header_value, # ty: ignore[deprecated]
27
27
  get_multi_value_query_string_values,
28
28
  get_query_string_value,
29
29
  )
@@ -39,8 +39,8 @@ class CaseInsensitiveDict(dict):
39
39
  def get(self, k, default=None):
40
40
  return super().get(k.lower(), default)
41
41
 
42
- def pop(self, k):
43
- return super().pop(k.lower())
42
+ def pop(self, k, *args):
43
+ return super().pop(k.lower(), *args)
44
44
 
45
45
  def setdefault(self, k, default=None):
46
46
  return super().setdefault(k.lower(), default)
@@ -125,7 +125,7 @@ class DictWrapper(Mapping):
125
125
  properties = self._properties()
126
126
  sensitive_properties = ["raw_event"]
127
127
  if hasattr(self, "_sensitive_properties"):
128
- sensitive_properties.extend(self._sensitive_properties) # pyright: ignore
128
+ sensitive_properties.extend(self._sensitive_properties) # pyright: ignore # type: ignore[arg-type]
129
129
 
130
130
  result: dict[str, Any] = {}
131
131
  for property_key in properties:
@@ -142,7 +142,7 @@ class DictWrapper(Mapping):
142
142
  # Checks if the key is a list and if it is a subclass of the parent class
143
143
  elif isinstance(property_value, list):
144
144
  for seq, item in enumerate(property_value):
145
- if issubclass(item.__class__, DictWrapper):
145
+ if issubclass(item.__class__, DictWrapper) and isinstance(item, DictWrapper):
146
146
  result[property_key][seq] = item._str_helper()
147
147
  except Exception:
148
148
  result[property_key] = "[Cannot be deserialized]"
@@ -331,7 +331,7 @@ class BaseProxyEvent(DictWrapper):
331
331
  category=PowertoolsDeprecationWarning,
332
332
  stacklevel=2,
333
333
  )
334
- return get_header_value(
334
+ return get_header_value( # ty: ignore[deprecated]
335
335
  headers=self.headers,
336
336
  name=name,
337
337
  default_value=default_value,
@@ -0,0 +1,17 @@
1
+ """
2
+ Utility to fetch data from the AWS Lambda Metadata Endpoint
3
+ """
4
+
5
+ from aws_lambda_powertools.utilities.metadata.exceptions import LambdaMetadataError
6
+ from aws_lambda_powertools.utilities.metadata.lambda_metadata import (
7
+ LambdaMetadata,
8
+ clear_metadata_cache,
9
+ get_lambda_metadata,
10
+ )
11
+
12
+ __all__ = [
13
+ "LambdaMetadata",
14
+ "LambdaMetadataError",
15
+ "get_lambda_metadata",
16
+ "clear_metadata_cache",
17
+ ]
@@ -0,0 +1,11 @@
1
+ """
2
+ Lambda Metadata Service exceptions
3
+ """
4
+
5
+
6
+ class LambdaMetadataError(Exception):
7
+ """Raised when the Lambda Metadata Endpoint is unavailable or returns an error."""
8
+
9
+ def __init__(self, message: str, status_code: int = -1):
10
+ self.status_code = status_code
11
+ super().__init__(message)