Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -321,7 +321,7 @@ async def _call_publish_event_async_resolver(
if isinstance(ret, Exception)
else {"id": e.get("id"), "payload": ret}
)
for e, ret in zip(self.current_event.events, results)
for e, ret in zip(self.current_event.events, results, strict=True)
],
)

Expand Down
3 changes: 2 additions & 1 deletion aws_lambda_powertools/utilities/parser/models/dynamodb.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,8 @@ class ResponseContext(BaseModel):
description="The version of the Lambda executed",
examples=["$LATEST"],
)
function_error: str = Field(
function_error: Optional[str] = Field(
default=None,
description="",
examples=["Unhandled"],
)
Expand Down
6 changes: 5 additions & 1 deletion ruff.toml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ lint.ignore = [
"A005",
"TC006", # https://docs.astral.sh/ruff/rules/runtime-cast-value/
"PLC0415", # https://docs.astral.sh/ruff/rules/import-outside-top-level/
"UP006",
"UP007",
"UP035",
"UP045",
]

# Exclude files and directories
Expand All @@ -62,7 +66,7 @@ exclude = [
# Maximum line length
line-length = 120

target-version = "py38"
target-version = "py310"

fix = true
lint.fixable = ["I", "COM812", "W"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ def test_bedrock_agent_function_event():
raw_parameters = raw_event["parameters"]
assert len(parameters) == len(raw_parameters)

for param, raw_param in zip(parameters, raw_parameters):
for param, raw_param in zip(parameters, raw_parameters, strict=True):
assert param.name == raw_param["name"]
assert param.type == raw_param["type"]
assert param.value == raw_param["value"]
Expand Down
26 changes: 24 additions & 2 deletions tests/unit/parser/_pydantic/test_dynamodb.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from typing import Any

import pytest

from aws_lambda_powertools.utilities.parser import ValidationError, envelopes, parse
Expand Down Expand Up @@ -86,8 +88,26 @@ def test_validate_event_does_not_conform_with_model():
parse(event=raw_event, model=MyDynamoBusiness, envelope=envelopes.DynamoDBStreamEnvelope)


def test_dynamo_db_stream_lambda_invocation_event():
@pytest.mark.parametrize(
"response_context",
[
pytest.param(
{"statusCode": 200, "executedVersion": "$LATEST"},
id="without function error",
),
pytest.param(
{"statusCode": 200, "executedVersion": "$LATEST", "functionError": None},
id="with null function error",
),
pytest.param(
{"statusCode": 200, "executedVersion": "$LATEST", "functionError": "Unhandled"},
id="with function error",
),
],
)
def test_dynamo_db_stream_lambda_invocation_event(response_context: dict[str, Any]):
raw_event = load_event("dynamoStreamLambdaInvocationEvent.json")
raw_event["responseContext"] = response_context
parsed_event: DynamoDBStreamLambdaOnFailureDestinationModel = parse(
event=raw_event,
model=DynamoDBStreamLambdaOnFailureDestinationModel,
Expand All @@ -111,6 +131,8 @@ def test_dynamo_db_stream_lambda_invocation_event():
)
assert parsed_event.ddb_stream_batch_info.stream_arn == raw_event["DDBStreamBatchInfo"]["streamArn"]
assert parsed_event.request_context.model_dump(by_alias=True) == raw_event["requestContext"]
assert parsed_event.response_context.model_dump(by_alias=True) == raw_event["responseContext"]
assert parsed_event.response_context.status_code == response_context["statusCode"]
assert parsed_event.response_context.executed_version == response_context["executedVersion"]
assert parsed_event.response_context.function_error == response_context.get("functionError")
assert parsed_event.timestamp.strftime("%Y-%m-%dT%H:%M:%SZ") == raw_event["timestamp"]
assert parsed_event.version == raw_event["version"]