Skip to content

Commit 2a4c56b

Browse files
author
Michael Brewer
committed
chore: minor housekeeping changes
Changes: - `child_exceptions` should be a tuple - remove unecessary `else` statements - add `pragma: no cover` for overload functions - add test for an invalid DynamoDBPersistenceLayer
1 parent 849e003 commit 2a4c56b

File tree

3 files changed

+21
-13
lines changed

3 files changed

+21
-13
lines changed

aws_lambda_powertools/utilities/batch/base.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ def _clean(self):
384384
raise BatchProcessingError(
385385
msg=f"All records failed processing. {len(self.exceptions)} individual errors logged"
386386
f"separately below.",
387-
child_exceptions=self.exceptions,
387+
child_exceptions=tuple(self.exceptions),
388388
)
389389

390390
messages = self._get_messages_to_report()
@@ -411,32 +411,28 @@ def _get_messages_to_report(self) -> Dict[str, str]:
411411
def _collect_sqs_failures(self):
412412
if self.model:
413413
return {"itemIdentifier": msg.messageId for msg in self.fail_messages}
414-
else:
415-
return {"itemIdentifier": msg.message_id for msg in self.fail_messages}
414+
return {"itemIdentifier": msg.message_id for msg in self.fail_messages}
416415

417416
def _collect_kinesis_failures(self):
418417
if self.model:
419418
# Pydantic model uses int but Lambda poller expects str
420419
return {"itemIdentifier": msg.kinesis.sequenceNumber for msg in self.fail_messages}
421-
else:
422-
return {"itemIdentifier": msg.kinesis.sequence_number for msg in self.fail_messages}
420+
return {"itemIdentifier": msg.kinesis.sequence_number for msg in self.fail_messages}
423421

424422
def _collect_dynamodb_failures(self):
425423
if self.model:
426424
return {"itemIdentifier": msg.dynamodb.SequenceNumber for msg in self.fail_messages}
427-
else:
428-
return {"itemIdentifier": msg.dynamodb.sequence_number for msg in self.fail_messages}
425+
return {"itemIdentifier": msg.dynamodb.sequence_number for msg in self.fail_messages}
429426

430427
@overload
431428
def _to_batch_type(self, record: dict, event_type: EventType, model: "BatchTypeModels") -> "BatchTypeModels":
432-
...
429+
... # pragma: no cover
433430

434431
@overload
435432
def _to_batch_type(self, record: dict, event_type: EventType) -> EventSourceDataClassTypes:
436-
...
433+
... # pragma: no cover
437434

438435
def _to_batch_type(self, record: dict, event_type: EventType, model: Optional["BatchTypeModels"] = None):
439436
if model is not None:
440437
return model.parse_obj(record)
441-
else:
442-
return self._DATA_CLASS_MAPPING[event_type](record)
438+
return self._DATA_CLASS_MAPPING[event_type](record)

aws_lambda_powertools/utilities/parser/parser.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,12 +86,12 @@ def handler(event: Order, context: LambdaContext):
8686

8787
@overload
8888
def parse(event: Dict[str, Any], model: Type[Model]) -> Model:
89-
...
89+
... # pragma: no cover
9090

9191

9292
@overload
9393
def parse(event: Dict[str, Any], model: Type[Model], envelope: Type[Envelope]) -> EnvelopeModel:
94-
...
94+
... # pragma: no cover
9595

9696

9797
def parse(event: Dict[str, Any], model: Type[Model], envelope: Optional[Type[Envelope]] = None):

tests/functional/idempotency/test_idempotency.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1057,3 +1057,15 @@ def two(data):
10571057
assert one(data=mock_event) == "one"
10581058
assert two(data=mock_event) == "two"
10591059
assert len(persistence_store.table.method_calls) == 4
1060+
1061+
1062+
def test_invalid_dynamodb_persistence_layer():
1063+
# Scenario constructing a DynamoDBPersistenceLayer with a key_attr matching sort_key_attr should fail
1064+
with pytest.raises(ValueError) as ve:
1065+
DynamoDBPersistenceLayer(
1066+
table_name="Foo",
1067+
key_attr="id",
1068+
sort_key_attr="id",
1069+
)
1070+
# and raise a ValueError
1071+
assert str(ve.value) == "key_attr [id] and sort_key_attr [id] cannot be the same!"

0 commit comments

Comments
 (0)