Skip to content

Commit 61f94b3

Browse files
committed
chore(idempotency): remove more of the old code
1 parent 631370d commit 61f94b3

File tree

4 files changed

+26
-172
lines changed

4 files changed

+26
-172
lines changed

aws_lambda_powertools/utilities/idempotency/base.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ def __init__(
7474
self.data = deepcopy(_prepare_data(function_payload))
7575
self.fn_args = function_args
7676
self.fn_kwargs = function_kwargs
77-
self.config = config
7877

7978
persistence_store.configure(config, self.function.__name__)
8079
self.persistence_store = persistence_store

docs/utilities/idempotency.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ times with the same parameters**. This makes idempotent operations safe to retry
2222
* Ensure Lambda handler returns the same result when called with the same payload
2323
* Select a subset of the event as the idempotency key using JMESPath expressions
2424
* Set a time window in which records with the same payload should be considered duplicates
25-
* Optionally expires in-progress executions after the Lambda handler timeout
25+
* Expires in-progress executions when the Lambda handler times out
2626

2727
## Getting started
2828

tests/functional/idempotency/conftest.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ def default_jmespath():
7676

7777
@pytest.fixture
7878
def expected_params_update_item(serialized_lambda_response, hashed_idempotency_key):
79-
params = {
79+
return {
8080
"ExpressionAttributeNames": {
8181
"#expiry": "expiration",
8282
"#response_data": "data",
@@ -97,14 +97,12 @@ def expected_params_update_item(serialized_lambda_response, hashed_idempotency_k
9797
),
9898
}
9999

100-
return params
101-
102100

103101
@pytest.fixture
104102
def expected_params_update_item_with_validation(
105-
serialized_lambda_response, hashed_idempotency_key, hashed_validation_key, idempotency_config
103+
serialized_lambda_response, hashed_idempotency_key, hashed_validation_key
106104
):
107-
params = {
105+
return {
108106
"ExpressionAttributeNames": {
109107
"#expiry": "expiration",
110108
"#response_data": "data",
@@ -129,8 +127,6 @@ def expected_params_update_item_with_validation(
129127
),
130128
}
131129

132-
return params
133-
134130

135131
@pytest.fixture
136132
def expected_params_put_item(hashed_idempotency_key):

tests/functional/idempotency/test_idempotency.py

Lines changed: 22 additions & 163 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,7 @@ def get_dataclasses_lib():
4343

4444
# Using parametrize to run test twice, with two separate instances of persistence store. One instance with caching
4545
# enabled, and one without.
46-
@pytest.mark.parametrize(
47-
"idempotency_config",
48-
[
49-
{"use_local_cache": False},
50-
{"use_local_cache": True},
51-
],
52-
indirect=True,
53-
)
46+
@pytest.mark.parametrize("idempotency_config", [{"use_local_cache": False}, {"use_local_cache": True}], indirect=True)
5447
def test_idempotent_lambda_already_completed(
5548
idempotency_config: IdempotencyConfig,
5649
persistence_store: DynamoDBPersistenceLayer,
@@ -95,14 +88,7 @@ def lambda_handler(event, context):
9588
stubber.deactivate()
9689

9790

98-
@pytest.mark.parametrize(
99-
"idempotency_config",
100-
[
101-
{"use_local_cache": False},
102-
{"use_local_cache": True},
103-
],
104-
indirect=True,
105-
)
91+
@pytest.mark.parametrize("idempotency_config", [{"use_local_cache": False}, {"use_local_cache": True}], indirect=True)
10692
def test_idempotent_lambda_in_progress(
10793
idempotency_config: IdempotencyConfig,
10894
persistence_store: DynamoDBPersistenceLayer,
@@ -151,13 +137,7 @@ def lambda_handler(event, context):
151137

152138

153139
@pytest.mark.skipif(sys.version_info < (3, 8), reason="issue with pytest mock lib for < 3.8")
154-
@pytest.mark.parametrize(
155-
"idempotency_config",
156-
[
157-
{"use_local_cache": True},
158-
],
159-
indirect=True,
160-
)
140+
@pytest.mark.parametrize("idempotency_config", [{"use_local_cache": True}], indirect=True)
161141
def test_idempotent_lambda_in_progress_with_cache(
162142
idempotency_config: IdempotencyConfig,
163143
persistence_store: DynamoDBPersistenceLayer,
@@ -222,14 +202,7 @@ def lambda_handler(event, context):
222202
stubber.deactivate()
223203

224204

225-
@pytest.mark.parametrize(
226-
"idempotency_config",
227-
[
228-
{"use_local_cache": False},
229-
{"use_local_cache": True},
230-
],
231-
indirect=True,
232-
)
205+
@pytest.mark.parametrize("idempotency_config", [{"use_local_cache": False}, {"use_local_cache": True}], indirect=True)
233206
def test_idempotent_lambda_first_execution(
234207
idempotency_config: IdempotencyConfig,
235208
persistence_store: DynamoDBPersistenceLayer,
@@ -260,13 +233,7 @@ def lambda_handler(event, context):
260233
stubber.deactivate()
261234

262235

263-
@pytest.mark.parametrize(
264-
"idempotency_config",
265-
[
266-
{"use_local_cache": True},
267-
],
268-
indirect=True,
269-
)
236+
@pytest.mark.parametrize("idempotency_config", [{"use_local_cache": True}], indirect=True)
270237
def test_idempotent_lambda_first_execution_cached(
271238
idempotency_config: IdempotencyConfig,
272239
persistence_store: DynamoDBPersistenceLayer,
@@ -312,13 +279,7 @@ def lambda_handler(event, context):
312279
stubber.deactivate()
313280

314281

315-
@pytest.mark.parametrize(
316-
"idempotency_config",
317-
[
318-
{"use_local_cache": True, "event_key_jmespath": "body"},
319-
],
320-
indirect=True,
321-
)
282+
@pytest.mark.parametrize("idempotency_config", [{"use_local_cache": True, "event_key_jmespath": "body"}], indirect=True)
322283
def test_idempotent_lambda_first_execution_event_mutation(
323284
idempotency_config: IdempotencyConfig,
324285
persistence_store: DynamoDBPersistenceLayer,
@@ -356,14 +317,7 @@ def lambda_handler(event, context):
356317
stubber.deactivate()
357318

358319

359-
@pytest.mark.parametrize(
360-
"idempotency_config",
361-
[
362-
{"use_local_cache": False},
363-
{"use_local_cache": True},
364-
],
365-
indirect=True,
366-
)
320+
@pytest.mark.parametrize("idempotency_config", [{"use_local_cache": False}, {"use_local_cache": True}], indirect=True)
367321
def test_idempotent_lambda_expired(
368322
idempotency_config: IdempotencyConfig,
369323
persistence_store: DynamoDBPersistenceLayer,
@@ -396,14 +350,7 @@ def lambda_handler(event, context):
396350
stubber.deactivate()
397351

398352

399-
@pytest.mark.parametrize(
400-
"idempotency_config",
401-
[
402-
{"use_local_cache": False},
403-
{"use_local_cache": True},
404-
],
405-
indirect=True,
406-
)
353+
@pytest.mark.parametrize("idempotency_config", [{"use_local_cache": False}, {"use_local_cache": True}], indirect=True)
407354
def test_idempotent_lambda_exception(
408355
idempotency_config: IdempotencyConfig,
409356
persistence_store: DynamoDBPersistenceLayer,
@@ -491,14 +438,7 @@ def lambda_handler(event, context):
491438
stubber.deactivate()
492439

493440

494-
@pytest.mark.parametrize(
495-
"idempotency_config",
496-
[
497-
{"use_local_cache": False},
498-
{"use_local_cache": True},
499-
],
500-
indirect=True,
501-
)
441+
@pytest.mark.parametrize("idempotency_config", [{"use_local_cache": False}, {"use_local_cache": True}], indirect=True)
502442
def test_idempotent_lambda_expired_during_request(
503443
idempotency_config: IdempotencyConfig,
504444
persistence_store: DynamoDBPersistenceLayer,
@@ -554,14 +494,7 @@ def lambda_handler(event, context):
554494
stubber.deactivate()
555495

556496

557-
@pytest.mark.parametrize(
558-
"idempotency_config",
559-
[
560-
{"use_local_cache": False},
561-
{"use_local_cache": True},
562-
],
563-
indirect=True,
564-
)
497+
@pytest.mark.parametrize("idempotency_config", [{"use_local_cache": False}, {"use_local_cache": True}], indirect=True)
565498
def test_idempotent_persistence_exception_deleting(
566499
idempotency_config: IdempotencyConfig,
567500
persistence_store: DynamoDBPersistenceLayer,
@@ -593,14 +526,7 @@ def lambda_handler(event, context):
593526
stubber.deactivate()
594527

595528

596-
@pytest.mark.parametrize(
597-
"idempotency_config",
598-
[
599-
{"use_local_cache": False},
600-
{"use_local_cache": True},
601-
],
602-
indirect=True,
603-
)
529+
@pytest.mark.parametrize("idempotency_config", [{"use_local_cache": False}, {"use_local_cache": True}], indirect=True)
604530
def test_idempotent_persistence_exception_updating(
605531
idempotency_config: IdempotencyConfig,
606532
persistence_store: DynamoDBPersistenceLayer,
@@ -632,14 +558,7 @@ def lambda_handler(event, context):
632558
stubber.deactivate()
633559

634560

635-
@pytest.mark.parametrize(
636-
"idempotency_config",
637-
[
638-
{"use_local_cache": False},
639-
{"use_local_cache": True},
640-
],
641-
indirect=True,
642-
)
561+
@pytest.mark.parametrize("idempotency_config", [{"use_local_cache": False}, {"use_local_cache": True}], indirect=True)
643562
def test_idempotent_persistence_exception_getting(
644563
idempotency_config: IdempotencyConfig,
645564
persistence_store: DynamoDBPersistenceLayer,
@@ -706,12 +625,7 @@ def lambda_handler(event, context):
706625

707626

708627
@pytest.mark.parametrize(
709-
"config_without_jmespath",
710-
[
711-
{"use_local_cache": False},
712-
{"use_local_cache": True},
713-
],
714-
indirect=True,
628+
"config_without_jmespath", [{"use_local_cache": False}, {"use_local_cache": True}], indirect=True
715629
)
716630
def test_idempotent_lambda_with_validator_util(
717631
config_without_jmespath: IdempotencyConfig,
@@ -762,14 +676,7 @@ def lambda_handler(event, context):
762676
stubber.deactivate()
763677

764678

765-
@pytest.mark.parametrize(
766-
"idempotency_config",
767-
[
768-
{"use_local_cache": False},
769-
{"use_local_cache": True},
770-
],
771-
indirect=True,
772-
)
679+
@pytest.mark.parametrize("idempotency_config", [{"use_local_cache": False}, {"use_local_cache": True}], indirect=True)
773680
def test_idempotent_lambda_expires_in_progress_before_expire(
774681
idempotency_config: IdempotencyConfig,
775682
persistence_store: DynamoDBPersistenceLayer,
@@ -821,14 +728,7 @@ def lambda_handler(event, context):
821728
stubber.deactivate()
822729

823730

824-
@pytest.mark.parametrize(
825-
"idempotency_config",
826-
[
827-
{"use_local_cache": False},
828-
{"use_local_cache": True},
829-
],
830-
indirect=True,
831-
)
731+
@pytest.mark.parametrize("idempotency_config", [{"use_local_cache": False}, {"use_local_cache": True}], indirect=True)
832732
def test_idempotent_lambda_expires_in_progress_after_expire(
833733
idempotency_config: IdempotencyConfig,
834734
persistence_store: DynamoDBPersistenceLayer,
@@ -873,14 +773,7 @@ def lambda_handler(event, context):
873773
stubber.deactivate()
874774

875775

876-
@pytest.mark.parametrize(
877-
"idempotency_config",
878-
[
879-
{"use_local_cache": False},
880-
{"use_local_cache": True},
881-
],
882-
indirect=True,
883-
)
776+
@pytest.mark.parametrize("idempotency_config", [{"use_local_cache": False}, {"use_local_cache": True}], indirect=True)
884777
def test_idempotent_lambda_expires_in_progress_unavailable_remaining_time(
885778
idempotency_config: IdempotencyConfig,
886779
persistence_store: DynamoDBPersistenceLayer,
@@ -943,13 +836,7 @@ def test_data_record_json_to_dict_mapping_when_response_data_none():
943836
assert response_data is None
944837

945838

946-
@pytest.mark.parametrize(
947-
"idempotency_config",
948-
[
949-
{"use_local_cache": True},
950-
],
951-
indirect=True,
952-
)
839+
@pytest.mark.parametrize("idempotency_config", [{"use_local_cache": True}], indirect=True)
953840
def test_in_progress_never_saved_to_cache(
954841
idempotency_config: IdempotencyConfig, persistence_store: DynamoDBPersistenceLayer
955842
):
@@ -965,13 +852,7 @@ def test_in_progress_never_saved_to_cache(
965852
assert persistence_store._cache.get("key") is None
966853

967854

968-
@pytest.mark.parametrize(
969-
"idempotency_config",
970-
[
971-
{"use_local_cache": False},
972-
],
973-
indirect=True,
974-
)
855+
@pytest.mark.parametrize("idempotency_config", [{"use_local_cache": False}], indirect=True)
975856
def test_user_local_disabled(idempotency_config: IdempotencyConfig, persistence_store: DynamoDBPersistenceLayer):
976857
# GIVEN a persistence_store with use_local_cache = False
977858
persistence_store.configure(idempotency_config)
@@ -991,13 +872,7 @@ def test_user_local_disabled(idempotency_config: IdempotencyConfig, persistence_
991872
assert not hasattr("persistence_store", "_cache")
992873

993874

994-
@pytest.mark.parametrize(
995-
"idempotency_config",
996-
[
997-
{"use_local_cache": True},
998-
],
999-
indirect=True,
1000-
)
875+
@pytest.mark.parametrize("idempotency_config", [{"use_local_cache": True}], indirect=True)
1001876
def test_delete_from_cache_when_empty(
1002877
idempotency_config: IdempotencyConfig, persistence_store: DynamoDBPersistenceLayer
1003878
):
@@ -1048,11 +923,7 @@ def test_is_missing_idempotency_key():
1048923

1049924

1050925
@pytest.mark.parametrize(
1051-
"idempotency_config",
1052-
[
1053-
{"use_local_cache": False, "event_key_jmespath": "body"},
1054-
],
1055-
indirect=True,
926+
"idempotency_config", [{"use_local_cache": False, "event_key_jmespath": "body"}], indirect=True
1056927
)
1057928
def test_default_no_raise_on_missing_idempotency_key(
1058929
idempotency_config: IdempotencyConfig, persistence_store: DynamoDBPersistenceLayer
@@ -1354,13 +1225,7 @@ def dummy_handler(event, context):
13541225
assert len(persistence_store.table.method_calls) == 0
13551226

13561227

1357-
@pytest.mark.parametrize(
1358-
"idempotency_config",
1359-
[
1360-
{"use_local_cache": True},
1361-
],
1362-
indirect=True,
1363-
)
1228+
@pytest.mark.parametrize("idempotency_config", [{"use_local_cache": True}], indirect=True)
13641229
def test_idempotent_function_duplicates(
13651230
idempotency_config: IdempotencyConfig, persistence_store: DynamoDBPersistenceLayer
13661231
):
@@ -1477,13 +1342,7 @@ def collect_payment(payment: Payment):
14771342
assert result == payment.transaction_id
14781343

14791344

1480-
@pytest.mark.parametrize(
1481-
"idempotency_config",
1482-
[
1483-
{"use_local_cache": False},
1484-
],
1485-
indirect=True,
1486-
)
1345+
@pytest.mark.parametrize("idempotency_config", [{"use_local_cache": False}], indirect=True)
14871346
def test_idempotent_lambda_compound_already_completed(
14881347
idempotency_config: IdempotencyConfig,
14891348
persistence_store_compound: DynamoDBPersistenceLayer,

0 commit comments

Comments
 (0)