aws-lambda-powertools 3.5.1a8__tar.gz → 3.5.1a9__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.5.1a8 → aws_lambda_powertools-3.5.1a9}/PKG-INFO +1 -1
  2. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/shared/version.py +1 -1
  3. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/api_gateway_authorizer_event.py +157 -16
  4. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/pyproject.toml +2 -2
  5. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/setup.py +1 -1
  6. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/LICENSE +0 -0
  7. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/README.md +0 -0
  8. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/THIRD-PARTY-LICENSES +0 -0
  9. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/__init__.py +0 -0
  10. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/__init__.py +0 -0
  11. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/api_gateway.py +0 -0
  12. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/appsync.py +0 -0
  13. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/bedrock_agent.py +0 -0
  14. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/content_types.py +0 -0
  15. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/exceptions.py +0 -0
  16. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/graphql_appsync/__init__.py +0 -0
  17. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/graphql_appsync/_registry.py +0 -0
  18. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/graphql_appsync/base.py +0 -0
  19. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/graphql_appsync/exceptions.py +0 -0
  20. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/graphql_appsync/router.py +0 -0
  21. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/lambda_function_url.py +0 -0
  22. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/middlewares/__init__.py +0 -0
  23. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/middlewares/base.py +0 -0
  24. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/middlewares/openapi_validation.py +0 -0
  25. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/middlewares/schema_validation.py +0 -0
  26. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/openapi/__init__.py +0 -0
  27. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/openapi/compat.py +0 -0
  28. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/openapi/constants.py +0 -0
  29. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/openapi/dependant.py +0 -0
  30. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/openapi/encoders.py +0 -0
  31. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/openapi/exceptions.py +0 -0
  32. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/openapi/models.py +0 -0
  33. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/openapi/params.py +0 -0
  34. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/openapi/pydantic_loader.py +0 -0
  35. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/openapi/swagger_ui/__init__.py +0 -0
  36. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/openapi/swagger_ui/html.py +0 -0
  37. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/openapi/swagger_ui/oauth2.py +0 -0
  38. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/openapi/swagger_ui/swagger-ui-bundle.min.js +0 -0
  39. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/openapi/swagger_ui/swagger-ui.min.css +0 -0
  40. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/openapi/types.py +0 -0
  41. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/router.py +0 -0
  42. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/types.py +0 -0
  43. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/util.py +0 -0
  44. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/event_handler/vpc_lattice.py +0 -0
  45. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/exceptions/__init__.py +0 -0
  46. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/logging/__init__.py +0 -0
  47. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/logging/constants.py +0 -0
  48. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/logging/correlation_paths.py +0 -0
  49. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/logging/exceptions.py +0 -0
  50. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/logging/filters.py +0 -0
  51. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/logging/formatter.py +0 -0
  52. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/logging/formatters/__init__.py +0 -0
  53. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/logging/formatters/datadog.py +0 -0
  54. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/logging/lambda_context.py +0 -0
  55. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/logging/logger.py +0 -0
  56. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/logging/types.py +0 -0
  57. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/logging/utils.py +0 -0
  58. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/metrics/__init__.py +0 -0
  59. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/metrics/base.py +0 -0
  60. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/metrics/exceptions.py +0 -0
  61. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/metrics/functions.py +0 -0
  62. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/metrics/metric.py +0 -0
  63. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/metrics/metrics.py +0 -0
  64. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/metrics/provider/__init__.py +0 -0
  65. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/metrics/provider/base.py +0 -0
  66. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/__init__.py +0 -0
  67. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/cloudwatch.py +0 -0
  68. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/constants.py +0 -0
  69. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/exceptions.py +0 -0
  70. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/metric_properties.py +0 -0
  71. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/types.py +0 -0
  72. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/metrics/provider/cold_start.py +0 -0
  73. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/metrics/provider/datadog/__init__.py +0 -0
  74. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/metrics/provider/datadog/datadog.py +0 -0
  75. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/metrics/provider/datadog/metrics.py +0 -0
  76. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/metrics/provider/datadog/warnings.py +0 -0
  77. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/metrics/types.py +0 -0
  78. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/middleware_factory/__init__.py +0 -0
  79. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/middleware_factory/exceptions.py +0 -0
  80. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/middleware_factory/factory.py +0 -0
  81. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/package_logger.py +0 -0
  82. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/py.typed +0 -0
  83. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/shared/__init__.py +0 -0
  84. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/shared/cache_dict.py +0 -0
  85. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/shared/constants.py +0 -0
  86. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/shared/cookies.py +0 -0
  87. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/shared/dynamodb_deserializer.py +0 -0
  88. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/shared/functions.py +0 -0
  89. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/shared/headers_serializer.py +0 -0
  90. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/shared/json_encoder.py +0 -0
  91. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/shared/lazy_import.py +0 -0
  92. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/shared/types.py +0 -0
  93. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/shared/user_agent.py +0 -0
  94. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/tracing/__init__.py +0 -0
  95. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/tracing/base.py +0 -0
  96. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/tracing/extensions.py +0 -0
  97. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/tracing/tracer.py +0 -0
  98. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/__init__.py +0 -0
  99. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/batch/__init__.py +0 -0
  100. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/batch/base.py +0 -0
  101. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/batch/decorators.py +0 -0
  102. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/batch/exceptions.py +0 -0
  103. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/batch/sqs_fifo_partial_processor.py +0 -0
  104. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/batch/types.py +0 -0
  105. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/__init__.py +0 -0
  106. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/active_mq_event.py +0 -0
  107. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/alb_event.py +0 -0
  108. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/api_gateway_proxy_event.py +0 -0
  109. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/appsync/__init__.py +0 -0
  110. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/appsync/scalar_types_utils.py +0 -0
  111. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/appsync_authorizer_event.py +0 -0
  112. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/appsync_resolver_event.py +0 -0
  113. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/aws_config_rule_event.py +0 -0
  114. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/bedrock_agent_event.py +0 -0
  115. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/cloud_watch_alarm_event.py +0 -0
  116. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/cloud_watch_custom_widget_event.py +0 -0
  117. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/cloud_watch_logs_event.py +0 -0
  118. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/cloudformation_custom_resource_event.py +0 -0
  119. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/code_deploy_lifecycle_hook_event.py +0 -0
  120. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/code_pipeline_job_event.py +0 -0
  121. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/cognito_user_pool_event.py +0 -0
  122. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/common.py +0 -0
  123. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/connect_contact_flow_event.py +0 -0
  124. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/dynamo_db_stream_event.py +0 -0
  125. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/event_bridge_event.py +0 -0
  126. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/event_source.py +0 -0
  127. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/kafka_event.py +0 -0
  128. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/kinesis_firehose_event.py +0 -0
  129. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/kinesis_stream_event.py +0 -0
  130. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/lambda_function_url_event.py +0 -0
  131. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/rabbit_mq_event.py +0 -0
  132. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/s3_batch_operation_event.py +0 -0
  133. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/s3_event.py +0 -0
  134. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/s3_object_event.py +0 -0
  135. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/secrets_manager_event.py +0 -0
  136. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/ses_event.py +0 -0
  137. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/shared_functions.py +0 -0
  138. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/sns_event.py +0 -0
  139. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/sqs_event.py +0 -0
  140. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/transfer_family_event.py +0 -0
  141. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_classes/vpc_lattice.py +0 -0
  142. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_masking/__init__.py +0 -0
  143. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_masking/base.py +0 -0
  144. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_masking/constants.py +0 -0
  145. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_masking/exceptions.py +0 -0
  146. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_masking/provider/__init__.py +0 -0
  147. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_masking/provider/base.py +0 -0
  148. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_masking/provider/kms/__init__.py +0 -0
  149. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/data_masking/provider/kms/aws_encryption_sdk.py +0 -0
  150. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/feature_flags/__init__.py +0 -0
  151. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/feature_flags/appconfig.py +0 -0
  152. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/feature_flags/base.py +0 -0
  153. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/feature_flags/comparators.py +0 -0
  154. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/feature_flags/constants.py +0 -0
  155. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/feature_flags/exceptions.py +0 -0
  156. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/feature_flags/feature_flags.py +0 -0
  157. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/feature_flags/schema.py +0 -0
  158. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/feature_flags/types.py +0 -0
  159. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/idempotency/__init__.py +0 -0
  160. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/idempotency/base.py +0 -0
  161. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/idempotency/config.py +0 -0
  162. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/idempotency/exceptions.py +0 -0
  163. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/idempotency/hook.py +0 -0
  164. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/idempotency/idempotency.py +0 -0
  165. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/idempotency/persistence/__init__.py +0 -0
  166. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/idempotency/persistence/base.py +0 -0
  167. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/idempotency/persistence/datarecord.py +0 -0
  168. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/idempotency/persistence/dynamodb.py +0 -0
  169. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/idempotency/persistence/redis.py +0 -0
  170. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/idempotency/serialization/__init__.py +0 -0
  171. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/idempotency/serialization/base.py +0 -0
  172. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/idempotency/serialization/custom_dict.py +0 -0
  173. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/idempotency/serialization/dataclass.py +0 -0
  174. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/idempotency/serialization/functions.py +0 -0
  175. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/idempotency/serialization/no_op.py +0 -0
  176. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/idempotency/serialization/pydantic.py +0 -0
  177. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/jmespath_utils/__init__.py +0 -0
  178. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/jmespath_utils/envelopes.py +0 -0
  179. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parameters/__init__.py +0 -0
  180. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parameters/appconfig.py +0 -0
  181. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parameters/base.py +0 -0
  182. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parameters/constants.py +0 -0
  183. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parameters/dynamodb.py +0 -0
  184. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parameters/exceptions.py +0 -0
  185. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parameters/secrets.py +0 -0
  186. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parameters/ssm.py +0 -0
  187. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parameters/types.py +0 -0
  188. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/__init__.py +0 -0
  189. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/envelopes/__init__.py +0 -0
  190. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/envelopes/apigw.py +0 -0
  191. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/envelopes/apigw_websocket.py +0 -0
  192. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/envelopes/apigwv2.py +0 -0
  193. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/envelopes/base.py +0 -0
  194. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/envelopes/bedrock_agent.py +0 -0
  195. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/envelopes/cloudwatch.py +0 -0
  196. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/envelopes/dynamodb.py +0 -0
  197. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/envelopes/event_bridge.py +0 -0
  198. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/envelopes/kafka.py +0 -0
  199. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/envelopes/kinesis.py +0 -0
  200. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/envelopes/kinesis_firehose.py +0 -0
  201. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/envelopes/lambda_function_url.py +0 -0
  202. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/envelopes/sns.py +0 -0
  203. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/envelopes/sqs.py +0 -0
  204. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/envelopes/vpc_lattice.py +0 -0
  205. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/envelopes/vpc_latticev2.py +0 -0
  206. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/exceptions.py +0 -0
  207. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/functions.py +0 -0
  208. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/__init__.py +0 -0
  209. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/alb.py +0 -0
  210. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/apigw.py +0 -0
  211. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/apigw_websocket.py +0 -0
  212. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/apigwv2.py +0 -0
  213. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/bedrock_agent.py +0 -0
  214. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/cloudformation_custom_resource.py +0 -0
  215. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/cloudwatch.py +0 -0
  216. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/dynamodb.py +0 -0
  217. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/event_bridge.py +0 -0
  218. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/kafka.py +0 -0
  219. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/kinesis.py +0 -0
  220. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose.py +0 -0
  221. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose_sqs.py +0 -0
  222. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/lambda_function_url.py +0 -0
  223. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/s3.py +0 -0
  224. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/s3_batch_operation.py +0 -0
  225. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/s3_event_notification.py +0 -0
  226. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/s3_object_event.py +0 -0
  227. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/ses.py +0 -0
  228. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/sns.py +0 -0
  229. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/sqs.py +0 -0
  230. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/transfer_family.py +0 -0
  231. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/vpc_lattice.py +0 -0
  232. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/models/vpc_latticev2.py +0 -0
  233. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/parser.py +0 -0
  234. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/parser/types.py +0 -0
  235. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/serialization.py +0 -0
  236. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/streaming/__init__.py +0 -0
  237. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/streaming/_s3_seekable_io.py +0 -0
  238. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/streaming/compat.py +0 -0
  239. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/streaming/constants.py +0 -0
  240. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/streaming/s3_object.py +0 -0
  241. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/streaming/transformations/__init__.py +0 -0
  242. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/streaming/transformations/base.py +0 -0
  243. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/streaming/transformations/csv.py +0 -0
  244. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/streaming/transformations/gzip.py +0 -0
  245. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/streaming/transformations/zip.py +0 -0
  246. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/streaming/types.py +0 -0
  247. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/typing/__init__.py +0 -0
  248. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/typing/lambda_client_context.py +0 -0
  249. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/typing/lambda_client_context_mobile_client.py +0 -0
  250. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/typing/lambda_cognito_identity.py +0 -0
  251. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/typing/lambda_context.py +0 -0
  252. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/validation/__init__.py +0 -0
  253. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/validation/base.py +0 -0
  254. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/validation/envelopes.py +0 -0
  255. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/validation/exceptions.py +0 -0
  256. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/aws_lambda_powertools/utilities/validation/validator.py +0 -0
  257. {aws_lambda_powertools-3.5.1a8 → aws_lambda_powertools-3.5.1a9}/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.5.1a8
