aws-lambda-powertools 3.15.1a0__tar.gz → 3.15.2a0__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.15.1a0 → aws_lambda_powertools-3.15.2a0}/PKG-INFO +1 -1
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/shared/version.py +1 -1
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/consumer_records.py +21 -6
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/deserializer/avro.py +14 -1
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/deserializer/default.py +4 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/deserializer/deserializer.py +15 -9
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/deserializer/json.py +19 -1
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/deserializer/protobuf.py +49 -45
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/exceptions.py +6 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/serialization/custom_dict.py +4 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/serialization/dataclass.py +5 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/serialization/pydantic.py +4 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/pyproject.toml +1 -1
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/setup.py +1 -1
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/LICENSE +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/README.md +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/THIRD-PARTY-LICENSES +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/api_gateway.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/appsync.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/bedrock_agent.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/bedrock_agent_function.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/content_types.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/events_appsync/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/events_appsync/_registry.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/events_appsync/appsync_events.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/events_appsync/base.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/events_appsync/exceptions.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/events_appsync/functions.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/events_appsync/router.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/events_appsync/types.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/exception_handling.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/exceptions.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/graphql_appsync/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/graphql_appsync/_registry.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/graphql_appsync/base.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/graphql_appsync/exceptions.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/graphql_appsync/router.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/lambda_function_url.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/middlewares/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/middlewares/base.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/middlewares/openapi_validation.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/middlewares/schema_validation.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/compat.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/config.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/constants.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/dependant.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/encoders.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/exceptions.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/models.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/params.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/pydantic_loader.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/html.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/oauth2.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/swagger-ui-bundle.min.js +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/swagger_ui/swagger-ui.min.css +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/openapi/types.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/router.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/types.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/util.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/event_handler/vpc_lattice.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/exceptions/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/buffer/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/buffer/cache.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/buffer/config.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/buffer/functions.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/constants.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/correlation_paths.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/exceptions.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/filters.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/formatter.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/formatters/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/formatters/datadog.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/lambda_context.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/logger.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/types.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/logging/utils.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/base.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/exceptions.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/functions.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/metric.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/metrics.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/base.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/cloudwatch.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/constants.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/exceptions.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/metric_properties.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/cloudwatch_emf/types.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/cold_start.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/datadog/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/datadog/datadog.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/datadog/metrics.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/provider/datadog/warnings.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/metrics/types.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/middleware_factory/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/middleware_factory/exceptions.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/middleware_factory/factory.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/package_logger.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/py.typed +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/shared/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/shared/cache_dict.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/shared/constants.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/shared/cookies.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/shared/dynamodb_deserializer.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/shared/functions.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/shared/headers_serializer.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/shared/json_encoder.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/shared/lazy_import.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/shared/types.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/shared/user_agent.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/tracing/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/tracing/base.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/tracing/extensions.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/tracing/tracer.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/batch/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/batch/base.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/batch/decorators.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/batch/exceptions.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/batch/sqs_fifo_partial_processor.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/batch/types.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/active_mq_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/alb_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/api_gateway_authorizer_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/api_gateway_proxy_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/api_gateway_websocket_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/appsync/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/appsync/scalar_types_utils.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/appsync_authorizer_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/appsync_resolver_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/appsync_resolver_events_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/aws_config_rule_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/bedrock_agent_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/bedrock_agent_function_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_alarm_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_custom_widget_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/cloud_watch_logs_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/cloudformation_custom_resource_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/code_deploy_lifecycle_hook_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/code_pipeline_job_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/cognito_user_pool_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/common.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/connect_contact_flow_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/dynamo_db_stream_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/event_bridge_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/event_source.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/iot_registry_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/kafka_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/kinesis_firehose_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/kinesis_stream_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/lambda_function_url_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/rabbit_mq_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/s3_batch_operation_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/s3_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/s3_object_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/secrets_manager_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/ses_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/shared_functions.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/sns_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/sqs_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/transfer_family_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_classes/vpc_lattice.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_masking/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_masking/base.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_masking/constants.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_masking/exceptions.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_masking/provider/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_masking/provider/base.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_masking/provider/kms/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/data_masking/provider/kms/aws_encryption_sdk.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/feature_flags/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/feature_flags/appconfig.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/feature_flags/base.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/feature_flags/comparators.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/feature_flags/constants.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/feature_flags/exceptions.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/feature_flags/feature_flags.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/feature_flags/schema.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/feature_flags/types.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/base.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/config.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/exceptions.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/hook.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/idempotency.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/persistence/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/persistence/base.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/persistence/cache.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/persistence/datarecord.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/persistence/dynamodb.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/persistence/redis.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/serialization/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/serialization/base.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/serialization/custom_dict.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/serialization/dataclass.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/serialization/functions.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/serialization/no_op.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/idempotency/serialization/pydantic.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/jmespath_utils/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/jmespath_utils/envelopes.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/deserializer/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/deserializer/base.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/kafka_consumer.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/schema_config.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/serialization/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/serialization/base.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/serialization/serialization.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/kafka/serialization/types.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parameters/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parameters/appconfig.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parameters/base.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parameters/constants.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parameters/dynamodb.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parameters/exceptions.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parameters/secrets.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parameters/ssm.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parameters/types.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/apigw.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/apigw_websocket.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/apigwv2.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/base.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/bedrock_agent.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/cloudwatch.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/dynamodb.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/event_bridge.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/kafka.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/kinesis.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/kinesis_firehose.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/lambda_function_url.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/sns.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/sqs.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/vpc_lattice.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/envelopes/vpc_latticev2.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/exceptions.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/functions.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/alb.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/apigw.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/apigw_websocket.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/apigwv2.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/appsync.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/bedrock_agent.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/cloudformation_custom_resource.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/cloudwatch.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/dynamodb.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/event_bridge.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/iot_registry_events.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/kafka.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/kinesis.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/kinesis_firehose_sqs.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/lambda_function_url.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/s3.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/s3_batch_operation.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/s3_event_notification.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/s3_object_event.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/ses.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/sns.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/sqs.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/transfer_family.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/vpc_lattice.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/models/vpc_latticev2.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/parser.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/parser/types.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/serialization.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/streaming/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/streaming/_s3_seekable_io.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/streaming/compat.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/streaming/constants.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/streaming/s3_object.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/streaming/transformations/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/streaming/transformations/base.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/streaming/transformations/csv.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/streaming/transformations/gzip.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/streaming/transformations/zip.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/streaming/types.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/typing/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/typing/lambda_client_context.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/typing/lambda_client_context_mobile_client.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/typing/lambda_cognito_identity.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/typing/lambda_context.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/validation/__init__.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/validation/base.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/validation/envelopes.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/validation/exceptions.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/utilities/validation/validator.py +0 -0
- {aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/warnings/__init__.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: aws_lambda_powertools
|
3
|
-
Version: 3.15.
|
3
|
+
Version: 3.15.2a0
|
4
4
|
Summary: Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless best practices and increase developer velocity.
|
5
5
|
License: MIT
|
6
6
|
Keywords: aws_lambda_powertools,aws,tracing,logging,lambda,powertools,feature_flags,idempotency,middleware
|
@@ -1,5 +1,6 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
+
import logging
|
3
4
|
from functools import cached_property
|
4
5
|
from typing import TYPE_CHECKING, Any
|
5
6
|
|
@@ -13,6 +14,8 @@ if TYPE_CHECKING:
|
|
13
14
|
|
14
15
|
from aws_lambda_powertools.utilities.kafka.schema_config import SchemaConfig
|
15
16
|
|
17
|
+
logger = logging.getLogger(__name__)
|
18
|
+
|
16
19
|
|
17
20
|
class ConsumerRecordRecords(KafkaEventRecordBase):
|
18
21
|
"""
|
@@ -31,18 +34,24 @@ class ConsumerRecordRecords(KafkaEventRecordBase):
|
|
31
34
|
if not key:
|
32
35
|
return None
|
33
36
|
|
37
|
+
logger.debug("Deserializing key field")
|
38
|
+
|
34
39
|
# Determine schema type and schema string
|
35
40
|
schema_type = None
|
36
|
-
|
41
|
+
schema_value = None
|
37
42
|
output_serializer = None
|
38
43
|
|
39
44
|
if self.schema_config and self.schema_config.key_schema_type:
|
40
45
|
schema_type = self.schema_config.key_schema_type
|
41
|
-
|
46
|
+
schema_value = self.schema_config.key_schema
|
42
47
|
output_serializer = self.schema_config.key_output_serializer
|
43
48
|
|
44
49
|
# Always use get_deserializer if None it will default to DEFAULT
|
45
|
-
deserializer = get_deserializer(
|
50
|
+
deserializer = get_deserializer(
|
51
|
+
schema_type=schema_type,
|
52
|
+
schema_value=schema_value,
|
53
|
+
field_metadata=self.key_schema_metadata,
|
54
|
+
)
|
46
55
|
deserialized_value = deserializer.deserialize(key)
|
47
56
|
|
48
57
|
# Apply output serializer if specified
|
@@ -57,16 +66,22 @@ class ConsumerRecordRecords(KafkaEventRecordBase):
|
|
57
66
|
|
58
67
|
# Determine schema type and schema string
|
59
68
|
schema_type = None
|
60
|
-
|
69
|
+
schema_value = None
|
61
70
|
output_serializer = None
|
62
71
|
|
72
|
+
logger.debug("Deserializing value field")
|
73
|
+
|
63
74
|
if self.schema_config and self.schema_config.value_schema_type:
|
64
75
|
schema_type = self.schema_config.value_schema_type
|
65
|
-
|
76
|
+
schema_value = self.schema_config.value_schema
|
66
77
|
output_serializer = self.schema_config.value_output_serializer
|
67
78
|
|
68
79
|
# Always use get_deserializer if None it will default to DEFAULT
|
69
|
-
deserializer = get_deserializer(
|
80
|
+
deserializer = get_deserializer(
|
81
|
+
schema_type=schema_type,
|
82
|
+
schema_value=schema_value,
|
83
|
+
field_metadata=self.value_schema_metadata,
|
84
|
+
)
|
70
85
|
deserialized_value = deserializer.deserialize(value)
|
71
86
|
|
72
87
|
# Apply output serializer if specified
|
@@ -1,6 +1,8 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
3
|
import io
|
4
|
+
import logging
|
5
|
+
from typing import Any
|
4
6
|
|
5
7
|
from avro.io import BinaryDecoder, DatumReader
|
6
8
|
from avro.schema import parse as parse_schema
|
@@ -9,8 +11,11 @@ from aws_lambda_powertools.utilities.kafka.deserializer.base import Deserializer
|
|
9
11
|
from aws_lambda_powertools.utilities.kafka.exceptions import (
|
10
12
|
KafkaConsumerAvroSchemaParserError,
|
11
13
|
KafkaConsumerDeserializationError,
|
14
|
+
KafkaConsumerDeserializationFormatMismatch,
|
12
15
|
)
|
13
16
|
|
17
|
+
logger = logging.getLogger(__name__)
|
18
|
+
|
14
19
|
|
15
20
|
class AvroDeserializer(DeserializerBase):
|
16
21
|
"""
|
@@ -20,10 +25,11 @@ class AvroDeserializer(DeserializerBase):
|
|
20
25
|
a provided Avro schema definition.
|
21
26
|
"""
|
22
27
|
|
23
|
-
def __init__(self, schema_str: str):
|
28
|
+
def __init__(self, schema_str: str, field_metadata: dict[str, Any] | None = None):
|
24
29
|
try:
|
25
30
|
self.parsed_schema = parse_schema(schema_str)
|
26
31
|
self.reader = DatumReader(self.parsed_schema)
|
32
|
+
self.field_metatada = field_metadata
|
27
33
|
except Exception as e:
|
28
34
|
raise KafkaConsumerAvroSchemaParserError(
|
29
35
|
f"Invalid Avro schema. Please ensure the provided avro schema is valid: {type(e).__name__}: {str(e)}",
|
@@ -60,6 +66,13 @@ class AvroDeserializer(DeserializerBase):
|
|
60
66
|
... except KafkaConsumerDeserializationError as e:
|
61
67
|
... print(f"Failed to deserialize: {e}")
|
62
68
|
"""
|
69
|
+
data_format = self.field_metatada.get("dataFormat") if self.field_metatada else None
|
70
|
+
|
71
|
+
if data_format and data_format != "AVRO":
|
72
|
+
raise KafkaConsumerDeserializationFormatMismatch(f"Expected data is AVRO but you sent {data_format}")
|
73
|
+
|
74
|
+
logger.debug("Deserializing data with AVRO format")
|
75
|
+
|
63
76
|
try:
|
64
77
|
value = self._decode_input(data)
|
65
78
|
bytes_reader = io.BytesIO(value)
|
@@ -1,9 +1,12 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
3
|
import base64
|
4
|
+
import logging
|
4
5
|
|
5
6
|
from aws_lambda_powertools.utilities.kafka.deserializer.base import DeserializerBase
|
6
7
|
|
8
|
+
logger = logging.getLogger(__name__)
|
9
|
+
|
7
10
|
|
8
11
|
class DefaultDeserializer(DeserializerBase):
|
9
12
|
"""
|
@@ -43,4 +46,5 @@ class DefaultDeserializer(DeserializerBase):
|
|
43
46
|
>>> result = deserializer.deserialize(bytes_data)
|
44
47
|
>>> print(result == bytes_data) # Output: True
|
45
48
|
"""
|
49
|
+
logger.debug("Deserializing data with primitives types")
|
46
50
|
return base64.b64decode(data).decode("utf-8")
|
@@ -13,21 +13,27 @@ if TYPE_CHECKING:
|
|
13
13
|
_deserializer_cache: dict[str, DeserializerBase] = {}
|
14
14
|
|
15
15
|
|
16
|
-
def _get_cache_key(schema_type: str | object, schema_value: Any) -> str:
|
16
|
+
def _get_cache_key(schema_type: str | object, schema_value: Any, field_metadata: dict[str, Any]) -> str:
|
17
|
+
schema_metadata = None
|
18
|
+
|
19
|
+
if field_metadata:
|
20
|
+
schema_metadata = field_metadata.get("schemaId")
|
21
|
+
|
17
22
|
if schema_value is None:
|
18
|
-
|
23
|
+
schema_hash = f"{str(schema_type)}_{schema_metadata}"
|
19
24
|
|
20
25
|
if isinstance(schema_value, str):
|
26
|
+
hashable_value = f"{schema_value}_{schema_metadata}"
|
21
27
|
# For string schemas like Avro, hash the content
|
22
|
-
schema_hash = hashlib.md5(
|
28
|
+
schema_hash = hashlib.md5(hashable_value.encode("utf-8"), usedforsecurity=False).hexdigest()
|
23
29
|
else:
|
24
30
|
# For objects like Protobuf, use the object id
|
25
|
-
schema_hash = str(id(schema_value))
|
31
|
+
schema_hash = f"{str(id(schema_value))}_{schema_metadata}"
|
26
32
|
|
27
33
|
return f"{schema_type}_{schema_hash}"
|
28
34
|
|
29
35
|
|
30
|
-
def get_deserializer(schema_type: str | object, schema_value: Any) -> DeserializerBase:
|
36
|
+
def get_deserializer(schema_type: str | object, schema_value: Any, field_metadata: Any) -> DeserializerBase:
|
31
37
|
"""
|
32
38
|
Factory function to get the appropriate deserializer based on schema type.
|
33
39
|
|
@@ -75,7 +81,7 @@ def get_deserializer(schema_type: str | object, schema_value: Any) -> Deserializ
|
|
75
81
|
"""
|
76
82
|
|
77
83
|
# Generate a cache key based on schema type and value
|
78
|
-
cache_key = _get_cache_key(schema_type, schema_value)
|
84
|
+
cache_key = _get_cache_key(schema_type, schema_value, field_metadata)
|
79
85
|
|
80
86
|
# Check if we already have this deserializer in cache
|
81
87
|
if cache_key in _deserializer_cache:
|
@@ -87,14 +93,14 @@ def get_deserializer(schema_type: str | object, schema_value: Any) -> Deserializ
|
|
87
93
|
# Import here to avoid dependency if not used
|
88
94
|
from aws_lambda_powertools.utilities.kafka.deserializer.avro import AvroDeserializer
|
89
95
|
|
90
|
-
deserializer = AvroDeserializer(schema_value)
|
96
|
+
deserializer = AvroDeserializer(schema_str=schema_value, field_metadata=field_metadata)
|
91
97
|
elif schema_type == "PROTOBUF":
|
92
98
|
# Import here to avoid dependency if not used
|
93
99
|
from aws_lambda_powertools.utilities.kafka.deserializer.protobuf import ProtobufDeserializer
|
94
100
|
|
95
|
-
deserializer = ProtobufDeserializer(schema_value)
|
101
|
+
deserializer = ProtobufDeserializer(message_class=schema_value, field_metadata=field_metadata)
|
96
102
|
elif schema_type == "JSON":
|
97
|
-
deserializer = JsonDeserializer()
|
103
|
+
deserializer = JsonDeserializer(field_metadata=field_metadata)
|
98
104
|
|
99
105
|
else:
|
100
106
|
# Default to no-op deserializer
|
@@ -2,9 +2,16 @@ from __future__ import annotations
|
|
2
2
|
|
3
3
|
import base64
|
4
4
|
import json
|
5
|
+
import logging
|
6
|
+
from typing import Any
|
5
7
|
|
6
8
|
from aws_lambda_powertools.utilities.kafka.deserializer.base import DeserializerBase
|
7
|
-
from aws_lambda_powertools.utilities.kafka.exceptions import
|
9
|
+
from aws_lambda_powertools.utilities.kafka.exceptions import (
|
10
|
+
KafkaConsumerDeserializationError,
|
11
|
+
KafkaConsumerDeserializationFormatMismatch,
|
12
|
+
)
|
13
|
+
|
14
|
+
logger = logging.getLogger(__name__)
|
8
15
|
|
9
16
|
|
10
17
|
class JsonDeserializer(DeserializerBase):
|
@@ -15,6 +22,9 @@ class JsonDeserializer(DeserializerBase):
|
|
15
22
|
into Python dictionaries.
|
16
23
|
"""
|
17
24
|
|
25
|
+
def __init__(self, field_metadata: dict[str, Any] | None = None):
|
26
|
+
self.field_metatada = field_metadata
|
27
|
+
|
18
28
|
def deserialize(self, data: bytes | str) -> dict:
|
19
29
|
"""
|
20
30
|
Deserialize JSON data to a Python dictionary.
|
@@ -45,6 +55,14 @@ class JsonDeserializer(DeserializerBase):
|
|
45
55
|
... except KafkaConsumerDeserializationError as e:
|
46
56
|
... print(f"Failed to deserialize: {e}")
|
47
57
|
"""
|
58
|
+
|
59
|
+
data_format = self.field_metatada.get("dataFormat") if self.field_metatada else None
|
60
|
+
|
61
|
+
if data_format and data_format != "JSON":
|
62
|
+
raise KafkaConsumerDeserializationFormatMismatch(f"Expected data is JSON but you sent {data_format}")
|
63
|
+
|
64
|
+
logger.debug("Deserializing data with JSON format")
|
65
|
+
|
48
66
|
try:
|
49
67
|
return json.loads(base64.b64decode(data).decode("utf-8"))
|
50
68
|
except Exception as e:
|
@@ -1,15 +1,19 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
+
import logging
|
3
4
|
from typing import Any
|
4
5
|
|
5
|
-
from google.protobuf.internal.decoder import
|
6
|
+
from google.protobuf.internal.decoder import _DecodeSignedVarint # type: ignore[attr-defined]
|
6
7
|
from google.protobuf.json_format import MessageToDict
|
7
8
|
|
8
9
|
from aws_lambda_powertools.utilities.kafka.deserializer.base import DeserializerBase
|
9
10
|
from aws_lambda_powertools.utilities.kafka.exceptions import (
|
10
11
|
KafkaConsumerDeserializationError,
|
12
|
+
KafkaConsumerDeserializationFormatMismatch,
|
11
13
|
)
|
12
14
|
|
15
|
+
logger = logging.getLogger(__name__)
|
16
|
+
|
13
17
|
|
14
18
|
class ProtobufDeserializer(DeserializerBase):
|
15
19
|
"""
|
@@ -19,8 +23,9 @@ class ProtobufDeserializer(DeserializerBase):
|
|
19
23
|
into Python dictionaries using the provided Protocol Buffer message class.
|
20
24
|
"""
|
21
25
|
|
22
|
-
def __init__(self, message_class: Any):
|
26
|
+
def __init__(self, message_class: Any, field_metadata: dict[str, Any] | None = None):
|
23
27
|
self.message_class = message_class
|
28
|
+
self.field_metatada = field_metadata
|
24
29
|
|
25
30
|
def deserialize(self, data: bytes | str) -> dict:
|
26
31
|
"""
|
@@ -61,57 +66,56 @@ class ProtobufDeserializer(DeserializerBase):
|
|
61
66
|
... except KafkaConsumerDeserializationError as e:
|
62
67
|
... print(f"Failed to deserialize: {e}")
|
63
68
|
"""
|
64
|
-
value = self._decode_input(data)
|
65
|
-
try:
|
66
|
-
message = self.message_class()
|
67
|
-
message.ParseFromString(value)
|
68
|
-
return MessageToDict(message, preserving_proto_field_name=True)
|
69
|
-
except Exception:
|
70
|
-
return self._deserialize_with_message_index(value, self.message_class())
|
71
69
|
|
72
|
-
|
73
|
-
""
|
74
|
-
Deserialize protobuf message with Confluent message index handling.
|
70
|
+
data_format = self.field_metatada.get("dataFormat") if self.field_metatada else None
|
71
|
+
schema_id = self.field_metatada.get("schemaId") if self.field_metatada else None
|
75
72
|
|
76
|
-
|
77
|
-
|
78
|
-
data : bytes
|
79
|
-
data
|
80
|
-
parser : google.protobuf.message.Message
|
81
|
-
Protobuf message instance to parse the data into
|
73
|
+
if data_format and data_format != "PROTOBUF":
|
74
|
+
raise KafkaConsumerDeserializationFormatMismatch(f"Expected data is PROTOBUF but you sent {data_format}")
|
82
75
|
|
83
|
-
|
84
|
-
-------
|
85
|
-
dict
|
86
|
-
Dictionary representation of the parsed protobuf message with original field names
|
76
|
+
logger.debug("Deserializing data with PROTOBUF format")
|
87
77
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
78
|
+
try:
|
79
|
+
value = self._decode_input(data)
|
80
|
+
message = self.message_class()
|
81
|
+
if schema_id is None:
|
82
|
+
logger.debug("Plain PROTOBUF data: using default deserializer")
|
83
|
+
# Plain protobuf - direct parser
|
84
|
+
message.ParseFromString(value)
|
85
|
+
elif len(schema_id) > 20:
|
86
|
+
logger.debug("PROTOBUF data integrated with Glue SchemaRegistry: using Glue deserializer")
|
87
|
+
# Glue schema registry integration - remove the first byte
|
88
|
+
message.ParseFromString(value[1:])
|
89
|
+
else:
|
90
|
+
logger.debug("PROTOBUF data integrated with Confluent SchemaRegistry: using Confluent deserializer")
|
91
|
+
# Confluent schema registry integration - remove message index list
|
92
|
+
message.ParseFromString(self._remove_message_index(value))
|
92
93
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
"""
|
94
|
+
return MessageToDict(message, preserving_proto_field_name=True)
|
95
|
+
except Exception as e:
|
96
|
+
raise KafkaConsumerDeserializationError(
|
97
|
+
f"Error trying to deserialize protobuf data - {type(e).__name__}: {str(e)}",
|
98
|
+
) from e
|
99
99
|
|
100
|
+
def _remove_message_index(self, data):
|
101
|
+
"""
|
102
|
+
Identifies and removes Confluent Schema Registry MessageIndex from bytes.
|
103
|
+
Returns pure protobuf bytes.
|
104
|
+
"""
|
100
105
|
buffer = memoryview(data)
|
101
106
|
pos = 0
|
102
107
|
|
103
|
-
|
104
|
-
first_value, new_pos = _DecodeVarint(buffer, pos)
|
105
|
-
pos = new_pos
|
108
|
+
logger.debug("Removing message list bytes")
|
106
109
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
pos = new_pos
|
110
|
+
# Read first varint (index count or 0)
|
111
|
+
first_value, new_pos = _DecodeSignedVarint(buffer, pos)
|
112
|
+
pos = new_pos
|
111
113
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
114
|
+
# Skip index values if present
|
115
|
+
if first_value != 0:
|
116
|
+
for _ in range(first_value):
|
117
|
+
_, new_pos = _DecodeSignedVarint(buffer, pos)
|
118
|
+
pos = new_pos
|
119
|
+
|
120
|
+
# Return remaining bytes (pure protobuf)
|
121
|
+
return data[pos:]
|
@@ -4,6 +4,12 @@ class KafkaConsumerAvroSchemaParserError(Exception):
|
|
4
4
|
"""
|
5
5
|
|
6
6
|
|
7
|
+
class KafkaConsumerDeserializationFormatMismatch(Exception):
|
8
|
+
"""
|
9
|
+
Error raised when deserialization format is incompatible
|
10
|
+
"""
|
11
|
+
|
12
|
+
|
7
13
|
class KafkaConsumerDeserializationError(Exception):
|
8
14
|
"""
|
9
15
|
Error raised when message deserialization fails.
|
@@ -1,5 +1,6 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
+
import logging
|
3
4
|
from typing import TYPE_CHECKING, Any
|
4
5
|
|
5
6
|
from aws_lambda_powertools.utilities.kafka.serialization.base import OutputSerializerBase
|
@@ -9,6 +10,8 @@ if TYPE_CHECKING:
|
|
9
10
|
|
10
11
|
from aws_lambda_powertools.utilities.kafka.serialization.types import T
|
11
12
|
|
13
|
+
logger = logging.getLogger(__name__)
|
14
|
+
|
12
15
|
|
13
16
|
class CustomDictOutputSerializer(OutputSerializerBase):
|
14
17
|
"""
|
@@ -19,4 +22,5 @@ class CustomDictOutputSerializer(OutputSerializerBase):
|
|
19
22
|
"""
|
20
23
|
|
21
24
|
def serialize(self, data: dict[str, Any], output: type[T] | Callable | None = None) -> T | dict[str, Any]:
|
25
|
+
logger.debug("Serializing output data with CustomDictOutputSerializer")
|
22
26
|
return data if output is None else output(data) # type: ignore[call-arg]
|
@@ -1,5 +1,6 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
+
import logging
|
3
4
|
from dataclasses import is_dataclass
|
4
5
|
from typing import TYPE_CHECKING, Any, cast
|
5
6
|
|
@@ -9,6 +10,8 @@ from aws_lambda_powertools.utilities.kafka.serialization.types import T
|
|
9
10
|
if TYPE_CHECKING:
|
10
11
|
from collections.abc import Callable
|
11
12
|
|
13
|
+
logger = logging.getLogger(__name__)
|
14
|
+
|
12
15
|
|
13
16
|
class DataclassOutputSerializer(OutputSerializerBase):
|
14
17
|
"""
|
@@ -22,4 +25,6 @@ class DataclassOutputSerializer(OutputSerializerBase):
|
|
22
25
|
if not is_dataclass(output): # pragma: no cover
|
23
26
|
raise ValueError("Output class must be a dataclass")
|
24
27
|
|
28
|
+
logger.debug("Serializing output data with DataclassOutputSerializer")
|
29
|
+
|
25
30
|
return cast(T, output(**data))
|
@@ -1,5 +1,6 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
+
import logging
|
3
4
|
from typing import TYPE_CHECKING, Any
|
4
5
|
|
5
6
|
from pydantic import TypeAdapter
|
@@ -11,6 +12,8 @@ if TYPE_CHECKING:
|
|
11
12
|
|
12
13
|
from aws_lambda_powertools.utilities.kafka.serialization.types import T
|
13
14
|
|
15
|
+
logger = logging.getLogger(__name__)
|
16
|
+
|
14
17
|
|
15
18
|
class PydanticOutputSerializer(OutputSerializerBase):
|
16
19
|
"""
|
@@ -21,6 +24,7 @@ class PydanticOutputSerializer(OutputSerializerBase):
|
|
21
24
|
"""
|
22
25
|
|
23
26
|
def serialize(self, data: dict[str, Any], output: type[T] | Callable | None = None) -> T | dict[str, Any]:
|
27
|
+
logger.debug("Serializing output data with PydanticOutputSerializer")
|
24
28
|
# Use TypeAdapter for better support of Union types and other complex types
|
25
29
|
adapter: TypeAdapter = TypeAdapter(output)
|
26
30
|
return adapter.validate_python(data)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "aws_lambda_powertools"
|
3
|
-
version = "3.15.
|
3
|
+
version = "3.15.2a0"
|
4
4
|
description = "Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless best practices and increase developer velocity."
|
5
5
|
authors = ["Amazon Web Services"]
|
6
6
|
include = ["aws_lambda_powertools/py.typed", "THIRD-PARTY-LICENSES"]
|
@@ -72,7 +72,7 @@ extras_require = \
|
|
72
72
|
|
73
73
|
setup_kwargs = {
|
74
74
|
'name': 'aws_lambda_powertools',
|
75
|
-
'version': '3.15.
|
75
|
+
'version': '3.15.2a0',
|
76
76
|
'description': 'Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless best practices and increase developer velocity.',
|
77
77
|
'long_description': '<!-- markdownlint-disable MD013 MD041 MD043 -->\n# Powertools for AWS Lambda (Python)\n\n[](https://github.com/aws-powertools/powertools-lambda-python/actions/workflows/python_build.yml)\n[](https://app.codecov.io/gh/aws-powertools/powertools-lambda-python)\n   [](https://api.securityscorecards.dev/projects/github.com/aws-powertools/powertools-lambda-python) [](https://discord.gg/B8zZKbbyET)\n\nPowertools for AWS Lambda (Python) is a developer toolkit to implement Serverless [best practices and increase developer velocity](https://docs.powertools.aws.dev/lambda/python/latest/#features).\n\n> Also available in [Java](https://github.com/aws-powertools/powertools-lambda-java), [Typescript](https://github.com/aws-powertools/powertools-lambda-typescript), and [.NET](https://github.com/aws-powertools/powertools-lambda-dotnet).\n\n**[📜Documentation](https://docs.powertools.aws.dev/lambda/python/)** | **[🐍PyPi](https://pypi.org/project/aws-lambda-powertools/)** | **[Roadmap](https://docs.powertools.aws.dev/lambda/python/latest/roadmap/)** | **[Detailed blog post](https://aws.amazon.com/blogs/opensource/simplifying-serverless-best-practices-with-lambda-powertools/)**\n\n\n\n## Features\n\n* **[Tracing](https://docs.powertools.aws.dev/lambda/python/latest/core/tracer/)** - Decorators and utilities to trace Lambda function handlers, and both synchronous and asynchronous functions\n* **[Logging](https://docs.powertools.aws.dev/lambda/python/latest/core/logger/)** - Structured logging made easier, and decorator to enrich structured logging with key Lambda context details\n* **[Metrics](https://docs.powertools.aws.dev/lambda/python/latest/core/metrics/)** - Custom Metrics created asynchronously via CloudWatch Embedded Metric Format (EMF)\n* **[Event handler: AppSync](https://docs.powertools.aws.dev/lambda/python/latest/core/event_handler/appsync/)** - AWS AppSync event handler for Lambda Direct Resolver and Amplify GraphQL Transformer function\n* **[Event handler: API Gateway and ALB](https://docs.powertools.aws.dev/lambda/python/latest/core/event_handler/api_gateway/)** - Amazon API Gateway REST/HTTP API and ALB event handler for Lambda functions invoked using Proxy integration\n* **[Event handler: Agents for Amazon Bedrock](https://docs.powertools.aws.dev/lambda/python/latest/core/event_handler/bedrock_agents/)** - Create Agents for Amazon Bedrock, automatically generating OpenAPI schemas\n* **[Bring your own middleware](https://docs.powertools.aws.dev/lambda/python/latest/utilities/middleware_factory/)** - Decorator factory to create your own middleware to run logic before, and after each Lambda invocation\n* **[Parameters utility](https://docs.powertools.aws.dev/lambda/python/latest/utilities/parameters/)** - Retrieve and cache parameter values from Parameter Store, Secrets Manager, or DynamoDB\n* **[Batch processing](https://docs.powertools.aws.dev/lambda/python/latest/utilities/batch/)** - Handle partial failures for AWS SQS batch processing\n* **[Typing](https://docs.powertools.aws.dev/lambda/python/latest/utilities/typing/)** - Static typing classes to speedup development in your IDE\n* **[Validation](https://docs.powertools.aws.dev/lambda/python/latest/utilities/validation/)** - JSON Schema validator for inbound events and responses\n* **[Event source data classes](https://docs.powertools.aws.dev/lambda/python/latest/utilities/data_classes/)** - Data classes describing the schema of common Lambda event triggers\n* **[Parser](https://docs.powertools.aws.dev/lambda/python/latest/utilities/parser/)** - Data parsing and deep validation using Pydantic\n* **[Idempotency](https://docs.powertools.aws.dev/lambda/python/latest/utilities/idempotency/)** - Convert your Lambda functions into idempotent operations which are safe to retry\n* **[Data Masking](https://docs.powertools.aws.dev/lambda/python/latest/utilities/data_masking/)** - Protect confidential data with easy removal or encryption\n* **[Feature Flags](https://docs.powertools.aws.dev/lambda/python/latest/utilities/feature_flags/)** - A simple rule engine to evaluate when one or multiple features should be enabled depending on the input\n* **[Streaming](https://docs.powertools.aws.dev/lambda/python/latest/utilities/streaming/)** - Streams datasets larger than the available memory as streaming data.\n\n### Installation\n\nWith [pip](https://pip.pypa.io/en/latest/index.html) installed, run: ``pip install aws-lambda-powertools``\n\n## Tutorial and Examples\n\n* [Tutorial](https://docs.powertools.aws.dev/lambda/python/latest/tutorial)\n* [Serverless Shopping cart](https://github.com/aws-samples/aws-serverless-shopping-cart)\n* [Serverless Airline](https://github.com/aws-samples/aws-serverless-airline-booking)\n* [Serverless E-commerce platform](https://github.com/aws-samples/aws-serverless-ecommerce-platform)\n* [Serverless GraphQL Nanny Booking Api](https://github.com/trey-rosius/babysitter_api)\n\n## How to support Powertools for AWS Lambda (Python)?\n\n### Becoming a reference customer\n\nKnowing which companies are using this library is important to help prioritize the project internally. If your company is using Powertools for AWS Lambda (Python), you can request to have your name and logo added to the README file by raising a [Support Powertools for AWS Lambda (Python) (become a reference)](https://github.com/aws-powertools/powertools-lambda-python/issues/new?assignees=&labels=customer-reference&template=support_powertools.yml&title=%5BSupport+Lambda+Powertools%5D%3A+%3Cyour+organization+name%3E) issue.\n\nThe following companies, among others, use Powertools:\n\n* [Alma Media](https://www.almamedia.fi/en/)\n* [Banxware](https://www.banxware.com/)\n* [Brsk](https://www.brsk.co.uk/)\n* [BusPatrol](https://buspatrol.com/)\n* [Capital One](https://www.capitalone.com/)\n* [Caylent](https://caylent.com/)\n* [CHS Inc.](https://www.chsinc.com/)\n* [CPQi (Exadel Financial Services)](https://cpqi.com/)\n* [CloudZero](https://www.cloudzero.com/)\n* [CyberArk](https://www.cyberark.com/)\n* [Flyweight](https://flyweight.io/)\n* [globaldatanet](https://globaldatanet.com/)\n* [Guild](https://guild.com/)\n* [IMS](https://ims.tech/)\n* [Instil](https://instil.co/)\n* [Jit Security](https://www.jit.io/)\n* [LocalStack](https://www.localstack.cloud/)\n* [Propellor.ai](https://www.propellor.ai/)\n* [Pushpay](https://pushpay.com/)\n* [Recast](https://getrecast.com/)\n* [TopSport](https://www.topsport.com.au/)\n* [Transformity](https://transformity.tech/)\n* [Trek10](https://www.trek10.com/)\n* [Vertex Pharmaceuticals](https://www.vrtx.com/)\n\n### Sharing your work\n\nShare what you did with Powertools for AWS Lambda (Python) 💞💞. Blog post, workshops, presentation, sample apps and others. Check out what the community has already shared about Powertools for AWS Lambda (Python) [here](https://docs.powertools.aws.dev/lambda/python/latest/we_made_this/).\n\n### Using Lambda Layer or SAR\n\nThis helps us understand who uses Powertools for AWS Lambda (Python) in a non-intrusive way, and helps us gain future investments for other Powertools for AWS Lambda languages. When [using Layers](https://docs.powertools.aws.dev/lambda/python/latest/#lambda-layer), you can add Powertools for AWS Lambda (Python) as a dev dependency (or as part of your virtual env) to not impact the development process.\n\n## Credits\n\n* Structured logging initial implementation from [aws-lambda-logging](https://gitlab.com/hadrien/aws_lambda_logging)\n* Powertools for AWS Lambda (Python) idea [DAZN Powertools](https://github.com/getndazn/dazn-lambda-powertools/)\n\n## Connect\n\n* **Powertools for AWS Lambda on Discord**: `#python` - **[Invite link](https://discord.gg/B8zZKbbyET)**\n* **Email**: <aws-powertools-maintainers@amazon.com>\n\n## Security disclosures\n\nIf you think you’ve found a potential security issue, please do not post it in the Issues. Instead, please follow the instructions [here](https://aws.amazon.com/security/vulnerability-reporting/) or [email AWS security directly](mailto:aws-security@amazon.com).\n\n## License\n\nThis library is licensed under the MIT-0 License. See the LICENSE file.\n',
|
78
78
|
'author': 'Amazon Web Services',
|
File without changes
|
File without changes
|
File without changes
|
{aws_lambda_powertools-3.15.1a0 → aws_lambda_powertools-3.15.2a0}/aws_lambda_powertools/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|