aws-lambda-powertools 3.4.2a1__tar.gz → 3.5.1a0__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 (257) hide show
  1. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/PKG-INFO +4 -6
  2. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/api_gateway.py +2 -2
  3. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/dependant.py +1 -1
  4. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/logging/formatter.py +31 -1
  5. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/logging/logger.py +22 -10
  6. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/shared/version.py +1 -1
  7. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/__init__.py +3 -0
  8. aws_lambda_powertools-3.5.1a0/aws_lambda_powertools/utilities/data_classes/transfer_family_event.py +190 -0
  9. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/base.py +10 -1
  10. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/idempotency.py +9 -0
  11. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/persistence/base.py +12 -5
  12. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/serialization/functions.py +1 -1
  13. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/__init__.py +2 -0
  14. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/apigwv2.py +1 -1
  15. aws_lambda_powertools-3.5.1a0/aws_lambda_powertools/utilities/parser/models/transfer_family.py +12 -0
  16. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/pyproject.toml +35 -35
  17. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/setup.py +3 -3
  18. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/LICENSE +0 -0
  19. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/README.md +0 -0
  20. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/THIRD-PARTY-LICENSES +0 -0
  21. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/__init__.py +0 -0
  22. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/__init__.py +0 -0
  23. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/appsync.py +0 -0
  24. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/bedrock_agent.py +0 -0
  25. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/content_types.py +0 -0
  26. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/exceptions.py +0 -0
  27. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/graphql_appsync/__init__.py +0 -0
  28. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/graphql_appsync/_registry.py +0 -0
  29. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/graphql_appsync/base.py +0 -0
  30. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/graphql_appsync/exceptions.py +0 -0
  31. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/graphql_appsync/router.py +0 -0
  32. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/lambda_function_url.py +0 -0
  33. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/middlewares/__init__.py +0 -0
  34. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/middlewares/base.py +0 -0
  35. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/middlewares/openapi_validation.py +0 -0
  36. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/middlewares/schema_validation.py +0 -0
  37. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/__init__.py +0 -0
  38. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/compat.py +0 -0
  39. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/constants.py +0 -0
  40. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/encoders.py +0 -0
  41. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/exceptions.py +0 -0
  42. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/models.py +0 -0
  43. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/params.py +0 -0
  44. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/pydantic_loader.py +0 -0
  45. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/__init__.py +0 -0
  46. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/html.py +0 -0
  47. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/oauth2.py +0 -0
  48. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/swagger-ui-bundle.min.js +0 -0
  49. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/swagger-ui.min.css +0 -0
  50. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/openapi/types.py +0 -0
  51. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/router.py +0 -0
  52. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/types.py +0 -0
  53. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/util.py +0 -0
  54. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/event_handler/vpc_lattice.py +0 -0
  55. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/exceptions/__init__.py +0 -0
  56. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/logging/__init__.py +0 -0
  57. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/logging/constants.py +0 -0
  58. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/logging/correlation_paths.py +0 -0
  59. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/logging/exceptions.py +0 -0
  60. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/logging/filters.py +0 -0
  61. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/logging/formatters/__init__.py +0 -0
  62. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/logging/formatters/datadog.py +0 -0
  63. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/logging/lambda_context.py +0 -0
  64. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/logging/types.py +0 -0
  65. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/logging/utils.py +0 -0
  66. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/__init__.py +0 -0
  67. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/base.py +0 -0
  68. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/exceptions.py +0 -0
  69. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/functions.py +0 -0
  70. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/metric.py +0 -0
  71. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/metrics.py +0 -0
  72. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/__init__.py +0 -0
  73. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/base.py +0 -0
  74. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/__init__.py +0 -0
  75. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/cloudwatch.py +0 -0
  76. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/constants.py +0 -0
  77. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/exceptions.py +0 -0
  78. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/metric_properties.py +0 -0
  79. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/types.py +0 -0
  80. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/cold_start.py +0 -0
  81. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/datadog/__init__.py +0 -0
  82. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/datadog/datadog.py +0 -0
  83. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/datadog/metrics.py +0 -0
  84. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/provider/datadog/warnings.py +0 -0
  85. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/metrics/types.py +0 -0
  86. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/middleware_factory/__init__.py +0 -0
  87. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/middleware_factory/exceptions.py +0 -0
  88. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/middleware_factory/factory.py +0 -0
  89. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/package_logger.py +0 -0
  90. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/py.typed +0 -0
  91. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/shared/__init__.py +0 -0
  92. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/shared/cache_dict.py +0 -0
  93. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/shared/constants.py +0 -0
  94. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/shared/cookies.py +0 -0
  95. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/shared/dynamodb_deserializer.py +0 -0
  96. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/shared/functions.py +0 -0
  97. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/shared/headers_serializer.py +0 -0
  98. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/shared/json_encoder.py +0 -0
  99. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/shared/lazy_import.py +0 -0
  100. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/shared/types.py +0 -0
  101. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/shared/user_agent.py +0 -0
  102. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/tracing/__init__.py +0 -0
  103. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/tracing/base.py +0 -0
  104. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/tracing/extensions.py +0 -0
  105. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/tracing/tracer.py +0 -0
  106. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/__init__.py +0 -0
  107. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/batch/__init__.py +0 -0
  108. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/batch/base.py +0 -0
  109. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/batch/decorators.py +0 -0
  110. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/batch/exceptions.py +0 -0
  111. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/batch/sqs_fifo_partial_processor.py +0 -0
  112. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/batch/types.py +0 -0
  113. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/active_mq_event.py +0 -0
  114. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/alb_event.py +0 -0
  115. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/api_gateway_authorizer_event.py +0 -0
  116. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/api_gateway_proxy_event.py +0 -0
  117. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/appsync/__init__.py +0 -0
  118. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/appsync/scalar_types_utils.py +0 -0
  119. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/appsync_authorizer_event.py +0 -0
  120. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/appsync_resolver_event.py +0 -0
  121. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/aws_config_rule_event.py +0 -0
  122. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/bedrock_agent_event.py +0 -0
  123. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_alarm_event.py +0 -0
  124. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_custom_widget_event.py +0 -0
  125. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_logs_event.py +0 -0
  126. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/cloudformation_custom_resource_event.py +0 -0
  127. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/code_deploy_lifecycle_hook_event.py +0 -0
  128. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/code_pipeline_job_event.py +0 -0
  129. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/cognito_user_pool_event.py +0 -0
  130. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/common.py +0 -0
  131. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/connect_contact_flow_event.py +0 -0
  132. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/dynamo_db_stream_event.py +0 -0
  133. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/event_bridge_event.py +0 -0
  134. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/event_source.py +0 -0
  135. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/kafka_event.py +0 -0
  136. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/kinesis_firehose_event.py +0 -0
  137. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/kinesis_stream_event.py +0 -0
  138. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/lambda_function_url_event.py +0 -0
  139. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/rabbit_mq_event.py +0 -0
  140. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/s3_batch_operation_event.py +0 -0
  141. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/s3_event.py +0 -0
  142. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/s3_object_event.py +0 -0
  143. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/secrets_manager_event.py +0 -0
  144. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/ses_event.py +0 -0
  145. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/shared_functions.py +0 -0
  146. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/sns_event.py +0 -0
  147. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/sqs_event.py +0 -0
  148. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_classes/vpc_lattice.py +0 -0
  149. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_masking/__init__.py +0 -0
  150. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_masking/base.py +0 -0
  151. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_masking/constants.py +0 -0
  152. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_masking/exceptions.py +0 -0
  153. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_masking/provider/__init__.py +0 -0
  154. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_masking/provider/base.py +0 -0
  155. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_masking/provider/kms/__init__.py +0 -0
  156. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/data_masking/provider/kms/aws_encryption_sdk.py +0 -0
  157. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/feature_flags/__init__.py +0 -0
  158. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/feature_flags/appconfig.py +0 -0
  159. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/feature_flags/base.py +0 -0
  160. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/feature_flags/comparators.py +0 -0
  161. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/feature_flags/constants.py +0 -0
  162. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/feature_flags/exceptions.py +0 -0
  163. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/feature_flags/feature_flags.py +0 -0
  164. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/feature_flags/schema.py +0 -0
  165. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/feature_flags/types.py +0 -0
  166. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/__init__.py +0 -0
  167. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/config.py +0 -0
  168. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/exceptions.py +0 -0
  169. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/hook.py +0 -0
  170. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/persistence/__init__.py +0 -0
  171. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/persistence/datarecord.py +0 -0
  172. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/persistence/dynamodb.py +0 -0
  173. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/persistence/redis.py +0 -0
  174. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/serialization/__init__.py +0 -0
  175. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/serialization/base.py +0 -0
  176. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/serialization/custom_dict.py +0 -0
  177. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/serialization/dataclass.py +0 -0
  178. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/serialization/no_op.py +0 -0
  179. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/idempotency/serialization/pydantic.py +0 -0
  180. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/jmespath_utils/__init__.py +0 -0
  181. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/jmespath_utils/envelopes.py +0 -0
  182. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parameters/__init__.py +0 -0
  183. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parameters/appconfig.py +0 -0
  184. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parameters/base.py +0 -0
  185. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parameters/constants.py +0 -0
  186. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parameters/dynamodb.py +0 -0
  187. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parameters/exceptions.py +0 -0
  188. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parameters/secrets.py +0 -0
  189. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parameters/ssm.py +0 -0
  190. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parameters/types.py +0 -0
  191. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/__init__.py +0 -0
  192. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/__init__.py +0 -0
  193. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/apigw.py +0 -0
  194. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/apigw_websocket.py +0 -0
  195. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/apigwv2.py +0 -0
  196. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/base.py +0 -0
  197. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/bedrock_agent.py +0 -0
  198. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/cloudwatch.py +0 -0
  199. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/dynamodb.py +0 -0
  200. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/event_bridge.py +0 -0
  201. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/kafka.py +0 -0
  202. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/kinesis.py +0 -0
  203. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/kinesis_firehose.py +0 -0
  204. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/lambda_function_url.py +0 -0
  205. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/sns.py +0 -0
  206. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/sqs.py +0 -0
  207. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/vpc_lattice.py +0 -0
  208. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/envelopes/vpc_latticev2.py +0 -0
  209. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/exceptions.py +0 -0
  210. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/functions.py +0 -0
  211. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/alb.py +0 -0
  212. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/apigw.py +0 -0
  213. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/apigw_websocket.py +0 -0
  214. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/bedrock_agent.py +0 -0
  215. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/cloudformation_custom_resource.py +0 -0
  216. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/cloudwatch.py +0 -0
  217. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/dynamodb.py +0 -0
  218. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/event_bridge.py +0 -0
  219. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/kafka.py +0 -0
  220. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/kinesis.py +0 -0
  221. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose.py +0 -0
  222. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose_sqs.py +0 -0
  223. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/lambda_function_url.py +0 -0
  224. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/s3.py +0 -0
  225. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/s3_batch_operation.py +0 -0
  226. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/s3_event_notification.py +0 -0
  227. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/s3_object_event.py +0 -0
  228. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/ses.py +0 -0
  229. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/sns.py +0 -0
  230. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/sqs.py +0 -0
  231. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/vpc_lattice.py +0 -0
  232. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/models/vpc_latticev2.py +0 -0
  233. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/parser.py +0 -0
  234. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/parser/types.py +0 -0
  235. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/serialization.py +0 -0
  236. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/streaming/__init__.py +0 -0
  237. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/streaming/_s3_seekable_io.py +0 -0
  238. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/streaming/compat.py +0 -0
  239. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/streaming/constants.py +0 -0
  240. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/streaming/s3_object.py +0 -0
  241. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/streaming/transformations/__init__.py +0 -0
  242. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/streaming/transformations/base.py +0 -0
  243. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/streaming/transformations/csv.py +0 -0
  244. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/streaming/transformations/gzip.py +0 -0
  245. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/streaming/transformations/zip.py +0 -0
  246. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/streaming/types.py +0 -0
  247. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/typing/__init__.py +0 -0
  248. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/typing/lambda_client_context.py +0 -0
  249. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/typing/lambda_client_context_mobile_client.py +0 -0
  250. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/typing/lambda_cognito_identity.py +0 -0
  251. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/typing/lambda_context.py +0 -0
  252. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/validation/__init__.py +0 -0
  253. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/validation/base.py +0 -0
  254. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/validation/envelopes.py +0 -0
  255. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/validation/exceptions.py +0 -0
  256. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/utilities/validation/validator.py +0 -0
  257. {aws_lambda_powertools-3.4.2a1 → aws_lambda_powertools-3.5.1a0}/aws_lambda_powertools/warnings/__init__.py +0 -0
