@@ -50,7 +50,9 @@ class ScaleClient:
5050
5151 def __init__ (self , api_key , source = None , api_instance_url = None ):
5252 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 ,
5456 )
5557
5658 def get_task (self , task_id : str ) -> Task :
@@ -148,6 +150,49 @@ def set_task_metadata(self, task_id: str, metadata: Dict) -> Task:
148150 endpoint = f"task/{ task_id } /setMetadata"
149151 return Task (self .api .post_request (endpoint , body = metadata ), self )
150152
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+
151196 def tasks (self , ** kwargs ) -> Tasklist :
152197 """Returns a list of your tasks.
153198 Returns up to 100 at a time, to get more, use the
@@ -949,7 +994,11 @@ def list_teammates(self) -> List[Teammate]:
949994 teammate_list = self .api .get_request (endpoint )
950995 return [Teammate (teammate , self ) for teammate in teammate_list ]
951996
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 ]:
9531002 """Invites a list of emails to your team.
9541003
9551004 Args:
@@ -989,7 +1038,9 @@ def update_teammates_role(
9891038 teammate_list = self .api .post_request (endpoint , payload )
9901039 return [Teammate (teammate , self ) for teammate in teammate_list ]
9911040
992- def list_studio_assignments (self ) -> Dict [str , StudioLabelerAssignment ]:
1041+ def list_studio_assignments (
1042+ self ,
1043+ ) -> Dict [str , StudioLabelerAssignment ]:
9931044 """Returns a dictionary where the keys are user emails and the
9941045 values are projects the user is assigned to.
9951046
@@ -999,8 +1050,12 @@ def list_studio_assignments(self) -> Dict[str, StudioLabelerAssignment]:
9991050 endpoint = "studio/assignments"
10001051 raw_assignments = self .api .get_request (endpoint )
10011052 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+ )
10041059 return assignments
10051060
10061061 def add_studio_assignments (
@@ -1023,8 +1078,12 @@ def add_studio_assignments(
10231078 }
10241079 raw_assignments = self .api .post_request (endpoint , payload )
10251080 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+ )
10281087 return assignments
10291088
10301089 def remove_studio_assignments (
@@ -1047,8 +1106,12 @@ def remove_studio_assignments(
10471106 }
10481107 raw_assignments = self .api .post_request (endpoint , payload )
10491108 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+ )
10521115 return assignments
10531116
10541117 def list_project_groups (self , project : str ) -> List [StudioProjectGroup ]:
@@ -1083,7 +1146,10 @@ def create_project_group(
10831146 """
10841147 endpoint = f"studio/projects/{ Api .quote_string (project )} /groups"
10851148 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+ )
10871153
10881154 def update_project_group (
10891155 self ,
@@ -1110,8 +1176,14 @@ def update_project_group(
11101176 f"studio/projects/{ Api .quote_string (project )} "
11111177 f"/groups/{ Api .quote_string (project_group )} "
11121178 )
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+ )
11151187
11161188 def list_studio_batches (self ) -> List [StudioBatch ]:
11171189 """Returns a list with all pending studio batches,
@@ -1152,7 +1224,12 @@ def set_studio_batches_priorities(
11521224 Returns:
11531225 List[StudioBatch]
11541226 """
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+ )
11561233 endpoint = "studio/batches/set_priorities"
11571234 payload = {"batches" : batches_names }
11581235 batches = self .api .post_request (endpoint , payload )
0 commit comments