aws-lambda-powertools 3.35.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.35.0 → aws_lambda_powertools-3.36.0}/PKG-INFO +38 -24
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/api_gateway.py +55 -3
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/exceptions.py +19 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/encoders.py +6 -6
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/params.py +1 -1
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/base.py +3 -3
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/metrics.py +8 -3
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/cloudwatch.py +8 -4
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/cookies.py +1 -1
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/dynamodb_deserializer.py +12 -10
- {aws_lambda_powertools-3.35.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.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/base.py +2 -2
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/persistence/base.py +5 -5
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/persistence/dynamodb.py +2 -2
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/appsync/scalar_types_utils.py +6 -6
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/common.py +1 -1
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/feature_flags.py +23 -1
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/base.py +2 -2
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/persistence/base.py +30 -7
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/persistence/datarecord.py +4 -4
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/persistence/dynamodb.py +2 -2
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/persistence/redis.py +3 -3
- aws_lambda_powertools-3.36.0/aws_lambda_powertools/utilities/kafka/serialization/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/serialization/custom_dict.py +4 -2
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/_s3_seekable_io.py +17 -4
- aws_lambda_powertools-3.36.0/pyproject.toml +266 -0
- aws_lambda_powertools-3.35.0/pyproject.toml +0 -246
- aws_lambda_powertools-3.35.0/setup.py +0 -94
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/LICENSE +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/README.md +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/THIRD-PARTY-LICENSES +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/appsync.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/bedrock_agent.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/bedrock_agent_function.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/content_types.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/depends.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/_registry.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/appsync_events.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/base.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/exceptions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/functions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/router.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/events_appsync/types.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/exception_handling.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/graphql_appsync/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/graphql_appsync/_registry.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/graphql_appsync/base.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/graphql_appsync/exceptions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/graphql_appsync/router.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/http_resolver.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/lambda_function_url.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/middlewares/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/middlewares/async_utils.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/middlewares/base.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/middlewares/openapi_validation.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/middlewares/schema_validation.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/compat.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/config.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/constants.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/dependant.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/exceptions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/merge.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/models.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/pydantic_loader.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/schema_generator.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/html.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/oauth2.py +0 -0
- {aws_lambda_powertools-3.35.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.35.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.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/openapi/types.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/request.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/router.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/types.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/util.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/event_handler/vpc_lattice.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/exceptions/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/buffer/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/buffer/cache.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/buffer/config.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/buffer/functions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/buffer/handler.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/constants.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/correlation_paths.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/exceptions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/filters.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/formatter.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/formatters/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/formatters/datadog.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/lambda_context.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/logger.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/types.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/logging/utils.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/exceptions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/functions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/metric.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/base.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/constants.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/exceptions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/metric_properties.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/types.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/cold_start.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/datadog/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/datadog/datadog.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/datadog/metrics.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/provider/datadog/warnings.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/types.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/middleware_factory/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/middleware_factory/exceptions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/middleware_factory/factory.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/package_logger.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/py.typed +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/cache_dict.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/constants.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/functions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/headers_serializer.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/json_encoder.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/lazy_import.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/types.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/shared/user_agent.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/tracing/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/tracing/base.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/tracing/extensions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/tracing/tracer.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/__init__.py +0 -0
- {aws_lambda_powertools-3.35.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.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/batch/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/batch/base.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/batch/decorators.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/batch/exceptions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/batch/sqs_fifo_partial_processor.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/batch/types.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/circuit_breaker.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/config.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/exceptions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/persistence/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/persistence/record.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/circuit_breaker/states.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/active_mq_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/alb_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/api_gateway_authorizer_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/api_gateway_proxy_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/api_gateway_websocket_event.py +0 -0
- {aws_lambda_powertools-3.35.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.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/appsync_authorizer_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/appsync_resolver_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/appsync_resolver_events_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/aws_config_rule_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/bedrock_agent_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/bedrock_agent_function_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_alarm_event.py +0 -0
- {aws_lambda_powertools-3.35.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.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_logs_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/cloudformation_custom_resource_event.py +0 -0
- {aws_lambda_powertools-3.35.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.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/code_pipeline_job_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/cognito_user_pool_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/connect_contact_flow_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/dynamo_db_stream_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/event_bridge_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/event_source.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/iot_registry_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/kafka_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/kinesis_firehose_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/kinesis_stream_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/lambda_function_url_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/rabbit_mq_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/s3_batch_operation_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/s3_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/s3_object_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/secrets_manager_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/ses_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/shared_functions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/sns_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/sqs_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/transfer_family_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_classes/vpc_lattice.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/base.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/constants.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/exceptions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/provider/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/provider/base.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/data_masking/provider/kms/__init__.py +0 -0
- {aws_lambda_powertools-3.35.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.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/appconfig.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/base.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/comparators.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/constants.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/exceptions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/schema.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/feature_flags/types.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/config.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/exceptions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/hook.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/idempotency.py +0 -0
- {aws_lambda_powertools-3.35.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.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/persistence/cache.py +0 -0
- {aws_lambda_powertools-3.35.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.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/serialization/base.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/serialization/custom_dict.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/serialization/dataclass.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/serialization/functions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/serialization/no_op.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/idempotency/serialization/pydantic.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/jmespath_utils/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/jmespath_utils/envelopes.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/consumer_records.py +0 -0
- {aws_lambda_powertools-3.35.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.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/deserializer/avro.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/deserializer/base.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/deserializer/default.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/deserializer/deserializer.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/deserializer/json.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/deserializer/protobuf.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/exceptions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/kafka_consumer.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/schema_config.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/serialization/base.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/serialization/dataclass.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/serialization/pydantic.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/serialization/serialization.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/kafka/serialization/types.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/metadata/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/metadata/exceptions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/metadata/lambda_metadata.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/appconfig.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/base.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/constants.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/dynamodb.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/exceptions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/secrets.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/ssm.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parameters/types.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/apigw.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/apigw_websocket.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/apigwv2.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/base.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/bedrock_agent.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/cloudwatch.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/dynamodb.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/event_bridge.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/kafka.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/kinesis.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/kinesis_firehose.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/lambda_function_url.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/sns.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/sqs.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/vpc_lattice.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/envelopes/vpc_latticev2.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/exceptions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/functions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/alb.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/apigw.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/apigw_websocket.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/apigwv2.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/appsync.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/appsync_events.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/bedrock_agent.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/cloudformation_custom_resource.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/cloudwatch.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/cognito.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/dynamodb.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/event_bridge.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/iot_registry_events.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/kafka.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/kinesis.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose_sqs.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/lambda_function_url.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/s3.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/s3_batch_operation.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/s3_event_notification.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/s3_object_event.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/ses.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/sns.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/sqs.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/transfer_family.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/vpc_lattice.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/models/vpc_latticev2.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/parser.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/parser/types.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/serialization.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/compat.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/constants.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/s3_object.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/transformations/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/transformations/base.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/transformations/csv.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/transformations/gzip.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/transformations/zip.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/streaming/types.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/typing/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/typing/lambda_client_context.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/typing/lambda_client_context_mobile_client.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/typing/lambda_cognito_identity.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/typing/lambda_context.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/validation/__init__.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/validation/base.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/validation/envelopes.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/validation/exceptions.py +0 -0
- {aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/utilities/validation/validator.py +0 -0
- {aws_lambda_powertools-3.35.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)
|
|
@@ -3337,6 +3348,7 @@ class ALBResolver(ApiGatewayResolver):
|
|
|
3337
3348
|
response_validation_error_http_code: HTTPStatus | int | None = None,
|
|
3338
3349
|
json_body_deserializer: Callable[[str], dict] | None = None,
|
|
3339
3350
|
decode_query_parameters: bool = False,
|
|
3351
|
+
enable_response_size_validation: bool = False,
|
|
3340
3352
|
):
|
|
3341
3353
|
"""Amazon Application Load Balancer (ALB) resolver
|
|
3342
3354
|
|
|
@@ -3363,6 +3375,10 @@ class ALBResolver(ApiGatewayResolver):
|
|
|
3363
3375
|
by default json.loads when integrating with EventSource data class
|
|
3364
3376
|
decode_query_parameters: bool | None
|
|
3365
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.
|
|
3366
3382
|
"""
|
|
3367
3383
|
super().__init__(
|
|
3368
3384
|
cors=cors,
|
|
@@ -3374,6 +3390,42 @@ class ALBResolver(ApiGatewayResolver):
|
|
|
3374
3390
|
json_body_deserializer=json_body_deserializer,
|
|
3375
3391
|
)
|
|
3376
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)
|
|
3377
3429
|
|
|
3378
3430
|
def _get_base_path(self) -> str:
|
|
3379
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
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import dataclasses
|
|
4
|
-
import datetime
|
|
4
|
+
import datetime as dt
|
|
5
5
|
from collections import defaultdict, deque
|
|
6
6
|
from decimal import Decimal
|
|
7
7
|
from enum import Enum
|
|
@@ -306,7 +306,7 @@ def _dump_other(
|
|
|
306
306
|
)
|
|
307
307
|
|
|
308
308
|
|
|
309
|
-
def iso_format(o:
|
|
309
|
+
def iso_format(o: dt.date | dt.time) -> str:
|
|
310
310
|
"""
|
|
311
311
|
ISO format for date and time
|
|
312
312
|
"""
|
|
@@ -341,10 +341,10 @@ ENCODERS_BY_TYPE: dict[type[Any], Callable[[Any], Any]] = {
|
|
|
341
341
|
str: lambda o: o,
|
|
342
342
|
type(None): lambda o: o,
|
|
343
343
|
bytes: lambda o: o.decode(),
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
344
|
+
dt.date: iso_format,
|
|
345
|
+
dt.datetime: iso_format,
|
|
346
|
+
dt.time: iso_format,
|
|
347
|
+
dt.timedelta: lambda td: td.total_seconds(),
|
|
348
348
|
Decimal: decimal_encoder,
|
|
349
349
|
Enum: lambda o: o.value,
|
|
350
350
|
PurePath: str,
|
|
@@ -1059,7 +1059,7 @@ def get_field_info_annotated_type(annotation, value, is_path_param: bool) -> tup
|
|
|
1059
1059
|
# Reconstruct type_annotation with non-FieldInfo metadata if present
|
|
1060
1060
|
# This ensures constraints like Interval are preserved
|
|
1061
1061
|
if other_metadata and not preserve_full_annotation:
|
|
1062
|
-
type_annotation = Annotated[(type_annotation,
|
|
1062
|
+
type_annotation = Annotated[(type_annotation,) + tuple(other_metadata)]
|
|
1063
1063
|
|
|
1064
1064
|
# Process the annotation if it exists
|
|
1065
1065
|
field_info: FieldInfo | None = None
|
{aws_lambda_powertools-3.35.0 → aws_lambda_powertools-3.36.0}/aws_lambda_powertools/metrics/base.py
RENAMED
|
@@ -6,7 +6,7 @@ Metrics utility
|
|
|
6
6
|
|
|
7
7
|
from __future__ import annotations
|
|
8
8
|
|
|
9
|
-
import datetime
|
|
9
|
+
import datetime as dt
|
|
10
10
|
import functools
|
|
11
11
|
import json
|
|
12
12
|
import logging
|
|
@@ -250,7 +250,7 @@ class MetricManager:
|
|
|
250
250
|
|
|
251
251
|
return {
|
|
252
252
|
"_aws": {
|
|
253
|
-
"Timestamp": self.timestamp or int(
|
|
253
|
+
"Timestamp": self.timestamp or int(dt.datetime.now().timestamp() * 1000), # epoch
|
|
254
254
|
"CloudWatchMetrics": [
|
|
255
255
|
{
|
|
256
256
|
"Namespace": self.namespace, # "test_namespace"
|
|
@@ -322,7 +322,7 @@ class MetricManager:
|
|
|
322
322
|
else:
|
|
323
323
|
self.metadata_set[str(key)] = value
|
|
324
324
|
|
|
325
|
-
def set_timestamp(self, timestamp: int |
|
|
325
|
+
def set_timestamp(self, timestamp: int | dt.datetime):
|
|
326
326
|
"""
|
|
327
327
|
Set the timestamp for the metric.
|
|
328
328
|
|
|
@@ -6,7 +6,7 @@ from typing import TYPE_CHECKING, Any
|
|
|
6
6
|
from aws_lambda_powertools.metrics.provider.cloudwatch_emf.cloudwatch import AmazonCloudWatchEMFProvider
|
|
7
7
|
|
|
8
8
|
if TYPE_CHECKING:
|
|
9
|
-
import datetime
|
|
9
|
+
import datetime as dt
|
|
10
10
|
from collections.abc import Callable
|
|
11
11
|
|
|
12
12
|
from aws_lambda_powertools.metrics.base import MetricResolution, MetricUnit
|
|
@@ -96,7 +96,12 @@ class Metrics:
|
|
|
96
96
|
self.default_dimensions = self._default_dimensions
|
|
97
97
|
self.dimension_set = self._dimensions
|
|
98
98
|
|
|
99
|
-
self.dimension_set.update(
|
|
99
|
+
self.dimension_set.update(
|
|
100
|
+
**{
|
|
101
|
+
name: value if isinstance(value, str) else str(value)
|
|
102
|
+
for name, value in self._default_dimensions.items()
|
|
103
|
+
},
|
|
104
|
+
)
|
|
100
105
|
|
|
101
106
|
if provider is None:
|
|
102
107
|
self.provider = AmazonCloudWatchEMFProvider(
|
|
@@ -141,7 +146,7 @@ class Metrics:
|
|
|
141
146
|
def add_metadata(self, key: str, value: Any) -> None:
|
|
142
147
|
self.provider.add_metadata(key=key, value=value)
|
|
143
148
|
|
|
144
|
-
def set_timestamp(self, timestamp: int |
|
|
149
|
+
def set_timestamp(self, timestamp: int | dt.datetime):
|
|
145
150
|
"""
|
|
146
151
|
Set the timestamp for the metric.
|
|
147
152
|
|