Skip to content

Commit 75694f1

Browse files
committed
Fix aws region - root folder id
1 parent 22c522b commit 75694f1

File tree

5 files changed

+47
-57
lines changed

5 files changed

+47
-57
lines changed

superannotate/db/images.py

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
search_annotation_classes
2626
)
2727
from .project_api import get_project_and_folder_metadata, get_project_metadata_bare
28+
from .utils import _get_boto_session_by_credentials
2829

2930
logger = logging.getLogger("superannotate-python-sdk")
3031

@@ -38,16 +39,17 @@ def get_project_root_folder_id(project):
3839
int
3940
Root folder ID
4041
"""
41-
params = {'team_id': project['team_id']}
42-
response = _api.send_request(
43-
req_type='GET', path=f'/project/{project["id"]}', params=params
44-
)
42+
params = {
43+
'team_id': project['team_id'],
44+
'project_id': project['id'],
45+
'is_root': 1
46+
}
47+
response = _api.send_request(req_type='GET', path='/folders', params=params)
4548
if not response.ok:
4649
raise SABaseException(response.status_code, response.text)
4750

4851
response = response.json()
49-
50-
return response['folder_id']
52+
return response['data'][0]['id']
5153

5254

5355
def search_images(
@@ -232,7 +234,10 @@ def get_image_metadata(project, image_names, return_dict_on_single_output=True):
232234
project_folder_id = None
233235

234236
chunk_size = 500
235-
chunks = [image_names[i:i + chunk_size] for i in range(0, len(image_names), chunk_size)]
237+
chunks = [
238+
image_names[i:i + chunk_size]
239+
for i in range(0, len(image_names), chunk_size)
240+
]
236241

237242
json_req = {
238243
'project_id': project['id'],
@@ -249,13 +254,16 @@ def get_image_metadata(project, image_names, return_dict_on_single_output=True):
249254
req_type='POST',
250255
path='/images/getBulk',
251256
json_req=json_req,
252-
)
257+
)
253258
if not response.ok:
254-
raise SABaseException(response.status_code,"Couldn't get image metadata. " + response.text)
259+
raise SABaseException(
260+
response.status_code,
261+
"Couldn't get image metadata. " + response.text
262+
)
255263
metadata_raw += response.json()
256264

257265
metadata_without_deleted = []
258-
metadata_without_deleted = [ i for i in metadata_raw if i['delete'] != 1 ]
266+
metadata_without_deleted = [i for i in metadata_raw if i['delete'] != 1]
259267

260268
if len(metadata_without_deleted) == 0:
261269
raise SABaseException(
@@ -1001,11 +1009,7 @@ def upload_image_annotations(
10011009
)
10021010
res = response.json()
10031011
res_json = res['annotation_json_path']
1004-
s3_session = boto3.Session(
1005-
aws_access_key_id=res_json['accessKeyId'],
1006-
aws_secret_access_key=res_json['secretAccessKey'],
1007-
aws_session_token=res_json['sessionToken']
1008-
)
1012+
s3_session = _get_boto_session_by_credentials(res_json)
10091013
s3_resource = s3_session.resource('s3')
10101014
bucket = s3_resource.Bucket(res_json["bucket"])
10111015
bucket.put_object(
@@ -1018,11 +1022,7 @@ def upload_image_annotations(
10181022
with open(mask, "rb") as f:
10191023
mask = io.BytesIO(f.read())
10201024
res_mask = res['annotation_bluemap_path']
1021-
s3_session = boto3.Session(
1022-
aws_access_key_id=res_mask['accessKeyId'],
1023-
aws_secret_access_key=res_mask['secretAccessKey'],
1024-
aws_session_token=res_mask['sessionToken']
1025-
)
1025+
s3_session = _get_boto_session_by_credentials(res_mask)
10261026
bucket = s3_resource.Bucket(res_mask["bucket"])
10271027
bucket.put_object(Key=res_mask['filePath'], Body=mask)
10281028

superannotate/db/project_images.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
get_project_default_image_quality_in_editor, upload_image_array_to_s3,
2121
_get_available_image_counts
2222
)
23-
from .utils import _get_upload_auth_token
23+
from .utils import _get_upload_auth_token, _get_boto_session_by_credentials
2424

2525
logger = logging.getLogger("superannotate-python-sdk")
2626
_api = API.get_instance()
@@ -104,11 +104,7 @@ def upload_image_to_project(
104104
params = {'team_id': team_id, 'folder_id': folder_id}
105105
res = _get_upload_auth_token(params=params, project_id=project_id)
106106
prefix = res['filePath']
107-
s3_session = boto3.Session(
108-
aws_access_key_id=res['accessKeyId'],
109-
aws_secret_access_key=res['secretAccessKey'],
110-
aws_session_token=res['sessionToken']
111-
)
107+
s3_session = _get_boto_session_by_credentials(res)
112108
s3_resource = s3_session.resource('s3')
113109
bucket = s3_resource.Bucket(res["bucket"])
114110
try:
@@ -329,9 +325,11 @@ def move_images(
329325
)
330326
if image_names is None:
331327
image_names = search_images((source_project, source_project_folder))
332-
copy_images((source_project, source_project_folder), image_names,
333-
(destination_project, destination_project_folder),
334-
include_annotations, copy_annotation_status, copy_pin)
328+
copy_images(
329+
(source_project, source_project_folder), image_names,
330+
(destination_project, destination_project_folder), include_annotations,
331+
copy_annotation_status, copy_pin
332+
)
335333
delete_images((source_project, source_project_folder), image_names)
336334
logger.info(
337335
"Moved images %s from project %s to project %s", image_names,

superannotate/db/projects.py

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
get_project_metadata_with_users
4141
)
4242
from .users import get_team_contributor_metadata
43-
from .utils import _get_upload_auth_token
43+
from .utils import _get_upload_auth_token, _get_boto_session_by_credentials
4444

4545
logger = logging.getLogger("superannotate-python-sdk")
4646

@@ -700,11 +700,7 @@ def __upload_images_to_aws_thread(
700700
from_s3 = from_session.resource('s3')
701701
if start_index >= len_img_paths:
702702
return
703-
s3_session = boto3.Session(
704-
aws_access_key_id=res['accessKeyId'],
705-
aws_secret_access_key=res['secretAccessKey'],
706-
aws_session_token=res['sessionToken']
707-
)
703+
s3_session = _get_boto_session_by_credentials(res)
708704
s3_resource = s3_session.resource('s3')
709705
bucket = s3_resource.Bucket(res["bucket"])
710706
prefix = res['filePath']
@@ -1095,11 +1091,7 @@ def __attach_image_urls_to_project_thread(
10951091
end_index = start_index + chunksize
10961092
if start_index >= len_img_paths:
10971093
return
1098-
s3_session = boto3.Session(
1099-
aws_access_key_id=res['accessKeyId'],
1100-
aws_secret_access_key=res['secretAccessKey'],
1101-
aws_session_token=res['sessionToken']
1102-
)
1094+
s3_session = _get_boto_session_by_credentials(res)
11031095
s3_resource = s3_session.resource('s3')
11041096
bucket = s3_resource.Bucket(res["bucket"])
11051097
prefix = res['filePath']
@@ -1520,11 +1512,7 @@ def __upload_annotations_thread(
15201512
continue
15211513
res = response.json()
15221514
aws_creds = res["creds"]
1523-
s3_session = boto3.Session(
1524-
aws_access_key_id=aws_creds['accessKeyId'],
1525-
aws_secret_access_key=aws_creds['secretAccessKey'],
1526-
aws_session_token=aws_creds['sessionToken']
1527-
)
1515+
s3_session = _get_boto_session_by_credentials(aws_creds)
15281516
s3_resource = s3_session.resource('s3')
15291517
bucket = s3_resource.Bucket(aws_creds["bucket"])
15301518
for image_id, image_info in res['images'].items():

superannotate/db/utils.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
import boto3
12
from ..api import API
23
from ..exceptions import SABaseException, SAImageSizeTooLarge
4+
35
_api = API.get_instance()
46

57

6-
def _get_upload_auth_token(params,project_id):
8+
def _get_upload_auth_token(params, project_id):
79
response = _api.send_request(
810
req_type='GET',
911
path=f'/project/{project_id}/sdkImageUploadToken',
@@ -13,7 +15,15 @@ def _get_upload_auth_token(params,project_id):
1315
raise SABaseException(
1416
response.status_code, "Couldn't get upload token " + response.text
1517
)
16-
18+
1719
res = response.json()
1820
return res
1921

22+
23+
def _get_boto_session_by_credentials(credentials):
24+
return boto3.Session(
25+
aws_access_key_id=credentials['accessKeyId'],
26+
aws_secret_access_key=credentials['secretAccessKey'],
27+
aws_session_token=credentials['sessionToken'],
28+
region_name=credentials['region']
29+
)

superannotate/ml/ml_funcs.py

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,20 @@
88
import os
99
import time
1010

11-
import boto3
12-
import pandas as pd
13-
import plotly.express as px
1411
import plotly.graph_objects as go
1512
from plotly.subplots import make_subplots
1613

1714
from ..api import API
1815
from ..common import (
1916
_AVAILABLE_SEGMENTATION_MODELS, model_training_status_int_to_str,
20-
project_type_str_to_int, upload_state_int_to_str,_MODEL_TRAINING_TASKS
17+
project_type_str_to_int, upload_state_int_to_str, _MODEL_TRAINING_TASKS
2118
)
22-
from ..db.images import get_image_metadata, search_images
19+
from ..db.images import get_image_metadata
2320
from ..exceptions import SABaseException
2421
from ..parameter_decorators import model_metadata, project_metadata
2522
from .defaults import DEFAULT_HYPERPARAMETERS, NON_PLOTABLE_KEYS
2623
from .utils import log_process, make_plotly_specs, reformat_metrics_json
24+
from ..db.utils import _get_boto_session_by_credentials
2725

2826
logger = logging.getLogger("superannotate-python-sdk")
2927
_api = API.get_instance()
@@ -476,11 +474,7 @@ def download_model(model, output_dir):
476474
raise SABaseException(0, "Could not get model info ")
477475

478476
tokens = response["tokens"]
479-
s3_session = boto3.Session(
480-
aws_access_key_id=tokens["accessKeyId"],
481-
aws_secret_access_key=tokens["secretAccessKey"],
482-
aws_session_token=tokens["sessionToken"]
483-
)
477+
s3_session = _get_boto_session_by_credentials(tokens)
484478
s3_resource = s3_session.resource('s3')
485479

486480
bucket = s3_resource.Bucket(tokens["bucket"])

0 commit comments

Comments
 (0)