aws-lambda-powertools 2.16.2__tar.gz → 2.17.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/PKG-INFO +2 -2
  2. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/README.md +1 -1
  3. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/event_handler/api_gateway.py +14 -3
  4. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/logging/formatter.py +11 -8
  5. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/logging/formatters/datadog.py +4 -3
  6. aws_lambda_powertools-2.17.0/aws_lambda_powertools/logging/types.py +50 -0
  7. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/shared/version.py +1 -1
  8. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/__init__.py +4 -0
  9. aws_lambda_powertools-2.17.0/aws_lambda_powertools/utilities/data_classes/aws_config_rule_event.py +361 -0
  10. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/common.py +1 -1
  11. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/dynamo_db_stream_event.py +1 -1
  12. aws_lambda_powertools-2.17.0/aws_lambda_powertools/utilities/data_classes/vpc_lattice.py +91 -0
  13. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/idempotency/base.py +3 -2
  14. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/idempotency/persistence/base.py +35 -6
  15. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/models/__init__.py +10 -0
  16. aws_lambda_powertools-2.17.0/aws_lambda_powertools/utilities/parser/models/cloudformation_custom_resource.py +29 -0
  17. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/pyproject.toml +11 -11
  18. aws_lambda_powertools-2.17.0/setup.py +64 -0
  19. aws_lambda_powertools-2.16.2/setup.py +0 -64
  20. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/LICENSE +0 -0
  21. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/THIRD-PARTY-LICENSES +0 -0
  22. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/__init__.py +0 -0
  23. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/event_handler/__init__.py +0 -0
  24. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/event_handler/appsync.py +0 -0
  25. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/event_handler/content_types.py +0 -0
  26. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/event_handler/exceptions.py +0 -0
  27. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/event_handler/lambda_function_url.py +0 -0
  28. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/event_handler/router.py +0 -0
  29. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/exceptions/__init__.py +0 -0
  30. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/logging/__init__.py +0 -0
  31. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/logging/compat.py +0 -0
  32. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/logging/correlation_paths.py +0 -0
  33. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/logging/exceptions.py +0 -0
  34. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/logging/filters.py +0 -0
  35. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/logging/formatters/__init__.py +0 -0
  36. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/logging/lambda_context.py +0 -0
  37. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/logging/logger.py +0 -0
  38. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/logging/utils.py +0 -0
  39. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/metrics/__init__.py +0 -0
  40. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/metrics/base.py +0 -0
  41. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/metrics/exceptions.py +0 -0
  42. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/metrics/metric.py +0 -0
  43. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/metrics/metrics.py +0 -0
  44. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/metrics/types.py +0 -0
  45. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/middleware_factory/__init__.py +0 -0
  46. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/middleware_factory/exceptions.py +0 -0
  47. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/middleware_factory/factory.py +0 -0
  48. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/package_logger.py +0 -0
  49. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/py.typed +0 -0
  50. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/shared/__init__.py +0 -0
  51. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/shared/cache_dict.py +0 -0
  52. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/shared/constants.py +0 -0
  53. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/shared/cookies.py +0 -0
  54. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/shared/functions.py +0 -0
  55. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/shared/headers_serializer.py +0 -0
  56. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/shared/json_encoder.py +0 -0
  57. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/shared/lazy_import.py +0 -0
  58. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/shared/types.py +0 -0
  59. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/shared/user_agent.py +0 -0
  60. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/tracing/__init__.py +0 -0
  61. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/tracing/base.py +0 -0
  62. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/tracing/extensions.py +0 -0
  63. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/tracing/tracer.py +0 -0
  64. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/__init__.py +0 -0
  65. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/batch/__init__.py +0 -0
  66. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/batch/base.py +0 -0
  67. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/batch/decorators.py +0 -0
  68. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/batch/exceptions.py +0 -0
  69. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/batch/sqs_fifo_partial_processor.py +0 -0
  70. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/batch/types.py +0 -0
  71. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/active_mq_event.py +0 -0
  72. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/alb_event.py +0 -0
  73. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/api_gateway_authorizer_event.py +0 -0
  74. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/api_gateway_proxy_event.py +0 -0
  75. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/appsync/__init__.py +0 -0
  76. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/appsync/scalar_types_utils.py +0 -0
  77. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/appsync_authorizer_event.py +0 -0
  78. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/appsync_resolver_event.py +0 -0
  79. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_custom_widget_event.py +0 -0
  80. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_logs_event.py +0 -0
  81. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/code_pipeline_job_event.py +0 -0
  82. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/cognito_user_pool_event.py +0 -0
  83. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/connect_contact_flow_event.py +0 -0
  84. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/event_bridge_event.py +0 -0
  85. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/event_source.py +0 -0
  86. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/kafka_event.py +0 -0
  87. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/kinesis_firehose_event.py +0 -0
  88. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/kinesis_stream_event.py +0 -0
  89. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/lambda_function_url_event.py +0 -0
  90. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/rabbit_mq_event.py +0 -0
  91. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/s3_event.py +0 -0
  92. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/s3_object_event.py +0 -0
  93. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/ses_event.py +0 -0
  94. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/sns_event.py +0 -0
  95. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/data_classes/sqs_event.py +0 -0
  96. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/feature_flags/__init__.py +0 -0
  97. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/feature_flags/appconfig.py +0 -0
  98. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/feature_flags/base.py +0 -0
  99. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/feature_flags/exceptions.py +0 -0
  100. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/feature_flags/feature_flags.py +0 -0
  101. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/feature_flags/schema.py +0 -0
  102. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/feature_flags/time_conditions.py +0 -0
  103. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/idempotency/__init__.py +0 -0
  104. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/idempotency/config.py +0 -0
  105. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/idempotency/exceptions.py +0 -0
  106. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/idempotency/idempotency.py +0 -0
  107. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/idempotency/persistence/__init__.py +0 -0
  108. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/idempotency/persistence/dynamodb.py +0 -0
  109. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/jmespath_utils/__init__.py +0 -0
  110. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/jmespath_utils/envelopes.py +0 -0
  111. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parameters/__init__.py +0 -0
  112. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parameters/appconfig.py +0 -0
  113. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parameters/base.py +0 -0
  114. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parameters/dynamodb.py +0 -0
  115. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parameters/exceptions.py +0 -0
  116. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parameters/secrets.py +0 -0
  117. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parameters/ssm.py +0 -0
  118. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parameters/types.py +0 -0
  119. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/__init__.py +0 -0
  120. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/envelopes/__init__.py +0 -0
  121. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/envelopes/apigw.py +0 -0
  122. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/envelopes/apigwv2.py +0 -0
  123. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/envelopes/base.py +0 -0
  124. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/envelopes/cloudwatch.py +0 -0
  125. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/envelopes/dynamodb.py +0 -0
  126. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/envelopes/event_bridge.py +0 -0
  127. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/envelopes/kafka.py +0 -0
  128. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/envelopes/kinesis.py +0 -0
  129. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/envelopes/kinesis_firehose.py +0 -0
  130. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/envelopes/lambda_function_url.py +0 -0
  131. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/envelopes/sns.py +0 -0
  132. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/envelopes/sqs.py +0 -0
  133. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/exceptions.py +0 -0
  134. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/models/alb.py +0 -0
  135. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/models/apigw.py +0 -0
  136. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/models/apigwv2.py +0 -0
  137. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/models/cloudwatch.py +0 -0
  138. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/models/dynamodb.py +0 -0
  139. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/models/event_bridge.py +0 -0
  140. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/models/kafka.py +0 -0
  141. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/models/kinesis.py +0 -0
  142. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose.py +0 -0
  143. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose_sqs.py +0 -0
  144. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/models/lambda_function_url.py +0 -0
  145. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/models/s3.py +0 -0
  146. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/models/s3_event_notification.py +0 -0
  147. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/models/s3_object_event.py +0 -0
  148. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/models/ses.py +0 -0
  149. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/models/sns.py +0 -0
  150. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/models/sqs.py +0 -0
  151. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/parser.py +0 -0
  152. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/pydantic.py +0 -0
  153. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/parser/types.py +0 -0
  154. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/streaming/__init__.py +0 -0
  155. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/streaming/_s3_seekable_io.py +0 -0
  156. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/streaming/compat.py +0 -0
  157. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/streaming/s3_object.py +0 -0
  158. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/streaming/transformations/__init__.py +0 -0
  159. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/streaming/transformations/base.py +0 -0
  160. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/streaming/transformations/csv.py +0 -0
  161. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/streaming/transformations/gzip.py +0 -0
  162. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/streaming/transformations/zip.py +0 -0
  163. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/typing/__init__.py +0 -0
  164. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/typing/lambda_client_context.py +0 -0
  165. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/typing/lambda_client_context_mobile_client.py +0 -0
  166. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/typing/lambda_cognito_identity.py +0 -0
  167. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/typing/lambda_context.py +0 -0
  168. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/validation/__init__.py +0 -0
  169. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/validation/base.py +0 -0
  170. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/validation/envelopes.py +0 -0
  171. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/validation/exceptions.py +0 -0
  172. {aws_lambda_powertools-2.16.2 → aws_lambda_powertools-2.17.0}/aws_lambda_powertools/utilities/validation/validator.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: aws-lambda-powertools
