Skip to content

Commit f1b95d2

Browse files
rubenfonsecasthulb
andauthored
fix(data_sources): ensure correct types on SQSMessageAttributes (#3898)
Co-authored-by: Simon Thulbourn <[email protected]>
1 parent bba2064 commit f1b95d2

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

aws_lambda_powertools/utilities/data_classes/sqs_event.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from functools import cached_property
2-
from typing import Any, Dict, Iterator, Optional, Type, TypeVar
2+
from typing import Any, Dict, ItemsView, Iterator, Optional, Type, TypeVar
33

44
from aws_lambda_powertools.utilities.data_classes import S3Event
55
from aws_lambda_powertools.utilities.data_classes.common import DictWrapper
@@ -82,6 +82,9 @@ def __getitem__(self, key: str) -> Optional[SQSMessageAttribute]: # type: ignor
8282
item = super().get(key)
8383
return None if item is None else SQSMessageAttribute(item) # type: ignore
8484

85+
def items(self) -> ItemsView[str, SQSMessageAttribute]: # type: ignore
86+
return {k: SQSMessageAttribute(v) for k, v in super().items()}.items() # type: ignore
87+
8588

8689
class SQSRecord(DictWrapper):
8790
"""An Amazon SQS message"""

tests/unit/data_classes/test_sqs_event.py

+8
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from aws_lambda_powertools.utilities.data_classes import S3Event, SQSEvent
44
from aws_lambda_powertools.utilities.data_classes.sns_event import SNSMessage
5+
from aws_lambda_powertools.utilities.data_classes.sqs_event import SQSMessageAttributes
56
from tests.functional.utils import load_event
67

78

@@ -132,3 +133,10 @@ def test_decode_nested_sns_event():
132133
raw_message = json.loads(raw_body["Message"])
133134
assert message["message"] == raw_message["message"]
134135
assert message["username"] == raw_message["username"]
136+
137+
138+
def test_sqs_event_typing():
139+
attributes = SQSMessageAttributes({"key": {"stringValue": "value", "dataType": "String"}})
140+
141+
# This assertion compares the return from .items() to the return of __getitem__
142+
assert list(attributes.items())[0][1] == attributes["key"]

0 commit comments

Comments
 (0)