my-aws-helpers 5.7.0__tar.gz → 5.9.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.

Potentially problematic release.


This version of my-aws-helpers might be problematic. Click here for more details.

Files changed (28) hide show
  1. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/PKG-INFO +1 -1
  2. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/my_aws_helpers/s3.py +45 -3
  3. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/my_aws_helpers.egg-info/PKG-INFO +1 -1
  4. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/setup.py +1 -1
  5. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/MANIFEST.in +0 -0
  6. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/README.md +0 -0
  7. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/my_aws_helpers/api.py +0 -0
  8. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/my_aws_helpers/auth.py +0 -0
  9. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/my_aws_helpers/bedrock.py +0 -0
  10. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/my_aws_helpers/cognito.py +0 -0
  11. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/my_aws_helpers/dynamo.py +0 -0
  12. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/my_aws_helpers/errors.py +0 -0
  13. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/my_aws_helpers/event.py +0 -0
  14. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/my_aws_helpers/logging.py +0 -0
  15. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/my_aws_helpers/prompts/__init__.py +0 -0
  16. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/my_aws_helpers/prompts/markdown_system_prompt.txt +0 -0
  17. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/my_aws_helpers/prompts/transactions_headers_prompt.txt +0 -0
  18. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/my_aws_helpers/prompts/transactions_headers_prompt_v2.txt +0 -0
  19. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/my_aws_helpers/prompts/transactions_prompt.txt +0 -0
  20. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/my_aws_helpers/sfn.py +0 -0
  21. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/my_aws_helpers.egg-info/SOURCES.txt +0 -0
  22. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/my_aws_helpers.egg-info/dependency_links.txt +0 -0
  23. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/my_aws_helpers.egg-info/requires.txt +0 -0
  24. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/my_aws_helpers.egg-info/top_level.txt +0 -0
  25. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/my_aws_helpers.egg-info/zip-safe +0 -0
  26. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/setup.cfg +0 -0
  27. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/tests/test_cognito.py +0 -0
  28. {my_aws_helpers-5.7.0 → my_aws_helpers-5.9.0}/tests/test_event.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: my_aws_helpers
3
- Version: 5.7.0
3
+ Version: 5.9.0
4
4
  Summary: AWS Helpers
5
5
  Home-page: https://github.com/JarrodMccarthy/aws_helpers.git
6
6
  Author: Jarrod McCarthy
@@ -2,6 +2,7 @@ from __future__ import annotations
2
2
  import boto3
3
3
  import io
4
4
  import json
5
+ from concurrent.futures import Future, ThreadPoolExecutor
5
6
  from abc import ABC, abstractmethod
6
7
  from typing import Optional, Any, Dict, List
7
8
  from datetime import datetime, date
@@ -100,11 +101,35 @@ class S3:
100
101
  )
101
102
 
102
103
  def list_objects_by_prefix(self, bucket_name: str, prefix: str) -> List[S3Location]:
104
+ """
105
+ list objects by prefix gets 1000 items at a time, if theres more, I want em
106
+ """
107
+ objects = list()
103
108
  try:
104
- response = self.client.list_objects_v2(Bucket=bucket_name, Prefix=prefix)
105
- contents = response["Contents"]
109
+ continuation_token = None
110
+ while True:
111
+ if continuation_token:
112
+ response = self.client.list_objects_v2(
113
+ Bucket=bucket_name,
114
+ Prefix=prefix,
115
+ ContinuationToken=continuation_token
116
+ )
117
+ else:
118
+ response = self.client.list_objects_v2(
119
+ Bucket=bucket_name,
120
+ Prefix=prefix
121
+ )
122
+
123
+ # Append current batch
124
+ objects.extend(response.get("Contents", []))
125
+
126
+ # Check if more results exist
127
+ if response.get("IsTruncated"): # True if more pages available
128
+ continuation_token = response["NextContinuationToken"]
129
+ else:
130
+ break
106
131
  locations = [
107
- S3Location(bucket=bucket_name, file_name=c["Key"]) for c in contents
132
+ S3Location(bucket=bucket_name, file_name=c["Key"]) for c in objects
108
133
  ]
109
134
  return locations
110
135
  except Exception as e:
@@ -296,6 +321,23 @@ class BaseS3Queries:
296
321
  self.s3_client = s3_client
297
322
  self.bucket_name = bucket_name
298
323
 
324
+ def _concurrent_s3_dict_read(
325
+ self, locations: List[S3Location], max_workers: int = 10
326
+ ) -> List[BaseS3Object]:
327
+ results: List[BaseS3Object] = list()
328
+ futures: List[Future] = list()
329
+ with ThreadPoolExecutor(max_workers=max_workers) as executor:
330
+ for location in locations:
331
+ future = executor.submit(
332
+ self.s3_client.read_dict_from_s3,
333
+ s3_location=location,
334
+ )
335
+ futures.append(future)
336
+ for f in futures:
337
+ results.append(f.result())
338
+ results = [r for r in results if r is not None]
339
+ return results
340
+
299
341
  def save_s3_object_to_s3(self, object: BaseS3Object) -> Optional[S3Location]:
300
342
  try:
301
343
  obj = object.to_s3_representation()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: my-aws-helpers
3
- Version: 5.7.0
3
+ Version: 5.9.0
4
4
  Summary: AWS Helpers
5
5
  Home-page: https://github.com/JarrodMccarthy/aws_helpers.git
6
6
  Author: Jarrod McCarthy
@@ -3,7 +3,7 @@ from setuptools import find_namespace_packages, setup
3
3
 
4
4
  base_path = os.path.abspath(os.path.dirname(__file__))
5
5
 
6
- version = "5.7.0"
6
+ version = "5.9.0"
7
7
 
8
8
  core = [
9
9
  "boto3==1.34.36",
File without changes
File without changes