3
+ Version: 3.5.1a9
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.5.1a8"
3
+ VERSION = "3.5.1a9"
@@ -5,7 +5,7 @@ import re
5
5
  import warnings
6
6
  from typing import Any, overload
7
7
 
8
- from typing_extensions import deprecated
8
+ from typing_extensions import deprecated, override
9
9
 
10
10
  from aws_lambda_powertools.utilities.data_classes.common import (
11
11
  BaseRequestContext,
@@ -28,9 +28,10 @@ class APIGatewayRouteArn:
28
28
  aws_account_id: str,
29
29
  api_id: str,
30
30
  stage: str,
31
- http_method: str,
31
+ http_method: str | None,
32
32
  resource: str,
33
33
  partition: str = "aws",
34
+ is_websocket_authorizer: bool = False,
34
35
  ):
35
36
  self.partition = partition
36
37
  self.region = region
@@ -40,39 +41,54 @@ class APIGatewayRouteArn:
40
41
  self.http_method = http_method
41
42
  # Remove matching "/" from `resource`.
42
43
  self.resource = resource.lstrip("/")
44
+ self.is_websocket_authorizer = is_websocket_authorizer
43
45
 
44
46
  @property
45
47
  def arn(self) -> str:
46
48
  """Build an arn from its parts
47
49
  eg: arn:aws:execute-api:us-east-1:123456789012:abcdef123/test/GET/request"""
