@@ -50,7 +50,9 @@ class ScaleClient:
50
50
51
51
def __init__ (self , api_key , source = None , api_instance_url = None ):
52
52
self .api = Api (
53
- api_key , user_agent_extension = source , api_instance_url = api_instance_url
53
+ api_key ,
54
+ user_agent_extension = source ,
55
+ api_instance_url = api_instance_url ,
54
56
)
55
57
56
58
def get_task (self , task_id : str ) -> Task :
@@ -148,6 +150,49 @@ def set_task_metadata(self, task_id: str, metadata: Dict) -> Task:
148
150
endpoint = f"task/{ task_id } /setMetadata"
149
151
return Task (self .api .post_request (endpoint , body = metadata ), self )
150
152
153
+ def set_task_tags (self , task_id : str , tags : List [str ]) -> Task :
154
+ """Sets completely new list of tags to a task and returns the
155
+ associated task.
156
+ Args:
157
+ task_id (str):
158
+ Task id
159
+ tags (List[str]):
160
+ List of new tags to set
161
+ Returns:
162
+ Task
163
+ """
164
+ endpoint = f"task/{ task_id } /tags"
165
+ return Task (self .api .post_request (endpoint , body = tags ), self )
166
+
167
+ def add_task_tags (self , task_id : str , tags : List [str ]) -> Task :
168
+ """Adds a list of tags to a task and returns the
169
+ associated task.
170
+ Args:
171
+ task_id (str):
172
+ Task id
173
+ tags (List[str]):
174
+ List of tags to add.
175
+ Already present tags will be ignored.
176
+ Returns:
177
+ Task
178
+ """
179
+ endpoint = f"task/{ task_id } /tags"
180
+ return Task (self .api .put_request (endpoint , body = tags ), self )
181
+
182
+ def delete_task_tags (self , task_id : str , tags : List [str ]) -> Task :
183
+ """Deletes a list of tags from a task and returns the
184
+ associated task.
185
+ Args:
186
+ task_id (str):
187
+ Task id
188
+ tags (List[str]):
189
+ List of tags to delete. Nonpresent tags will be ignored.
190
+ Returns:
191
+ Task
192
+ """
193
+ endpoint = f"task/{ task_id } /tags"
194
+ return Task (self .api .delete_request (endpoint , body = tags ), self )
195
+
151
196
def tasks (self , ** kwargs ) -> Tasklist :
152
197
"""Returns a list of your tasks.
153
198
Returns up to 100 at a time, to get more, use the
@@ -949,7 +994,11 @@ def list_teammates(self) -> List[Teammate]:
949
994
teammate_list = self .api .get_request (endpoint )
950
995
return [Teammate (teammate , self ) for teammate in teammate_list ]
951
996
952
- def invite_teammates (self , emails : List [str ], role : TeammateRole ) -> List [Teammate ]:
997
+ def invite_teammates (
998
+ self ,
999
+ emails : List [str ],
1000
+ role : TeammateRole ,
1001
+ ) -> List [Teammate ]:
953
1002
"""Invites a list of emails to your team.
954
1003
955
1004
Args:
@@ -989,7 +1038,9 @@ def update_teammates_role(
989
1038
teammate_list = self .api .post_request (endpoint , payload )
990
1039
return [Teammate (teammate , self ) for teammate in teammate_list ]
991
1040
992
- def list_studio_assignments (self ) -> Dict [str , StudioLabelerAssignment ]:
1041
+ def list_studio_assignments (
1042
+ self ,
1043
+ ) -> Dict [str , StudioLabelerAssignment ]:
993
1044
"""Returns a dictionary where the keys are user emails and the
994
1045
values are projects the user is assigned to.
995
1046
@@ -999,8 +1050,12 @@ def list_studio_assignments(self) -> Dict[str, StudioLabelerAssignment]:
999
1050
endpoint = "studio/assignments"
1000
1051
raw_assignments = self .api .get_request (endpoint )
1001
1052
assignments = {}
1002
- for (email , assigned_projects ) in raw_assignments .items ():
1003
- assignments [email ] = StudioLabelerAssignment (assigned_projects , email , self )
1053
+ for email , assigned_projects in raw_assignments .items ():
1054
+ assignments [email ] = StudioLabelerAssignment (
1055
+ assigned_projects ,
1056
+ email ,
1057
+ self ,
1058
+ )
1004
1059
return assignments
1005
1060
1006
1061
def add_studio_assignments (
@@ -1023,8 +1078,12 @@ def add_studio_assignments(
1023
1078
}
1024
1079
raw_assignments = self .api .post_request (endpoint , payload )
1025
1080
assignments = {}
1026
- for (email , assigned_projects ) in raw_assignments .items ():
1027
- assignments [email ] = StudioLabelerAssignment (assigned_projects , email , self )
1081
+ for email , assigned_projects in raw_assignments .items ():
1082
+ assignments [email ] = StudioLabelerAssignment (
1083
+ assigned_projects ,
1084
+ email ,
1085
+ self ,
1086
+ )
1028
1087
return assignments
1029
1088
1030
1089
def remove_studio_assignments (
@@ -1047,8 +1106,12 @@ def remove_studio_assignments(
1047
1106
}
1048
1107
raw_assignments = self .api .post_request (endpoint , payload )
1049
1108
assignments = {}
1050
- for (email , assigned_projects ) in raw_assignments .items ():
1051
- assignments [email ] = StudioLabelerAssignment (assigned_projects , email , self )
1109
+ for email , assigned_projects in raw_assignments .items ():
1110
+ assignments [email ] = StudioLabelerAssignment (
1111
+ assigned_projects ,
1112
+ email ,
1113
+ self ,
1114
+ )
1052
1115
return assignments
1053
1116
1054
1117
def list_project_groups (self , project : str ) -> List [StudioProjectGroup ]:
@@ -1083,7 +1146,10 @@ def create_project_group(
1083
1146
"""
1084
1147
endpoint = f"studio/projects/{ Api .quote_string (project )} /groups"
1085
1148
payload = {"emails" : emails , "name" : project_group }
1086
- return StudioProjectGroup (self .api .post_request (endpoint , payload ), self )
1149
+ return StudioProjectGroup (
1150
+ self .api .post_request (endpoint , payload ),
1151
+ self ,
1152
+ )
1087
1153
1088
1154
def update_project_group (
1089
1155
self ,
@@ -1110,8 +1176,14 @@ def update_project_group(
1110
1176
f"studio/projects/{ Api .quote_string (project )} "
1111
1177
f"/groups/{ Api .quote_string (project_group )} "
1112
1178
)
1113
- payload = {"add_emails" : add_emails , "remove_emails" : remove_emails }
1114
- return StudioProjectGroup (self .api .put_request (endpoint , payload ), self )
1179
+ payload = {
1180
+ "add_emails" : add_emails ,
1181
+ "remove_emails" : remove_emails ,
1182
+ }
1183
+ return StudioProjectGroup (
1184
+ self .api .put_request (endpoint , payload ),
1185
+ self ,
1186
+ )
1115
1187
1116
1188
def list_studio_batches (self ) -> List [StudioBatch ]:
1117
1189
"""Returns a list with all pending studio batches,
@@ -1152,7 +1224,12 @@ def set_studio_batches_priorities(
1152
1224
Returns:
1153
1225
List[StudioBatch]
1154
1226
"""
1155
- batches_names = list (map (lambda batch_name : {"name" : batch_name }, batch_names ))
1227
+ batches_names = list (
1228
+ map (
1229
+ lambda batch_name : {"name" : batch_name },
1230
+ batch_names ,
1231
+ )
1232
+ )
1156
1233
endpoint = "studio/batches/set_priorities"
1157
1234
payload = {"batches" : batches_names }
1158
1235
batches = self .api .post_request (endpoint , payload )
0 commit comments