aws-lambda-powertools 2.38.0__tar.gz → 2.38.1__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 (239) hide show
  1. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/PKG-INFO +1 -1
  2. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/logging/constants.py +1 -1
  3. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/logging/exceptions.py +0 -4
  4. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/logging/logger.py +7 -28
  5. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/shared/version.py +1 -1
  6. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/pyproject.toml +1 -1
  7. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/setup.py +1 -1
  8. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/LICENSE +0 -0
  9. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/README.md +0 -0
  10. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/THIRD-PARTY-LICENSES +0 -0
  11. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/__init__.py +0 -0
  12. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/__init__.py +0 -0
  13. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/api_gateway.py +0 -0
  14. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/appsync.py +0 -0
  15. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/bedrock_agent.py +0 -0
  16. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/content_types.py +0 -0
  17. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/exceptions.py +0 -0
  18. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/lambda_function_url.py +0 -0
  19. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/middlewares/__init__.py +0 -0
  20. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/middlewares/base.py +0 -0
  21. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/middlewares/openapi_validation.py +0 -0
  22. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/middlewares/schema_validation.py +0 -0
  23. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/openapi/__init__.py +0 -0
  24. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/openapi/compat.py +0 -0
  25. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/openapi/constants.py +0 -0
  26. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/openapi/dependant.py +0 -0
  27. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/openapi/encoders.py +0 -0
  28. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/openapi/exceptions.py +0 -0
  29. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/openapi/models.py +0 -0
  30. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/openapi/params.py +0 -0
  31. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/openapi/pydantic_loader.py +0 -0
  32. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/openapi/swagger_ui/__init__.py +0 -0
  33. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/openapi/swagger_ui/html.py +0 -0
  34. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/openapi/swagger_ui/oauth2.py +0 -0
  35. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/openapi/swagger_ui/swagger-ui-bundle.min.js +0 -0
  36. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/openapi/swagger_ui/swagger-ui.min.css +0 -0
  37. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/openapi/types.py +0 -0
  38. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/router.py +0 -0
  39. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/types.py +0 -0
  40. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/util.py +0 -0
  41. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/event_handler/vpc_lattice.py +0 -0
  42. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/exceptions/__init__.py +0 -0
  43. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/logging/__init__.py +0 -0
  44. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/logging/correlation_paths.py +0 -0
  45. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/logging/filters.py +0 -0
  46. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/logging/formatter.py +0 -0
  47. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/logging/formatters/__init__.py +0 -0
  48. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/logging/formatters/datadog.py +0 -0
  49. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/logging/lambda_context.py +0 -0
  50. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/logging/types.py +0 -0
  51. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/logging/utils.py +0 -0
  52. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/metrics/__init__.py +0 -0
  53. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/metrics/base.py +0 -0
  54. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/metrics/exceptions.py +0 -0
  55. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/metrics/functions.py +0 -0
  56. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/metrics/metric.py +0 -0
  57. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/metrics/metrics.py +0 -0
  58. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/metrics/provider/__init__.py +0 -0
  59. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/metrics/provider/base.py +0 -0
  60. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/__init__.py +0 -0
  61. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/cloudwatch.py +0 -0
  62. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/constants.py +0 -0
  63. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/exceptions.py +0 -0
  64. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/metric_properties.py +0 -0
  65. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/types.py +0 -0
  66. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/metrics/provider/cold_start.py +0 -0
  67. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/metrics/provider/datadog/__init__.py +0 -0
  68. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/metrics/provider/datadog/datadog.py +0 -0
  69. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/metrics/provider/datadog/metrics.py +0 -0
  70. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/metrics/provider/datadog/warnings.py +0 -0
  71. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/metrics/types.py +0 -0
  72. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/middleware_factory/__init__.py +0 -0
  73. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/middleware_factory/exceptions.py +0 -0
  74. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/middleware_factory/factory.py +0 -0
  75. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/package_logger.py +0 -0
  76. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/py.typed +0 -0
  77. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/shared/__init__.py +0 -0
  78. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/shared/cache_dict.py +0 -0
  79. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/shared/constants.py +0 -0
  80. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/shared/cookies.py +0 -0
  81. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/shared/functions.py +0 -0
  82. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/shared/headers_serializer.py +0 -0
  83. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/shared/json_encoder.py +0 -0
  84. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/shared/lazy_import.py +0 -0
  85. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/shared/types.py +0 -0
  86. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/shared/user_agent.py +0 -0
  87. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/tracing/__init__.py +0 -0
  88. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/tracing/base.py +0 -0
  89. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/tracing/extensions.py +0 -0
  90. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/tracing/tracer.py +0 -0
  91. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/__init__.py +0 -0
  92. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/batch/__init__.py +0 -0
  93. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/batch/base.py +0 -0
  94. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/batch/decorators.py +0 -0
  95. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/batch/exceptions.py +0 -0
  96. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/batch/sqs_fifo_partial_processor.py +0 -0
  97. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/batch/types.py +0 -0
  98. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/__init__.py +0 -0
  99. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/active_mq_event.py +0 -0
  100. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/alb_event.py +0 -0
  101. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/api_gateway_authorizer_event.py +0 -0
  102. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/api_gateway_proxy_event.py +0 -0
  103. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/appsync/__init__.py +0 -0
  104. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/appsync/scalar_types_utils.py +0 -0
  105. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/appsync_authorizer_event.py +0 -0
  106. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/appsync_resolver_event.py +0 -0
  107. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/aws_config_rule_event.py +0 -0
  108. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/bedrock_agent_event.py +0 -0
  109. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/cloud_watch_alarm_event.py +0 -0
  110. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/cloud_watch_custom_widget_event.py +0 -0
  111. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/cloud_watch_logs_event.py +0 -0
  112. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/code_pipeline_job_event.py +0 -0
  113. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/cognito_user_pool_event.py +0 -0
  114. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/common.py +0 -0
  115. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/connect_contact_flow_event.py +0 -0
  116. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/dynamo_db_stream_event.py +0 -0
  117. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/event_bridge_event.py +0 -0
  118. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/event_source.py +0 -0
  119. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/kafka_event.py +0 -0
  120. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/kinesis_firehose_event.py +0 -0
  121. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/kinesis_stream_event.py +0 -0
  122. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/lambda_function_url_event.py +0 -0
  123. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/rabbit_mq_event.py +0 -0
  124. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/s3_batch_operation_event.py +0 -0
  125. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/s3_event.py +0 -0
  126. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/s3_object_event.py +0 -0
  127. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/secrets_manager_event.py +0 -0
  128. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/ses_event.py +0 -0
  129. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/shared_functions.py +0 -0
  130. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/sns_event.py +0 -0
  131. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/sqs_event.py +0 -0
  132. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_classes/vpc_lattice.py +0 -0
  133. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_masking/__init__.py +0 -0
  134. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_masking/base.py +0 -0
  135. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_masking/constants.py +0 -0
  136. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_masking/exceptions.py +0 -0
  137. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_masking/provider/__init__.py +0 -0
  138. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_masking/provider/base.py +0 -0
  139. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_masking/provider/kms/__init__.py +0 -0
  140. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/data_masking/provider/kms/aws_encryption_sdk.py +0 -0
  141. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/feature_flags/__init__.py +0 -0
  142. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/feature_flags/appconfig.py +0 -0
  143. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/feature_flags/base.py +0 -0
  144. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/feature_flags/comparators.py +0 -0
  145. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/feature_flags/exceptions.py +0 -0
  146. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/feature_flags/feature_flags.py +0 -0
  147. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/feature_flags/schema.py +0 -0
  148. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/idempotency/__init__.py +0 -0
  149. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/idempotency/base.py +0 -0
  150. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/idempotency/config.py +0 -0
  151. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/idempotency/exceptions.py +0 -0
  152. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/idempotency/hook.py +0 -0
  153. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/idempotency/idempotency.py +0 -0
  154. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/idempotency/persistence/__init__.py +0 -0
  155. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/idempotency/persistence/base.py +0 -0
  156. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/idempotency/persistence/datarecord.py +0 -0
  157. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/idempotency/persistence/dynamodb.py +0 -0
  158. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/idempotency/persistence/redis.py +0 -0
  159. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/idempotency/serialization/__init__.py +0 -0
  160. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/idempotency/serialization/base.py +0 -0
  161. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/idempotency/serialization/custom_dict.py +0 -0
  162. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/idempotency/serialization/dataclass.py +0 -0
  163. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/idempotency/serialization/no_op.py +0 -0
  164. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/idempotency/serialization/pydantic.py +0 -0
  165. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/jmespath_utils/__init__.py +0 -0
  166. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/jmespath_utils/envelopes.py +0 -0
  167. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parameters/__init__.py +0 -0
  168. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parameters/appconfig.py +0 -0
  169. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parameters/base.py +0 -0
  170. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parameters/dynamodb.py +0 -0
  171. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parameters/exceptions.py +0 -0
  172. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parameters/secrets.py +0 -0
  173. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parameters/ssm.py +0 -0
  174. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parameters/types.py +0 -0
  175. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/__init__.py +0 -0
  176. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/compat.py +0 -0
  177. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/envelopes/__init__.py +0 -0
  178. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/envelopes/apigw.py +0 -0
  179. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/envelopes/apigwv2.py +0 -0
  180. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/envelopes/base.py +0 -0
  181. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/envelopes/bedrock_agent.py +0 -0
  182. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/envelopes/cloudwatch.py +0 -0
  183. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/envelopes/dynamodb.py +0 -0
  184. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/envelopes/event_bridge.py +0 -0
  185. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/envelopes/kafka.py +0 -0
  186. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/envelopes/kinesis.py +0 -0
  187. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/envelopes/kinesis_firehose.py +0 -0
  188. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/envelopes/lambda_function_url.py +0 -0
  189. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/envelopes/sns.py +0 -0
  190. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/envelopes/sqs.py +0 -0
  191. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/envelopes/vpc_lattice.py +0 -0
  192. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/envelopes/vpc_latticev2.py +0 -0
  193. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/exceptions.py +0 -0
  194. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/models/__init__.py +0 -0
  195. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/models/alb.py +0 -0
  196. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/models/apigw.py +0 -0
  197. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/models/apigwv2.py +0 -0
  198. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/models/bedrock_agent.py +0 -0
  199. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/models/cloudformation_custom_resource.py +0 -0
  200. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/models/cloudwatch.py +0 -0
  201. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/models/dynamodb.py +0 -0
  202. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/models/event_bridge.py +0 -0
  203. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/models/kafka.py +0 -0
  204. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/models/kinesis.py +0 -0
  205. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose.py +0 -0
  206. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose_sqs.py +0 -0
  207. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/models/lambda_function_url.py +0 -0
  208. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/models/s3.py +0 -0
  209. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/models/s3_batch_operation.py +0 -0
  210. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/models/s3_event_notification.py +0 -0
  211. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/models/s3_object_event.py +0 -0
  212. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/models/ses.py +0 -0
  213. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/models/sns.py +0 -0
  214. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/models/sqs.py +0 -0
  215. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/models/vpc_lattice.py +0 -0
  216. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/models/vpc_latticev2.py +0 -0
  217. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/parser.py +0 -0
  218. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/pydantic.py +0 -0
  219. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/parser/types.py +0 -0
  220. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/serialization.py +0 -0
  221. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/streaming/__init__.py +0 -0
  222. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/streaming/_s3_seekable_io.py +0 -0
  223. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/streaming/compat.py +0 -0
  224. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/streaming/s3_object.py +0 -0
  225. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/streaming/transformations/__init__.py +0 -0
  226. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/streaming/transformations/base.py +0 -0
  227. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/streaming/transformations/csv.py +0 -0
  228. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/streaming/transformations/gzip.py +0 -0
  229. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/streaming/transformations/zip.py +0 -0
  230. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/typing/__init__.py +0 -0
  231. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/typing/lambda_client_context.py +0 -0
  232. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/typing/lambda_client_context_mobile_client.py +0 -0
  233. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/typing/lambda_cognito_identity.py +0 -0
  234. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/typing/lambda_context.py +0 -0
  235. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/validation/__init__.py +0 -0
  236. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/validation/base.py +0 -0
  237. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/validation/envelopes.py +0 -0
  238. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/aws_lambda_powertools/utilities/validation/exceptions.py +0 -0
  239. {aws_lambda_powertools-2.38.0 → aws_lambda_powertools-2.38.1}/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.38.0