48
- return (
49
- f"arn:{self.partition}:execute-api:{self.region}:{self.aws_account_id}:{self.api_id}/{self.stage}/"
50
- f"{self.http_method}/{self.resource}"
51
- )
50
+ base_arn = f"arn:{self.partition}:execute-api:{self.region}:{self.aws_account_id}:{self.api_id}/{self.stage}"
51
+
52
+ if not self.is_websocket_authorizer:
53
+ return f"{base_arn}/{self.http_method}/{self.resource}"
54
+ else:
55
+ return f"{base_arn}/{self.resource}"
52
56
 
53
57
 
54
- def parse_api_gateway_arn(arn: str) -> APIGatewayRouteArn:
58
+ def parse_api_gateway_arn(arn: str, is_websocket_authorizer: bool = False) -> APIGatewayRouteArn:
55
59
  """Parses a gateway route arn as a APIGatewayRouteArn class
56
60
 
57
61
  Parameters
58
62
  ----------
59
63
  arn : str
60
64
  ARN string for a methodArn or a routeArn
65
+ is_websocket_authorizer: bool
66
+ If it's a API Gateway Websocket
67
+
61
68
  Returns
62
69
  -------
63
70
  APIGatewayRouteArn
64
71
  """
65
72
  arn_parts = arn.split(":")
