From c4e488c4ffd480396f53c9557a1864e12bc11f60 Mon Sep 17 00:00:00 2001 From: Michael Brewer Date: Sun, 7 Mar 2021 19:58:40 -0800 Subject: [PATCH 1/2] docs: Correct code examples Changes: * Fix formatting for the api docs * Correct the data classes code examples in the docs --- .../middleware_factory/exceptions.py | 2 -- aws_lambda_powertools/utilities/batch/base.py | 1 + aws_lambda_powertools/utilities/batch/sqs.py | 4 ++- .../utilities/idempotency/idempotency.py | 1 + .../idempotency/persistence/dynamodb.py | 7 +++-- docs/utilities/data_classes.md | 26 ++++++++++++------- docs/utilities/idempotency.md | 2 +- 7 files changed, 27 insertions(+), 16 deletions(-) diff --git a/aws_lambda_powertools/middleware_factory/exceptions.py b/aws_lambda_powertools/middleware_factory/exceptions.py index 4d807b85384..f3b2858a3a2 100644 --- a/aws_lambda_powertools/middleware_factory/exceptions.py +++ b/aws_lambda_powertools/middleware_factory/exceptions.py @@ -1,4 +1,2 @@ class MiddlewareInvalidArgumentError(Exception): """When middleware receives non keyword=arguments""" - - pass diff --git a/aws_lambda_powertools/utilities/batch/base.py b/aws_lambda_powertools/utilities/batch/base.py index 2a7a956a19d..56d99c6d19c 100644 --- a/aws_lambda_powertools/utilities/batch/base.py +++ b/aws_lambda_powertools/utilities/batch/base.py @@ -125,6 +125,7 @@ def batch_processor( Examples -------- **Processes Lambda's event with PartialSQSProcessor** + >>> from aws_lambda_powertools.utilities.batch import batch_processor, PartialSQSProcessor >>> >>> def record_handler(record): diff --git a/aws_lambda_powertools/utilities/batch/sqs.py b/aws_lambda_powertools/utilities/batch/sqs.py index 82c24ece10a..37cbfb73723 100644 --- a/aws_lambda_powertools/utilities/batch/sqs.py +++ b/aws_lambda_powertools/utilities/batch/sqs.py @@ -53,6 +53,7 @@ class PartialSQSProcessor(BasePartialProcessor): >>> # have been deleted from the queue after context's exit. >>> >>> return result + """ def __init__(self, config: Optional[Config] = None, suppress_exception: bool = False): @@ -163,10 +164,11 @@ def sqs_batch_processor( Examples -------- **Processes Lambda's event with PartialSQSProcessor** + >>> from aws_lambda_powertools.utilities.batch import sqs_batch_processor >>> >>> def record_handler(record): - >>> return record["body"] + >>> return record["body"] >>> >>> @sqs_batch_processor(record_handler=record_handler) >>> def handler(event, context): diff --git a/aws_lambda_powertools/utilities/idempotency/idempotency.py b/aws_lambda_powertools/utilities/idempotency/idempotency.py index 750ed360f0b..2b3a4ceef39 100644 --- a/aws_lambda_powertools/utilities/idempotency/idempotency.py +++ b/aws_lambda_powertools/utilities/idempotency/idempotency.py @@ -51,6 +51,7 @@ def idempotent( Examples -------- **Processes Lambda's event in an idempotent manner** + >>> from aws_lambda_powertools.utilities.idempotency import ( >>> idempotent, DynamoDBPersistenceLayer, IdempotencyConfig >>> ) diff --git a/aws_lambda_powertools/utilities/idempotency/persistence/dynamodb.py b/aws_lambda_powertools/utilities/idempotency/persistence/dynamodb.py index d87cd71ff4e..d6ea2e2e02b 100644 --- a/aws_lambda_powertools/utilities/idempotency/persistence/dynamodb.py +++ b/aws_lambda_powertools/utilities/idempotency/persistence/dynamodb.py @@ -53,11 +53,14 @@ def __init__( Examples -------- **Create a DynamoDB persistence layer with custom settings** - >>> from aws_lambda_powertools.utilities.idempotency import idempotent, DynamoDBPersistenceLayer + + >>> from aws_lambda_powertools.utilities.idempotency import ( + >>> idempotent, DynamoDBPersistenceLayer + >>> ) >>> >>> persistence_store = DynamoDBPersistenceLayer(table_name="idempotency_store") >>> - >>> @idempotent(persistence_store=persistence_store, event_key="body") + >>> @idempotent(persistence_store=persistence_store) >>> def handler(event, context): >>> return {"StatusCode": 200} """ diff --git a/docs/utilities/data_classes.md b/docs/utilities/data_classes.md index d03763ab574..ca71a928a41 100644 --- a/docs/utilities/data_classes.md +++ b/docs/utilities/data_classes.md @@ -34,7 +34,7 @@ For example, if your Lambda function is being triggered by an API Gateway proxy def lambda_handler(event, context): event: APIGatewayProxyEvent = APIGatewayProxyEvent(event) - if 'helloworld' in event.path && event.http_method == 'GET': + if 'helloworld' in event.path and event.http_method == 'GET': do_something_with(event.body, user) ``` @@ -80,7 +80,7 @@ Typically used for API Gateway REST API or HTTP API using v1 proxy event. request_context = event.request_context identity = request_context.identity - if 'helloworld' in event.path && event.http_method == 'GET': + if 'helloworld' in event.path and event.http_method == 'GET': user = identity.user do_something_with(event.body, user) ``` @@ -97,7 +97,7 @@ Typically used for API Gateway REST API or HTTP API using v1 proxy event. request_context = event.request_context query_string_parameters = event.query_string_parameters - if 'helloworld' in event.raw_path && request_context.http.method == 'POST': + if 'helloworld' in event.raw_path and request_context.http.method == 'POST': do_something_with(event.body, query_string_parameters) ``` @@ -110,11 +110,12 @@ decompress and parse json data from the event. ```python from aws_lambda_powertools.utilities.data_classes import CloudWatchLogsEvent + from aws_lambda_powertools.utilities.data_classes.cloud_watch_logs_event import CloudWatchLogsDecodedData def lambda_handler(event, context): event: CloudWatchLogsEvent = CloudWatchLogsEvent(event) - decompressed_log = event.parse_logs_data + decompressed_log: CloudWatchLogsDecodedData = event.parse_logs_data log_events = decompressed_log.log_events for event in log_events: do_something_with(event.timestamp, event.message) @@ -146,7 +147,7 @@ Verify Auth Challenge | `data_classes.cognito_user_pool_event.VerifyAuthChalleng def lambda_handler(event, context): event: PostConfirmationTriggerEvent = PostConfirmationTriggerEvent(event) - user_attributes = user_attributes = event.request.user_attributes + user_attributes = event.request.user_attributes do_something_with(user_attributes) ``` @@ -159,7 +160,10 @@ attributes values (`AttributeValue`), as well as enums for stream view type (`St === "lambda_app.py" ```python - from aws_lambda_powertools.utilities.data_classes.dynamo_db_stream_event import DynamoDBStreamEvent, DynamoDBRecordEventName + from aws_lambda_powertools.utilities.data_classes.dynamo_db_stream_event import ( + DynamoDBStreamEvent, + DynamoDBRecordEventName + ) def lambda_handler(event, context): event: DynamoDBStreamEvent = DynamoDBStreamEvent(event) @@ -194,14 +198,16 @@ or plain text, depending on the original payload. ```python from aws_lambda_powertools.utilities.data_classes import KinesisStreamEvent + def lambda_handler(event, context): event: KinesisStreamEvent = KinesisStreamEvent(event) - - # if data was delivered as json - data = event.data_as_text() + kinesis_record = next(event.records).kinesis # if data was delivered as text - data = event.data_as_json() + data = kinesis_record.data_as_text() + + # if data was delivered as json + data = kinesis_record.data_as_json() do_something_with(data) ``` diff --git a/docs/utilities/idempotency.md b/docs/utilities/idempotency.md index 4f3c776927e..6e74bd2b163 100644 --- a/docs/utilities/idempotency.md +++ b/docs/utilities/idempotency.md @@ -99,7 +99,7 @@ You can quickly start by initializing the `DynamoDBPersistenceLayer` class and u ) ... return { - "payment_id": payment.id + "payment_id": payment.id, "message": "success", "statusCode": 200, } From 3223f394cd42d9bb9ae3327f31768de0d67d74c8 Mon Sep 17 00:00:00 2001 From: Michael Brewer Date: Sun, 7 Mar 2021 20:38:32 -0800 Subject: [PATCH 2/2] docs: Fix typo for sampling rate --- aws_lambda_powertools/logging/logger.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aws_lambda_powertools/logging/logger.py b/aws_lambda_powertools/logging/logger.py index 26c1df5ab93..06285e73b82 100644 --- a/aws_lambda_powertools/logging/logger.py +++ b/aws_lambda_powertools/logging/logger.py @@ -53,7 +53,7 @@ class Logger(logging.Logger): # lgtm [py/missing-call-to-init] LOG_LEVEL: str logging level (e.g. INFO, DEBUG) POWERTOOLS_LOGGER_SAMPLE_RATE: float - samping rate ranging from 0 to 1, 1 being 100% sampling + sampling rate ranging from 0 to 1, 1 being 100% sampling Parameters ----------