3
- Version: 2.16.2
3
+ Version: 2.17.0
4
4
  Summary: Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless best practices and increase developer velocity.
5
5
  Home-page: https://github.com/awslabs/aws-lambda-powertools-python
6
6
  License: MIT
@@ -37,7 +37,7 @@ Description-Content-Type: text/markdown
37
37
  <!-- markdownlint-disable MD013 MD041 MD043 -->
38
38
  # Powertools for AWS Lambda (Python)
39
39
 
40
- [![Build](https://github.com/awslabs/aws-lambda-powertools-python/actions/workflows/python_build.yml/badge.svg)](https://github.com/awslabs/aws-lambda-powertools-python/actions/workflows/python_build.yml)
40
+ [![Build](https://github.com/awslabs/aws-lambda-powertools-python/actions/workflows/quality_check.yml/badge.svg)](https://github.com/awslabs/aws-lambda-powertools-python/actions/workflows/python_build.yml)
41
41
  [![codecov.io](https://codecov.io/github/awslabs/aws-lambda-powertools-python/branch/develop/graphs/badge.svg)](https://app.codecov.io/gh/awslabs/aws-lambda-powertools-python)
42
42
  ![PythonSupport](https://img.shields.io/static/v1?label=python&message=%203.7|%203.8|%203.9|%203.10&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) [![Join our Discord](https://dcbadge.vercel.app/api/server/B8zZKbbyET)](https://discord.gg/B8zZKbbyET)
43
43
 
@@ -1,7 +1,7 @@
1
1
  <!-- markdownlint-disable MD013 MD041 MD043 -->
2
2
  # Powertools for AWS Lambda (Python)
3
3
 
4
- [![Build](https://github.com/awslabs/aws-lambda-powertools-python/actions/workflows/python_build.yml/badge.svg)](https://github.com/awslabs/aws-lambda-powertools-python/actions/workflows/python_build.yml)
4
+ [![Build](https://github.com/awslabs/aws-lambda-powertools-python/actions/workflows/quality_check.yml/badge.svg)](https://github.com/awslabs/aws-lambda-powertools-python/actions/workflows/python_build.yml)
5
5
  [![codecov.io](https://codecov.io/github/awslabs/aws-lambda-powertools-python/branch/develop/graphs/badge.svg)](https://app.codecov.io/gh/awslabs/aws-lambda-powertools-python)
6
6
  ![PythonSupport](https://img.shields.io/static/v1?label=python&message=%203.7|%203.8|%203.9|%203.10&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) [![Join our Discord](https://dcbadge.vercel.app/api/server/B8zZKbbyET)](https://discord.gg/B8zZKbbyET)
7
7
 
@@ -483,7 +483,8 @@ class ApiGatewayResolver(BaseRouter):
483
483
  with api gateways with multiple custom mappings.
484
484
  """
485
485
  self._proxy_type = proxy_type
486
- self._routes: List[Route] = []
486
+ self._dynamic_routes: List[Route] = []
487
+ self._static_routes: List[Route] = []
487
488
  self._route_keys: List[str] = []
488
489
  self._exception_handlers: Dict[Type, Callable] = {}
489
490
  self._cors = cors
@@ -515,7 +516,17 @@ class ApiGatewayResolver(BaseRouter):
515
516
  cors_enabled = cors
516
517
 
517
518
  for item in methods:
518
- self._routes.append(Route(item, self._compile_regex(rule), func, cors_enabled, compress, cache_control))
519
+ _route = Route(item, self._compile_regex(rule), func, cors_enabled, compress, cache_control)
520
+
521
+ # The more specific route wins.
522
+ # We store dynamic (/studies/{studyid}) and static routes (/studies/fetch) separately.
523
+ # Then attempt a match for static routes before dynamic routes.
524
+ # This ensures that the most specific route is prioritized and processed first (studies/fetch).
525
+ if _route.rule.groups > 0:
526
+ self._dynamic_routes.append(_route)
527
+ else:
528
+ self._static_routes.append(_route)
529
+
519
530
  route_key = item + rule
520
531
  if route_key in self._route_keys:
521
532
  warnings.warn(
@@ -624,7 +635,7 @@ class ApiGatewayResolver(BaseRouter):
624
635
  """Resolves the response or return the not found response"""
625
636
  method = self.current_event.http_method.upper()
626
637
  path = self._remove_prefix(self.current_event.path)
627
- for route in self._routes:
638
+ for route in self._static_routes + self._dynamic_routes:
628
639
  if method != route.method:
629
640
  continue
630
641
  match_results: Optional[Match] = route.rule.match(path)
@@ -1,3 +1,5 @@
1
+ from __future__ import annotations
2
+
1
3
  import inspect
2
4
  import json
3
5
  import logging
@@ -8,8 +10,9 @@ from datetime import datetime, timezone
8
10
  from functools import partial
9
11
  from typing import Any, Callable, Dict, Iterable, List, Optional, Tuple, Union
10
12
 
11
- from ..shared import constants
12
- from ..shared.functions import powertools_dev_is_set
13
+ from aws_lambda_powertools.logging.types import LogRecord
14
+ from aws_lambda_powertools.shared import constants
15
+ from aws_lambda_powertools.shared.functions import powertools_dev_is_set
13
16
 
14
17
  RESERVED_LOG_ATTRS = (
15
18
  "name",
@@ -66,12 +69,12 @@ class LambdaPowertoolsFormatter(BasePowertoolsFormatter):
66
69
 
67
70
  def __init__(
68
71
  self,
69
- json_serializer: Optional[Callable[[Dict], str]] = None,
70
- json_deserializer: Optional[Callable[[Union[Dict, str, bool, int, float]], str]] = None,
71
- json_default: Optional[Callable[[Any], Any]] = None,
72
- datefmt: Optional[str] = None,
72
+ json_serializer: Callable[[LogRecord], str] | None = None,
73
+ json_deserializer: Callable[[Dict | str | bool | int | float], str] | None = None,
74
+ json_default: Callable[[Any], Any] | None = None,
75
+ datefmt: str | None = None,
73
76
  use_datetime_directive: bool = False,
74
- log_record_order: Optional[List[str]] = None,
77
+ log_record_order: List[str] | None = None,
75
78
  utc: bool = False,
76
79
  use_rfc3339: bool = False,
77
80
  **kwargs,
@@ -144,7 +147,7 @@ class LambdaPowertoolsFormatter(BasePowertoolsFormatter):
144
147
 
145
148
  super().__init__(datefmt=self.datefmt)
146
149
 
147
- def serialize(self, log: Dict) -> str:
150
+ def serialize(self, log: LogRecord) -> str:
148
151
  """Serialize structured log dict to JSON str"""
149
152
  return self.json_serializer(log)
150
153
 
@@ -1,15 +1,16 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Any, Callable
3
+ from typing import Any, Callable, Dict
4
4
 
5
5
  from aws_lambda_powertools.logging.formatter import LambdaPowertoolsFormatter
6
+ from aws_lambda_powertools.logging.types import LogRecord
6
7
 
7
8
 
8
9
  class DatadogLogFormatter(LambdaPowertoolsFormatter):
9
10
  def __init__(
10
11
  self,
11
- json_serializer: Callable[[dict], str] | None = None,
12
- json_deserializer: Callable[[dict | str | bool | int | float], str] | None = None,
12
+ json_serializer: Callable[[LogRecord], str] | None = None,
13
+ json_deserializer: Callable[[Dict | str | bool | int | float], str] | None = None,
13
14
  json_default: Callable[[Any], Any] | None = None,
14
15
  datefmt: str | None = None,
15
16
  use_datetime_directive: bool = False,
@@ -0,0 +1,50 @@
1
+ from __future__ import annotations
2
+
3
+ import sys
4
+
5
+ if sys.version_info >= (3, 11):
6
+ from typing import NotRequired
7
+ else:
8
+ from typing_extensions import NotRequired
9
+
10
+ if sys.version_info >= (3, 8):
11
+ from typing import TypedDict
12
+ else:
13
+ from typing_extensions import TypedDict
14
+
15
+ if sys.version_info >= (3, 10):
16
+ from typing import TypeAlias
17
+ else:
18
+ from typing_extensions import TypeAlias
19
+
20
+ from typing import Any, Dict, List, Union
21
+
22
+ LogRecord: TypeAlias = Union[Dict[str, Any], "PowertoolsLogRecord"]
23
+
24
+
25
+ class PowertoolsLogRecord(TypedDict):
26
+ # Base fields (required)
27
+ level: str
28
+ location: str
29
+ message: Dict[str, Any] | str | bool | List[Any]
30
+ timestamp: str | int
31
+ service: str
32
+
33
+ # Fields from logger.inject_lambda_context
34
+ cold_start: NotRequired[bool]
35
+ function_name: NotRequired[str]
36
+ function_memory_size: NotRequired[int]
37
+ function_arn: NotRequired[str]
38
+ function_request_id: NotRequired[str]
39
+ # From logger.inject_lambda_context if AWS X-Ray is enabled
40
+ xray_trace_id: NotRequired[str]
41
+
42
+ # If sample_rate is defined
43
+ sampling_rate: NotRequired[float]
44
+
45
+ # From logger.set_correlation_id
46
+ correlation_id: NotRequired[str]
47
+
48
+ # Fields from logger.exception
49
+ exception_name: NotRequired[str]
50
+ exception: NotRequired[str]
@@ -1,3 +1,3 @@
1
1
  """Exposes version constant to avoid circular dependencies."""
2
2
 
3
- VERSION = "2.16.2"
3
+ VERSION = "2.17.0"
@@ -5,6 +5,7 @@ Event Source Data Classes utility provides classes self-describing Lambda event
5
5
  from .alb_event import ALBEvent
6
6
  from .api_gateway_proxy_event import APIGatewayProxyEvent, APIGatewayProxyEventV2
7
7
  from .appsync_resolver_event import AppSyncResolverEvent
8
+ from .aws_config_rule_event import AWSConfigRuleEvent
8
9
  from .cloud_watch_custom_widget_event import CloudWatchDashboardCustomWidgetEvent
9
10
  from .cloud_watch_logs_event import CloudWatchLogsEvent
10
11
  from .code_pipeline_job_event import CodePipelineJobEvent
@@ -20,6 +21,7 @@ from .s3_event import S3Event, S3EventBridgeNotificationEvent
20
21
  from .ses_event import SESEvent
21
22
  from .sns_event import SNSEvent
22
23
  from .sqs_event import SQSEvent
24
+ from .vpc_lattice import VPCLatticeEvent
23
25
 
24
26
  __all__ = [
25
27
  "APIGatewayProxyEvent",
@@ -42,4 +44,6 @@ __all__ = [
42
44
  "SNSEvent",
43
45
  "SQSEvent",
44
46
  "event_source",
47
+ "AWSConfigRuleEvent",
48
+ "VPCLatticeEvent",
45
49
  ]
@@ -0,0 +1,361 @@
1
+ from __future__ import annotations
2
+
3
+ import json
4
+ from typing import Any, Dict, List, Optional
5
+
6
+ from aws_lambda_powertools.utilities.data_classes.common import DictWrapper
7
+
8
+
9
+ def get_invoke_event(
10
+ invoking_event: dict,
11
+ ) -> AWSConfigConfigurationChanged | AWSConfigScheduledNotification | AWSConfigOversizedConfiguration:
12
+ """
13
+ Returns the corresponding event object based on the messageType in the invoking event.
14
+
15
+ Parameters
16
+ ----------
17
+ invoking_event: dict
18
+ The invoking event received.
19
+
20
+ Returns
21
+ -------
22
+ AWSConfigConfigurationChanged | AWSConfigScheduledNotification | AWSConfigOversizedConfiguration:
23
+ The event object based on the messageType in the invoking event.
24
+ """
25
+
26
+ message_type = invoking_event.get("messageType")
27
+
28
+ if message_type == "ScheduledNotification":
29
+ return AWSConfigScheduledNotification(invoking_event)
30
+
31
+ if message_type == "OversizedConfigurationItemChangeNotification":
32
+ return AWSConfigOversizedConfiguration(invoking_event)
33
+
34
+ # Default return is AWSConfigConfigurationChanged event
35
+ return AWSConfigConfigurationChanged(invoking_event)
36
+
37
+
38
+ class AWSConfigConfigurationChanged(DictWrapper):
39
+ @property
40
+ def configuration_item_diff(self) -> Dict:
41
+ """The configuration item diff of the ConfigurationItemChangeNotification event."""
42
+ return self["configurationItemDiff"]
43
+
44
+ @property
45
+ def configuration_item(self) -> AWSConfigConfigurationItemChanged:
46
+ """The configuration item of the ConfigurationItemChangeNotification event."""
47
+ return AWSConfigConfigurationItemChanged(self["configurationItem"])
48
+
49
+ @property
50
+ def raw_configuration_item(self) -> Dict:
51
+ """The raw configuration item of the ConfigurationItemChangeNotification event."""
52
+ return self["configurationItem"]
53
+
54
+ @property
55
+ def record_version(self) -> str:
56
+ """The record version of the ConfigurationItemChangeNotification event."""
57
+ return self["recordVersion"]
58
+
59
+ @property
60
+ def message_type(self) -> str:
61
+ """The message type of the ConfigurationItemChangeNotification event."""
62
+ return self["messageType"]
63
+
64
+ @property
65
+ def notification_creation_time(self) -> str:
66
+ """The notification creation time of the ConfigurationItemChangeNotification event."""
67
+ return self["notificationCreationTime"]
68
+
69
+
70
+ class AWSConfigConfigurationItemChanged(DictWrapper):
71
+ @property
72
+ def related_events(self) -> List:
73
+ """The related events of the ConfigurationItemChangeNotification event."""
74
+ return self["relatedEvents"]
75
+
76
+ @property
77
+ def relationships(self) -> List:
78
+ """The relationships of the ConfigurationItemChangeNotification event."""
79
+ return self["relationships"]
80
+
81
+ @property
82
+ def configuration(self) -> Dict:
83
+ """The configuration of the ConfigurationItemChangeNotification event."""
84
+ return self["configuration"]
85
+
86
+ @property
87
+ def supplementary_configuration(self) -> Dict:
88
+ """The supplementary configuration of the ConfigurationItemChangeNotification event."""
89
+ return self["supplementaryConfiguration"]
90
+
91
+ @property
92
+ def tags(self) -> Dict:
93
+ """The tags of the ConfigurationItemChangeNotification event."""
94
+ return self["tags"]
95
+
96
+ @property
97
+ def configuration_item_version(self) -> str:
98
+ """The configuration item version of the ConfigurationItemChangeNotification event."""
99
+ return self["configurationItemVersion"]
100
+
101
+ @property
102
+ def configuration_item_capture_time(self) -> str:
103
+ """The configuration item capture time of the ConfigurationItemChangeNotification event."""
104
+ return self["configurationItemCaptureTime"]
105
+
106
+ @property
107
+ def configuration_state_id(self) -> str:
108
+ """The configuration state id of the ConfigurationItemChangeNotification event."""
109
+ return self["configurationStateId"]
110
+
111
+ @property
112
+ def accountid(self) -> str:
113
+ """The accountid of the ConfigurationItemChangeNotification event."""
114
+ return self["awsAccountId"]
115
+
116
+ @property
117
+ def configuration_item_status(self) -> str:
118
+ """The configuration item status of the ConfigurationItemChangeNotification event."""
119
+ return self["configurationItemStatus"]
120
+
121
+ @property
122
+ def resource_type(self) -> str:
123
+ """The resource type of the ConfigurationItemChangeNotification event."""
124
+ return self["resourceType"]
125
+
126
+ @property
127
+ def resource_id(self) -> str:
128
+ """The resource id of the ConfigurationItemChangeNotification event."""
129
+ return self["resourceId"]
130
+
131
+ @property
132
+ def resource_name(self) -> str:
133
+ """The resource name of the ConfigurationItemChangeNotification event."""
134
+ return self["resourceName"]
135
+
136
+ @property
137
+ def resource_arn(self) -> str:
138
+ """The resource arn of the ConfigurationItemChangeNotification event."""
139
+ return self["ARN"]
140
+
141
+ @property
142
+ def region(self) -> str:
143
+ """The region of the ConfigurationItemChangeNotification event."""
144
+ return self["awsRegion"]
145
+
146
+ @property
147
+ def availability_zone(self) -> str:
148
+ """The availability zone of the ConfigurationItemChangeNotification event."""
149
+ return self["availabilityZone"]
150
+
151
+ @property
152
+ def configuration_state_md5_hash(self) -> str:
153
+ """The md5 hash of the state of the ConfigurationItemChangeNotification event."""
154
+ return self["configurationStateMd5Hash"]
155
+
156
+ @property
157
+ def resource_creation_time(self) -> str:
158
+ """The resource creation time of the ConfigurationItemChangeNotification event."""
159
+ return self["resourceCreationTime"]
160
+
161
+
162
+ class AWSConfigScheduledNotification(DictWrapper):
163
+ @property
164
+ def accountid(self) -> str:
165
+ """The accountid of the ScheduledNotification event."""
166
+ return self["awsAccountId"]
167
+
168
+ @property
169
+ def notification_creation_time(self) -> str:
170
+ """The notification creation time of the ScheduledNotification event."""
171
+ return self["notificationCreationTime"]
172
+
173
+ @property
174
+ def record_version(self) -> str:
175
+ """The record version of the ScheduledNotification event."""
176
+ return self["recordVersion"]
177
+
178
+ @property
179
+ def message_type(self) -> str:
180
+ """The message type of the ScheduledNotification event."""
181
+ return self["messageType"]
182
+
183
+
184
+ class AWSConfigOversizedConfiguration(DictWrapper):
185
+ @property
186
+ def configuration_item_summary(self) -> AWSConfigOversizedConfigurationItemSummary:
187
+ """The configuration item summary of the OversizedConfiguration event."""
188
+ return AWSConfigOversizedConfigurationItemSummary(self["configurationItemSummary"])
189
+
190
+ @property
191
+ def raw_configuration_item_summary(self) -> str:
192
+ """The raw configuration item summary of the OversizedConfiguration event."""
193
+ return self["configurationItemSummary"]
194
+
195
+ @property
196
+ def message_type(self) -> str:
197
+ """The message type of the OversizedConfiguration event."""
198
+ return self["messageType"]
199
+
200
+ @property
201
+ def notification_creation_time(self) -> str:
202
+ """The notification creation time of the OversizedConfiguration event."""
203
+ return self["notificationCreationTime"]
204
+
205
+ @property
206
+ def record_version(self) -> str:
207
+ """The record version of the OversizedConfiguration event."""
208
+ return self["recordVersion"]
209
+
210
+
211
+ class AWSConfigOversizedConfigurationItemSummary(DictWrapper):
212
+ @property
213
+ def change_type(self) -> str:
214
+ """The change type of the OversizedConfiguration event."""
215
+ return self["changeType"]
216
+
217
+ @property
218
+ def configuration_item_version(self) -> str:
219
+ """The configuration item version of the OversizedConfiguration event."""
220
+ return self["configurationItemVersion"]
221
+
222
+ @property
223
+ def configuration_item_capture_time(self) -> str:
224
+ """The configuration item capture time of the OversizedConfiguration event."""
225
+ return self["configurationItemCaptureTime"]
226
+
227
+ @property
228
+ def configuration_state_id(self) -> str:
229
+ """The configuration state id of the OversizedConfiguration event."""
230
+ return self["configurationStateId"]
231
+
232
+ @property
233
+ def accountid(self) -> str:
234
+ """The accountid of the OversizedConfiguration event."""
235
+ return self["awsAccountId"]
236
+
237
+ @property
238
+ def configuration_item_status(self) -> str:
239
+ """The configuration item status of the OversizedConfiguration event."""
240
+ return self["configurationItemStatus"]
241
+
242
+ @property
243
+ def resource_type(self) -> str:
244
+ """The resource type of the OversizedConfiguration event."""
245
+ return self["resourceType"]
246
+
247
+ @property
248
+ def resource_id(self) -> str:
249
+ """The resource id of the OversizedConfiguration event."""
250
+ return self["resourceId"]
251
+
252
+ @property
253
+ def resource_name(self) -> str:
254
+ """The resource name of the OversizedConfiguration event."""
255
+ return self["resourceName"]
256
+
257
+ @property
258
+ def resource_arn(self) -> str:
259
+ """The resource arn of the OversizedConfiguration event."""
260
+ return self["ARN"]
261
+
262
+ @property
263
+ def region(self) -> str:
264
+ """The region of the OversizedConfiguration event."""
265
+ return self["awsRegion"]
266
+
267
+ @property
268
+ def availability_zone(self) -> str:
269
+ """The availability zone of the OversizedConfiguration event."""
270
+ return self["availabilityZone"]
271
+
272
+ @property
273
+ def configuration_state_md5_hash(self) -> str:
274
+ """The state md5 hash of the OversizedConfiguration event."""
275
+ return self["configurationStateMd5Hash"]
276
+
277
+ @property
278
+ def resource_creation_time(self) -> str:
279
+ """The resource creation time of the OversizedConfiguration event."""
280
+ return self["resourceCreationTime"]
281
+
282
+
283
+ class AWSConfigRuleEvent(DictWrapper):
284
+ """Events for AWS Config Rules
285
+ Documentation:
286
+ --------------
287
+ - https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_develop-rules_lambda-functions.html
288
+ """
289
+
290
+ def __init__(self, data: Dict[str, Any]):
291
+ super().__init__(data)
292
+ self._invoking_event: Optional[Any] = None
293
+ self._rule_parameters: Optional[Any] = None
294
+
295
+ @property
296
+ def version(self) -> str:
297
+ """The version of the event."""
298
+ return self["version"]
299
+
300
+ @property
301
+ def invoking_event(
302
+ self,
303
+ ) -> AWSConfigConfigurationChanged | AWSConfigScheduledNotification | AWSConfigOversizedConfiguration:
304
+ """The invoking payload of the event."""
305
+ if self._invoking_event is None:
306
+ self._invoking_event = self["invokingEvent"]
307
+
308
+ return get_invoke_event(json.loads(self._invoking_event))
309
+
310
+ @property
311
+ def raw_invoking_event(self) -> str:
312
+ """The raw invoking payload of the event."""
313
+ return self["invokingEvent"]
314
+
315
+ @property
316
+ def rule_parameters(self) -> Dict:
317
+ """The parameters of the event."""
318
+ if self._rule_parameters is None:
319
+ self._rule_parameters = self["ruleParameters"]
320
+
321
+ return json.loads(self._rule_parameters)
322
+
323
+ @property
324
+ def result_token(self) -> str:
325
+ """The result token of the event."""
326
+ return self["resultToken"]
327
+
328
+ @property
329
+ def event_left_scope(self) -> bool:
330
+ """The left scope of the event."""
331
+ return self["eventLeftScope"]
332
+
333
+ @property
334
+ def execution_role_arn(self) -> str:
335
+ """The execution role arn of the event."""
336
+ return self["executionRoleArn"]
337
+
338
+ @property
339
+ def config_rule_arn(self) -> str:
340
+ """The arn of the rule of the event."""
341
+ return self["configRuleArn"]
342
+
343
+ @property
344
+ def config_rule_name(self) -> str:
345
+ """The name of the rule of the event."""
346
+ return self["configRuleName"]
347
+
348
+ @property
349
+ def config_rule_id(self) -> str:
350
+ """The id of the rule of the event."""
351
+ return self["configRuleId"]
352
+
353
+ @property
354
+ def accountid(self) -> str:
355
+ """The accountid of the event."""
356
+ return self["accountId"]
357
+
358
+ @property
359
+ def evalution_mode(self) -> Optional[str]:
360
+ """The evalution mode of the event."""
361
+ return self.get("evaluationMode")
@@ -16,7 +16,7 @@ class DictWrapper(Mapping):
16
16
  data : Dict[str, Any]
17
17
  Lambda Event Source Event payload
18
18
  json_deserializer : Callable, optional
19
- function to deserialize `str`, `bytes`, bytearray` containing a JSON document to a Python `obj`,
19
+ function to deserialize `str`, `bytes`, `bytearray` containing a JSON document to a Python `obj`,
20
20
  by default json.loads
21
21
  """
22
22
  self._data = data
@@ -39,7 +39,7 @@ class TypeDeserializer:
39
39
  -------- ------
40
40
  {'NULL': True} None
41
41
  {'BOOL': True/False} True/False
42
- {'N': str(value)} str(value)
42
+ {'N': Decimal(value)} Decimal(value)
43
43
  {'S': string} string
44
44
  {'B': bytes} bytes
45
45
  {'NS': [str(value)]} set([str(value)])