3131from labelbox .schema .model_run import ModelRun
3232from labelbox .schema .ontology import Ontology , Tool , Classification , FeatureSchema
3333from labelbox .schema .organization import Organization
34+ from labelbox .schema .quality_mode import QualityMode , BENCHMARK_AUTO_AUDIT_NUMBER_OF_LABELS , \
35+ BENCHMARK_AUTO_AUDIT_PERCENTAGE , CONSENSUS_AUTO_AUDIT_NUMBER_OF_LABELS , CONSENSUS_AUTO_AUDIT_PERCENTAGE
3436from labelbox .schema .user import User
3537from labelbox .schema .project import Project
3638from labelbox .schema .role import Role
@@ -636,16 +638,33 @@ def create_project(self, **kwargs) -> Project:
636638 description (str): A short summary for the project
637639 media_type (MediaType): The type of assets that this project will accept
638640 queue_mode (Optional[QueueMode]): The queue mode to use
639- auto_audit_percentage (Optional[float ]): The percentage of data rows that will require more than 1 label
640- auto_audit_number_of_labels (Optional[float]): Number of labels required for data rows selected for multiple labeling (auto_audit_percentage)
641+ quality_mode (Optional[QualityMode ]): The quality mode to use (e.g. Benchmark, Consensus). Defaults to
642+ Benchmark
641643 Returns:
642644 A new Project object.
643645 Raises:
644646 InvalidAttributeError: If the Project type does not contain
645647 any of the attribute names given in kwargs.
646648 """
647- media_type = kwargs .get ("media_type" )
649+
650+ auto_audit_percentage = kwargs .get ("auto_audit_percentage" )
651+ auto_audit_number_of_labels = kwargs .get ("auto_audit_number_of_labels" )
652+ if auto_audit_percentage is not None or auto_audit_number_of_labels is not None :
653+ raise ValueError (
654+ "quality_mode must be set instead of auto_audit_percentage or auto_audit_number_of_labels."
655+ )
656+
648657 queue_mode = kwargs .get ("queue_mode" )
658+ if queue_mode is QueueMode .Dataset :
659+ raise ValueError (
660+ "Dataset queue mode is deprecated. Please prefer Batch queue mode."
661+ )
662+ elif queue_mode is QueueMode .Batch :
663+ logger .warning (
664+ "Passing a queue mode of batch is redundant and will soon no longer be supported."
665+ )
666+
667+ media_type = kwargs .get ("media_type" )
649668 if media_type :
650669 if MediaType .is_supported (media_type ):
651670 media_type = media_type .value
@@ -658,20 +677,25 @@ def create_project(self, **kwargs) -> Project:
658677 "Creating a project without specifying media_type"
659678 " through this method will soon no longer be supported." )
660679
661- if not queue_mode :
662- logger .warning (
663- "Default createProject behavior will soon be adjusted to prefer "
664- "batch projects. Pass in `queue_mode` parameter explicitly to opt-out for the "
665- "time being." )
666- elif queue_mode == QueueMode .Dataset :
667- logger .warning (
668- "QueueMode.Dataset will eventually be deprecated, and is no longer "
669- "recommended for new projects. Prefer QueueMode.Batch instead." )
680+ quality_mode = kwargs .get ("quality_mode" )
681+ if not quality_mode :
682+ logger .info ("Defaulting quality mode to Benchmark." )
683+
684+ data = kwargs
685+ data .pop ("quality_mode" , None )
686+ if quality_mode is None or quality_mode is QualityMode .Benchmark :
687+ data [
688+ "auto_audit_number_of_labels" ] = BENCHMARK_AUTO_AUDIT_NUMBER_OF_LABELS
689+ data ["auto_audit_percentage" ] = BENCHMARK_AUTO_AUDIT_PERCENTAGE
690+ else :
691+ data [
692+ "auto_audit_number_of_labels" ] = CONSENSUS_AUTO_AUDIT_NUMBER_OF_LABELS
693+ data ["auto_audit_percentage" ] = CONSENSUS_AUTO_AUDIT_PERCENTAGE
670694
671695 return self ._create (Entity .Project , {
672- ** kwargs ,
696+ ** data ,
673697 ** ({
674- ' media_type' : media_type
698+ " media_type" : media_type
675699 } if media_type else {})
676700 })
677701
0 commit comments