aws-lambda-powertools 3.34.0__tar.gz → 3.36.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.36.0/.gitignore +326 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/PKG-INFO +38 -24
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/api_gateway.py +98 -10
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/exceptions.py +19 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/http_resolver.py +68 -13
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/encoders.py +6 -6
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/params.py +1 -1
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/schema_generator.py +1 -1
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/base.py +3 -3
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/metrics.py +9 -7
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/cloudwatch.py +10 -6
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/cookies.py +1 -1
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/dynamodb_deserializer.py +12 -10
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/version.py +1 -1
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/__init__.py +32 -0
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/_internal/__init__.py +1 -0
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/_internal/deadline.py +26 -0
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/_internal/errors.py +30 -0
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/_internal/http.py +146 -0
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/_internal/scopes.py +14 -0
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/_internal/transport.py +101 -0
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/_internal/validation.py +69 -0
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/exceptions.py +29 -0
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/__init__.py +32 -0
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/_internal/authorization.py +81 -0
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/_internal/base.py +147 -0
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/_internal/errors.py +3 -0
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/_internal/jwks.py +141 -0
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/exceptions.py +48 -0
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/integrations/__init__.py +1 -0
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/integrations/api_gateway.py +164 -0
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/integrations/event_handler.py +119 -0
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/testing.py +32 -0
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/verifier.py +345 -0
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/oauth2/__init__.py +23 -0
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/oauth2/client.py +387 -0
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/oauth2/exceptions.py +32 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/batch/exceptions.py +2 -2
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/batch/types.py +5 -4
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/base.py +2 -2
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/persistence/base.py +5 -5
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/persistence/dynamodb.py +2 -2
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/api_gateway_authorizer_event.py +5 -2
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/appsync/scalar_types_utils.py +6 -6
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/common.py +1 -1
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/base.py +23 -24
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/data_masking/exceptions.py +40 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/provider/base.py +3 -2
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/appconfig.py +11 -1
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/comparators.py +7 -2
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/constants.py +1 -1
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/feature_flags.py +66 -7
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/schema.py +40 -4
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/base.py +2 -2
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/persistence/base.py +34 -8
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/persistence/datarecord.py +4 -4
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/persistence/dynamodb.py +2 -2
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/persistence/redis.py +9 -7
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/consumer_records.py +6 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/deserializer/avro.py +35 -2
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/deserializer/deserializer.py +20 -6
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/schema_config.py +26 -0
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/kafka/serialization/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/serialization/custom_dict.py +4 -2
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/ssm.py +6 -1
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/parser/__init__.py +44 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/apigw.py +36 -36
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/apigw_websocket.py +3 -3
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/apigwv2.py +20 -20
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/appsync.py +10 -10
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/appsync_events.py +6 -6
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/bedrock_agent.py +4 -4
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/cloudwatch.py +2 -2
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/cognito.py +42 -42
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/dynamodb.py +6 -6
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/event_bridge.py +2 -2
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/iot_registry_events.py +6 -6
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/kafka.py +4 -4
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose.py +3 -3
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose_sqs.py +3 -3
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/s3.py +19 -19
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/s3_batch_operation.py +5 -5
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/s3_object_event.py +4 -4
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/ses.py +5 -5
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/sns.py +6 -6
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/sqs.py +9 -9
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/transfer_family.py +2 -2
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/vpc_latticev2.py +14 -14
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/_s3_seekable_io.py +21 -6
- aws_lambda_powertools-3.36.0/pyproject.toml +266 -0
- aws_lambda_powertools-3.34.0/aws_lambda_powertools/utilities/data_masking/exceptions.py +0 -34
- aws_lambda_powertools-3.34.0/aws_lambda_powertools/utilities/parser/__init__.py +0 -19
- aws_lambda_powertools-3.34.0/pyproject.toml +0 -246
- aws_lambda_powertools-3.34.0/setup.py +0 -94
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/LICENSE +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/README.md +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/THIRD-PARTY-LICENSES +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/appsync.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/bedrock_agent.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/bedrock_agent_function.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/content_types.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/depends.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/_registry.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/appsync_events.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/base.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/exceptions.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/functions.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/router.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/types.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/exception_handling.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/graphql_appsync/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/graphql_appsync/_registry.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/graphql_appsync/base.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/graphql_appsync/exceptions.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/graphql_appsync/router.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/lambda_function_url.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/middlewares/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/middlewares/async_utils.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/middlewares/base.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/middlewares/openapi_validation.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/middlewares/schema_validation.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/compat.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/config.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/constants.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/dependant.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/exceptions.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/merge.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/models.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/pydantic_loader.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/html.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/oauth2.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/swagger-ui-bundle.min.js +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/swagger-ui.min.css +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/types.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/request.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/router.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/types.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/util.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/vpc_lattice.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/exceptions/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/buffer/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/buffer/cache.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/buffer/config.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/buffer/functions.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/buffer/handler.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/constants.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/correlation_paths.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/exceptions.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/filters.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/formatter.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/formatters/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/formatters/datadog.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/lambda_context.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/logger.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/types.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/utils.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/exceptions.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/functions.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/metric.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/base.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/constants.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/exceptions.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/metric_properties.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/types.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cold_start.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/datadog/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/datadog/datadog.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/datadog/metrics.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/datadog/warnings.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/types.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/middleware_factory/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/middleware_factory/exceptions.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/middleware_factory/factory.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/package_logger.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/py.typed +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/cache_dict.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/constants.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/functions.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/headers_serializer.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/json_encoder.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/lazy_import.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/types.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/user_agent.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/tracing/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/tracing/base.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/tracing/extensions.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/tracing/tracer.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0/aws_lambda_powertools/utilities/data_classes/appsync → aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/auth_alpha/jwt/_internal}/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/batch/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/batch/base.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/batch/decorators.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/batch/sqs_fifo_partial_processor.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/circuit_breaker.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/config.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/exceptions.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/persistence/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/persistence/record.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/states.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/active_mq_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/alb_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/api_gateway_proxy_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/api_gateway_websocket_event.py +0 -0
- {aws_lambda_powertools-3.34.0/aws_lambda_powertools/utilities/idempotency/persistence → aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/data_classes/appsync}/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/appsync_authorizer_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/appsync_resolver_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/appsync_resolver_events_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/aws_config_rule_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/bedrock_agent_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/bedrock_agent_function_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_alarm_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_custom_widget_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_logs_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/cloudformation_custom_resource_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/code_deploy_lifecycle_hook_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/code_pipeline_job_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/cognito_user_pool_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/connect_contact_flow_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/dynamo_db_stream_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/event_bridge_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/event_source.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/iot_registry_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/kafka_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/kinesis_firehose_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/kinesis_stream_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/lambda_function_url_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/rabbit_mq_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/s3_batch_operation_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/s3_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/s3_object_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/secrets_manager_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/ses_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/shared_functions.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/sns_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/sqs_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/transfer_family_event.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/vpc_lattice.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/constants.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/provider/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/provider/kms/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/provider/kms/aws_encryption_sdk.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/base.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/exceptions.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/types.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/config.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/exceptions.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/hook.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/idempotency.py +0 -0
- {aws_lambda_powertools-3.34.0/aws_lambda_powertools/utilities/idempotency/serialization → aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/idempotency/persistence}/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/persistence/cache.py +0 -0
- {aws_lambda_powertools-3.34.0/aws_lambda_powertools/utilities/kafka/deserializer → aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/idempotency/serialization}/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/serialization/base.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/serialization/custom_dict.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/serialization/dataclass.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/serialization/functions.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/serialization/no_op.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/serialization/pydantic.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/jmespath_utils/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/jmespath_utils/envelopes.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0/aws_lambda_powertools/utilities/kafka/serialization → aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/kafka/deserializer}/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/deserializer/base.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/deserializer/default.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/deserializer/json.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/deserializer/protobuf.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/exceptions.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/kafka_consumer.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/serialization/base.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/serialization/dataclass.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/serialization/pydantic.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/serialization/serialization.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/serialization/types.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/metadata/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/metadata/exceptions.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/metadata/lambda_metadata.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/appconfig.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/base.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/constants.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/dynamodb.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/exceptions.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/secrets.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/types.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/apigw.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/apigw_websocket.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/apigwv2.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/base.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/bedrock_agent.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/cloudwatch.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/dynamodb.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/event_bridge.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/kafka.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/kinesis.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/kinesis_firehose.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/lambda_function_url.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/sns.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/sqs.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/vpc_lattice.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/vpc_latticev2.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/exceptions.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/functions.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/alb.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/cloudformation_custom_resource.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/kinesis.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/lambda_function_url.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/s3_event_notification.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/vpc_lattice.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/parser.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/types.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/serialization.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/compat.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/constants.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/s3_object.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/transformations/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/transformations/base.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/transformations/csv.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/transformations/gzip.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/transformations/zip.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/types.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/typing/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/typing/lambda_client_context.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/typing/lambda_client_context_mobile_client.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/typing/lambda_cognito_identity.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/typing/lambda_context.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/validation/__init__.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/validation/base.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/validation/envelopes.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/validation/exceptions.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/validation/validator.py +0 -0
- {aws_lambda_powertools-3.34.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/warnings/__init__.py +0 -0
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
# Created by https://www.gitignore.io/api/osx,linux,python,windows,pycharm,visualstudiocode
|
|
2
|
+
# Edit at https://www.gitignore.io/?templates=osx,linux,python,windows,pycharm,visualstudiocode
|
|
3
|
+
|
|
4
|
+
### Linux ###
|
|
5
|
+
*~
|
|
6
|
+
|
|
7
|
+
# temporary files which can be created if a process still has a handle open of a deleted file
|
|
8
|
+
.fuse_hidden*
|
|
9
|
+
|
|
10
|
+
# KDE directory preferences
|
|
11
|
+
.directory
|
|
12
|
+
|
|
13
|
+
# Linux trash folder which might appear on any partition or disk
|
|
14
|
+
.Trash-*
|
|
15
|
+
|
|
16
|
+
# .nfs files are created when an open file is removed but is still being accessed
|
|
17
|
+
.nfs*
|
|
18
|
+
|
|
19
|
+
### OSX ###
|
|
20
|
+
# General
|
|
21
|
+
.DS_Store
|
|
22
|
+
.AppleDouble
|
|
23
|
+
.LSOverride
|
|
24
|
+
|
|
25
|
+
# Icon must end with two \r
|
|
26
|
+
Icon
|
|
27
|
+
|
|
28
|
+
# Thumbnails
|
|
29
|
+
._*
|
|
30
|
+
|
|
31
|
+
# Files that might appear in the root of a volume
|
|
32
|
+
.DocumentRevisions-V100
|
|
33
|
+
.fseventsd
|
|
34
|
+
.Spotlight-V100
|
|
35
|
+
.TemporaryItems
|
|
36
|
+
.Trashes
|
|
37
|
+
.VolumeIcon.icns
|
|
38
|
+
.com.apple.timemachine.donotpresent
|
|
39
|
+
|
|
40
|
+
# Directories potentially created on remote AFP share
|
|
41
|
+
.AppleDB
|
|
42
|
+
.AppleDesktop
|
|
43
|
+
Network Trash Folder
|
|
44
|
+
Temporary Items
|
|
45
|
+
.apdisk
|
|
46
|
+
|
|
47
|
+
### PyCharm ###
|
|
48
|
+
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
|
|
49
|
+
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
|
50
|
+
|
|
51
|
+
# User-specific stuff
|
|
52
|
+
.idea/**/workspace.xml
|
|
53
|
+
.idea/**/tasks.xml
|
|
54
|
+
.idea/**/usage.statistics.xml
|
|
55
|
+
.idea/**/dictionaries
|
|
56
|
+
.idea/**/shelf
|
|
57
|
+
|
|
58
|
+
# Generated files
|
|
59
|
+
.idea/**/contentModel.xml
|
|
60
|
+
|
|
61
|
+
# Sensitive or high-churn files
|
|
62
|
+
.idea/**/dataSources/
|
|
63
|
+
.idea/**/dataSources.ids
|
|
64
|
+
.idea/**/dataSources.local.xml
|
|
65
|
+
.idea/**/sqlDataSources.xml
|
|
66
|
+
.idea/**/dynamic.xml
|
|
67
|
+
.idea/**/uiDesigner.xml
|
|
68
|
+
.idea/**/dbnavigator.xml
|
|
69
|
+
|
|
70
|
+
# Gradle
|
|
71
|
+
.idea/**/gradle.xml
|
|
72
|
+
.idea/**/libraries
|
|
73
|
+
|
|
74
|
+
# Gradle and Maven with auto-import
|
|
75
|
+
# When using Gradle or Maven with auto-import, you should exclude module files,
|
|
76
|
+
# since they will be recreated, and may cause churn. Uncomment if using
|
|
77
|
+
# auto-import.
|
|
78
|
+
# .idea/modules.xml
|
|
79
|
+
# .idea/*.iml
|
|
80
|
+
# .idea/modules
|
|
81
|
+
# *.iml
|
|
82
|
+
# *.ipr
|
|
83
|
+
|
|
84
|
+
# CMake
|
|
85
|
+
cmake-build-*/
|
|
86
|
+
|
|
87
|
+
# Mongo Explorer plugin
|
|
88
|
+
.idea/**/mongoSettings.xml
|
|
89
|
+
|
|
90
|
+
# File-based project format
|
|
91
|
+
*.iws
|
|
92
|
+
|
|
93
|
+
# IntelliJ
|
|
94
|
+
out/
|
|
95
|
+
|
|
96
|
+
# mpeltonen/sbt-idea plugin
|
|
97
|
+
.idea_modules/
|
|
98
|
+
|
|
99
|
+
# JIRA plugin
|
|
100
|
+
atlassian-ide-plugin.xml
|
|
101
|
+
|
|
102
|
+
# Cursive Clojure plugin
|
|
103
|
+
.idea/replstate.xml
|
|
104
|
+
|
|
105
|
+
# Crashlytics plugin (for Android Studio and IntelliJ)
|
|
106
|
+
com_crashlytics_export_strings.xml
|
|
107
|
+
crashlytics.properties
|
|
108
|
+
crashlytics-build.properties
|
|
109
|
+
fabric.properties
|
|
110
|
+
|
|
111
|
+
# Editor-based Rest Client
|
|
112
|
+
.idea/httpRequests
|
|
113
|
+
|
|
114
|
+
# Android studio 3.1+ serialized cache file
|
|
115
|
+
.idea/caches/build_file_checksums.ser
|
|
116
|
+
|
|
117
|
+
### PyCharm Patch ###
|
|
118
|
+
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
|
|
119
|
+
|
|
120
|
+
# *.iml
|
|
121
|
+
# modules.xml
|
|
122
|
+
# .idea/misc.xml
|
|
123
|
+
# *.ipr
|
|
124
|
+
|
|
125
|
+
# Sonarlint plugin
|
|
126
|
+
.idea/sonarlint
|
|
127
|
+
|
|
128
|
+
### Python ###
|
|
129
|
+
# Byte-compiled / optimized / DLL files
|
|
130
|
+
__pycache__/
|
|
131
|
+
*.py[cod]
|
|
132
|
+
*$py.class
|
|
133
|
+
|
|
134
|
+
# C extensions
|
|
135
|
+
*.so
|
|
136
|
+
|
|
137
|
+
# Distribution / packaging
|
|
138
|
+
.Python
|
|
139
|
+
build/
|
|
140
|
+
develop-eggs/
|
|
141
|
+
dist/
|
|
142
|
+
downloads/
|
|
143
|
+
eggs/
|
|
144
|
+
.eggs/
|
|
145
|
+
lib/
|
|
146
|
+
lib64/
|
|
147
|
+
parts/
|
|
148
|
+
sdist/
|
|
149
|
+
var/
|
|
150
|
+
wheels/
|
|
151
|
+
pip-wheel-metadata/
|
|
152
|
+
share/python-wheels/
|
|
153
|
+
*.egg-info/
|
|
154
|
+
.installed.cfg
|
|
155
|
+
*.egg
|
|
156
|
+
MANIFEST
|
|
157
|
+
|
|
158
|
+
# PyInstaller
|
|
159
|
+
# Usually these files are written by a python script from a template
|
|
160
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
161
|
+
*.manifest
|
|
162
|
+
*.spec
|
|
163
|
+
|
|
164
|
+
# Installer logs
|
|
165
|
+
pip-log.txt
|
|
166
|
+
pip-delete-this-directory.txt
|
|
167
|
+
|
|
168
|
+
# Unit test / coverage reports
|
|
169
|
+
htmlcov/
|
|
170
|
+
.tox/
|
|
171
|
+
.nox/
|
|
172
|
+
.coverage
|
|
173
|
+
.coverage.*
|
|
174
|
+
.cache
|
|
175
|
+
nosetests.xml
|
|
176
|
+
coverage.xml
|
|
177
|
+
*.cover
|
|
178
|
+
.hypothesis/
|
|
179
|
+
.pytest_cache/
|
|
180
|
+
|
|
181
|
+
# Translations
|
|
182
|
+
*.mo
|
|
183
|
+
*.pot
|
|
184
|
+
|
|
185
|
+
# Django stuff:
|
|
186
|
+
*.log
|
|
187
|
+
local_settings.py
|
|
188
|
+
db.sqlite3
|
|
189
|
+
db.sqlite3-journal
|
|
190
|
+
|
|
191
|
+
# Flask stuff:
|
|
192
|
+
instance/
|
|
193
|
+
.webassets-cache
|
|
194
|
+
|
|
195
|
+
# Scrapy stuff:
|
|
196
|
+
.scrapy
|
|
197
|
+
|
|
198
|
+
# Sphinx documentation
|
|
199
|
+
docs/_build/
|
|
200
|
+
|
|
201
|
+
# PyBuilder
|
|
202
|
+
target/
|
|
203
|
+
|
|
204
|
+
# Jupyter Notebook
|
|
205
|
+
.ipynb_checkpoints
|
|
206
|
+
|
|
207
|
+
# IPython
|
|
208
|
+
profile_default/
|
|
209
|
+
ipython_config.py
|
|
210
|
+
|
|
211
|
+
# pyenv
|
|
212
|
+
.python-version
|
|
213
|
+
|
|
214
|
+
# pipenv
|
|
215
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
216
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
217
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
218
|
+
# install all needed dependencies.
|
|
219
|
+
#Pipfile.lock
|
|
220
|
+
|
|
221
|
+
# celery beat schedule file
|
|
222
|
+
celerybeat-schedule
|
|
223
|
+
|
|
224
|
+
# SageMath parsed files
|
|
225
|
+
*.sage.py
|
|
226
|
+
|
|
227
|
+
# Environments
|
|
228
|
+
.env
|
|
229
|
+
.venv
|
|
230
|
+
env/
|
|
231
|
+
venv/
|
|
232
|
+
ENV/
|
|
233
|
+
env.bak/
|
|
234
|
+
venv.bak/
|
|
235
|
+
|
|
236
|
+
# Spyder project settings
|
|
237
|
+
.spyderproject
|
|
238
|
+
.spyproject
|
|
239
|
+
|
|
240
|
+
# Rope project settings
|
|
241
|
+
.ropeproject
|
|
242
|
+
|
|
243
|
+
# mkdocs documentation
|
|
244
|
+
/site
|
|
245
|
+
|
|
246
|
+
# mypy
|
|
247
|
+
.mypy_cache/
|
|
248
|
+
.dmypy.json
|
|
249
|
+
dmypy.json
|
|
250
|
+
|
|
251
|
+
# Pyre type checker
|
|
252
|
+
.pyre/
|
|
253
|
+
|
|
254
|
+
### VisualStudioCode ###
|
|
255
|
+
.vscode
|
|
256
|
+
.vscode/*
|
|
257
|
+
!.vscode/tasks.json
|
|
258
|
+
!.vscode/launch.json
|
|
259
|
+
!.vscode/extensions.json
|
|
260
|
+
|
|
261
|
+
### VisualStudioCode Patch ###
|
|
262
|
+
# Ignore all local history of files
|
|
263
|
+
.history
|
|
264
|
+
|
|
265
|
+
### Windows ###
|
|
266
|
+
# Windows thumbnail cache files
|
|
267
|
+
Thumbs.db
|
|
268
|
+
Thumbs.db:encryptable
|
|
269
|
+
ehthumbs.db
|
|
270
|
+
ehthumbs_vista.db
|
|
271
|
+
|
|
272
|
+
# Dump file
|
|
273
|
+
*.stackdump
|
|
274
|
+
|
|
275
|
+
# Folder config file
|
|
276
|
+
[Dd]esktop.ini
|
|
277
|
+
|
|
278
|
+
# Recycle Bin used on file shares
|
|
279
|
+
$RECYCLE.BIN/
|
|
280
|
+
|
|
281
|
+
# Windows Installer files
|
|
282
|
+
*.cab
|
|
283
|
+
*.msi
|
|
284
|
+
*.msix
|
|
285
|
+
*.msm
|
|
286
|
+
*.msp
|
|
287
|
+
|
|
288
|
+
# Windows shortcuts
|
|
289
|
+
*.lnk
|
|
290
|
+
|
|
291
|
+
# End of https://www.gitignore.io/api/osx,linux,python,windows,pycharm,visualstudiocode
|
|
292
|
+
|
|
293
|
+
# Misc
|
|
294
|
+
test_report
|
|
295
|
+
wheelhouse
|
|
296
|
+
/.idea/*
|
|
297
|
+
*.html
|
|
298
|
+
TMP_CHANGELOG.md
|
|
299
|
+
|
|
300
|
+
# Docs files
|
|
301
|
+
docs/.cache/
|
|
302
|
+
docs/public
|
|
303
|
+
node_modules
|
|
304
|
+
api/
|
|
305
|
+
site/
|
|
306
|
+
!404.html
|
|
307
|
+
!docs/overrides/*.html
|
|
308
|
+
|
|
309
|
+
# CDK
|
|
310
|
+
.cdk
|
|
311
|
+
|
|
312
|
+
!.github/workflows/lib
|
|
313
|
+
examples/**/sam/.aws-sam
|
|
314
|
+
|
|
315
|
+
cdk.out
|
|
316
|
+
# NOTE: different accounts will be used for E2E thus creating unnecessary git clutter
|
|
317
|
+
cdk.context.json
|
|
318
|
+
|
|
319
|
+
# vim
|
|
320
|
+
*.swp
|
|
321
|
+
|
|
322
|
+
# LLMs
|
|
323
|
+
.claude
|
|
324
|
+
.amazonq
|
|
325
|
+
.kiro
|
|
326
|
+
.github/instructions
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: aws_lambda_powertools
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.36.0
|
|
4
4
|
Summary: Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless best practices and increase developer velocity.
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
Project-URL: Repository, https://github.com/aws-powertools/powertools-lambda-python
|
|
6
|
+
Project-URL: Documentation, https://docs.powertools.aws.dev/lambda/python/
|
|
7
|
+
Project-URL: Issue tracker, https://github.com/aws-powertools/powertools-lambda-python/issues
|
|
8
|
+
Project-URL: Releases, https://github.com/aws-powertools/powertools-lambda-python/releases
|
|
7
9
|
Author: Amazon Web Services
|
|
8
|
-
|
|
10
|
+
License: MIT
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: aws,aws_lambda_powertools,feature_flags,idempotency,lambda,logging,middleware,powertools,tracing
|
|
9
13
|
Classifier: Development Status :: 5 - Production/Stable
|
|
10
14
|
Classifier: Intended Audience :: Developers
|
|
11
15
|
Classifier: License :: OSI Approved :: MIT License
|
|
@@ -17,35 +21,46 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
17
21
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
22
|
Classifier: Programming Language :: Python :: 3.13
|
|
19
23
|
Classifier: Programming Language :: Python :: 3.14
|
|
24
|
+
Requires-Python: <4.0.0,>=3.10
|
|
25
|
+
Requires-Dist: jmespath<2.0.0,>=1.0.1
|
|
26
|
+
Requires-Dist: typing-extensions<5.0.0,>=4.11.0
|
|
20
27
|
Provides-Extra: all
|
|
28
|
+
Requires-Dist: aws-encryption-sdk<5.0.0,>=4.0.5; extra == 'all'
|
|
29
|
+
Requires-Dist: aws-xray-sdk<3.0.0,>=2.8.0; extra == 'all'
|
|
30
|
+
Requires-Dist: cryptography<51.0.0,>=50.0.1; extra == 'all'
|
|
31
|
+
Requires-Dist: fastjsonschema<3.0.0,>=2.14.5; extra == 'all'
|
|
32
|
+
Requires-Dist: jsonpath-ng<2.0.0,>=1.6.0; extra == 'all'
|
|
33
|
+
Requires-Dist: pydantic-settings<3.0.0,>=2.6.1; extra == 'all'
|
|
34
|
+
Requires-Dist: pydantic<3.0.0,>=2.4.0; extra == 'all'
|
|
35
|
+
Requires-Dist: pyjwt<3.0.0,>=2.14.0; extra == 'all'
|
|
36
|
+
Requires-Dist: urllib3<3.0.0,>=2.7.0; extra == 'all'
|
|
21
37
|
Provides-Extra: aws-sdk
|
|
38
|
+
Requires-Dist: boto3<2.0.0,>=1.34.32; extra == 'aws-sdk'
|
|
22
39
|
Provides-Extra: datadog
|
|
40
|
+
Requires-Dist: datadog-lambda<9.0.0,>=8.114.0; extra == 'datadog'
|
|
23
41
|
Provides-Extra: datamasking
|
|
42
|
+
Requires-Dist: aws-encryption-sdk<5.0.0,>=4.0.5; extra == 'datamasking'
|
|
43
|
+
Requires-Dist: jsonpath-ng<2.0.0,>=1.6.0; extra == 'datamasking'
|
|
44
|
+
Provides-Extra: jwt
|
|
45
|
+
Requires-Dist: cryptography<51.0.0,>=50.0.1; extra == 'jwt'
|
|
46
|
+
Requires-Dist: pyjwt<3.0.0,>=2.14.0; extra == 'jwt'
|
|
47
|
+
Requires-Dist: urllib3<3.0.0,>=2.7.0; extra == 'jwt'
|
|
24
48
|
Provides-Extra: kafka-consumer-avro
|
|
49
|
+
Requires-Dist: avro<2.0.0,>=1.12.0; extra == 'kafka-consumer-avro'
|
|
25
50
|
Provides-Extra: kafka-consumer-protobuf
|
|
51
|
+
Requires-Dist: protobuf<8.0.0,>=6.30.2; extra == 'kafka-consumer-protobuf'
|
|
52
|
+
Provides-Extra: oauth2
|
|
53
|
+
Requires-Dist: urllib3<3.0.0,>=2.7.0; extra == 'oauth2'
|
|
26
54
|
Provides-Extra: parser
|
|
55
|
+
Requires-Dist: pydantic<3.0.0,>=2.4.0; extra == 'parser'
|
|
27
56
|
Provides-Extra: redis
|
|
57
|
+
Requires-Dist: redis<9.0,>=4.4; extra == 'redis'
|
|
28
58
|
Provides-Extra: tracer
|
|
59
|
+
Requires-Dist: aws-xray-sdk<3.0.0,>=2.8.0; extra == 'tracer'
|
|
29
60
|
Provides-Extra: validation
|
|
61
|
+
Requires-Dist: fastjsonschema<3.0.0,>=2.14.5; extra == 'validation'
|
|
30
62
|
Provides-Extra: valkey
|
|
31
|
-
Requires-Dist:
|
|
32
|
-
Requires-Dist: aws-encryption-sdk (>=4.0.5,<5.0.0) ; extra == "all" or extra == "datamasking"
|
|
33
|
-
Requires-Dist: aws-xray-sdk (>=2.8.0,<3.0.0) ; extra == "tracer" or extra == "all"
|
|
34
|
-
Requires-Dist: boto3 (>=1.34.32,<2.0.0) ; extra == "aws-sdk"
|
|
35
|
-
Requires-Dist: datadog-lambda (>=8.114.0,<9.0.0) ; extra == "datadog"
|
|
36
|
-
Requires-Dist: fastjsonschema (>=2.14.5,<3.0.0) ; extra == "validation" or extra == "all"
|
|
37
|
-
Requires-Dist: jmespath (>=1.0.1,<2.0.0)
|
|
38
|
-
Requires-Dist: jsonpath-ng (>=1.6.0,<2.0.0) ; extra == "all" or extra == "datamasking"
|
|
39
|
-
Requires-Dist: protobuf (>=6.30.2,<8.0.0) ; extra == "kafka-consumer-protobuf"
|
|
40
|
-
Requires-Dist: pydantic (>=2.4.0,<3.0.0) ; extra == "parser" or extra == "all"
|
|
41
|
-
Requires-Dist: pydantic-settings (>=2.6.1,<3.0.0) ; extra == "all"
|
|
42
|
-
Requires-Dist: redis (>=4.4,<9.0) ; extra == "redis"
|
|
43
|
-
Requires-Dist: typing-extensions (>=4.11.0,<5.0.0)
|
|
44
|
-
Requires-Dist: valkey-glide (>=1.3.5,<3.0) ; extra == "valkey"
|
|
45
|
-
Project-URL: Documentation, https://docs.powertools.aws.dev/lambda/python/
|
|
46
|
-
Project-URL: Issue tracker, https://github.com/aws-powertools/powertools-lambda-python/issues
|
|
47
|
-
Project-URL: Repository, https://github.com/aws-powertools/powertools-lambda-python
|
|
48
|
-
Project-URL: Releases, https://github.com/aws-powertools/powertools-lambda-python/releases
|
|
63
|
+
Requires-Dist: valkey-glide<3.0,>=1.3.5; extra == 'valkey'
|
|
49
64
|
Description-Content-Type: text/markdown
|
|
50
65
|
|
|
51
66
|
<!-- markdownlint-disable MD013 MD041 MD043 -->
|
|
@@ -161,4 +176,3 @@ If you think you’ve found a potential security issue, please do not post it in
|
|
|
161
176
|
## License
|
|
162
177
|
|
|
163
178
|
This library is licensed under the MIT-0 License. See the LICENSE file.
|
|
164
|
-
|
|
@@ -3,6 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import base64
|
|
4
4
|
import json
|
|
5
5
|
import logging
|
|
6
|
+
import os
|
|
6
7
|
import re
|
|
7
8
|
import traceback
|
|
8
9
|
import warnings
|
|
@@ -18,7 +19,7 @@ from typing_extensions import override
|
|
|
18
19
|
|
|
19
20
|
from aws_lambda_powertools.event_handler import content_types
|
|
20
21
|
from aws_lambda_powertools.event_handler.exception_handling import ExceptionHandlerManager
|
|
21
|
-
from aws_lambda_powertools.event_handler.exceptions import NotFoundError, ServiceError
|
|
22
|
+
from aws_lambda_powertools.event_handler.exceptions import NotFoundError, ResponseSizeExceededError, ServiceError
|
|
22
23
|
from aws_lambda_powertools.event_handler.openapi.config import OpenAPIConfig
|
|
23
24
|
from aws_lambda_powertools.event_handler.openapi.constants import (
|
|
24
25
|
DEFAULT_API_VERSION,
|
|
@@ -72,6 +73,7 @@ _UNSAFE_URI = r"%<> \[\]{}|^"
|
|
|
72
73
|
_NAMED_GROUP_BOUNDARY_PATTERN = rf"(?P\1[{_SAFE_URI}{_UNSAFE_URI}\\w]+)"
|
|
73
74
|
_ROUTE_REGEX = "^{}$"
|
|
74
75
|
_JSON_DUMP_CALL = partial(json.dumps, separators=(",", ":"), cls=Encoder)
|
|
76
|
+
_ALB_MAX_RESPONSE_SIZE = 1024 * 1024
|
|
75
77
|
|
|
76
78
|
ResponseEventT = TypeVar("ResponseEventT", bound=BaseProxyEvent)
|
|
77
79
|
ResponseT = TypeVar("ResponseT")
|
|
@@ -810,6 +812,11 @@ class ResponseBuilder(Generic[ResponseEventT]):
|
|
|
810
812
|
|
|
811
813
|
def _compress(self):
|
|
812
814
|
"""Compress the response body, but only if `Accept-Encoding` headers includes gzip."""
|
|
815
|
+
# A response without a body, such as 204 No Content or 304 Not Modified, has nothing to compress
|
|
816
|
+
if self.response.body is None:
|
|
817
|
+
logger.debug("Response has no body; skipping compression")
|
|
818
|
+
return
|
|
819
|
+
|
|
813
820
|
self.response.headers["Content-Encoding"] = "gzip"
|
|
814
821
|
if isinstance(self.response.body, str):
|
|
815
822
|
logger.debug("Converting string response to bytes before compressing it")
|
|
@@ -2553,7 +2560,7 @@ class ApiGatewayResolver(BaseRouter):
|
|
|
2553
2560
|
BaseRouter.current_event = self._to_proxy_event(cast(dict, event))
|
|
2554
2561
|
BaseRouter.lambda_context = context
|
|
2555
2562
|
|
|
2556
|
-
response = self.
|
|
2563
|
+
response = self._build_response(self._resolve())
|
|
2557
2564
|
|
|
2558
2565
|
# Debug print Processed Middlewares
|
|
2559
2566
|
if self._debug:
|
|
@@ -2614,7 +2621,7 @@ class ApiGatewayResolver(BaseRouter):
|
|
|
2614
2621
|
BaseRouter.current_event = self._to_proxy_event(cast(dict, event))
|
|
2615
2622
|
BaseRouter.lambda_context = context
|
|
2616
2623
|
|
|
2617
|
-
response = (await self._resolve_async())
|
|
2624
|
+
response = self._build_response(await self._resolve_async())
|
|
2618
2625
|
|
|
2619
2626
|
if self._debug:
|
|
2620
2627
|
print("\nProcessed Middlewares:")
|
|
@@ -2626,6 +2633,10 @@ class ApiGatewayResolver(BaseRouter):
|
|
|
2626
2633
|
|
|
2627
2634
|
return response
|
|
2628
2635
|
|
|
2636
|
+
def _build_response(self, response_builder: ResponseBuilder) -> dict[str, Any]:
|
|
2637
|
+
"""Build the final integration response after route and middleware processing."""
|
|
2638
|
+
return response_builder.build(self.current_event, self._cors)
|
|
2639
|
+
|
|
2629
2640
|
async def _resolve_async(self) -> ResponseBuilder:
|
|
2630
2641
|
method = self.current_event.http_method.upper()
|
|
2631
2642
|
path = self._remove_prefix(self.current_event.path)
|
|
@@ -3035,21 +3046,18 @@ class ApiGatewayResolver(BaseRouter):
|
|
|
3035
3046
|
An optional prefix to be added to the originally defined rule
|
|
3036
3047
|
"""
|
|
3037
3048
|
|
|
3038
|
-
# Add reference to parent ApiGatewayResolver to support use cases where people subclass it to add custom logic
|
|
3039
|
-
router.api_resolver = self
|
|
3040
|
-
|
|
3041
3049
|
logger.debug("Merging App context with Router context")
|
|
3042
3050
|
self.context.update(**router.context)
|
|
3043
3051
|
|
|
3052
|
+
# Delegate request state to the resolver after preserving the router context.
|
|
3053
|
+
router.api_resolver = self
|
|
3054
|
+
|
|
3044
3055
|
logger.debug("Appending Router middlewares into App middlewares.")
|
|
3045
3056
|
self._router_middlewares = self._router_middlewares + router._router_middlewares
|
|
3046
3057
|
|
|
3047
3058
|
logger.debug("Appending Router exception_handler into App exception_handler.")
|
|
3048
3059
|
self.exception_handler_manager.update_exception_handlers(router._exception_handlers)
|
|
3049
3060
|
|
|
3050
|
-
# use pointer to allow context clearance after event is processed e.g., resolve(evt, ctx)
|
|
3051
|
-
router.context = self.context
|
|
3052
|
-
|
|
3053
3061
|
# Iterate through the routes defined in the router to configure and apply middlewares for each route
|
|
3054
3062
|
for route, func in router._routes.items():
|
|
3055
3063
|
new_route = route
|
|
@@ -3112,9 +3120,48 @@ class Router(BaseRouter):
|
|
|
3112
3120
|
self._routes: dict[tuple, Callable] = {}
|
|
3113
3121
|
self._routes_with_middleware: dict[tuple, list[Callable]] = {}
|
|
3114
3122
|
self.api_resolver: BaseRouter | None = None
|
|
3115
|
-
self.
|
|
3123
|
+
self._context: dict = {} # early init as customers might add context before event resolution
|
|
3116
3124
|
self._exception_handlers: dict[type, Callable] = {}
|
|
3117
3125
|
|
|
3126
|
+
@property
|
|
3127
|
+
def current_event(self) -> BaseProxyEvent:
|
|
3128
|
+
if self.api_resolver is not None:
|
|
3129
|
+
return self.api_resolver.current_event
|
|
3130
|
+
return BaseRouter.current_event
|
|
3131
|
+
|
|
3132
|
+
@current_event.setter
|
|
3133
|
+
def current_event(self, value: BaseProxyEvent) -> None:
|
|
3134
|
+
if self.api_resolver is not None:
|
|
3135
|
+
self.api_resolver.current_event = value
|
|
3136
|
+
else:
|
|
3137
|
+
BaseRouter.current_event = value
|
|
3138
|
+
|
|
3139
|
+
@property
|
|
3140
|
+
def lambda_context(self) -> LambdaContext:
|
|
3141
|
+
if self.api_resolver is not None:
|
|
3142
|
+
return self.api_resolver.lambda_context
|
|
3143
|
+
return BaseRouter.lambda_context
|
|
3144
|
+
|
|
3145
|
+
@lambda_context.setter
|
|
3146
|
+
def lambda_context(self, value: LambdaContext) -> None:
|
|
3147
|
+
if self.api_resolver is not None:
|
|
3148
|
+
self.api_resolver.lambda_context = value
|
|
3149
|
+
else:
|
|
3150
|
+
BaseRouter.lambda_context = value
|
|
3151
|
+
|
|
3152
|
+
@property
|
|
3153
|
+
def context(self) -> dict:
|
|
3154
|
+
if self.api_resolver is not None:
|
|
3155
|
+
return self.api_resolver.context
|
|
3156
|
+
return self._context
|
|
3157
|
+
|
|
3158
|
+
@context.setter
|
|
3159
|
+
def context(self, value: dict) -> None:
|
|
3160
|
+
if self.api_resolver is not None:
|
|
3161
|
+
self.api_resolver.context = value
|
|
3162
|
+
else:
|
|
3163
|
+
self._context = value
|
|
3164
|
+
|
|
3118
3165
|
def route(
|
|
3119
3166
|
self,
|
|
3120
3167
|
rule: str,
|
|
@@ -3301,6 +3348,7 @@ class ALBResolver(ApiGatewayResolver):
|
|
|
3301
3348
|
response_validation_error_http_code: HTTPStatus | int | None = None,
|
|
3302
3349
|
json_body_deserializer: Callable[[str], dict] | None = None,
|
|
3303
3350
|
decode_query_parameters: bool = False,
|
|
3351
|
+
enable_response_size_validation: bool = False,
|
|
3304
3352
|
):
|
|
3305
3353
|
"""Amazon Application Load Balancer (ALB) resolver
|
|
3306
3354
|
|
|
@@ -3327,6 +3375,10 @@ class ALBResolver(ApiGatewayResolver):
|
|
|
3327
3375
|
by default json.loads when integrating with EventSource data class
|
|
3328
3376
|
decode_query_parameters: bool | None
|
|
3329
3377
|
Enables URL-decoding of query parameters (both keys and values), by default False.
|
|
3378
|
+
enable_response_size_validation: bool
|
|
3379
|
+
Validate the complete serialized response against ALB's 1 MB limit, by default False.
|
|
3380
|
+
Raises ResponseSizeExceededError when the limit is exceeded. Registered exception handlers
|
|
3381
|
+
can return a smaller response, which is also validated.
|
|
3330
3382
|
"""
|
|
3331
3383
|
super().__init__(
|
|
3332
3384
|
cors=cors,
|
|
@@ -3338,6 +3390,42 @@ class ALBResolver(ApiGatewayResolver):
|
|
|
3338
3390
|
json_body_deserializer=json_body_deserializer,
|
|
3339
3391
|
)
|
|
3340
3392
|
self.decode_query_parameters = decode_query_parameters
|
|
3393
|
+
self._enable_response_size_validation = enable_response_size_validation
|
|
3394
|
+
|
|
3395
|
+
@override
|
|
3396
|
+
def _build_response(self, response_builder: ResponseBuilder) -> dict[str, Any]:
|
|
3397
|
+
response = super()._build_response(response_builder)
|
|
3398
|
+
if not self._enable_response_size_validation:
|
|
3399
|
+
return response
|
|
3400
|
+
|
|
3401
|
+
try:
|
|
3402
|
+
self._validate_response_size(response)
|
|
3403
|
+
except ResponseSizeExceededError as exc:
|
|
3404
|
+
try:
|
|
3405
|
+
# Resolved responses retain their route, including not-found and preflight responses.
|
|
3406
|
+
handled_response = self._call_exception_handler(exc, cast(Route, response_builder.route))
|
|
3407
|
+
if handled_response is None:
|
|
3408
|
+
raise
|
|
3409
|
+
|
|
3410
|
+
handled_response.response = cast(Response, self._to_response(handled_response.response))
|
|
3411
|
+
response = super()._build_response(handled_response)
|
|
3412
|
+
# Validate once more without invoking an exception handler recursively.
|
|
3413
|
+
self._validate_response_size(response)
|
|
3414
|
+
except Exception:
|
|
3415
|
+
self.clear_context()
|
|
3416
|
+
raise
|
|
3417
|
+
|
|
3418
|
+
return response
|
|
3419
|
+
|
|
3420
|
+
@staticmethod
|
|
3421
|
+
def _validate_response_size(response: dict[str, Any]) -> None:
|
|
3422
|
+
# Match the Lambda Python runtime's outer JSON encoding, including its default separators.
|
|
3423
|
+
# Managed Python 3.12+ runtimes return Unicode directly; older/custom runtimes escape it.
|
|
3424
|
+
runtime = re.fullmatch(r"AWS_Lambda_python3\.(\d+)", os.getenv("AWS_EXECUTION_ENV", ""))
|
|
3425
|
+
ensure_ascii = runtime is None or int(runtime[1]) < 12
|
|
3426
|
+
actual_size = len(json.dumps(response, ensure_ascii=ensure_ascii).encode("utf-8"))
|
|
3427
|
+
if actual_size > _ALB_MAX_RESPONSE_SIZE:
|
|
3428
|
+
raise ResponseSizeExceededError(actual_size=actual_size, max_size=_ALB_MAX_RESPONSE_SIZE)
|
|
3341
3429
|
|
|
3342
3430
|
def _get_base_path(self) -> str:
|
|
3343
3431
|
# ALB doesn't have a stage variable, so we just return an empty string
|
|
@@ -3,6 +3,25 @@ from __future__ import annotations
|
|
|
3
3
|
from http import HTTPStatus
|
|
4
4
|
|
|
5
5
|
|
|
6
|
+
class ResponseSizeExceededError(Exception):
|
|
7
|
+
"""The serialized Lambda response exceeds the integration's size limit."""
|
|
8
|
+
|
|
9
|
+
def __init__(self, *, actual_size: int, max_size: int):
|
|
10
|
+
"""
|
|
11
|
+
Parameters
|
|
12
|
+
----------
|
|
13
|
+
actual_size: int
|
|
14
|
+
Size of the complete serialized response in bytes.
|
|
15
|
+
max_size: int
|
|
16
|
+
Maximum allowed serialized response size in bytes.
|
|
17
|
+
"""
|
|
18
|
+
self.actual_size = actual_size
|
|
19
|
+
self.max_size = max_size
|
|
20
|
+
super().__init__(
|
|
21
|
+
f"Serialized response size ({actual_size} bytes) exceeds the maximum allowed size ({max_size} bytes)",
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
|
|
6
25
|
class ServiceError(Exception):
|
|
7
26
|
"""Powertools class HTTP Service Error"""
|
|
8
27
|
|