aws-lambda-powertools 3.8.1a10__py3-none-any.whl → 3.9.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- aws_lambda_powertools/shared/version.py +1 -1
- aws_lambda_powertools/utilities/idempotency/base.py +6 -2
- aws_lambda_powertools/utilities/idempotency/persistence/datarecord.py +4 -0
- aws_lambda_powertools/utilities/idempotency/persistence/dynamodb.py +1 -0
- {aws_lambda_powertools-3.8.1a10.dist-info → aws_lambda_powertools-3.9.0.dist-info}/METADATA +2 -1
- {aws_lambda_powertools-3.8.1a10.dist-info → aws_lambda_powertools-3.9.0.dist-info}/RECORD +8 -8
- {aws_lambda_powertools-3.8.1a10.dist-info → aws_lambda_powertools-3.9.0.dist-info}/LICENSE +0 -0
- {aws_lambda_powertools-3.8.1a10.dist-info → aws_lambda_powertools-3.9.0.dist-info}/WHEEL +0 -0
@@ -250,10 +250,14 @@ class IdempotencyHandler:
|
|
250
250
|
"item should have been expired in-progress because it already time-outed.",
|
251
251
|
)
|
252
252
|
|
253
|
-
|
253
|
+
inprogress_error_message = (
|
254
254
|
f"Execution already in progress with idempotency key: "
|
255
|
-
f"{self.persistence_store.event_key_jmespath}={data_record.idempotency_key}"
|
255
|
+
f"{self.persistence_store.event_key_jmespath}={data_record.idempotency_key}"
|
256
256
|
)
|
257
|
+
if data_record.sort_key is not None:
|
258
|
+
inprogress_error_message += f" and sort key: {data_record.sort_key}"
|
259
|
+
|
260
|
+
raise IdempotencyAlreadyInProgressError(inprogress_error_message)
|
257
261
|
|
258
262
|
response_dict = data_record.response_json_as_dict()
|
259
263
|
serialized_response = self.output_serializer.from_dict(response_dict) if response_dict else None
|
@@ -27,6 +27,7 @@ class DataRecord:
|
|
27
27
|
in_progress_expiry_timestamp: int | None = None,
|
28
28
|
response_data: str = "",
|
29
29
|
payload_hash: str = "",
|
30
|
+
sort_key: str | None = None,
|
30
31
|
) -> None:
|
31
32
|
"""
|
32
33
|
|
@@ -44,6 +45,8 @@ class DataRecord:
|
|
44
45
|
hashed representation of payload
|
45
46
|
response_data: str, optional
|
46
47
|
response data from previous executions using the record
|
48
|
+
sort_key: str, optional
|
49
|
+
sort key when using composite key
|
47
50
|
"""
|
48
51
|
self.idempotency_key = idempotency_key
|
49
52
|
self.payload_hash = payload_hash
|
@@ -51,6 +54,7 @@ class DataRecord:
|
|
51
54
|
self.in_progress_expiry_timestamp = in_progress_expiry_timestamp
|
52
55
|
self._status = status
|
53
56
|
self.response_data = response_data
|
57
|
+
self.sort_key = sort_key
|
54
58
|
|
55
59
|
@property
|
56
60
|
def is_expired(self) -> bool:
|
@@ -168,6 +168,7 @@ class DynamoDBPersistenceLayer(BasePersistenceLayer):
|
|
168
168
|
in_progress_expiry_timestamp=data.get(self.in_progress_expiry_attr),
|
169
169
|
response_data=data.get(self.data_attr),
|
170
170
|
payload_hash=data.get(self.validation_key_attr),
|
171
|
+
sort_key=data[self.sort_key_attr] if self.sort_key_attr is not None else None,
|
171
172
|
)
|
172
173
|
|
173
174
|
def _get_record(self, idempotency_key) -> DataRecord:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: aws_lambda_powertools
|
3
|
-
Version: 3.
|
3
|
+
Version: 3.9.0
|
4
4
|
Summary: Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless best practices and increase developer velocity.
|
5
5
|
License: MIT
|
6
6
|
Keywords: aws_lambda_powertools,aws,tracing,logging,lambda,powertools,feature_flags,idempotency,middleware
|
@@ -109,6 +109,7 @@ The following companies, among others, use Powertools:
|
|
109
109
|
* [CyberArk](https://www.cyberark.com/)
|
110
110
|
* [Flyweight](https://flyweight.io/)
|
111
111
|
* [globaldatanet](https://globaldatanet.com/)
|
112
|
+
* [Guild](https://guild.com/)
|
112
113
|
* [IMS](https://ims.tech/)
|
113
114
|
* [Jit Security](https://www.jit.io/)
|
114
115
|
* [LocalStack](https://www.localstack.cloud/)
|
@@ -88,7 +88,7 @@ aws_lambda_powertools/shared/json_encoder.py,sha256=JQeWNu-4M7_xI_hqYExrxsb3OcEH
|
|
88
88
|
aws_lambda_powertools/shared/lazy_import.py,sha256=TbXQm2bcwXdZrYdBaJJXIswyLlumM85RJ_A_0w-h-GU,2019
|
89
89
|
aws_lambda_powertools/shared/types.py,sha256=APkI38HbiTpSF19NSNii8Ydx73vmVUVotgEQ9jHruEI,124
|
90
90
|
aws_lambda_powertools/shared/user_agent.py,sha256=DrCMFQuT4a4iIrpcWpAIjY37EFqR9-QxlxDGD-Nn9Gg,7081
|
91
|
-
aws_lambda_powertools/shared/version.py,sha256=
|
91
|
+
aws_lambda_powertools/shared/version.py,sha256=CSO9oryOTIU-wbazAsWeMtbWykOi5Vw2pGzXd0ukLBI,82
|
92
92
|
aws_lambda_powertools/tracing/__init__.py,sha256=f4bMThOPBPWTPVcYqcAIErAJPerMsf3H_Z4gCXCsK9I,141
|
93
93
|
aws_lambda_powertools/tracing/base.py,sha256=DbLD8OSK05KLdSV36oNA5wDSGv8KbcOD19qMUqoXh58,4513
|
94
94
|
aws_lambda_powertools/tracing/extensions.py,sha256=APOfXOq-hRBKaK5WyfIyrd_6M1_9SWJZ3zxLA9jDZzU,492
|
@@ -158,15 +158,15 @@ aws_lambda_powertools/utilities/feature_flags/feature_flags.py,sha256=SCRfGo7R5z
|
|
158
158
|
aws_lambda_powertools/utilities/feature_flags/schema.py,sha256=mOU8tr6iGtwY3QD5iorKC8OLwZ23VLKjHOapQp3C9o0,22682
|
159
159
|
aws_lambda_powertools/utilities/feature_flags/types.py,sha256=UBMywajJ_umny7GAd9vYDMxpGqRNrcyBzXtMrGdXtkU,261
|
160
160
|
aws_lambda_powertools/utilities/idempotency/__init__.py,sha256=9GEhuiB6lLalv37ynRxBVkpZ8kvtuPcQNRLrk9TkzF8,619
|
161
|
-
aws_lambda_powertools/utilities/idempotency/base.py,sha256=
|
161
|
+
aws_lambda_powertools/utilities/idempotency/base.py,sha256=enIl3lfDn4I6n3M9cacW-u9sxrEgXKHh-jPCTT1snBs,11425
|
162
162
|
aws_lambda_powertools/utilities/idempotency/config.py,sha256=h8UraMbewI39KoIIh7FpB_fXtIv_v0WjN1URtvLfeJQ,2868
|
163
163
|
aws_lambda_powertools/utilities/idempotency/exceptions.py,sha256=HLQoBsxrmkkbQVxZ7CxKBwbVw5Tk9ko7VKbkh9qOJmc,2914
|
164
164
|
aws_lambda_powertools/utilities/idempotency/hook.py,sha256=XHj6q0dP65C8Cj-TPJ9a8OZB7LyISNJCuEHc8OzhLZg,450
|
165
165
|
aws_lambda_powertools/utilities/idempotency/idempotency.py,sha256=olyu7R-YZny6oVABrOGuUhNN856D_nfrzfaGnH0ojjk,7397
|
166
166
|
aws_lambda_powertools/utilities/idempotency/persistence/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
167
167
|
aws_lambda_powertools/utilities/idempotency/persistence/base.py,sha256=slYzih7C-tpAUugXdM2DMemNVA_HnxsbtpsvZKiH3gY,16022
|
168
|
-
aws_lambda_powertools/utilities/idempotency/persistence/datarecord.py,sha256=
|
169
|
-
aws_lambda_powertools/utilities/idempotency/persistence/dynamodb.py,sha256=
|
168
|
+
aws_lambda_powertools/utilities/idempotency/persistence/datarecord.py,sha256=brtO34whh_ioHkB6GfIjcIUyvzBI7BrEiwQVwFjEVXc,3644
|
169
|
+
aws_lambda_powertools/utilities/idempotency/persistence/dynamodb.py,sha256=H0dm8U1dwNPzAHtmARBoPIq-ajI1ih62bgQFX1RyVxo,13908
|
170
170
|
aws_lambda_powertools/utilities/idempotency/persistence/redis.py,sha256=KN3XfUZzGwEqkkXZB7OGadYGdf7IiwwChtVzZRuZUQE,21588
|
171
171
|
aws_lambda_powertools/utilities/idempotency/serialization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
172
172
|
aws_lambda_powertools/utilities/idempotency/serialization/base.py,sha256=E6ZO7uGOJnhepSkS4NkUbPhw9BNU1581HRmdgEaXe8k,1445
|
@@ -257,7 +257,7 @@ aws_lambda_powertools/utilities/validation/envelopes.py,sha256=YD5HOFx6IClQgii0n
|
|
257
257
|
aws_lambda_powertools/utilities/validation/exceptions.py,sha256=PKy_19zQMBJGCMMFl-sMkcm-cc0v3zZBn_bhGE4wKNo,2084
|
258
258
|
aws_lambda_powertools/utilities/validation/validator.py,sha256=x_1qpuKJBuWpgNU-zCD3Di-vXrZfyUu7oA5RmjZjr84,10034
|
259
259
|
aws_lambda_powertools/warnings/__init__.py,sha256=vqDVeZz8wGtD8WGYNSkQE7AHwqtIrPGRxuoJR_BBnSs,1193
|
260
|
-
aws_lambda_powertools-3.
|
261
|
-
aws_lambda_powertools-3.
|
262
|
-
aws_lambda_powertools-3.
|
263
|
-
aws_lambda_powertools-3.
|
260
|
+
aws_lambda_powertools-3.9.0.dist-info/LICENSE,sha256=vMHS2eBgmwPUIMPb7LQ4p7ib_FPVQXarVjAasflrTwo,951
|
261
|
+
aws_lambda_powertools-3.9.0.dist-info/METADATA,sha256=1dWRybN2ap2cKjW-ozZDFKFrb22HVCUJokE0nF9mEPg,11184
|
262
|
+
aws_lambda_powertools-3.9.0.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
|
263
|
+
aws_lambda_powertools-3.9.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|