@@ -1,19 +1,17 @@
1
- Metadata-Version: 2.1
2
- Name: aws-lambda-powertools
3
- Version: 3.4.2a1
1
+ Metadata-Version: 2.3
2
+ Name: aws_lambda_powertools
3
+ Version: 3.5.1a0
4
4
  Summary: Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless best practices and increase developer velocity.
5
- Home-page: https://github.com/aws-powertools/powertools-lambda-python
6
5
  License: MIT
7
6
  Keywords: aws_lambda_powertools,aws,tracing,logging,lambda,powertools,feature_flags,idempotency,middleware
8
7
  Author: Amazon Web Services
9
- Requires-Python: >=3.8,<4.0.0
8
+ Requires-Python: >=3.9,<4.0.0
10
9
  Classifier: Development Status :: 5 - Production/Stable
11
10
  Classifier: Intended Audience :: Developers
12
11
  Classifier: License :: OSI Approved :: MIT License
13
12
  Classifier: License :: OSI Approved :: MIT No Attribution License (MIT-0)
14
13
  Classifier: Natural Language :: English
15
14
  Classifier: Programming Language :: Python :: 3
16
- Classifier: Programming Language :: Python :: 3.8
17
15
  Classifier: Programming Language :: Python :: 3.9
18
16
  Classifier: Programming Language :: Python :: 3.10