66
73
  api_gateway_arn_parts = arn_parts[5].split("/")
74
+
75
+ if not is_websocket_authorizer:
76
+ http_method = api_gateway_arn_parts[2]
77
+ resource = "/".join(api_gateway_arn_parts[3:]) if len(api_gateway_arn_parts) >= 4 else ""
78
+ else:
79
+ http_method = None
80
+ resource = "/".join(api_gateway_arn_parts[2:])
81
+
67
82
  return APIGatewayRouteArn(
68
83
  partition=arn_parts[1],
69
84
  region=arn_parts[3],
70
85
  aws_account_id=arn_parts[4],
71
86
  api_id=api_gateway_arn_parts[0],
72
87
  stage=api_gateway_arn_parts[1],
73
- http_method=api_gateway_arn_parts[2],
88
+ http_method=http_method,
74
89
  # conditional allow us to handle /path/{proxy+} resources, as their length changes.
75
- resource="/".join(api_gateway_arn_parts[3:]) if len(api_gateway_arn_parts) >= 4 else "",
90
+ resource=resource,
91
+ is_websocket_authorizer=is_websocket_authorizer,
76
92
  )
77
93
 
78
94
 
@@ -512,13 +528,14 @@ class APIGatewayAuthorizerResponse:
512
528
  raise ValueError(f"Invalid resource path: {resource}. Path should match {self.path_regex}")
