@@ -171,16 +171,25 @@ class Permission(NamedTuple):
171171
172172
173173class ReceiveMessageResult :
174+ """
175+ Object to communicate the result of a "receive messages" operation between the SqsProvider and
176+ the underlying datastructure holding the messages.
177+ """
178+
174179 successful : list [SqsMessage ]
180+ """The messages that were successfully received from the queue"""
181+
175182 receipt_handles : list [str ]
176- dead_letters : list [SqsMessage ]
177- new_visibility_timeout : Optional [int ]
183+ """The array index position in ``successful`` and ``receipt_handles`` need to be the same (this
184+ assumption is needed when assembling the result in `SqsProvider.receive_message`)"""
185+
186+ dead_letter_messages : list [SqsMessage ]
187+ """All messages that were received more than maxReceiveCount in the redrive policy (if any)"""
178188
179189 def __init__ (self ):
180190 self .successful = []
181191 self .receipt_handles = []
182- self .dead_letters = []
183- self .new_visibility_timeout = None
192+ self .dead_letter_messages = []
184193
185194
186195class SqsQueue :
@@ -297,7 +306,7 @@ def redrive_policy(self) -> Optional[dict]:
297306 @property
298307 def max_receive_count (self ) -> Optional [int ]:
299308 """
300- Returns the maxReceiveCount attribute of the redrive policy. If not redrive policy is set, then it
309+ Returns the maxReceiveCount attribute of the redrive policy. If no redrive policy is set, then it
301310 returns None.
302311 """
303312 if redrive_policy := self .redrive_policy :
@@ -408,7 +417,7 @@ def put(
408417
409418 def receive (
410419 self ,
411- num_messages : int = None ,
420+ num_messages : int = 1 ,
412421 wait_time_seconds : int = None ,
413422 visibility_timeout : int = None ,
414423 ) -> ReceiveMessageResult :
@@ -549,7 +558,7 @@ def _put_message(self, message: SqsMessage):
549558
550559 def receive (
551560 self ,
552- num_messages : int = None ,
561+ num_messages : int = 1 ,
553562 wait_time_seconds : int = None ,
554563 visibility_timeout : int = None ,
555564 ) -> ReceiveMessageResult :
@@ -559,7 +568,6 @@ def receive(
559568 visibility_timeout = (
560569 self .visibility_timeout if visibility_timeout is None else visibility_timeout
561570 )
562- result .new_visibility_timeout = visibility_timeout
563571
564572 block = True if wait_time_seconds else False
565573 timeout = wait_time_seconds or 0
@@ -600,7 +608,7 @@ def receive(
600608 message ,
601609 message .receive_count ,
602610 )
603- result .dead_letters .append (message )
611+ result .dead_letter_messages .append (message )
604612 else :
605613 result .successful .append (message )
606614
@@ -614,7 +622,6 @@ def receive(
614622 receipt_handle = self .create_receipt_handle (message )
615623 message .receipt_handles .add (receipt_handle )
616624 self .receipts [receipt_handle ] = message
617- # array index position in `successful` and `receipt_handles` will be the same
618625 result .receipt_handles .append (receipt_handle )
619626
620627 # manage message visibility
@@ -657,7 +664,7 @@ def push(self, message: SqsMessage):
657664 heapq .heappush (self .messages , message )
658665
659666 def __eq__ (self , other ):
660- return self .message_group_id == other .message_id
667+ return self .message_group_id == other .message_group_id
661668
662669 def __hash__ (self ):
663670 return self .message_group_id .__hash__ ()
@@ -812,7 +819,7 @@ def _put_message(self, message: SqsMessage):
812819
813820 def receive (
814821 self ,
815- num_messages : int = None ,
822+ num_messages : int = 1 ,
816823 wait_time_seconds : int = None ,
817824 visibility_timeout : int = None ,
818825 ) -> ReceiveMessageResult :
@@ -832,7 +839,6 @@ def receive(
832839 visibility_timeout = (
833840 self .visibility_timeout if visibility_timeout is None else visibility_timeout
834841 )
835- result .new_visibility_timeout = visibility_timeout
836842
837843 block = True if wait_time_seconds else False
838844 timeout = wait_time_seconds or 0
@@ -891,7 +897,7 @@ def receive(
891897 message ,
892898 message .receive_count ,
893899 )
894- result .dead_letters .append (message )
900+ result .dead_letter_messages .append (message )
895901 else :
896902 result .successful .append (message )
897903
@@ -911,8 +917,6 @@ def receive(
911917 receipt_handle = self .create_receipt_handle (message )
912918 message .receipt_handles .add (receipt_handle )
913919 self .receipts [receipt_handle ] = message
914- # array index position in `successful`
915- # l` and `receipt_handles` will be the same
916920 result .receipt_handles .append (receipt_handle )
917921
918922 # manage message visibility
0 commit comments