Skip to content

Commit b0ed92d

Browse files
author
Val Brodsky
committed
Add UploadReport
1 parent 2c8e358 commit b0ed92d

File tree

1 file changed

+33
-7
lines changed

1 file changed

+33
-7
lines changed

libs/labelbox/src/labelbox/schema/user_group_upload.py

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import json
2+
from dataclasses import dataclass
23
from io import BytesIO
34
from typing import List, Optional
45

@@ -13,18 +14,34 @@
1314
from labelbox.pagination import PaginatedCollection
1415

1516

17+
@dataclass
18+
class UploadReportLine:
19+
email: str
20+
result: str
21+
error: Optional[str] = None
22+
23+
24+
@dataclass
25+
class UploadReport:
26+
lines: List[UploadReportLine]
27+
28+
1629
class UserGroupUpload:
1730
def __init__(self, client: Client):
1831
self.client = client
1932

20-
def upload_members(self, group_id: str, role: str, emails: List[str]):
33+
def upload_members(
34+
self, group_id: str, role: str, emails: List[str]
35+
) -> Optional[UploadReport]:
2136
if len(emails) == 0:
2237
print("No emails to upload.")
23-
return
38+
return None
2439

2540
role_id = self._get_role_id(role)
2641
if role_id is None:
27-
raise ResourceNotFoundError(message="The role does not exist.")
42+
raise ResourceNotFoundError(
43+
message="Could not find a valid role with the name provided. Please make sure the role name is correct."
44+
)
2845

2946
buffer = BytesIO()
3047
buffer.write(b"email\n") # Header row
@@ -146,11 +163,20 @@ def _get_role_id(self, role_name: str) -> Optional[str]:
146163

147164
return role_id
148165

149-
def _parse_csv_report(self, csv_report: str) -> List[dict]:
166+
def _parse_csv_report(self, csv_report: str) -> UploadReport:
150167
lines = csv_report.strip().split("\n")
151168
headers = lines[0].split(",")
152-
report_list = []
169+
report_lines = []
153170
for line in lines[1:]:
154171
values = line.split(",")
155-
report_list.append(dict(zip(headers, values)))
156-
return report_list
172+
row = dict(zip(headers, values))
173+
report_lines.append(
174+
UploadReportLine(
175+
email=row["Email"],
176+
result=row["Result"],
177+
error=row.get(
178+
"Error"
179+
), # Using get() since error is optional
180+
)
181+
)
182+
return UploadReport(lines=report_lines)

0 commit comments

Comments
 (0)