3
+ Version: 2.38.1
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/aws-powertools/powertools-lambda-python
6
6
  License: MIT
@@ -1,5 +1,5 @@
1
1
  # logger.powertools_handler is set with Powertools Logger handler; useful when there are many handlers
2
2
  LOGGER_ATTRIBUTE_POWERTOOLS_HANDLER = "powertools_handler"
3
- # logger.init attribute is set when Logger has been configured
3
+ # logger.init attribute is set when Logger has been configured
4
4
  LOGGER_ATTRIBUTE_PRECONFIGURED = "init"
5
5
  LOGGER_ATTRIBUTE_HANDLER = "logger_handler"
@@ -1,6 +1,2 @@
1
1
  class InvalidLoggerSamplingRateError(Exception):
2
2
  pass
3
-
4
-
5
- class OrphanedChildLoggerError(Exception):
6
- pass
@@ -19,13 +19,10 @@ from typing import (
19
19
  Optional,
20
20
  TypeVar,
21
21
  Union,
22
- cast,
23
22
  overload,
24
23
  )
25
24
 
26
25
  from aws_lambda_powertools.logging.constants import (
27
- LOGGER_ATTRIBUTE_HANDLER,
28
- LOGGER_ATTRIBUTE_POWERTOOLS_HANDLER,
29
26
  LOGGER_ATTRIBUTE_PRECONFIGURED,
30
27
  )
