aws-lambda-powertools 3.15.1a0__tar.gz → 3.15.2a0__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 (298) hide show
  1. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/PKG-INFO +1 -1
  2. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/shared/version.py +1 -1
  3. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/consumer_records.py +21 -6
  4. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/deserializer/avro.py +14 -1
  5. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/deserializer/default.py +4 -0
  6. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/deserializer/deserializer.py +15 -9
  7. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/deserializer/json.py +19 -1
  8. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/deserializer/protobuf.py +49 -45
  9. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/exceptions.py +6 -0
  10. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/serialization/custom_dict.py +4 -0
  11. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/serialization/dataclass.py +5 -0
  12. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/serialization/pydantic.py +4 -0
  13. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/pyproject.toml +1 -1
  14. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/setup.py +1 -1
  15. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/LICENSE +0 -0
  16. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/README.md +0 -0
  17. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/THIRD-PARTY-LICENSES +0 -0
  18. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/__init__.py +0 -0
  19. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/__init__.py +0 -0
  20. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/api_gateway.py +0 -0
  21. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/appsync.py +0 -0
  22. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/bedrock_agent.py +0 -0
  23. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/bedrock_agent_function.py +0 -0
  24. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/content_types.py +0 -0
  25. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/events_appsync/__init__.py +0 -0
  26. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/events_appsync/_registry.py +0 -0
  27. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/events_appsync/appsync_events.py +0 -0
  28. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/events_appsync/base.py +0 -0
  29. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/events_appsync/exceptions.py +0 -0
  30. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/events_appsync/functions.py +0 -0
  31. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/events_appsync/router.py +0 -0
  32. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/events_appsync/types.py +0 -0
  33. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/exception_handling.py +0 -0
  34. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/exceptions.py +0 -0
  35. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/graphql_appsync/__init__.py +0 -0
  36. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/graphql_appsync/_registry.py +0 -0
  37. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/graphql_appsync/base.py +0 -0
  38. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/graphql_appsync/exceptions.py +0 -0
  39. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/graphql_appsync/router.py +0 -0
  40. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/lambda_function_url.py +0 -0
  41. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/middlewares/__init__.py +0 -0
  42. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/middlewares/base.py +0 -0
  43. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/middlewares/openapi_validation.py +0 -0
  44. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/middlewares/schema_validation.py +0 -0
  45. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/__init__.py +0 -0
  46. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/compat.py +0 -0
  47. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/config.py +0 -0
  48. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/constants.py +0 -0
  49. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/dependant.py +0 -0
  50. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/encoders.py +0 -0
  51. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/exceptions.py +0 -0
  52. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/models.py +0 -0
  53. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/params.py +0 -0
  54. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/pydantic_loader.py +0 -0
  55. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/__init__.py +0 -0
  56. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/html.py +0 -0
  57. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/oauth2.py +0 -0
  58. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/swagger-ui-bundle.min.js +0 -0
  59. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/swagger-ui.min.css +0 -0
  60. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/types.py +0 -0
  61. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/router.py +0 -0
  62. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/types.py +0 -0
  63. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/util.py +0 -0
  64. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/vpc_lattice.py +0 -0
  65. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/exceptions/__init__.py +0 -0
  66. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/__init__.py +0 -0
  67. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/buffer/__init__.py +0 -0
  68. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/buffer/cache.py +0 -0
  69. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/buffer/config.py +0 -0
  70. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/buffer/functions.py +0 -0
  71. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/constants.py +0 -0
  72. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/correlation_paths.py +0 -0
  73. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/exceptions.py +0 -0
  74. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/filters.py +0 -0
  75. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/formatter.py +0 -0
  76. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/formatters/__init__.py +0 -0
  77. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/formatters/datadog.py +0 -0
  78. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/lambda_context.py +0 -0
  79. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/logger.py +0 -0
  80. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/types.py +0 -0
  81. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/utils.py +0 -0
  82. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/__init__.py +0 -0
  83. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/base.py +0 -0
  84. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/exceptions.py +0 -0
  85. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/functions.py +0 -0
  86. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/metric.py +0 -0
  87. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/metrics.py +0 -0
  88. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/__init__.py +0 -0
  89. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/base.py +0 -0
  90. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/__init__.py +0 -0
  91. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/cloudwatch.py +0 -0
  92. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/constants.py +0 -0
  93. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/exceptions.py +0 -0
  94. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/metric_properties.py +0 -0
  95. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/types.py +0 -0
  96. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/cold_start.py +0 -0
  97. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/datadog/__init__.py +0 -0
  98. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/datadog/datadog.py +0 -0
  99. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/datadog/metrics.py +0 -0
  100. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/datadog/warnings.py +0 -0
  101. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/types.py +0 -0
  102. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/middleware_factory/__init__.py +0 -0
  103. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/middleware_factory/exceptions.py +0 -0
  104. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/middleware_factory/factory.py +0 -0
  105. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/package_logger.py +0 -0
  106. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/py.typed +0 -0
  107. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/shared/__init__.py +0 -0
  108. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/shared/cache_dict.py +0 -0
  109. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/shared/constants.py +0 -0
  110. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/shared/cookies.py +0 -0
  111. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/shared/dynamodb_deserializer.py +0 -0
  112. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/shared/functions.py +0 -0
  113. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/shared/headers_serializer.py +0 -0
  114. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/shared/json_encoder.py +0 -0
  115. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/shared/lazy_import.py +0 -0
  116. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/shared/types.py +0 -0
  117. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/shared/user_agent.py +0 -0
  118. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/tracing/__init__.py +0 -0
  119. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/tracing/base.py +0 -0
  120. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/tracing/extensions.py +0 -0
  121. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/tracing/tracer.py +0 -0
  122. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/__init__.py +0 -0
  123. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/batch/__init__.py +0 -0
  124. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/batch/base.py +0 -0
  125. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/batch/decorators.py +0 -0
  126. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/batch/exceptions.py +0 -0
  127. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/batch/sqs_fifo_partial_processor.py +0 -0
  128. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/batch/types.py +0 -0
  129. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/__init__.py +0 -0
  130. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/active_mq_event.py +0 -0
  131. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/alb_event.py +0 -0
  132. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/api_gateway_authorizer_event.py +0 -0
  133. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/api_gateway_proxy_event.py +0 -0
  134. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/api_gateway_websocket_event.py +0 -0
  135. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/appsync/__init__.py +0 -0
  136. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/appsync/scalar_types_utils.py +0 -0
  137. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/appsync_authorizer_event.py +0 -0
  138. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/appsync_resolver_event.py +0 -0
  139. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/appsync_resolver_events_event.py +0 -0
  140. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/aws_config_rule_event.py +0 -0
  141. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/bedrock_agent_event.py +0 -0
  142. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/bedrock_agent_function_event.py +0 -0
  143. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_alarm_event.py +0 -0
  144. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_custom_widget_event.py +0 -0
  145. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_logs_event.py +0 -0
  146. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/cloudformation_custom_resource_event.py +0 -0
  147. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/code_deploy_lifecycle_hook_event.py +0 -0
  148. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/code_pipeline_job_event.py +0 -0
  149. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/cognito_user_pool_event.py +0 -0
  150. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/common.py +0 -0
  151. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/connect_contact_flow_event.py +0 -0
  152. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/dynamo_db_stream_event.py +0 -0
  153. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/event_bridge_event.py +0 -0
  154. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/event_source.py +0 -0
  155. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/iot_registry_event.py +0 -0
  156. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/kafka_event.py +0 -0
  157. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/kinesis_firehose_event.py +0 -0
  158. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/kinesis_stream_event.py +0 -0
  159. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/lambda_function_url_event.py +0 -0
  160. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/rabbit_mq_event.py +0 -0
  161. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/s3_batch_operation_event.py +0 -0
  162. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/s3_event.py +0 -0
  163. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/s3_object_event.py +0 -0
  164. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/secrets_manager_event.py +0 -0
  165. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/ses_event.py +0 -0
  166. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/shared_functions.py +0 -0
  167. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/sns_event.py +0 -0
  168. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/sqs_event.py +0 -0
  169. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/transfer_family_event.py +0 -0
  170. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/vpc_lattice.py +0 -0
  171. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_masking/__init__.py +0 -0
  172. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_masking/base.py +0 -0
  173. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_masking/constants.py +0 -0
  174. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_masking/exceptions.py +0 -0
  175. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_masking/provider/__init__.py +0 -0
  176. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_masking/provider/base.py +0 -0
  177. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_masking/provider/kms/__init__.py +0 -0
  178. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_masking/provider/kms/aws_encryption_sdk.py +0 -0
  179. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/feature_flags/__init__.py +0 -0
  180. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/feature_flags/appconfig.py +0 -0
  181. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/feature_flags/base.py +0 -0
  182. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/feature_flags/comparators.py +0 -0
  183. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/feature_flags/constants.py +0 -0
  184. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/feature_flags/exceptions.py +0 -0
  185. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/feature_flags/feature_flags.py +0 -0
  186. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/feature_flags/schema.py +0 -0
  187. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/feature_flags/types.py +0 -0
  188. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/__init__.py +0 -0
  189. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/base.py +0 -0
  190. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/config.py +0 -0
  191. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/exceptions.py +0 -0
  192. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/hook.py +0 -0
  193. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/idempotency.py +0 -0
  194. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/persistence/__init__.py +0 -0
  195. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/persistence/base.py +0 -0
  196. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/persistence/cache.py +0 -0
  197. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/persistence/datarecord.py +0 -0
  198. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/persistence/dynamodb.py +0 -0
  199. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/persistence/redis.py +0 -0
  200. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/serialization/__init__.py +0 -0
  201. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/serialization/base.py +0 -0
  202. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/serialization/custom_dict.py +0 -0
  203. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/serialization/dataclass.py +0 -0
  204. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/serialization/functions.py +0 -0
  205. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/serialization/no_op.py +0 -0
  206. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/serialization/pydantic.py +0 -0
  207. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/jmespath_utils/__init__.py +0 -0
  208. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/jmespath_utils/envelopes.py +0 -0
  209. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/__init__.py +0 -0
  210. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/deserializer/__init__.py +0 -0
  211. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/deserializer/base.py +0 -0
  212. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/kafka_consumer.py +0 -0
  213. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/schema_config.py +0 -0
  214. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/serialization/__init__.py +0 -0
  215. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/serialization/base.py +0 -0
  216. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/serialization/serialization.py +0 -0
  217. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/serialization/types.py +0 -0
  218. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parameters/__init__.py +0 -0
  219. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parameters/appconfig.py +0 -0
  220. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parameters/base.py +0 -0
  221. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parameters/constants.py +0 -0
  222. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parameters/dynamodb.py +0 -0
  223. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parameters/exceptions.py +0 -0
  224. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parameters/secrets.py +0 -0
  225. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parameters/ssm.py +0 -0
  226. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parameters/types.py +0 -0
  227. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/__init__.py +0 -0
  228. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/__init__.py +0 -0
  229. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/apigw.py +0 -0
  230. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/apigw_websocket.py +0 -0
  231. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/apigwv2.py +0 -0
  232. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/base.py +0 -0
  233. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/bedrock_agent.py +0 -0
  234. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/cloudwatch.py +0 -0
  235. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/dynamodb.py +0 -0
  236. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/event_bridge.py +0 -0
  237. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/kafka.py +0 -0
  238. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/kinesis.py +0 -0
  239. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/kinesis_firehose.py +0 -0
  240. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/lambda_function_url.py +0 -0
  241. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/sns.py +0 -0
  242. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/sqs.py +0 -0
  243. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/vpc_lattice.py +0 -0
  244. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/vpc_latticev2.py +0 -0
  245. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/exceptions.py +0 -0
  246. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/functions.py +0 -0
  247. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/__init__.py +0 -0
  248. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/alb.py +0 -0
  249. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/apigw.py +0 -0
  250. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/apigw_websocket.py +0 -0
  251. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/apigwv2.py +0 -0
  252. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/appsync.py +0 -0
  253. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/bedrock_agent.py +0 -0
  254. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/cloudformation_custom_resource.py +0 -0
  255. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/cloudwatch.py +0 -0
  256. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/dynamodb.py +0 -0
  257. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/event_bridge.py +0 -0
  258. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/iot_registry_events.py +0 -0
  259. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/kafka.py +0 -0
  260. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/kinesis.py +0 -0
  261. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose.py +0 -0
  262. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose_sqs.py +0 -0
  263. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/lambda_function_url.py +0 -0
  264. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/s3.py +0 -0
  265. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/s3_batch_operation.py +0 -0
  266. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/s3_event_notification.py +0 -0
  267. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/s3_object_event.py +0 -0
  268. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/ses.py +0 -0
  269. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/sns.py +0 -0
  270. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/sqs.py +0 -0
  271. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/transfer_family.py +0 -0
  272. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/vpc_lattice.py +0 -0
  273. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/vpc_latticev2.py +0 -0
  274. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/parser.py +0 -0
  275. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/types.py +0 -0
  276. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/serialization.py +0 -0
  277. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/streaming/__init__.py +0 -0
  278. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/streaming/_s3_seekable_io.py +0 -0
  279. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/streaming/compat.py +0 -0
  280. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/streaming/constants.py +0 -0
  281. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/streaming/s3_object.py +0 -0
  282. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/streaming/transformations/__init__.py +0 -0
  283. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/streaming/transformations/base.py +0 -0
  284. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/streaming/transformations/csv.py +0 -0
  285. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/streaming/transformations/gzip.py +0 -0
  286. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/streaming/transformations/zip.py +0 -0
  287. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/streaming/types.py +0 -0
  288. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/typing/__init__.py +0 -0
  289. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/typing/lambda_client_context.py +0 -0
  290. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/typing/lambda_client_context_mobile_client.py +0 -0
  291. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/typing/lambda_cognito_identity.py +0 -0
  292. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/typing/lambda_context.py +0 -0
  293. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/validation/__init__.py +0 -0
  294. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/validation/base.py +0 -0
  295. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/validation/envelopes.py +0 -0
  296. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/validation/exceptions.py +0 -0
  297. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/validation/validator.py +0 -0
  298. {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/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.15.1a0
3
+ Version: 3.15.2a0
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
@@ -1,3 +1,3 @@
1
1
  """Exposes version constant to avoid circular dependencies."""
2
2
 
3
- VERSION = "3.15.1a0"
3
+ VERSION = "3.15.2a0"
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import logging
3
4
  from functools import cached_property
4
5
  from typing import TYPE_CHECKING, Any
5
6
 
@@ -13,6 +14,8 @@ if TYPE_CHECKING:
13
14
 
14
15
  from aws_lambda_powertools.utilities.kafka.schema_config import SchemaConfig
15
16
 
17
+ logger = logging.getLogger(__name__)
18
+
16
19
 
17
20
  class ConsumerRecordRecords(KafkaEventRecordBase):
18
21
  """
@@ -31,18 +34,24 @@ class ConsumerRecordRecords(KafkaEventRecordBase):
31
34
  if not key:
32
35
  return None
33
36
 
37
+ logger.debug("Deserializing key field")
38
+
34
39
  # Determine schema type and schema string
35
40
  schema_type = None
36
- schema_str = None
41
+ schema_value = None
37
42
  output_serializer = None
38
43
 
39
44
  if self.schema_config and self.schema_config.key_schema_type:
40
45
  schema_type = self.schema_config.key_schema_type
41
- schema_str = self.schema_config.key_schema
46
+ schema_value = self.schema_config.key_schema
42
47
  output_serializer = self.schema_config.key_output_serializer
43
48
 
44
49
  # Always use get_deserializer if None it will default to DEFAULT
45
- deserializer = get_deserializer(schema_type, schema_str)
50
+ deserializer = get_deserializer(
51
+ schema_type=schema_type,
52
+ schema_value=schema_value,
53
+ field_metadata=self.key_schema_metadata,
54
+ )
46
55
  deserialized_value = deserializer.deserialize(key)
47
56
 
48
57
  # Apply output serializer if specified
@@ -57,16 +66,22 @@ class ConsumerRecordRecords(KafkaEventRecordBase):
57
66
 
58
67
  # Determine schema type and schema string
59
68
  schema_type = None
60
- schema_str = None
69
+ schema_value = None
61
70
  output_serializer = None
62
71
 
72
+ logger.debug("Deserializing value field")
73
+
63
74
  if self.schema_config and self.schema_config.value_schema_type:
64
75
  schema_type = self.schema_config.value_schema_type
65
- schema_str = self.schema_config.value_schema
76
+ schema_value = self.schema_config.value_schema
66
77
  output_serializer = self.schema_config.value_output_serializer
67
78
 
68
79
  # Always use get_deserializer if None it will default to DEFAULT
69
- deserializer = get_deserializer(schema_type, schema_str)
80
+ deserializer = get_deserializer(
81
+ schema_type=schema_type,
82
+ schema_value=schema_value,
83
+ field_metadata=self.value_schema_metadata,
84
+ )
70
85
  deserialized_value = deserializer.deserialize(value)
71
86
 
72
87
  # Apply output serializer if specified
@@ -1,6 +1,8 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import io
4
+ import logging
5
+ from typing import Any
4
6
 
5
7
  from avro.io import BinaryDecoder, DatumReader
6
8
  from avro.schema import parse as parse_schema
@@ -9,8 +11,11 @@ from aws_lambda_powertools.utilities.kafka.deserializer.base import Deserializer
9
11
  from aws_lambda_powertools.utilities.kafka.exceptions import (
10
12
  KafkaConsumerAvroSchemaParserError,
11
13
  KafkaConsumerDeserializationError,
14
+ KafkaConsumerDeserializationFormatMismatch,
12
15
  )
13
16
 
17
+ logger = logging.getLogger(__name__)
18
+
14
19
 
15
20
  class AvroDeserializer(DeserializerBase):
16
21
  """
@@ -20,10 +25,11 @@ class AvroDeserializer(DeserializerBase):
20
25
  a provided Avro schema definition.
21
26
  """
22
27
 
23
- def __init__(self, schema_str: str):
28
+ def __init__(self, schema_str: str, field_metadata: dict[str, Any] | None = None):
24
29
  try:
25
30
  self.parsed_schema = parse_schema(schema_str)
26
31
  self.reader = DatumReader(self.parsed_schema)
32
+ self.field_metatada = field_metadata
27
33
  except Exception as e:
28
34
  raise KafkaConsumerAvroSchemaParserError(
29
35
  f"Invalid Avro schema. Please ensure the provided avro schema is valid: {type(e).__name__}: {str(e)}",
@@ -60,6 +66,13 @@ class AvroDeserializer(DeserializerBase):
60
66
  ... except KafkaConsumerDeserializationError as e:
61
67
  ... print(f"Failed to deserialize: {e}")
62
68
  """
69
+ data_format = self.field_metatada.get("dataFormat") if self.field_metatada else None
70
+
71
+ if data_format and data_format != "AVRO":
72
+ raise KafkaConsumerDeserializationFormatMismatch(f"Expected data is AVRO but you sent {data_format}")
73
+
74
+ logger.debug("Deserializing data with AVRO format")
75
+
63
76
  try:
64
77
  value = self._decode_input(data)
65
78
  bytes_reader = io.BytesIO(value)
@@ -1,9 +1,12 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import base64
4
+ import logging
4
5
 
5
6
  from aws_lambda_powertools.utilities.kafka.deserializer.base import DeserializerBase
6
7
 
8
+ logger = logging.getLogger(__name__)
9
+
7
10
 
8
11
  class DefaultDeserializer(DeserializerBase):
9
12
  """
@@ -43,4 +46,5 @@ class DefaultDeserializer(DeserializerBase):
43
46
  >>> result = deserializer.deserialize(bytes_data)
44
47
  >>> print(result == bytes_data) # Output: True
45
48
  """
49
+ logger.debug("Deserializing data with primitives types")
46
50
  return base64.b64decode(data).decode("utf-8")
@@ -13,21 +13,27 @@ if TYPE_CHECKING:
13
13
  _deserializer_cache: dict[str, DeserializerBase] = {}
14
14
 
15
15
 
16
- def _get_cache_key(schema_type: str | object, schema_value: Any) -> str:
16
+ def _get_cache_key(schema_type: str | object, schema_value: Any, field_metadata: dict[str, Any]) -> str:
17
+ schema_metadata = None
18
+
19
+ if field_metadata:
20
+ schema_metadata = field_metadata.get("schemaId")
21
+
17
22
  if schema_value is None:
18
- return str(schema_type)
23
+ schema_hash = f"{str(schema_type)}_{schema_metadata}"
19
24
 
20
25
  if isinstance(schema_value, str):
26
+ hashable_value = f"{schema_value}_{schema_metadata}"
21
27
  # For string schemas like Avro, hash the content
22
- schema_hash = hashlib.md5(schema_value.encode("utf-8"), usedforsecurity=False).hexdigest()
28
+ schema_hash = hashlib.md5(hashable_value.encode("utf-8"), usedforsecurity=False).hexdigest()
23
29
  else:
24
30
  # For objects like Protobuf, use the object id
25
- schema_hash = str(id(schema_value))
31
+ schema_hash = f"{str(id(schema_value))}_{schema_metadata}"
26
32
 
27
33
  return f"{schema_type}_{schema_hash}"
28
34
 
29
35
 
30
- def get_deserializer(schema_type: str | object, schema_value: Any) -> DeserializerBase:
36
+ def get_deserializer(schema_type: str | object, schema_value: Any, field_metadata: Any) -> DeserializerBase:
31
37
  """
32
38
  Factory function to get the appropriate deserializer based on schema type.
33
39
 
@@ -75,7 +81,7 @@ def get_deserializer(schema_type: str | object, schema_value: Any) -> Deserializ
75
81
  """
76
82
 
77
83
  # Generate a cache key based on schema type and value
78
- cache_key = _get_cache_key(schema_type, schema_value)
84
+ cache_key = _get_cache_key(schema_type, schema_value, field_metadata)
79
85
 
80
86
  # Check if we already have this deserializer in cache
81
87
  if cache_key in _deserializer_cache:
@@ -87,14 +93,14 @@ def get_deserializer(schema_type: str | object, schema_value: Any) -> Deserializ
87
93
  # Import here to avoid dependency if not used
88
94
  from aws_lambda_powertools.utilities.kafka.deserializer.avro import AvroDeserializer
89
95
 
90
- deserializer = AvroDeserializer(schema_value)
96
+ deserializer = AvroDeserializer(schema_str=schema_value, field_metadata=field_metadata)
91
97
  elif schema_type == "PROTOBUF":
92
98
  # Import here to avoid dependency if not used
93
99
  from aws_lambda_powertools.utilities.kafka.deserializer.protobuf import ProtobufDeserializer
94
100
 
95
- deserializer = ProtobufDeserializer(schema_value)
101
+ deserializer = ProtobufDeserializer(message_class=schema_value, field_metadata=field_metadata)
96
102
  elif schema_type == "JSON":
97
- deserializer = JsonDeserializer()
103
+ deserializer = JsonDeserializer(field_metadata=field_metadata)
98
104
 
99
105
  else:
100
106
  # Default to no-op deserializer
@@ -2,9 +2,16 @@ from __future__ import annotations
2
2
 
3
3
  import base64
4
4
  import json
5
+ import logging
6
+ from typing import Any
5
7
 
6
8
  from aws_lambda_powertools.utilities.kafka.deserializer.base import DeserializerBase
7
- from aws_lambda_powertools.utilities.kafka.exceptions import KafkaConsumerDeserializationError
9
+ from aws_lambda_powertools.utilities.kafka.exceptions import (
10
+ KafkaConsumerDeserializationError,
11
+ KafkaConsumerDeserializationFormatMismatch,
12
+ )
13
+
14
+ logger = logging.getLogger(__name__)
8
15
 
9
16
 
10
17
  class JsonDeserializer(DeserializerBase):
@@ -15,6 +22,9 @@ class JsonDeserializer(DeserializerBase):
15
22
  into Python dictionaries.
16
23
  """
17
24
 
25
+ def __init__(self, field_metadata: dict[str, Any] | None = None):
26
+ self.field_metatada = field_metadata
27
+
18
28
  def deserialize(self, data: bytes | str) -> dict:
19
29
  """
20
30
  Deserialize JSON data to a Python dictionary.
@@ -45,6 +55,14 @@ class JsonDeserializer(DeserializerBase):
45
55
  ... except KafkaConsumerDeserializationError as e:
46
56
  ... print(f"Failed to deserialize: {e}")
47
57
  """
58
+
59
+ data_format = self.field_metatada.get("dataFormat") if self.field_metatada else None
60
+
61
+ if data_format and data_format != "JSON":
62
+ raise KafkaConsumerDeserializationFormatMismatch(f"Expected data is JSON but you sent {data_format}")
63
+
64
+ logger.debug("Deserializing data with JSON format")
65
+
48
66
  try:
49
67
  return json.loads(base64.b64decode(data).decode("utf-8"))
50
68
  except Exception as e:
@@ -1,15 +1,19 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import logging
3
4
  from typing import Any
4
5
 
5
- from google.protobuf.internal.decoder import _DecodeVarint # type: ignore[attr-defined]
6
+ from google.protobuf.internal.decoder import _DecodeSignedVarint # type: ignore[attr-defined]
6
7
  from google.protobuf.json_format import MessageToDict
7
8
 
8
9
  from aws_lambda_powertools.utilities.kafka.deserializer.base import DeserializerBase
9
10
  from aws_lambda_powertools.utilities.kafka.exceptions import (
10
11
  KafkaConsumerDeserializationError,
12
+ KafkaConsumerDeserializationFormatMismatch,
11
13
  )
12
14
 
15
+ logger = logging.getLogger(__name__)
16
+
13
17
 
14
18
  class ProtobufDeserializer(DeserializerBase):
15
19
  """
@@ -19,8 +23,9 @@ class ProtobufDeserializer(DeserializerBase):
19
23
  into Python dictionaries using the provided Protocol Buffer message class.
20
24
  """
21
25
 
22
- def __init__(self, message_class: Any):
26
+ def __init__(self, message_class: Any, field_metadata: dict[str, Any] | None = None):
23
27
  self.message_class = message_class
28
+ self.field_metatada = field_metadata
24
29
 
25
30
  def deserialize(self, data: bytes | str) -> dict:
26
31
  """
@@ -61,57 +66,56 @@ class ProtobufDeserializer(DeserializerBase):
61
66
  ... except KafkaConsumerDeserializationError as e:
62
67
  ... print(f"Failed to deserialize: {e}")
63
68
  """
64
- value = self._decode_input(data)
65
- try:
66
- message = self.message_class()
67
- message.ParseFromString(value)
68
- return MessageToDict(message, preserving_proto_field_name=True)
69
- except Exception:
70
- return self._deserialize_with_message_index(value, self.message_class())
71
69
 
72
- def _deserialize_with_message_index(self, data: bytes, parser: Any) -> dict:
73
- """
74
- Deserialize protobuf message with Confluent message index handling.
70
+ data_format = self.field_metatada.get("dataFormat") if self.field_metatada else None
71
+ schema_id = self.field_metatada.get("schemaId") if self.field_metatada else None
75
72
 
76
- Parameters
77
- ----------
78
- data : bytes
79
- data
80
- parser : google.protobuf.message.Message
81
- Protobuf message instance to parse the data into
73
+ if data_format and data_format != "PROTOBUF":
74
+ raise KafkaConsumerDeserializationFormatMismatch(f"Expected data is PROTOBUF but you sent {data_format}")
82
75
 
83
- Returns
84
- -------
85
- dict
86
- Dictionary representation of the parsed protobuf message with original field names
76
+ logger.debug("Deserializing data with PROTOBUF format")
87
77
 
88
- Raises
89
- ------
90
- KafkaConsumerDeserializationError
91
- If deserialization fails
78
+ try:
79
+ value = self._decode_input(data)
80
+ message = self.message_class()
81
+ if schema_id is None:
82
+ logger.debug("Plain PROTOBUF data: using default deserializer")
83
+ # Plain protobuf - direct parser
84
+ message.ParseFromString(value)
85
+ elif len(schema_id) > 20:
86
+ logger.debug("PROTOBUF data integrated with Glue SchemaRegistry: using Glue deserializer")
87
+ # Glue schema registry integration - remove the first byte
88
+ message.ParseFromString(value[1:])
89
+ else:
90
+ logger.debug("PROTOBUF data integrated with Confluent SchemaRegistry: using Confluent deserializer")
91
+ # Confluent schema registry integration - remove message index list
92
+ message.ParseFromString(self._remove_message_index(value))
92
93
 
93
- Notes
94
- -----
95
- This method handles the special case of Confluent Schema Registry's message index
96
- format, where the message is prefixed with either a single 0 (for the first schema)
97
- or a list of schema indexes. The actual protobuf message follows these indexes.
98
- """
94
+ return MessageToDict(message, preserving_proto_field_name=True)
95
+ except Exception as e:
96
+ raise KafkaConsumerDeserializationError(
97
+ f"Error trying to deserialize protobuf data - {type(e).__name__}: {str(e)}",
98
+ ) from e
99
99
 
100
+ def _remove_message_index(self, data):
101
+ """
102
+ Identifies and removes Confluent Schema Registry MessageIndex from bytes.
103
+ Returns pure protobuf bytes.
104
+ """
100
105
  buffer = memoryview(data)
101
106
  pos = 0
102
107
 
103
- try:
104
- first_value, new_pos = _DecodeVarint(buffer, pos)
105
- pos = new_pos
108
+ logger.debug("Removing message list bytes")
106
109
 
107
- if first_value != 0:
108
- for _ in range(first_value):
109
- _, new_pos = _DecodeVarint(buffer, pos)
110
- pos = new_pos
110
+ # Read first varint (index count or 0)
111
+ first_value, new_pos = _DecodeSignedVarint(buffer, pos)
112
+ pos = new_pos
111
113
 
112
- parser.ParseFromString(data[pos:])
113
- return MessageToDict(parser, preserving_proto_field_name=True)
114
- except Exception as e:
115
- raise KafkaConsumerDeserializationError(
116
- f"Error trying to deserialize protobuf data - {type(e).__name__}: {str(e)}",
117
- ) from e
114
+ # Skip index values if present
115
+ if first_value != 0:
116
+ for _ in range(first_value):
117
+ _, new_pos = _DecodeSignedVarint(buffer, pos)
118
+ pos = new_pos
119
+
120
+ # Return remaining bytes (pure protobuf)
121
+ return data[pos:]
@@ -4,6 +4,12 @@ class KafkaConsumerAvroSchemaParserError(Exception):
4
4
  """
5
5
 
6
6
 
7
+ class KafkaConsumerDeserializationFormatMismatch(Exception):
8
+ """
9
+ Error raised when deserialization format is incompatible
10
+ """
11
+
12
+
7
13
  class KafkaConsumerDeserializationError(Exception):
8
14
  """
9
15
  Error raised when message deserialization fails.
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import logging
3
4
  from typing import TYPE_CHECKING, Any
4
5
 
5
6
  from aws_lambda_powertools.utilities.kafka.serialization.base import OutputSerializerBase
@@ -9,6 +10,8 @@ if TYPE_CHECKING:
9
10
 
10
11
  from aws_lambda_powertools.utilities.kafka.serialization.types import T
11
12
 
13
+ logger = logging.getLogger(__name__)
14
+
12
15
 
13
16
  class CustomDictOutputSerializer(OutputSerializerBase):
14
17
  """
@@ -19,4 +22,5 @@ class CustomDictOutputSerializer(OutputSerializerBase):
19
22
  """
20
23
 
21
24
  def serialize(self, data: dict[str, Any], output: type[T] | Callable | None = None) -> T | dict[str, Any]:
25
+ logger.debug("Serializing output data with CustomDictOutputSerializer")
22
26
  return data if output is None else output(data) # type: ignore[call-arg]
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import logging
3
4
  from dataclasses import is_dataclass
4
5
  from typing import TYPE_CHECKING, Any, cast
5
6
 
@@ -9,6 +10,8 @@ from aws_lambda_powertools.utilities.kafka.serialization.types import T
9
10
  if TYPE_CHECKING:
10
11
  from collections.abc import Callable
11
12
 
13
+ logger = logging.getLogger(__name__)
14
+
12
15
 
13
16
  class DataclassOutputSerializer(OutputSerializerBase):
14
17
  """
@@ -22,4 +25,6 @@ class DataclassOutputSerializer(OutputSerializerBase):
22
25
  if not is_dataclass(output): # pragma: no cover
23
26
  raise ValueError("Output class must be a dataclass")
24
27
 
28
+ logger.debug("Serializing output data with DataclassOutputSerializer")
29
+
25
30
  return cast(T, output(**data))
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import logging
3
4
  from typing import TYPE_CHECKING, Any
4
5
 
5
6
  from pydantic import TypeAdapter
@@ -11,6 +12,8 @@ if TYPE_CHECKING:
11
12
 
12
13
  from aws_lambda_powertools.utilities.kafka.serialization.types import T
13
14
 
15
+ logger = logging.getLogger(__name__)
16
+
14
17
 
15
18
  class PydanticOutputSerializer(OutputSerializerBase):
16
19
  """
@@ -21,6 +24,7 @@ class PydanticOutputSerializer(OutputSerializerBase):
21
24
  """
22
25
 
23
26
  def serialize(self, data: dict[str, Any], output: type[T] | Callable | None = None) -> T | dict[str, Any]:
27
+ logger.debug("Serializing output data with PydanticOutputSerializer")
24
28
  # Use TypeAdapter for better support of Union types and other complex types
25
29
  adapter: TypeAdapter = TypeAdapter(output)
26
30
  return adapter.validate_python(data)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "aws_lambda_powertools"
3
- version = "3.15.1a0"
3
+ version = "3.15.2a0"
4
4
  description = "Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless best practices and increase developer velocity."
5
5
  authors = ["Amazon Web Services"]
6
6
  include = ["aws_lambda_powertools/py.typed", "THIRD-PARTY-LICENSES"]
@@ -72,7 +72,7 @@ extras_require = \
72
72
 
73
73
  setup_kwargs = {
74
74
  'name': 'aws_lambda_powertools',
75
- 'version': '3.15.1a0',
75
+ 'version': '3.15.2a0',
76
76
  'description': 'Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless best practices and increase developer velocity.',
77
77
  'long_description': '<!-- markdownlint-disable MD013 MD041 MD043 -->\n# Powertools for AWS Lambda (Python)\n\n[![Build](https://github.com/aws-powertools/powertools-lambda-python/actions/workflows/quality_check.yml/badge.svg)](https://github.com/aws-powertools/powertools-lambda-python/actions/workflows/python_build.yml)\n[![codecov.io](https://codecov.io/github/aws-powertools/powertools-lambda-python/branch/develop/graphs/badge.svg)](https://app.codecov.io/gh/aws-powertools/powertools-lambda-python)\n![PythonSupport](https://img.shields.io/static/v1?label=python&message=%203.9|%203.10|%203.11|%203.12|%203.13&color=blue?style=flat-square&logo=python) ![PyPI version](https://badge.fury.io/py/aws-lambda-powertools.svg) ![PyPi monthly downloads](https://img.shields.io/pypi/dm/aws-lambda-powertools) [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/aws-powertools/powertools-lambda-python/badge)](https://api.securityscorecards.dev/projects/github.com/aws-powertools/powertools-lambda-python) [![Join our Discord](https://dcbadge.vercel.app/api/server/B8zZKbbyET?style=flat-square)](https://discord.gg/B8zZKbbyET)\n\nPowertools for AWS Lambda (Python) is a developer toolkit to implement Serverless [best practices and increase developer velocity](https://docs.powertools.aws.dev/lambda/python/latest/#features).\n\n> Also available in [Java](https://github.com/aws-powertools/powertools-lambda-java), [Typescript](https://github.com/aws-powertools/powertools-lambda-typescript), and [.NET](https://github.com/aws-powertools/powertools-lambda-dotnet).\n\n**[📜Documentation](https://docs.powertools.aws.dev/lambda/python/)** | **[🐍PyPi](https://pypi.org/project/aws-lambda-powertools/)** | **[Roadmap](https://docs.powertools.aws.dev/lambda/python/latest/roadmap/)** | **[Detailed blog post](https://aws.amazon.com/blogs/opensource/simplifying-serverless-best-practices-with-lambda-powertools/)**\n\n![hero-image](https://user-images.githubusercontent.com/3340292/198254617-d0fdb672-86a6-4988-8a40-adf437135e0a.png)\n\n## Features\n\n* **[Tracing](https://docs.powertools.aws.dev/lambda/python/latest/core/tracer/)** - Decorators and utilities to trace Lambda function handlers, and both synchronous and asynchronous functions\n* **[Logging](https://docs.powertools.aws.dev/lambda/python/latest/core/logger/)** - Structured logging made easier, and decorator to enrich structured logging with key Lambda context details\n* **[Metrics](https://docs.powertools.aws.dev/lambda/python/latest/core/metrics/)** - Custom Metrics created asynchronously via CloudWatch Embedded Metric Format (EMF)\n* **[Event handler: AppSync](https://docs.powertools.aws.dev/lambda/python/latest/core/event_handler/appsync/)** - AWS AppSync event handler for Lambda Direct Resolver and Amplify GraphQL Transformer function\n* **[Event handler: API Gateway and ALB](https://docs.powertools.aws.dev/lambda/python/latest/core/event_handler/api_gateway/)** - Amazon API Gateway REST/HTTP API and ALB event handler for Lambda functions invoked using Proxy integration\n* **[Event handler: Agents for Amazon Bedrock](https://docs.powertools.aws.dev/lambda/python/latest/core/event_handler/bedrock_agents/)** - Create Agents for Amazon Bedrock, automatically generating OpenAPI schemas\n* **[Bring your own middleware](https://docs.powertools.aws.dev/lambda/python/latest/utilities/middleware_factory/)** - Decorator factory to create your own middleware to run logic before, and after each Lambda invocation\n* **[Parameters utility](https://docs.powertools.aws.dev/lambda/python/latest/utilities/parameters/)** - Retrieve and cache parameter values from Parameter Store, Secrets Manager, or DynamoDB\n* **[Batch processing](https://docs.powertools.aws.dev/lambda/python/latest/utilities/batch/)** - Handle partial failures for AWS SQS batch processing\n* **[Typing](https://docs.powertools.aws.dev/lambda/python/latest/utilities/typing/)** - Static typing classes to speedup development in your IDE\n* **[Validation](https://docs.powertools.aws.dev/lambda/python/latest/utilities/validation/)** - JSON Schema validator for inbound events and responses\n* **[Event source data classes](https://docs.powertools.aws.dev/lambda/python/latest/utilities/data_classes/)** - Data classes describing the schema of common Lambda event triggers\n* **[Parser](https://docs.powertools.aws.dev/lambda/python/latest/utilities/parser/)** - Data parsing and deep validation using Pydantic\n* **[Idempotency](https://docs.powertools.aws.dev/lambda/python/latest/utilities/idempotency/)** - Convert your Lambda functions into idempotent operations which are safe to retry\n* **[Data Masking](https://docs.powertools.aws.dev/lambda/python/latest/utilities/data_masking/)** - Protect confidential data with easy removal or encryption\n* **[Feature Flags](https://docs.powertools.aws.dev/lambda/python/latest/utilities/feature_flags/)** - A simple rule engine to evaluate when one or multiple features should be enabled depending on the input\n* **[Streaming](https://docs.powertools.aws.dev/lambda/python/latest/utilities/streaming/)** - Streams datasets larger than the available memory as streaming data.\n\n### Installation\n\nWith [pip](https://pip.pypa.io/en/latest/index.html) installed, run: ``pip install aws-lambda-powertools``\n\n## Tutorial and Examples\n\n* [Tutorial](https://docs.powertools.aws.dev/lambda/python/latest/tutorial)\n* [Serverless Shopping cart](https://github.com/aws-samples/aws-serverless-shopping-cart)\n* [Serverless Airline](https://github.com/aws-samples/aws-serverless-airline-booking)\n* [Serverless E-commerce platform](https://github.com/aws-samples/aws-serverless-ecommerce-platform)\n* [Serverless GraphQL Nanny Booking Api](https://github.com/trey-rosius/babysitter_api)\n\n## How to support Powertools for AWS Lambda (Python)?\n\n### Becoming a reference customer\n\nKnowing which companies are using this library is important to help prioritize the project internally. If your company is using Powertools for AWS Lambda (Python), you can request to have your name and logo added to the README file by raising a [Support Powertools for AWS Lambda (Python) (become a reference)](https://github.com/aws-powertools/powertools-lambda-python/issues/new?assignees=&labels=customer-reference&template=support_powertools.yml&title=%5BSupport+Lambda+Powertools%5D%3A+%3Cyour+organization+name%3E) issue.\n\nThe following companies, among others, use Powertools:\n\n* [Alma Media](https://www.almamedia.fi/en/)\n* [Banxware](https://www.banxware.com/)\n* [Brsk](https://www.brsk.co.uk/)\n* [BusPatrol](https://buspatrol.com/)\n* [Capital One](https://www.capitalone.com/)\n* [Caylent](https://caylent.com/)\n* [CHS Inc.](https://www.chsinc.com/)\n* [CPQi (Exadel Financial Services)](https://cpqi.com/)\n* [CloudZero](https://www.cloudzero.com/)\n* [CyberArk](https://www.cyberark.com/)\n* [Flyweight](https://flyweight.io/)\n* [globaldatanet](https://globaldatanet.com/)\n* [Guild](https://guild.com/)\n* [IMS](https://ims.tech/)\n* [Instil](https://instil.co/)\n* [Jit Security](https://www.jit.io/)\n* [LocalStack](https://www.localstack.cloud/)\n* [Propellor.ai](https://www.propellor.ai/)\n* [Pushpay](https://pushpay.com/)\n* [Recast](https://getrecast.com/)\n* [TopSport](https://www.topsport.com.au/)\n* [Transformity](https://transformity.tech/)\n* [Trek10](https://www.trek10.com/)\n* [Vertex Pharmaceuticals](https://www.vrtx.com/)\n\n### Sharing your work\n\nShare what you did with Powertools for AWS Lambda (Python) 💞💞. Blog post, workshops, presentation, sample apps and others. Check out what the community has already shared about Powertools for AWS Lambda (Python) [here](https://docs.powertools.aws.dev/lambda/python/latest/we_made_this/).\n\n### Using Lambda Layer or SAR\n\nThis helps us understand who uses Powertools for AWS Lambda (Python) in a non-intrusive way, and helps us gain future investments for other Powertools for AWS Lambda languages. When [using Layers](https://docs.powertools.aws.dev/lambda/python/latest/#lambda-layer), you can add Powertools for AWS Lambda (Python) as a dev dependency (or as part of your virtual env) to not impact the development process.\n\n## Credits\n\n* Structured logging initial implementation from [aws-lambda-logging](https://gitlab.com/hadrien/aws_lambda_logging)\n* Powertools for AWS Lambda (Python) idea [DAZN Powertools](https://github.com/getndazn/dazn-lambda-powertools/)\n\n## Connect\n\n* **Powertools for AWS Lambda on Discord**: `#python` - **[Invite link](https://discord.gg/B8zZKbbyET)**\n* **Email**: <aws-powertools-maintainers@amazon.com>\n\n## Security disclosures\n\nIf you think you’ve found a potential security issue, please do not post it in the Issues. Instead, please follow the instructions [here](https://aws.amazon.com/security/vulnerability-reporting/) or [email AWS security directly](mailto:aws-security@amazon.com).\n\n## License\n\nThis library is licensed under the MIT-0 License. See the LICENSE file.\n',
78
78
  'author': 'Amazon Web Services',