Skip to content

Commit 0576dde

Browse files
author
Michael Brewer
committed
fix(idempotency): is_missing_idempotency_key and int
Fix for: TypeError: 'int' object is not iterable
1 parent b6e61e2 commit 0576dde

File tree

2 files changed

+26
-12
lines changed

2 files changed

+26
-12
lines changed

aws_lambda_powertools/utilities/idempotency/persistence/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ def _get_hashed_idempotency_key(self, lambda_event: Dict[str, Any]) -> str:
183183

184184
@staticmethod
185185
def is_missing_idempotency_key(data) -> bool:
186-
return data is None or not data or all(x is None for x in data)
186+
return data is None or not data or (type(data).__name__ in ("tuple", "list") and all(x is None for x in data))
187187

188188
def _get_hashed_payload(self, lambda_event: Dict[str, Any]) -> str:
189189
"""

tests/functional/idempotency/test_idempotency.py

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -677,22 +677,36 @@ def test_delete_from_cache_when_empty(
677677

678678

679679
def test_is_missing_idempotency_key():
680+
# GIVEN an empty tuple THEN is_missing_idempotency_key is True
681+
assert BasePersistenceLayer.is_missing_idempotency_key(())
682+
# GIVEN an empty list THEN is_missing_idempotency_key is True
683+
assert BasePersistenceLayer.is_missing_idempotency_key([])
684+
# GIVEN an empty dictionary THEN is_missing_idempotency_key is True
685+
assert BasePersistenceLayer.is_missing_idempotency_key({})
686+
# GIVEN an empty str THEN is_missing_idempotency_key is True
687+
assert BasePersistenceLayer.is_missing_idempotency_key("")
688+
# GIVEN False THEN is_missing_idempotency_key is True
689+
assert BasePersistenceLayer.is_missing_idempotency_key(False)
690+
# GIVEN number 0 THEN is_missing_idempotency_key is True
691+
assert BasePersistenceLayer.is_missing_idempotency_key(0)
692+
680693
# GIVEN None THEN is_missing_idempotency_key is True
681694
assert BasePersistenceLayer.is_missing_idempotency_key(None)
682695
# GIVEN a list of Nones THEN is_missing_idempotency_key is True
683696
assert BasePersistenceLayer.is_missing_idempotency_key([None, None])
684-
# GIVEN a list of all not None THEN is_missing_idempotency_key is false
685-
assert BasePersistenceLayer.is_missing_idempotency_key([None, "Value"]) is False
686-
# GIVEN a str THEN is_missing_idempotency_key is false
697+
# GIVEN a tuples of Nones THEN is_missing_idempotency_key is True
698+
assert BasePersistenceLayer.is_missing_idempotency_key((None, None))
699+
700+
# GIVEN a str THEN is_missing_idempotency_key is False
687701
assert BasePersistenceLayer.is_missing_idempotency_key("Value") is False
688-
# GIVEN an empty tuple THEN is_missing_idempotency_key is false
689-
assert BasePersistenceLayer.is_missing_idempotency_key(())
690-
# GIVEN an empty list THEN is_missing_idempotency_key is false
691-
assert BasePersistenceLayer.is_missing_idempotency_key([])
692-
# GIVEN an empty dictionary THEN is_missing_idempotency_key is false
693-
assert BasePersistenceLayer.is_missing_idempotency_key({})
694-
# GIVEN an empty str THEN is_missing_idempotency_key is false
695-
assert BasePersistenceLayer.is_missing_idempotency_key("")
702+
# GIVEN str "False" THEN is_missing_idempotency_key is False
703+
assert BasePersistenceLayer.is_missing_idempotency_key("False") is False
704+
# GIVEN an number THEN is_missing_idempotency_key is False
705+
assert BasePersistenceLayer.is_missing_idempotency_key(1000) is False
706+
# GIVEN a float THEN is_missing_idempotency_key is False
707+
assert BasePersistenceLayer.is_missing_idempotency_key(10.01) is False
708+
# GIVEN a list of all not None THEN is_missing_idempotency_key is False
709+
assert BasePersistenceLayer.is_missing_idempotency_key([None, "Value"]) is False
696710

697711

698712
@pytest.mark.parametrize(

0 commit comments

Comments
 (0)