31
28
  from aws_lambda_powertools.shared import constants
@@ -37,7 +34,7 @@ from aws_lambda_powertools.shared.functions import (
37
34
  from aws_lambda_powertools.utilities import jmespath_utils
38
35
 
39
36
  from ..shared.types import AnyCallableT
40
- from .exceptions import InvalidLoggerSamplingRateError, OrphanedChildLoggerError
37
+ from .exceptions import InvalidLoggerSamplingRateError
41
38
  from .filters import SuppressFilter
42
39
  from .formatter import (
43
40
  RESERVED_FORMATTER_CUSTOM_KEYS,
@@ -239,6 +236,7 @@ class Logger:
239
236
  self.child = child
240
237
  self.logger_formatter = logger_formatter
241
238
  self._stream = stream or sys.stdout
239
+ self.logger_handler = logger_handler or logging.StreamHandler(self._stream)
242
240
  self.log_uncaught_exceptions = log_uncaught_exceptions
243
241
 
244
242
  self._is_deduplication_disabled = resolve_truthy_env_var_choice(
@@ -246,7 +244,6 @@ class Logger:
246
244
  )
247
245
  self._default_log_keys = {"service": self.service, "sampling_rate": self.sampling_rate}
248
246
  self._logger = self._get_logger()
249
- self.logger_handler = logger_handler or self._get_handler()
250
247
 
251
248
  # NOTE: This is primarily to improve UX, so IDEs can autocomplete LambdaPowertoolsFormatter options
252
249
  # previously, we masked all of them as kwargs thus limiting feature discovery
@@ -285,18 +282,6 @@ class Logger:
285
282
 
286
283
  return logging.getLogger(logger_name)
287
284
 
288
- def _get_handler(self) -> logging.Handler:
289
- # is a logger handler already configured?
290
- if getattr(self, LOGGER_ATTRIBUTE_HANDLER, None):
291
- return self.logger_handler
292
-
293
- # for children, use parent's handler
294
- if self.child:
295
- return getattr(self._logger.parent, LOGGER_ATTRIBUTE_POWERTOOLS_HANDLER, None) # type: ignore[return-value] # always checked in formatting
296
-
297
- # otherwise, create a new stream handler (first time init)
298
- return logging.StreamHandler(self._stream)
299
-
300
285
  def _init_logger(
301
286
  self,
302
287
  formatter_options: Optional[Dict] = None,
@@ -335,7 +320,6 @@ class Logger:
335
320
  # std logging will return the same Logger with our attribute if name is reused
336
321
  logger.debug(f"Marking logger {self.service} as preconfigured")
337
322
  self._logger.init = True # type: ignore[attr-defined]
338
- self._logger.powertools_handler = self.logger_handler # type: ignore[attr-defined]
339
323
 
340
324
  def _configure_sampling(self) -> None:
341
325
  """Dynamically set log level based on sampling rate
@@ -691,20 +675,15 @@ class Logger:
691
675
  @property
692
676
  def registered_handler(self) -> logging.Handler:
693
677
  """Convenience property to access the first logger handler"""
694
- return self._get_handler()
678
+ # We ignore mypy here because self.child encodes whether or not self._logger.parent is
679
+ # None, mypy can't see this from context but we can
680
+ handlers = self._logger.parent.handlers if self.child else self._logger.handlers # type: ignore[union-attr]
681
+ return handlers[0]
695
682
 
696
683
  @property
697
684
  def registered_formatter(self) -> BasePowertoolsFormatter:
698
685
  """Convenience property to access the first logger formatter"""
699
- handler = self.registered_handler
700
- if handler is None:
701
- raise OrphanedChildLoggerError(
702
- "Orphan child loggers cannot append nor remove keys until a parent is initialized first. "
703
- "To solve this issue, you can A) make sure a parent logger is initialized first, or B) move append/remove keys operations to a later stage." # noqa: E501
704
- "Reference: https://docs.powertools.aws.dev/lambda/python/latest/core/logger/#reusing-logger-across-your-code",
705
- )
706
-
707
- return cast(BasePowertoolsFormatter, handler.formatter)
686
+ return self.registered_handler.formatter # type: ignore[return-value]
708
687
 
709
688
  @property
710
689
  def log_level(self) -> int:
@@ -1,3 +1,3 @@
1
1
  """Exposes version constant to avoid circular dependencies."""
2
2
 
3
- VERSION = "2.38.0"
3
+ VERSION = "2.38.1"
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "aws_lambda_powertools"
3
- version = "2.38.0"
3
+ version = "2.38.1"
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"]
@@ -59,7 +59,7 @@ extras_require = \
59
59
 
60
60
  setup_kwargs = {
61
61
  'name': 'aws-lambda-powertools',
62
- 'version': '2.38.0',
62
+ 'version': '2.38.1',
63
63
  'description': 'Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless best practices and increase developer velocity.',
64
64
  '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* [Capital One](https://www.capitalone.com/)\n* [CPQi (Exadel Financial Services)](https://cpqi.com/)\n* [CloudZero](https://www.cloudzero.com/)\n* [CyberArk](https://www.cyberark.com/)\n* [globaldatanet](https://globaldatanet.com/)\n* [IMS](https://ims.tech/)\n* [Jit Security](https://www.jit.io/)\n* [Propellor.ai](https://www.propellor.ai/)\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',
65
65
  'author': 'Amazon Web Services',