aws-lambda-powertools 3.0.2.dev1__tar.gz → 3.1.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.
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/PKG-INFO +2 -1
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/README.md +1 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/openapi/models.py +1 -1
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/shared/version.py +1 -1
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/__init__.py +4 -0
- aws_lambda_powertools-3.1.0/aws_lambda_powertools/utilities/data_classes/code_deploy_lifecycle_hook_event.py +13 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/idempotency/base.py +8 -11
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/envelopes/base.py +5 -6
- aws_lambda_powertools-3.1.0/aws_lambda_powertools/utilities/parser/functions.py +79 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/models/s3.py +4 -2
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/parser.py +8 -8
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/pyproject.toml +9 -9
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/setup.py +2 -2
- aws_lambda_powertools-3.0.2.dev1/aws_lambda_powertools/utilities/parser/functions.py +0 -40
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/LICENSE +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/THIRD-PARTY-LICENSES +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/api_gateway.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/appsync.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/bedrock_agent.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/content_types.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/exceptions.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/graphql_appsync/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/graphql_appsync/_registry.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/graphql_appsync/base.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/graphql_appsync/exceptions.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/graphql_appsync/router.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/lambda_function_url.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/middlewares/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/middlewares/base.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/middlewares/openapi_validation.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/middlewares/schema_validation.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/openapi/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/openapi/compat.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/openapi/constants.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/openapi/dependant.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/openapi/encoders.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/openapi/exceptions.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/openapi/params.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/openapi/pydantic_loader.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/html.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/oauth2.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/swagger-ui-bundle.min.js +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/swagger-ui.min.css +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/openapi/types.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/router.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/types.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/util.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/event_handler/vpc_lattice.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/exceptions/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/logging/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/logging/constants.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/logging/correlation_paths.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/logging/exceptions.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/logging/filters.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/logging/formatter.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/logging/formatters/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/logging/formatters/datadog.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/logging/lambda_context.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/logging/logger.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/logging/types.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/logging/utils.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/metrics/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/metrics/base.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/metrics/exceptions.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/metrics/functions.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/metrics/metric.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/metrics/metrics.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/metrics/provider/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/metrics/provider/base.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/cloudwatch.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/constants.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/exceptions.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/metric_properties.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/types.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/metrics/provider/cold_start.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/metrics/provider/datadog/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/metrics/provider/datadog/datadog.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/metrics/provider/datadog/metrics.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/metrics/provider/datadog/warnings.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/metrics/types.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/middleware_factory/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/middleware_factory/exceptions.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/middleware_factory/factory.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/package_logger.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/py.typed +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/shared/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/shared/cache_dict.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/shared/constants.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/shared/cookies.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/shared/dynamodb_deserializer.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/shared/functions.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/shared/headers_serializer.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/shared/json_encoder.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/shared/lazy_import.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/shared/types.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/shared/user_agent.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/tracing/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/tracing/base.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/tracing/extensions.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/tracing/tracer.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/batch/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/batch/base.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/batch/decorators.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/batch/exceptions.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/batch/sqs_fifo_partial_processor.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/batch/types.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/active_mq_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/alb_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/api_gateway_authorizer_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/api_gateway_proxy_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/appsync/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/appsync/scalar_types_utils.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/appsync_authorizer_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/appsync_resolver_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/aws_config_rule_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/bedrock_agent_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_alarm_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_custom_widget_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_logs_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/cloudformation_custom_resource_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/code_pipeline_job_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/cognito_user_pool_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/common.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/connect_contact_flow_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/dynamo_db_stream_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/event_bridge_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/event_source.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/kafka_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/kinesis_firehose_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/kinesis_stream_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/lambda_function_url_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/rabbit_mq_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/s3_batch_operation_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/s3_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/s3_object_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/secrets_manager_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/ses_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/shared_functions.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/sns_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/sqs_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_classes/vpc_lattice.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_masking/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_masking/base.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_masking/constants.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_masking/exceptions.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_masking/provider/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_masking/provider/base.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_masking/provider/kms/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/data_masking/provider/kms/aws_encryption_sdk.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/feature_flags/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/feature_flags/appconfig.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/feature_flags/base.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/feature_flags/comparators.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/feature_flags/constants.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/feature_flags/exceptions.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/feature_flags/feature_flags.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/feature_flags/schema.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/feature_flags/types.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/idempotency/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/idempotency/config.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/idempotency/exceptions.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/idempotency/hook.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/idempotency/idempotency.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/idempotency/persistence/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/idempotency/persistence/base.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/idempotency/persistence/datarecord.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/idempotency/persistence/dynamodb.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/idempotency/persistence/redis.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/idempotency/serialization/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/idempotency/serialization/base.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/idempotency/serialization/custom_dict.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/idempotency/serialization/dataclass.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/idempotency/serialization/no_op.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/idempotency/serialization/pydantic.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/jmespath_utils/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/jmespath_utils/envelopes.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parameters/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parameters/appconfig.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parameters/base.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parameters/constants.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parameters/dynamodb.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parameters/exceptions.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parameters/secrets.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parameters/ssm.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parameters/types.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/envelopes/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/envelopes/apigw.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/envelopes/apigwv2.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/envelopes/bedrock_agent.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/envelopes/cloudwatch.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/envelopes/dynamodb.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/envelopes/event_bridge.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/envelopes/kafka.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/envelopes/kinesis.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/envelopes/kinesis_firehose.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/envelopes/lambda_function_url.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/envelopes/sns.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/envelopes/sqs.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/envelopes/vpc_lattice.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/envelopes/vpc_latticev2.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/exceptions.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/models/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/models/alb.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/models/apigw.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/models/apigwv2.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/models/bedrock_agent.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/models/cloudformation_custom_resource.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/models/cloudwatch.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/models/dynamodb.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/models/event_bridge.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/models/kafka.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/models/kinesis.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose_sqs.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/models/lambda_function_url.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/models/s3_batch_operation.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/models/s3_event_notification.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/models/s3_object_event.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/models/ses.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/models/sns.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/models/sqs.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/models/vpc_lattice.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/models/vpc_latticev2.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/parser/types.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/serialization.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/streaming/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/streaming/_s3_seekable_io.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/streaming/compat.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/streaming/constants.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/streaming/s3_object.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/streaming/transformations/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/streaming/transformations/base.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/streaming/transformations/csv.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/streaming/transformations/gzip.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/streaming/transformations/zip.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/streaming/types.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/typing/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/typing/lambda_client_context.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/typing/lambda_client_context_mobile_client.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/typing/lambda_cognito_identity.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/typing/lambda_context.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/validation/__init__.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/validation/base.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/validation/envelopes.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/validation/exceptions.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/utilities/validation/validator.py +0 -0
- {aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/warnings/__init__.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: aws-lambda-powertools
|
|
3
|
-
Version: 3.0
|
|
3
|
+
Version: 3.1.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/aws-powertools/powertools-lambda-python
|
|
6
6
|
License: MIT
|
|
@@ -107,6 +107,7 @@ The following companies, among others, use Powertools:
|
|
|
107
107
|
* [CPQi (Exadel Financial Services)](https://cpqi.com/)
|
|
108
108
|
* [CloudZero](https://www.cloudzero.com/)
|
|
109
109
|
* [CyberArk](https://www.cyberark.com/)
|
|
110
|
+
* [Flyweight](https://flyweight.io/)
|
|
110
111
|
* [globaldatanet](https://globaldatanet.com/)
|
|
111
112
|
* [IMS](https://ims.tech/)
|
|
112
113
|
* [Jit Security](https://www.jit.io/)
|
|
@@ -63,6 +63,7 @@ The following companies, among others, use Powertools:
|
|
|
63
63
|
* [CPQi (Exadel Financial Services)](https://cpqi.com/)
|
|
64
64
|
* [CloudZero](https://www.cloudzero.com/)
|
|
65
65
|
* [CyberArk](https://www.cyberark.com/)
|
|
66
|
+
* [Flyweight](https://flyweight.io/)
|
|
66
67
|
* [globaldatanet](https://globaldatanet.com/)
|
|
67
68
|
* [IMS](https://ims.tech/)
|
|
68
69
|
* [Jit Security](https://www.jit.io/)
|
|
@@ -201,7 +201,7 @@ class Schema(BaseModel):
|
|
|
201
201
|
deprecated: Optional[bool] = None
|
|
202
202
|
readOnly: Optional[bool] = None
|
|
203
203
|
writeOnly: Optional[bool] = None
|
|
204
|
-
examples: Optional[List["Example"]] = None
|
|
204
|
+
examples: Optional[Union[List["Example"], List[str]]] = None
|
|
205
205
|
# Ref: OpenAPI 3.0.0: https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.0.md#schema-object
|
|
206
206
|
# Schema Object
|
|
207
207
|
discriminator: Optional[Discriminator] = None
|
|
@@ -18,6 +18,9 @@ from .cloud_watch_alarm_event import (
|
|
|
18
18
|
from .cloud_watch_custom_widget_event import CloudWatchDashboardCustomWidgetEvent
|
|
19
19
|
from .cloud_watch_logs_event import CloudWatchLogsEvent
|
|
20
20
|
from .cloudformation_custom_resource_event import CloudFormationCustomResourceEvent
|
|
21
|
+
from .code_deploy_lifecycle_hook_event import (
|
|
22
|
+
CodeDeployLifecycleHookEvent,
|
|
23
|
+
)
|
|
21
24
|
from .code_pipeline_job_event import CodePipelineJobEvent
|
|
22
25
|
from .connect_contact_flow_event import ConnectContactFlowEvent
|
|
23
26
|
from .dynamo_db_stream_event import DynamoDBStreamEvent
|
|
@@ -59,6 +62,7 @@ __all__ = [
|
|
|
59
62
|
"CloudWatchAlarmMetricStat",
|
|
60
63
|
"CloudWatchDashboardCustomWidgetEvent",
|
|
61
64
|
"CloudWatchLogsEvent",
|
|
65
|
+
"CodeDeployLifecycleHookEvent",
|
|
62
66
|
"CodePipelineJobEvent",
|
|
63
67
|
"ConnectContactFlowEvent",
|
|
64
68
|
"DynamoDBStreamEvent",
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from aws_lambda_powertools.utilities.data_classes.common import DictWrapper
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class CodeDeployLifecycleHookEvent(DictWrapper):
|
|
5
|
+
@property
|
|
6
|
+
def deployment_id(self) -> str:
|
|
7
|
+
"""The unique ID of the calling CodeDeploy Deployment."""
|
|
8
|
+
return self["DeploymentId"]
|
|
9
|
+
|
|
10
|
+
@property
|
|
11
|
+
def lifecycle_event_hook_execution_id(self) -> str:
|
|
12
|
+
"""The unique ID of a deployments lifecycle hook."""
|
|
13
|
+
return self["LifecycleEventHookExecutionId"]
|
|
@@ -239,18 +239,15 @@ class IdempotencyHandler:
|
|
|
239
239
|
f"Execution already in progress with idempotency key: "
|
|
240
240
|
f"{self.persistence_store.event_key_jmespath}={data_record.idempotency_key}",
|
|
241
241
|
)
|
|
242
|
-
response_dict: dict | None = data_record.response_json_as_dict()
|
|
243
|
-
if response_dict is not None:
|
|
244
|
-
serialized_response = self.output_serializer.from_dict(response_dict)
|
|
245
|
-
if self.config.response_hook is not None:
|
|
246
|
-
logger.debug("Response hook configured, invoking function")
|
|
247
|
-
return self.config.response_hook(
|
|
248
|
-
serialized_response,
|
|
249
|
-
data_record,
|
|
250
|
-
)
|
|
251
|
-
return serialized_response
|
|
252
242
|
|
|
253
|
-
|
|
243
|
+
response_dict = data_record.response_json_as_dict()
|
|
244
|
+
serialized_response = self.output_serializer.from_dict(response_dict) if response_dict else None
|
|
245
|
+
|
|
246
|
+
if self.config.response_hook:
|
|
247
|
+
logger.debug("Response hook configured, invoking function")
|
|
248
|
+
return self.config.response_hook(serialized_response, data_record)
|
|
249
|
+
|
|
250
|
+
return serialized_response
|
|
254
251
|
|
|
255
252
|
def _get_function_response(self):
|
|
256
253
|
try:
|
|
@@ -4,7 +4,10 @@ import logging
|
|
|
4
4
|
from abc import ABC, abstractmethod
|
|
5
5
|
from typing import TYPE_CHECKING, Any, TypeVar
|
|
6
6
|
|
|
7
|
-
from aws_lambda_powertools.utilities.parser.functions import
|
|
7
|
+
from aws_lambda_powertools.utilities.parser.functions import (
|
|
8
|
+
_parse_and_validate_event,
|
|
9
|
+
_retrieve_or_set_model_from_cache,
|
|
10
|
+
)
|
|
8
11
|
|
|
9
12
|
if TYPE_CHECKING:
|
|
10
13
|
from aws_lambda_powertools.utilities.parser.types import T
|
|
@@ -38,11 +41,7 @@ class BaseEnvelope(ABC):
|
|
|
38
41
|
adapter = _retrieve_or_set_model_from_cache(model=model)
|
|
39
42
|
|
|
40
43
|
logger.debug("parsing event against model")
|
|
41
|
-
|
|
42
|
-
logger.debug("parsing event as string")
|
|
43
|
-
return adapter.validate_json(data)
|
|
44
|
-
|
|
45
|
-
return adapter.validate_python(data)
|
|
44
|
+
return _parse_and_validate_event(data=data, adapter=adapter)
|
|
46
45
|
|
|
47
46
|
@abstractmethod
|
|
48
47
|
def parse(self, data: dict[str, Any] | Any | None, model: type[T]):
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
import logging
|
|
5
|
+
from typing import TYPE_CHECKING, Any
|
|
6
|
+
|
|
7
|
+
from pydantic import TypeAdapter
|
|
8
|
+
|
|
9
|
+
from aws_lambda_powertools.shared.cache_dict import LRUDict
|
|
10
|
+
|
|
11
|
+
if TYPE_CHECKING:
|
|
12
|
+
from aws_lambda_powertools.utilities.parser.types import T
|
|
13
|
+
|
|
14
|
+
CACHE_TYPE_ADAPTER = LRUDict(max_items=1024)
|
|
15
|
+
|
|
16
|
+
logger = logging.getLogger(__name__)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def _retrieve_or_set_model_from_cache(model: type[T]) -> TypeAdapter:
|
|
20
|
+
"""
|
|
21
|
+
Retrieves or sets a TypeAdapter instance from the cache for the given model.
|
|
22
|
+
|
|
23
|
+
If the model is already present in the cache, the corresponding TypeAdapter
|
|
24
|
+
instance is returned. Otherwise, a new TypeAdapter instance is created,
|
|
25
|
+
stored in the cache, and returned.
|
|
26
|
+
|
|
27
|
+
Parameters
|
|
28
|
+
----------
|
|
29
|
+
model: type[T]
|
|
30
|
+
The model type for which the TypeAdapter instance should be retrieved or set.
|
|
31
|
+
|
|
32
|
+
Returns
|
|
33
|
+
-------
|
|
34
|
+
TypeAdapter
|
|
35
|
+
The TypeAdapter instance for the given model,
|
|
36
|
+
either retrieved from the cache or newly created and stored in the cache.
|
|
37
|
+
"""
|
|
38
|
+
id_model = id(model)
|
|
39
|
+
|
|
40
|
+
if id_model in CACHE_TYPE_ADAPTER:
|
|
41
|
+
return CACHE_TYPE_ADAPTER[id_model]
|
|
42
|
+
|
|
43
|
+
CACHE_TYPE_ADAPTER[id_model] = TypeAdapter(model)
|
|
44
|
+
return CACHE_TYPE_ADAPTER[id_model]
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _parse_and_validate_event(data: dict[str, Any] | Any, adapter: TypeAdapter):
|
|
48
|
+
"""
|
|
49
|
+
Parse and validate the event data using the provided adapter.
|
|
50
|
+
|
|
51
|
+
Params
|
|
52
|
+
------
|
|
53
|
+
data: dict | Any
|
|
54
|
+
The event data to be parsed and validated.
|
|
55
|
+
adapter: TypeAdapter
|
|
56
|
+
The adapter object used for validation.
|
|
57
|
+
|
|
58
|
+
Returns:
|
|
59
|
+
dict: The validated event data.
|
|
60
|
+
|
|
61
|
+
Raises:
|
|
62
|
+
ValidationError: If the data is invalid or cannot be parsed.
|
|
63
|
+
"""
|
|
64
|
+
logger.debug("Parsing event against model")
|
|
65
|
+
|
|
66
|
+
if isinstance(data, str):
|
|
67
|
+
logger.debug("Parsing event as string")
|
|
68
|
+
try:
|
|
69
|
+
return adapter.validate_json(data)
|
|
70
|
+
except NotImplementedError:
|
|
71
|
+
# See: https://github.com/aws-powertools/powertools-lambda-python/issues/5303
|
|
72
|
+
# See: https://github.com/pydantic/pydantic/issues/8890
|
|
73
|
+
logger.debug(
|
|
74
|
+
"Falling back to Python validation due to Pydantic implementation."
|
|
75
|
+
"See issue: https://github.com/aws-powertools/powertools-lambda-python/issues/5303",
|
|
76
|
+
)
|
|
77
|
+
data = json.loads(data)
|
|
78
|
+
|
|
79
|
+
return adapter.validate_python(data)
|
|
@@ -103,8 +103,10 @@ class S3RecordModel(BaseModel):
|
|
|
103
103
|
def validate_s3_object(cls, values):
|
|
104
104
|
event_name = values.get("eventName")
|
|
105
105
|
s3_object = values.get("s3").get("object")
|
|
106
|
-
if "
|
|
107
|
-
raise ValueError(
|
|
106
|
+
if ":Delete" not in event_name and (s3_object.get("size") is None or s3_object.get("eTag") is None):
|
|
107
|
+
raise ValueError(
|
|
108
|
+
"Size and eTag fields are required for all events except ObjectRemoved:* and LifecycleExpiration:*.",
|
|
109
|
+
)
|
|
108
110
|
return values
|
|
109
111
|
|
|
110
112
|
|
|
@@ -4,11 +4,14 @@ import logging
|
|
|
4
4
|
import typing
|
|
5
5
|
from typing import TYPE_CHECKING, Any, Callable, overload
|
|
6
6
|
|
|
7
|
-
from pydantic import PydanticSchemaGenerationError
|
|
7
|
+
from pydantic import PydanticSchemaGenerationError
|
|
8
8
|
|
|
9
9
|
from aws_lambda_powertools.middleware_factory import lambda_handler_decorator
|
|
10
10
|
from aws_lambda_powertools.utilities.parser.exceptions import InvalidEnvelopeError, InvalidModelTypeError
|
|
11
|
-
from aws_lambda_powertools.utilities.parser.functions import
|
|
11
|
+
from aws_lambda_powertools.utilities.parser.functions import (
|
|
12
|
+
_parse_and_validate_event,
|
|
13
|
+
_retrieve_or_set_model_from_cache,
|
|
14
|
+
)
|
|
12
15
|
|
|
13
16
|
if TYPE_CHECKING:
|
|
14
17
|
from aws_lambda_powertools.utilities.parser.envelopes.base import Envelope
|
|
@@ -108,7 +111,7 @@ def event_parser(
|
|
|
108
111
|
|
|
109
112
|
logger.debug(f"Calling handler {handler.__name__}")
|
|
110
113
|
return handler(parsed_event, context, **kwargs)
|
|
111
|
-
except
|
|
114
|
+
except AttributeError as exc:
|
|
112
115
|
raise InvalidModelTypeError(f"Error: {str(exc)}. Please ensure the type you're trying to parse into is correct")
|
|
113
116
|
|
|
114
117
|
|
|
@@ -189,17 +192,14 @@ def parse(event: dict[str, Any], model: type[T], envelope: type[Envelope] | None
|
|
|
189
192
|
adapter = _retrieve_or_set_model_from_cache(model=model)
|
|
190
193
|
|
|
191
194
|
logger.debug("Parsing and validating event model; no envelope used")
|
|
192
|
-
|
|
193
|
-
return adapter.validate_json(event)
|
|
194
|
-
|
|
195
|
-
return adapter.validate_python(event)
|
|
195
|
+
return _parse_and_validate_event(data=event, adapter=adapter)
|
|
196
196
|
|
|
197
197
|
# Pydantic raises PydanticSchemaGenerationError when the model is not a Pydantic model
|
|
198
198
|
# This is seen in the tests where we pass a non-Pydantic model type to the parser or
|
|
199
199
|
# when we pass a data structure that does not match the model (trying to parse a true/false/etc into a model)
|
|
200
200
|
except PydanticSchemaGenerationError as exc:
|
|
201
201
|
raise InvalidModelTypeError(f"The event supplied is unable to be validated into {type(model)}") from exc
|
|
202
|
-
except
|
|
202
|
+
except AttributeError as exc:
|
|
203
203
|
raise InvalidModelTypeError(
|
|
204
204
|
f"Error: {str(exc)}. Please ensure the Input model inherits from BaseModel,\n"
|
|
205
205
|
"and your payload adheres to the specified Input model structure.\n"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "aws_lambda_powertools"
|
|
3
|
-
version = "3.0
|
|
3
|
+
version = "3.1.0"
|
|
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"]
|
|
@@ -64,22 +64,22 @@ pytest-cov = "^5.0.0"
|
|
|
64
64
|
pytest-mock = "^3.14.0"
|
|
65
65
|
pdoc3 = "^0.11.0"
|
|
66
66
|
pytest-asyncio = "^0.24.0"
|
|
67
|
-
bandit = "^1.7.
|
|
67
|
+
bandit = "^1.7.10"
|
|
68
68
|
radon = "^6.0.1"
|
|
69
69
|
xenon = "^0.9.1"
|
|
70
70
|
mkdocs-git-revision-date-plugin = "^0.3.2"
|
|
71
71
|
mike = "^2.1.2"
|
|
72
72
|
pytest-xdist = "^3.6.1"
|
|
73
|
-
aws-cdk-lib = "^2.
|
|
73
|
+
aws-cdk-lib = "^2.161.1"
|
|
74
74
|
"aws-cdk.aws-apigatewayv2-alpha" = "^2.38.1-alpha.0"
|
|
75
75
|
"aws-cdk.aws-apigatewayv2-integrations-alpha" = "^2.38.1-alpha.0"
|
|
76
76
|
"aws-cdk.aws-apigatewayv2-authorizers-alpha" = "^2.38.1-alpha.0"
|
|
77
|
-
"aws-cdk.aws-lambda-python-alpha" = "^2.
|
|
78
|
-
"cdklabs.generative-ai-cdk-constructs" = "^0.1.
|
|
77
|
+
"aws-cdk.aws-lambda-python-alpha" = "^2.161.0a0"
|
|
78
|
+
"cdklabs.generative-ai-cdk-constructs" = "^0.1.273"
|
|
79
79
|
pytest-benchmark = "^4.0.0"
|
|
80
80
|
types-requests = "^2.31.0"
|
|
81
81
|
typing-extensions = "^4.12.2"
|
|
82
|
-
mkdocs-material = "^9.5.
|
|
82
|
+
mkdocs-material = "^9.5.39"
|
|
83
83
|
filelock = "^3.16.0"
|
|
84
84
|
dirhash = "^0.5.0"
|
|
85
85
|
mypy-boto3-appconfigdata = "^1.35.0"
|
|
@@ -87,7 +87,7 @@ ijson = "^3.3.0"
|
|
|
87
87
|
typed-ast = { version = "^1.5.5", python = "< 3.8" }
|
|
88
88
|
hvac = "^2.3.0"
|
|
89
89
|
aws-requests-auth = "^0.4.3"
|
|
90
|
-
datadog-lambda = "^6.
|
|
90
|
+
datadog-lambda = "^6.99.0"
|
|
91
91
|
|
|
92
92
|
[tool.poetry.extras]
|
|
93
93
|
parser = ["pydantic"]
|
|
@@ -107,13 +107,13 @@ datadog = ["datadog-lambda"]
|
|
|
107
107
|
datamasking = ["aws-encryption-sdk", "jsonpath-ng"]
|
|
108
108
|
|
|
109
109
|
[tool.poetry.group.dev.dependencies]
|
|
110
|
-
cfn-lint = "1.
|
|
110
|
+
cfn-lint = "1.16.0"
|
|
111
111
|
mypy = "^1.1.1"
|
|
112
112
|
types-python-dateutil = "^2.8.19.6"
|
|
113
113
|
aws-cdk-aws-appsync-alpha = "^2.59.0a0"
|
|
114
114
|
httpx = ">=0.23.3,<0.28.0"
|
|
115
115
|
sentry-sdk = ">=1.22.2,<3.0.0"
|
|
116
|
-
ruff = ">=0.5.1,<0.6.
|
|
116
|
+
ruff = ">=0.5.1,<0.6.10"
|
|
117
117
|
retry2 = "^0.9.5"
|
|
118
118
|
pytest-socket = ">=0.6,<0.8"
|
|
119
119
|
types-redis = "^4.6.0.7"
|
|
@@ -63,9 +63,9 @@ extras_require = \
|
|
|
63
63
|
|
|
64
64
|
setup_kwargs = {
|
|
65
65
|
'name': 'aws-lambda-powertools',
|
|
66
|
-
'version': '3.0
|
|
66
|
+
'version': '3.1.0',
|
|
67
67
|
'description': 'Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless best practices and increase developer velocity.',
|
|
68
|
-
'long_description': '<!-- markdownlint-disable MD013 MD041 MD043 -->\n# Powertools for AWS Lambda (Python)\n\n[](https://github.com/aws-powertools/powertools-lambda-python/actions/workflows/python_build.yml)\n[](https://app.codecov.io/gh/aws-powertools/powertools-lambda-python)\n   [](https://api.securityscorecards.dev/projects/github.com/aws-powertools/powertools-lambda-python) [](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\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* [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',
|
|
68
|
+
'long_description': '<!-- markdownlint-disable MD013 MD041 MD043 -->\n# Powertools for AWS Lambda (Python)\n\n[](https://github.com/aws-powertools/powertools-lambda-python/actions/workflows/python_build.yml)\n[](https://app.codecov.io/gh/aws-powertools/powertools-lambda-python)\n   [](https://api.securityscorecards.dev/projects/github.com/aws-powertools/powertools-lambda-python) [](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\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',
|
|
69
69
|
'author': 'Amazon Web Services',
|
|
70
70
|
'author_email': 'None',
|
|
71
71
|
'maintainer': 'None',
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from typing import TYPE_CHECKING
|
|
4
|
-
|
|
5
|
-
from pydantic import TypeAdapter
|
|
6
|
-
|
|
7
|
-
from aws_lambda_powertools.shared.cache_dict import LRUDict
|
|
8
|
-
|
|
9
|
-
if TYPE_CHECKING:
|
|
10
|
-
from aws_lambda_powertools.utilities.parser.types import T
|
|
11
|
-
|
|
12
|
-
CACHE_TYPE_ADAPTER = LRUDict(max_items=1024)
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
def _retrieve_or_set_model_from_cache(model: type[T]) -> TypeAdapter:
|
|
16
|
-
"""
|
|
17
|
-
Retrieves or sets a TypeAdapter instance from the cache for the given model.
|
|
18
|
-
|
|
19
|
-
If the model is already present in the cache, the corresponding TypeAdapter
|
|
20
|
-
instance is returned. Otherwise, a new TypeAdapter instance is created,
|
|
21
|
-
stored in the cache, and returned.
|
|
22
|
-
|
|
23
|
-
Parameters
|
|
24
|
-
----------
|
|
25
|
-
model: type[T]
|
|
26
|
-
The model type for which the TypeAdapter instance should be retrieved or set.
|
|
27
|
-
|
|
28
|
-
Returns
|
|
29
|
-
-------
|
|
30
|
-
TypeAdapter
|
|
31
|
-
The TypeAdapter instance for the given model,
|
|
32
|
-
either retrieved from the cache or newly created and stored in the cache.
|
|
33
|
-
"""
|
|
34
|
-
id_model = id(model)
|
|
35
|
-
|
|
36
|
-
if id_model in CACHE_TYPE_ADAPTER:
|
|
37
|
-
return CACHE_TYPE_ADAPTER[id_model]
|
|
38
|
-
|
|
39
|
-
CACHE_TYPE_ADAPTER[id_model] = TypeAdapter(model)
|
|
40
|
-
return CACHE_TYPE_ADAPTER[id_model]
|
|
File without changes
|
|
File without changes
|
{aws_lambda_powertools-3.0.2.dev1 → aws_lambda_powertools-3.1.0}/aws_lambda_powertools/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|