19
17
  Classifier: Programming Language :: Python :: 3.11
@@ -2521,7 +2521,7 @@ class Router(BaseRouter):
2521
2521
  frozen_responses = _FrozenDict(responses) if responses else None
2522
2522
  frozen_tags = frozenset(tags) if tags else None
2523
2523
  frozen_security = _FrozenListDict(security) if security else None
2524
- fronzen_openapi_extensions = _FrozenDict(openapi_extensions) if openapi_extensions else None
2524
+ frozen_openapi_extensions = _FrozenDict(openapi_extensions) if openapi_extensions else None
2525
2525
 
2526
2526
  route_key = (
2527
2527
  rule,
@@ -2537,7 +2537,7 @@ class Router(BaseRouter):
2537
2537
  operation_id,
2538
2538
  include_in_schema,
2539
2539
  frozen_security,
2540
- fronzen_openapi_extensions,
2540
+ frozen_openapi_extensions,
2541
2541
  deprecated,
2542
2542
  )
2543
2543
 
@@ -106,7 +106,7 @@ def get_typed_signature(call: Callable[..., Any]) -> inspect.Signature:
106
106
  signature = inspect.signature(call)
107
107
 
108
108
  # Gets the global namespace for the call. This is used to resolve forward references.
109
- globalns = getattr(call, "__global__", {})
109
+ globalns = getattr(call, "__globals__", {})
110
110
 
