13
13
14
14
from labelbox import parser
15
15
from labelbox import utils
16
- from labelbox .exceptions import (
17
- InvalidQueryError ,
18
- LabelboxError ,
19
- ProcessingWaitTimeout ,
20
- ResourceConflict ,
21
- ResourceNotFoundError
22
- )
16
+ from labelbox .exceptions import (InvalidQueryError , LabelboxError ,
17
+ ProcessingWaitTimeout , ResourceConflict ,
18
+ ResourceNotFoundError )
23
19
from labelbox .orm import query
24
20
from labelbox .orm .db_object import DbObject , Deletable , Updateable , experimental
25
21
from labelbox .orm .model import Entity , Field , Relationship
@@ -122,6 +118,7 @@ class Project(DbObject, Updateable, Deletable):
122
118
media_type = Field .Enum (MediaType , "media_type" , "allowedMediaType" )
123
119
editor_task_type = Field .Enum (EditorTaskType , "editor_task_type" )
124
120
data_row_count = Field .Int ("data_row_count" )
121
+ model_setup_complete : Field = Field .Boolean ("model_setup_complete" )
125
122
126
123
# Relationships
127
124
created_by = Relationship .ToOne ("User" , False , "created_by" )
@@ -1299,6 +1296,24 @@ def delete_project_model_config(self, project_model_config_id: str) -> bool:
1299
1296
raise ResourceNotFoundError (ProjectModelConfig , params )
1300
1297
return result ["deleteProjectModelConfig" ]["success" ]
1301
1298
1299
+ def set_project_model_setup_complete (self ) -> bool :
1300
+ """ Checks if the model setup is complete for this project.
1301
+
1302
+ Returns:
1303
+ bool, indicates if the model setup is complete.
1304
+ """
1305
+ query = """query ModelSetupCompletePyApi($projectId: ID!) {
1306
+ project(where: {id: $projectId}, data: {modelSetupComplete: true}) {
1307
+ modelSetupComplete
1308
+ }
1309
+ }"""
1310
+
1311
+ result = self .client .execute (query , {"projectId" : self .uid })
1312
+
1313
+ self .update (
1314
+ model_setup_complete = result ["project" ]["modelSetupComplete" ])
1315
+ return result ["project" ]["modelSetupComplete" ]
1316
+
1302
1317
def set_labeling_parameter_overrides (
1303
1318
self , data : List [LabelingParameterOverrideInput ]) -> bool :
1304
1319
""" Adds labeling parameter overrides to this project.
@@ -1752,7 +1767,9 @@ def __check_data_rows_have_been_processed(
1752
1767
return response ["queryAllDataRowsHaveBeenProcessed" ][
1753
1768
"allDataRowsHaveBeenProcessed" ]
1754
1769
1755
- def get_overview (self , details = False ) -> Union [ProjectOverview , ProjectOverviewDetailed ]:
1770
+ def get_overview (
1771
+ self ,
1772
+ details = False ) -> Union [ProjectOverview , ProjectOverviewDetailed ]:
1756
1773
"""Return the overview of a project.
1757
1774
1758
1775
This method returns the number of data rows per task queue and issues of a project,
@@ -1792,7 +1809,7 @@ def get_overview(self, details=False) -> Union[ProjectOverview, ProjectOverviewD
1792
1809
1793
1810
# Must use experimental to access "issues"
1794
1811
result = self .client .execute (query , {"projectId" : self .uid },
1795
- experimental = True )["project" ]
1812
+ experimental = True )["project" ]
1796
1813
1797
1814
# Reformat category names
1798
1815
overview = {
@@ -1805,26 +1822,28 @@ def get_overview(self, details=False) -> Union[ProjectOverview, ProjectOverviewD
1805
1822
1806
1823
# Rename categories
1807
1824
overview ["to_label" ] = overview .pop ("unlabeled" )
1808
- overview ["total_data_rows" ] = overview .pop ("all" )
1825
+ overview ["total_data_rows" ] = overview .pop ("all" )
1809
1826
1810
1827
if not details :
1811
1828
return ProjectOverview (** overview )
1812
1829
else :
1813
1830
# Build dictionary for queue details for review and rework queues
1814
1831
for category in ["rework" , "review" ]:
1815
1832
queues = [
1816
- {tq ["name" ]: tq .get ("dataRowCount" )}
1833
+ {
1834
+ tq ["name" ]: tq .get ("dataRowCount" )
1835
+ }
1817
1836
for tq in result .get ("taskQueues" )
1818
1837
if tq .get ("queueType" ) == f"MANUAL_{ category .upper ()} _QUEUE"
1819
1838
]
1820
1839
1821
- overview [f"in_{ category } " ] = {
1840
+ overview [f"in_{ category } " ] = {
1822
1841
"data" : queues ,
1823
1842
"total" : overview [f"in_{ category } " ]
1824
1843
}
1825
-
1844
+
1826
1845
return ProjectOverviewDetailed (** overview )
1827
-
1846
+
1828
1847
def clone (self ) -> "Project" :
1829
1848
"""
1830
1849
Clones the current project.
0 commit comments