aws-python-helper 0.25.0__tar.gz → 0.27.0__tar.gz

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.
Files changed (42) hide show
  1. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/PKG-INFO +1 -1
  2. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/sns/publisher.py +54 -28
  3. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper.egg-info/PKG-INFO +1 -1
  4. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/pyproject.toml +1 -1
  5. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/README.md +0 -0
  6. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/__init__.py +0 -0
  7. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/api/__init__.py +0 -0
  8. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/api/auth_middleware.py +0 -0
  9. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/api/auth_validators.py +0 -0
  10. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/api/base.py +0 -0
  11. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/api/dispatcher.py +0 -0
  12. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/api/exceptions.py +0 -0
  13. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/api/fetcher.py +0 -0
  14. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/api/handler.py +0 -0
  15. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/database/__init__.py +0 -0
  16. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/database/database_proxy.py +0 -0
  17. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/database/external_database_proxy.py +0 -0
  18. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/database/external_mongo_manager.py +0 -0
  19. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/database/mongo_manager.py +0 -0
  20. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/fargate/__init__.py +0 -0
  21. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/fargate/executor.py +0 -0
  22. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/fargate/fetcher.py +0 -0
  23. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/fargate/handler.py +0 -0
  24. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/fargate/task_base.py +0 -0
  25. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/lambda_standalone/__init__.py +0 -0
  26. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/lambda_standalone/base.py +0 -0
  27. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/lambda_standalone/fetcher.py +0 -0
  28. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/lambda_standalone/handler.py +0 -0
  29. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/sns/__init__.py +0 -0
  30. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/sqs/__init__.py +0 -0
  31. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/sqs/consumer_base.py +0 -0
  32. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/sqs/fetcher.py +0 -0
  33. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/sqs/handler.py +0 -0
  34. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/utils/__init__.py +0 -0
  35. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/utils/json_encoder.py +0 -0
  36. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/utils/response.py +0 -0
  37. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper/utils/serializer.py +0 -0
  38. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper.egg-info/SOURCES.txt +0 -0
  39. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper.egg-info/dependency_links.txt +0 -0
  40. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper.egg-info/requires.txt +0 -0
  41. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/aws_python_helper.egg-info/top_level.txt +0 -0
  42. {aws_python_helper-0.25.0 → aws_python_helper-0.27.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aws-python-helper
3
- Version: 0.25.0
3
+ Version: 0.27.0
4
4
  Summary: AWS Python Helper Framework
5
5
  Author-email: Fabian Claros <neufabiae@gmail.com>
6
6
  License: MIT
@@ -117,29 +117,13 @@ class SNSPublisher(ABC):
117
117
  Message ID
118
118
  """
119
119
  try:
120
- # Serialize message
121
- content = message.get("content")
122
- if not content:
123
- raise ValueError("Message content is required")
124
-
125
- content = self._serialize_message(content)
126
- attributes = message.get("attributes")
127
- subject = message.get("subject")
128
120
 
129
121
  # Prepare parameters
130
122
  params = {
131
123
  'TopicArn': self.topic_arn,
132
- 'Message': content
124
+ **self._format_message(message)
133
125
  }
134
-
135
- # Add subject if exists
136
- if subject:
137
- params['Subject'] = subject
138
-
139
- # Add message attributes if exist
140
- if attributes:
141
- params['MessageAttributes'] = self._format_attributes(attributes)
142
-
126
+
143
127
  # Publish
144
128
  response = self.sns_client.publish(**params)
145
129
 
@@ -181,23 +165,33 @@ class SNSPublisher(ABC):
181
165
  Returns:
182
166
  List of message IDs
183
167
  """
184
- message_ids = []
168
+ message_to_publish = []
169
+ message_ids_success = []
170
+ message_ids_failed = []
171
+
172
+ params = {
173
+ 'TopicArn': self.topic_arn
174
+ }
185
175
 
186
176
  for i, message in enumerate(messages):
187
177
  try:
188
- message_id = await self._publish_single(message)
189
- message_ids.append(message_id)
178
+ message_to_publish.append(self._format_message(message))
190
179
  except Exception as e:
191
180
  self.logger.error(f"Error publishing message {i} in batch: {e}")
192
181
  # Continue with the other messages
193
- message_ids.append(None)
194
-
195
- success_count = sum(1 for mid in message_ids if mid is not None)
196
- self.logger.info(
197
- f"Batch publish complete: {success_count}/{len(messages)} successful"
198
- )
182
+ continue
183
+
184
+ params['PublishBatchRequestEntries'] = message_to_publish
185
+
186
+ result = self.sns_client.publish_batch(**params)
187
+
188
+ for message in result['Successful']:
189
+ message_ids_success.append(message['MessageId'])
190
+
191
+ for message in result['Failed']:
192
+ message_ids_failed.append(None)
199
193
 
200
- return message_ids
194
+ return message_ids_success, message_ids_failed
201
195
 
202
196
  def _serialize_message(self, content: Dict[str, Any]) -> str:
203
197
  """
@@ -243,3 +237,35 @@ class SNSPublisher(ABC):
243
237
  }
244
238
 
245
239
  return formatted
240
+
241
+ def _format_message(self, message: Dict[str, Any]) -> Dict[str, Any]:
242
+ """
243
+ Formats the message for SNS
244
+
245
+ Args:
246
+ message: Message to format
247
+
248
+ Returns:
249
+ Formatted message
250
+ """
251
+ content = message.get("content")
252
+ if not content:
253
+ raise ValueError("Message content is required")
254
+
255
+ content = self._serialize_message(content)
256
+ attributes = message.get("attributes")
257
+ subject = message.get("subject")
258
+
259
+ params = {
260
+ 'Message': content
261
+ }
262
+
263
+ # Add subject if exists
264
+ if subject:
265
+ params['Subject'] = subject
266
+
267
+ # Add message attributes if exist
268
+ if attributes:
269
+ params['MessageAttributes'] = self._format_attributes(attributes)
270
+
271
+ return params
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aws-python-helper
3
- Version: 0.25.0
3
+ Version: 0.27.0
4
4
  Summary: AWS Python Helper Framework
5
5
  Author-email: Fabian Claros <neufabiae@gmail.com>
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "aws-python-helper"
7
- version = "0.25.0"
7
+ version = "0.27.0"
8
8
  description = "AWS Python Helper Framework"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"