111
111
  typed_params = [
112
112
  inspect.Parameter(
@@ -7,10 +7,11 @@ import os
7
7
  import time
8
8
  import traceback
9
9
  from abc import ABCMeta, abstractmethod
10
+ from contextlib import contextmanager
10
11
  from contextvars import ContextVar
11
12
  from datetime import datetime, timezone
12
13
  from functools import partial
13
- from typing import TYPE_CHECKING, Any, Callable, Iterable
14
+ from typing import TYPE_CHECKING, Any, Callable, Generator, Iterable
14
15
 
15
16
  from aws_lambda_powertools.shared import constants
16
17
  from aws_lambda_powertools.shared.functions import powertools_dev_is_set
@@ -62,6 +63,10 @@ class BasePowertoolsFormatter(logging.Formatter, metaclass=ABCMeta):
62
63
  """Removes any previously added logging keys"""
63
64
  raise NotImplementedError()
64
65
 
66
+ @contextmanager
67
+ def append_context_keys(self, **additional_keys: Any) -> Generator[None, None, None]:
68
+ yield
69
+
65
70
  # These specific thread-safe methods are necessary to manage shared context in concurrent environments.
66
71
  # They prevent race conditions and ensure data consistency across multiple threads.
67
72
  def thread_safe_append_keys(self, **additional_keys) -> None:
@@ -263,6 +268,31 @@ class LambdaPowertoolsFormatter(BasePowertoolsFormatter):
263
268
  self.log_format = dict.fromkeys(self.log_record_order)
264
269
  self.log_format.update(**self.keys_combined)
265
270
 
271
+ @contextmanager
272
+ def append_context_keys(self, **additional_keys: Any) -> Generator[None, None, None]:
273
+ """
274
+ Context manager to temporarily add logging keys.
275
+
276
+ Parameters:
277
+ -----------
278
+ **keys: Any
279
+ Key-value pairs to include in the log context during the lifespan of the context manager.
280
+
281
+ Example:
282
+ --------
283
+ >>> logger = Logger(service="example_service")
284
+ >>> with logger.append_context_keys(user_id="123", operation="process"):
285
+ >>> logger.info("Log with context")
286
+ >>> logger.info("Log without context")
287
+ """
288
+ # Add keys to the context
289
+ self.append_keys(**additional_keys)
290
+ try:
291
+ yield
292
+ finally:
293
+ # Remove the keys after exiting the context
294
+ self.remove_keys(additional_keys.keys())
295
+
266
296
  # These specific thread-safe methods are necessary to manage shared context in concurrent environments.
267
297
  # They prevent race conditions and ensure data consistency across multiple threads.
268
298
  def thread_safe_append_keys(self, **additional_keys) -> None:
@@ -7,16 +7,8 @@ import os
7
7
  import random
8
8
  import sys
9
9
  import warnings
10
- from typing import (
11
- IO,
12
- TYPE_CHECKING,
13
- Any,
14
- Callable,
15
- Iterable,
16
- Mapping,
17
- TypeVar,
18
- overload,
19
- )
10
+ from contextlib import contextmanager
11
+ from typing import IO, TYPE_CHECKING, Any, Callable, Generator, Iterable, Mapping, TypeVar, overload
20
12
 
21
13
  from aws_lambda_powertools.logging.constants import (
22
14
  LOGGER_ATTRIBUTE_PRECONFIGURED,
@@ -589,6 +581,26 @@ class Logger:
589
581
  def remove_keys(self, keys: Iterable[str]) -> None:
590
582
  self.registered_formatter.remove_keys(keys)
591
583
 
584
+ @contextmanager
585
+ def append_context_keys(self, **additional_keys: Any) -> Generator[None, None, None]:
586
+ """
587
+ Context manager to temporarily add logging keys.
588
+
589
+ Parameters:
590
+ -----------
591
+ **keys: Any
592
+ Key-value pairs to include in the log context during the lifespan of the context manager.
593
+
594
+ Example:
595
+ --------
596
+ >>> logger = Logger(service="example_service")
597
+ >>> with logger.append_context_keys(user_id="123", operation="process"):
598
+ >>> logger.info("Log with context")
599
+ >>> logger.info("Log without context")
600
+ """
601
+ with self.registered_formatter.append_context_keys(**additional_keys):
602
+ yield
603
+
592
604
  # These specific thread-safe methods are necessary to manage shared context in concurrent environments.
593
605
  # They prevent race conditions and ensure data consistency across multiple threads.
594
606
  def thread_safe_append_keys(self, **additional_keys: object) -> None:
@@ -1,3 +1,3 @@
1
1
  """Exposes version constant to avoid circular dependencies."""
2
2
 
3
- VERSION = "3.4.2a1"
3
+ VERSION = "3.5.1a0"
@@ -45,6 +45,7 @@ from .secrets_manager_event import SecretsManagerEvent
45
45
  from .ses_event import SESEvent
46
46
  from .sns_event import SNSEvent
47
47
  from .sqs_event import SQSEvent
48
+ from .transfer_family_event import TransferFamilyAuthorizer, TransferFamilyAuthorizerResponse
48
49
  from .vpc_lattice import VPCLatticeEvent, VPCLatticeEventV2
49
50
 
50
51
  __all__ = [
@@ -87,4 +88,6 @@ __all__ = [
87
88
  "VPCLatticeEvent",
88
89
  "VPCLatticeEventV2",
89
90
  "CloudFormationCustomResourceEvent",
91
+ "TransferFamilyAuthorizerResponse",
92
+ "TransferFamilyAuthorizer",
90
93
  ]
@@ -0,0 +1,190 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, Literal
4
+
5
+ from aws_lambda_powertools.utilities.data_classes.common import (
6
+ DictWrapper,
7
+ )
8
+
9
+
10
+ class TransferFamilyAuthorizer(DictWrapper):
11
+ @property
12
+ def username(self) -> str:
13
+ """The username used for authentication"""
14
+ return self["username"]
15
+
16
+ @property
17
+ def password(self) -> str | None:
18
+ """
19
+ The password used for authentication.
20
+ None in case customer authenticating with certificates
21
+ """
22
+ return self["password"]
23
+
24
+ @property
25
+ def protocol(self) -> str:
26
+ """The protocol can be SFTP, FTP or FTPS"""
27
+ return self["protocol"]
28
+
29
+ @property
30
+ def server_id(self) -> str:
31
+ """The AWS Transfer Family ServerID"""
32
+ return self["serverId"]
33
+
34
+ @property
35
+ def source_ip(self) -> str:
36
+ """The customer IP used for connection"""
37
+ return self["sourceIp"]
38
+
39
+
40
+ class TransferFamilyAuthorizerResponse:
41
+
42
+ def _build_authentication_response(
43
+ self,
44
+ role_arn: str,
45
+ policy: str | None = None,
46
+ home_directory: str | None = None,
47
+ home_directory_details: dict | None = None,
48
+ home_directory_type: Literal["LOGICAL", "PATH"] = "PATH",
49
+ user_gid: int | None = None,
50
+ user_uid: int | None = None,
51
+ public_keys: str | None = None,
52
+ ) -> dict[str, Any]:
53
+
54
+ response: dict[str, Any] = {}
55
+
56
+ if home_directory_type == "PATH":
57
+ if not home_directory:
58
+ raise ValueError("home_directory must be set when home_directory_type is PATH")
59
+
60
+ response["HomeDirectory"] = home_directory
61
+ elif home_directory_type == "LOGICAL":
62
+ if not home_directory_details:
63
+ raise ValueError("home_directory_details must be set when home_directory_type is LOGICAL")
64
+
65
+ response["HomeDirectoryDetails"] = [home_directory_details]
66
+
67
+ else:
68
+ raise ValueError(f"Invalid home_directory_type: {home_directory_type}")
69
+
70
+ if user_uid is not None:
71
+ response["PosixProfile"] = {"Gid": user_gid, "Uid": user_gid}
72
+
73
+ if policy:
74
+ response["Policy"] = policy
75
+
76
+ if public_keys:
77
+ response["PublicKeys"] = public_keys
78
+
79
+ response["Role"] = role_arn
80
+ response["HomeDirectoryType"] = home_directory_type
81
+
82
+ return response
83
+
84
+ def build_authentication_response_efs(
85
+ self,
86
+ role_arn: str,
87
+ user_gid: int,
88
+ user_uid: int,
89
+ policy: str | None = None,
90
+ home_directory: str | None = None,
91
+ home_directory_details: dict | None = None,
92
+ home_directory_type: Literal["LOGICAL", "PATH"] = "PATH",
93
+ public_keys: str | None = None,
94
+ ) -> dict[str, Any]:
95
+ """
96
+ Build an authentication response for AWS Transfer Family using EFS (Elastic File System).
97
+
98
+ Parameters:
99
+ -----------
100
+ role_arn : str
101
+ The Amazon Resource Name (ARN) of the IAM role.
102
+ user_gid : int
103
+ The group ID of the user.
104
+ user_uid : int
105
+ The user ID.
106
+ policy : str | None, optional
107
+ The IAM policy document. Defaults to None.
108
+ home_directory : str | None, optional
109
+ The home directory path. Required if home_directory_type is "PATH". Defaults to None.
110
+ home_directory_details : dict | None, optional
111
+ Details of the home directory. Required if home_directory_type is "LOGICAL". Defaults to None.
112
+ home_directory_type : Literal["LOGICAL", "PATH"], optional
113
+ The type of home directory. Must be either "LOGICAL" or "PATH". Defaults to "PATH".
114
+ public_keys : str | None, optional
115
+ The public keys associated with the user. Defaults to None.
116
+
117
+ Returns:
118
+ --------
119
+ dict[str, Any]
120
+ A dictionary containing the authentication response with various details such as
121
+ role ARN, policy, home directory information, and user details.
122
+
123
+ Raises:
124
+ -------
125
+ ValueError
126
+ If an invalid home_directory_type is provided or if required parameters are missing
127
+ for the specified home_directory_type.
128
+ """
129
+
130
+ return self._build_authentication_response(
131
+ role_arn=role_arn,
132
+ policy=policy,
133
+ home_directory=home_directory,
134
+ home_directory_details=home_directory_details,
135
+ home_directory_type=home_directory_type,
136
+ public_keys=public_keys,
137
+ user_gid=user_gid,
138
+ user_uid=user_uid,
139
+ )
140
+
141
+ def build_authentication_response_s3(
142
+ self,
143
+ role_arn: str,
144
+ policy: str | None = None,
145
+ home_directory: str | None = None,
146
+ home_directory_details: dict | None = None,
147
+ home_directory_type: Literal["LOGICAL", "PATH"] = "PATH",
148
+ public_keys: str | None = None,
149
+ ) -> dict[str, Any]:
150
+ """
151
+ Build an authentication response for Amazon S3.
152
+
153
+ This method constructs an authentication response tailored for S3 access,
154
+ likely by calling an internal method with the provided parameters.
155
+
156
+ Parameters:
157
+ -----------
158
+ role_arn : str
159
+ The Amazon Resource Name (ARN) of the IAM role for S3 access.
160
+ policy : str | None, optional
161
+ The IAM policy document for S3 access. Defaults to None.
162
+ home_directory : str | None, optional
163
+ The home directory path in S3. Required if home_directory_type is "PATH". Defaults to None.
164
+ home_directory_details : dict | None, optional
165
+ Details of the home directory in S3. Required if home_directory_type is "LOGICAL". Defaults to None.
166
+ home_directory_type : Literal["LOGICAL", "PATH"], optional
167
+ The type of home directory in S3. Must be either "LOGICAL" or "PATH". Defaults to "PATH".
168
+ public_keys : str | None, optional
169
+ The public keys associated with the user for S3 access. Defaults to None.
170
+
171
+ Returns:
172
+ --------
173
+ dict[str, Any]
174
+ A dictionary containing the authentication response with various details such as
175
+ role ARN, policy, home directory information, and potentially other S3-specific attributes.
176
+
177
+ Raises:
178
+ -------
179
+ ValueError
180
+ If an invalid home_directory_type is provided or if required parameters are missing
181
+ for the specified home_directory_type.
182
+ """
183
+ return self._build_authentication_response(
184
+ role_arn=role_arn,
185
+ policy=policy,
186
+ home_directory=home_directory,
187
+ home_directory_details=home_directory_details,
188
+ home_directory_type=home_directory_type,
189
+ public_keys=public_keys,
190
+ )
@@ -74,6 +74,7 @@ class IdempotencyHandler:
74
74
  config: IdempotencyConfig,
75
75
  persistence_store: BasePersistenceLayer,
76
76
  output_serializer: BaseIdempotencySerializer | None = None,
77
+ key_prefix: str | None = None,
77
78
  function_args: tuple | None = None,
78
79
  function_kwargs: dict | None = None,
79
80
  ):
@@ -91,6 +92,8 @@ class IdempotencyHandler:
91
92
  output_serializer: BaseIdempotencySerializer | None
92
93
  Serializer to transform the data to and from a dictionary.
93
94
  If not supplied, no serialization is done via the NoOpSerializer
95
+ key_prefix: str | Optional
96
+ Custom prefix for idempotency key: key_prefix#hash
94
97
  function_args: tuple | None
95
98
  Function arguments
96
99
  function_kwargs: dict | None
@@ -102,8 +105,14 @@ class IdempotencyHandler:
102
105
  self.fn_args = function_args
103
106
  self.fn_kwargs = function_kwargs
104
107
  self.config = config
108
+ self.key_prefix = key_prefix
109
+
110
+ persistence_store.configure(
111
+ config=config,
112
+ function_name=f"{self.function.__module__}.{self.function.__qualname__}",
113
+ key_prefix=self.key_prefix,
114
+ )
105
115
 
106
- persistence_store.configure(config, f"{self.function.__module__}.{self.function.__qualname__}")
107
116
  self.persistence_store = persistence_store
108
117
 
109
118
  def handle(self) -> Any:
@@ -40,6 +40,7 @@ def idempotent(
40
40
  context: LambdaContext,
41
41
  persistence_store: BasePersistenceLayer,
42
42
  config: IdempotencyConfig | None = None,
43
+ key_prefix: str | None = None,
43
44
  **kwargs,
44
45
  ) -> Any:
45
46
  """
@@ -57,6 +58,8 @@ def idempotent(
57
58
  Instance of BasePersistenceLayer to store data
58
59
  config: IdempotencyConfig
59
60
  Configuration
61
+ key_prefix: str | Optional
62
+ Custom prefix for idempotency key: key_prefix#hash
60
63
 
61
64
  Examples
62
65
  --------
@@ -94,6 +97,7 @@ def idempotent(
94
97
  function_payload=event,
95
98
  config=config,
96
99
  persistence_store=persistence_store,
100
+ key_prefix=key_prefix,
97
101
  function_args=args,
98
102
  function_kwargs=kwargs,
99
103
  )
@@ -108,6 +112,7 @@ def idempotent_function(
108
112
  persistence_store: BasePersistenceLayer,
109
113
  config: IdempotencyConfig | None = None,
110
114
  output_serializer: BaseIdempotencySerializer | type[BaseIdempotencyModelSerializer] | None = None,
115
+ key_prefix: str | None = None,
111
116
  **kwargs: Any,
112
117
  ) -> Any:
113
118
  """
@@ -128,6 +133,8 @@ def idempotent_function(
128
133
  If not supplied, no serialization is done via the NoOpSerializer.
129
134
  In case a serializer of type inheriting BaseIdempotencyModelSerializer is given,
130
135
  the serializer is derived from the function return type.
136
+ key_prefix: str | Optional
137
+ Custom prefix for idempotency key: key_prefix#hash
131
138
 
132
139
  Examples
133
140
  --------
@@ -154,6 +161,7 @@ def idempotent_function(
154
161
  persistence_store=persistence_store,
155
162
  config=config,
156
163
  output_serializer=output_serializer,
164
+ key_prefix=key_prefix,
157
165
  **kwargs,
158
166
  ),
159
167
  )
@@ -191,6 +199,7 @@ def idempotent_function(
191
199
  config=config,
192
200
  persistence_store=persistence_store,
193
201
  output_serializer=output_serializer,
202
+ key_prefix=key_prefix,
194
203
  function_args=args,
195
204
  function_kwargs=kwargs,
196
205
  )
@@ -54,7 +54,12 @@ class BasePersistenceLayer(ABC):
54
54
  self.use_local_cache = False
55
55
  self.hash_function = hashlib.md5
56
56
 
57
- def configure(self, config: IdempotencyConfig, function_name: str | None = None) -> None:
57
+ def configure(
58
+ self,
59
+ config: IdempotencyConfig,
60
+ function_name: str | None = None,
61
+ key_prefix: str | None = None,
62
+ ) -> None:
58
63
  """
59
64
  Initialize the base persistence layer from the configuration settings
60
65
 
@@ -64,8 +69,12 @@ class BasePersistenceLayer(ABC):
64
69
  Idempotency configuration settings
65
70
  function_name: str, Optional
66
71
  The name of the function being decorated
72
+ key_prefix: str | Optional
73
+ Custom prefix for idempotency key: key_prefix#hash
67
74
  """
68
- self.function_name = f"{os.getenv(constants.LAMBDA_FUNCTION_NAME_ENV, 'test-func')}.{function_name or ''}"
75
+ self.function_name = (
76
+ key_prefix or f"{os.getenv(constants.LAMBDA_FUNCTION_NAME_ENV, 'test-func')}.{function_name or ''}"
77
+ )
69
78
 
70
79
  if self.configured:
71
80
  # Prevent being reconfigured multiple times
@@ -75,9 +84,7 @@ class BasePersistenceLayer(ABC):
75
84
  self.event_key_jmespath = config.event_key_jmespath
76
85
  if config.event_key_jmespath:
77
86
  self.event_key_compiled_jmespath = jmespath.compile(config.event_key_jmespath)
78
- self.jmespath_options = config.jmespath_options
79
- if not self.jmespath_options:
80
- self.jmespath_options = {"custom_functions": PowertoolsFunctions()}
87
+ self.jmespath_options = config.jmespath_options or {"custom_functions": PowertoolsFunctions()}
81
88
  if config.payload_validation_jmespath:
82
89
  self.validation_key_jmespath = jmespath.compile(config.payload_validation_jmespath)
83
90
  self.payload_validation_enabled = True
@@ -5,7 +5,7 @@ from typing import Any, Optional, Union, get_args, get_origin
5
5
  if sys.version_info >= (3, 10):
6
6
  from types import UnionType # Available in Python 3.10+
7
7
  else:
8
- UnionType = Union # Fallback for Python 3.8 and 3.9
8
+ UnionType = Union # Fallback for Python 3.9
9
9
 
10
10
  from aws_lambda_powertools.utilities.idempotency.exceptions import (
11
11
  IdempotencyModelTypeError,
@@ -109,6 +109,7 @@ from .ses import (
109
109
  )
110
110
  from .sns import SnsModel, SnsNotificationModel, SnsRecordModel
111
111
  from .sqs import SqsAttributesModel, SqsModel, SqsMsgAttributeModel, SqsRecordModel
112
+ from .transfer_family import TransferFamilyAuthorizer
112
113
  from .vpc_lattice import VpcLatticeModel
113
114
  from .vpc_latticev2 import VpcLatticeV2Model
114
115
 
@@ -179,6 +180,7 @@ __all__ = [
179
180
  "SqsAttributesModel",
180
181
  "S3SqsEventNotificationModel",
181
182
  "S3SqsEventNotificationRecordModel",
183
+ "TransferFamilyAuthorizer",
182
184
  "APIGatewayProxyEventModel",
183
185
  "APIGatewayEventRequestContext",
184
186
  "APIGatewayEventAuthorizer",
@@ -72,4 +72,4 @@ class APIGatewayProxyEventV2Model(BaseModel):
72
72
  class ApiGatewayAuthorizerRequestV2(APIGatewayProxyEventV2Model):
73
73
  type: Literal["REQUEST"]
74
74
  routeArn: str
75
- identitySource: List[str]
75
+ identitySource: Optional[List[str]] = None
@@ -0,0 +1,12 @@
1
+ from typing import Literal, Optional
2
+
3
+ from pydantic import BaseModel, Field
4
+ from pydantic.networks import IPvAnyAddress
5
+
6
+
7
+ class TransferFamilyAuthorizer(BaseModel):
8
+ username: str
9
+ password: Optional[str] = None
10
+ protocol: Literal["SFTP", "FTP", "FTPS"]
11
+ server_id: str = Field(..., alias="serverId")
12
+ source_ip: IPvAnyAddress = Field(..., alias="sourceIp")