513
529
 
514
530
  resource_arn = APIGatewayRouteArn(
515
- self.region,
516
- self.aws_account_id,
517
- self.api_id,
518
- self.stage,
519
- http_method,
520
- resource,
521
- self.partition,
531
+ region=self.region,
532
+ aws_account_id=self.aws_account_id,
533
+ api_id=self.api_id,
534
+ stage=self.stage,
535
+ http_method=http_method,
536
+ resource=resource,
537
+ partition=self.partition,
538
+ is_websocket_authorizer=False,
522
539
  ).arn
523
540
 
524
541
  route = {"resourceArn": resource_arn, "conditions": conditions}
@@ -617,3 +634,127 @@ class APIGatewayAuthorizerResponse:
617
634
  response["context"] = self.context
618
635
 
619
636
  return response
637
+
638
+
639
+ class APIGatewayAuthorizerResponseWebSocket(APIGatewayAuthorizerResponse):
640
+ """The IAM Policy Response required for API Gateway WebSocket APIs
641
+
642
+ Based on: - https://github.com/awslabs/aws-apigateway-lambda-authorizer-blueprints/blob/\
643
+ master/blueprints/python/api-gateway-authorizer-python.py
644
+
645
+ Documentation:
646
+ -------------
647
+ - https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html
648
+ - https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-lambda-authorizer-output.html
649
+ """
650
+
651
+ @staticmethod
652
+ def from_route_arn(
653
+ arn: str,
654
+ principal_id: str,
655
+ context: dict | None = None,
656
+ usage_identifier_key: str | None = None,
657
+ ) -> APIGatewayAuthorizerResponseWebSocket:
658
+ parsed_arn = parse_api_gateway_arn(arn, is_websocket_authorizer=True)
659
+ return APIGatewayAuthorizerResponseWebSocket(
660
+ principal_id,
661
+ parsed_arn.region,
662
+ parsed_arn.aws_account_id,
663
+ parsed_arn.api_id,
664
+ parsed_arn.stage,
665
+ context,
666
+ usage_identifier_key,
667
+ )
668
+
669
+ # Note: we need ignore[override] because we are removing the http_method field
670
+ @override
671
+ def _add_route(self, effect: str, resource: str, conditions: list[dict] | None = None): # type: ignore[override]
672
+ """Adds a route to the internal lists of allowed or denied routes. Each object in
673
+ the internal list contains a resource ARN and a condition statement. The condition
674
+ statement can be null."""
675
+ resource_arn = APIGatewayRouteArn(
676
+ region=self.region,
677
+ aws_account_id=self.aws_account_id,
678
+ api_id=self.api_id,
679
+ stage=self.stage,
680
+ http_method=None,
681
+ resource=resource,
682
+ partition=self.partition,
683
+ is_websocket_authorizer=True,
684
+ ).arn
685
+
686
+ route = {"resourceArn": resource_arn, "conditions": conditions}
687
+
688
+ if effect.lower() == "allow":
689
+ self._allow_routes.append(route)
690
+ else: # deny
691
+ self._deny_routes.append(route)
692
+
693
+ @override
694
+ def allow_all_routes(self):
695
+ """Adds a '*' allow to the policy to authorize access to all methods of an API"""
696
+ self._add_route(effect="Allow", resource="*")
697
+
698
+ @override
699
+ def deny_all_routes(self):
700
+ """Adds a '*' allow to the policy to deny access to all methods of an API"""
701
+
702
+ self._add_route(effect="Deny", resource="*")
703
+
704
+ # Note: we need ignore[override] because we are removing the http_method field
705
+ @override
706
+ def allow_route(self, resource: str, conditions: list[dict] | None = None): # type: ignore[override]
707
+ """
708
+ Add an API Gateway Websocket method to the list of allowed methods for the policy.
709
+
710
+ This method adds an API Gateway Websocket method Resource path) to the list of
711
+ allowed methods for the policy. It optionally includes conditions for the policy statement.
712
+
713
+ Parameters
714
+ ----------
715
+ resource : str
716
+ The API Gateway resource path to allow.
717
+ conditions : list[dict] | None, optional
718
+ A list of condition dictionaries to apply to the policy statement.
719
+ Default is None.
720
+
721
+ Notes
722
+ -----
723
+ For more information on AWS policy conditions, see:
724
+ https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Condition
725
+
726
+ Example
727
+ --------
728
+ >>> policy = APIGatewayAuthorizerResponseWebSocket(...)
729
+ >>> policy.allow_route("/api/users", [{"StringEquals": {"aws:RequestTag/Environment": "Production"}}])
730
+ """
731
+ self._add_route(effect="Allow", resource=resource, conditions=conditions)
732
+
733
+ # Note: we need ignore[override] because we are removing the http_method field
734
+ @override
735
+ def deny_route(self, resource: str, conditions: list[dict] | None = None): # type: ignore[override]
736
+ """
737
+ Add an API Gateway Websocket method to the list of allowed methods for the policy.
738
+
739
+ This method adds an API Gateway Websocket method Resource path) to the list of
740
+ denied methods for the policy. It optionally includes conditions for the policy statement.
741
+
742
+ Parameters
743
+ ----------
744
+ resource : str
745
+ The API Gateway resource path to allow.
746
+ conditions : list[dict] | None, optional
747
+ A list of condition dictionaries to apply to the policy statement.
748
+ Default is None.
749
+
750
+ Notes
751
+ -----
752
+ For more information on AWS policy conditions, see:
753
+ https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Condition
754
+
755
+ Example
756
+ --------
757
+ >>> policy = APIGatewayAuthorizerResponseWebSocket(...)
758
+ >>> policy.deny_route("/api/users", [{"StringEquals": {"aws:RequestTag/Environment": "Production"}}])
759
+ """
760
+ self._add_route(effect="Deny", resource=resource, conditions=conditions)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "aws_lambda_powertools"
3
- version = "3.5.1a8"
3
+ version = "3.5.1a9"
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"]
@@ -113,7 +113,7 @@ types-python-dateutil = "^2.8.19.6"
113
113
  aws-cdk-aws-appsync-alpha = "^2.59.0a0"
114
114
  httpx = ">=0.23.3,<0.29.0"
115
115
  sentry-sdk = ">=1.22.2,<3.0.0"
116
- ruff = ">=0.5.1,<0.9.6"
116
+ ruff = ">=0.5.1,<0.9.7"
117
117
  retry2 = "^0.9.5"
118
118
  pytest-socket = ">=0.6,<0.8"
119
119
  types-redis = "^4.6.0.7"
@@ -64,7 +64,7 @@ extras_require = \
64
64
 
65
65
  setup_kwargs = {
66
66
  'name': 'aws_lambda_powertools',
67
- 'version': '3.5.1a8',
67
+ 'version': '3.5.1a9',
68
68
  'description': 'Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless best practices and increase developer velocity.',
69
69
  '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.8|%203.9|%203.10|%203.11|%203.12&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* [IMS](https://ims.tech/)\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',
70
70
  'author': 'Amazon Web Services',