@@ -3360,7 +3360,7 @@ def conversation_entity_data_row(client, rand_gen):
3360
3360
@pytest.fixture
3361
3361
def project(client, rand_gen):
3362
3362
project = client.create_project(name=rand_gen(str),
3363
- queue_mode= QueueMode.Batch,
3363
+ queue_modes=[ QueueMode.Batch] ,
3364
3364
media_type=MediaType.Image)
3365
3365
yield project
3366
3366
project.delete()
@@ -3370,7 +3370,7 @@ def project(client, rand_gen):
3370
3370
def consensus_project(client, rand_gen):
3371
3371
project = client.create_project(name=rand_gen(str),
3372
3372
quality_mode=QualityMode.Consensus,
3373
- queue_mode= QueueMode.Batch,
3373
+ queue_modes=[ QueueMode.Batch] ,
3374
3374
media_type=MediaType.Image)
3375
3375
yield project
3376
3376
project.delete()
@@ -3560,7 +3560,7 @@ def project_based_user(client, rand_gen):
3560
3560
def project_pack(client):
3561
3561
projects = [
3562
3562
client.create_project(name=f"user-proj-{idx}",
3563
- queue_mode= QueueMode.Batch,
3563
+ queue_modes=[ QueueMode.Batch] ,
3564
3564
media_type=MediaType.Image) for idx in range(2)
3565
3565
]
3566
3566
yield projects
@@ -3729,7 +3729,7 @@ def _setup_ontology(project):
3729
3729
def configured_project_with_complex_ontology(client, initial_dataset, rand_gen,
3730
3730
image_url):
3731
3731
project = client.create_project(name=rand_gen(str),
3732
- queue_mode= QueueMode.Batch,
3732
+ queue_modes=[ QueueMode.Batch] ,
3733
3733
media_type=MediaType.Image)
3734
3734
dataset = initial_dataset
3735
3735
data_row = dataset.create_data_row(row_data=image_url)
@@ -6650,7 +6650,7 @@ def test_project_dataset(client, rand_gen):
6650
6650
):
6651
6651
client.create_project(
6652
6652
name=rand_gen(str),
6653
- queue_mode= QueueMode.Dataset,
6653
+ queue_modes=[ QueueMode.Dataset] ,
6654
6654
)
6655
6655
6656
6656
@@ -8348,9 +8348,9 @@ def project_to_test_where(client, rand_gen):
8348
8348
p_b_name = f"b-{rand_gen(str)}"
8349
8349
p_c_name = f"c-{rand_gen(str)}"
8350
8350
8351
- p_a = client.create_project(name=p_a_name, queue_mode= QueueMode.Batch)
8352
- p_b = client.create_project(name=p_b_name, queue_mode= QueueMode.Batch)
8353
- p_c = client.create_project(name=p_c_name, queue_mode= QueueMode.Batch)
8351
+ p_a = client.create_project(name=p_a_name, queue_modes=[ QueueMode.Batch] )
8352
+ p_b = client.create_project(name=p_b_name, queue_modes=[ QueueMode.Batch] )
8353
+ p_c = client.create_project(name=p_c_name, queue_modes=[ QueueMode.Batch] )
8354
8354
8355
8355
yield p_a, p_b, p_c
8356
8356
@@ -10053,7 +10053,7 @@ def hardcoded_datarow_id():
10053
10053
def configured_project_with_ontology(client, ontology, rand_gen):
10054
10054
project = client.create_project(
10055
10055
name=rand_gen(str),
10056
- queue_mode= QueueMode.Batch,
10056
+ queue_modes=[ QueueMode.Batch] ,
10057
10057
media_type=MediaType.Image,
10058
10058
)
10059
10059
editor = list(
@@ -12803,7 +12803,7 @@ def configured_project_with_ontology(client, initial_dataset, ontology,
12803
12803
dataset = initial_dataset
12804
12804
project = client.create_project(
12805
12805
name=rand_gen(str),
12806
- queue_mode= QueueMode.Batch,
12806
+ queue_modes=[ QueueMode.Batch] ,
12807
12807
)
12808
12808
editor = list(
12809
12809
client.get_labeling_frontends(
@@ -12827,7 +12827,7 @@ def configured_project_with_ontology(client, initial_dataset, ontology,
12827
12827
def configured_project_without_data_rows(client, ontology, rand_gen):
12828
12828
project = client.create_project(name=rand_gen(str),
12829
12829
description=rand_gen(str),
12830
- queue_mode= QueueMode.Batch)
12830
+ queue_modes=[ QueueMode.Batch] )
12831
12831
editor = list(
12832
12832
client.get_labeling_frontends(
12833
12833
where=LabelingFrontend.name == "editor"))[0]
@@ -22430,7 +22430,7 @@ class Client:
22430
22430
description (str): A short summary for the project
22431
22431
media_type (MediaType): The type of assets that this project will accept
22432
22432
queue_mode (Optional[QueueMode]): The queue mode to use
22433
- quality_mode (Optional[QualityMode]): The quality mode to use (e.g. Benchmark, Consensus). Defaults to
22433
+ quality_modes (Optional[List[ QualityMode]] ): The quality modes to use (e.g. Benchmark, Consensus). Defaults to
22434
22434
Benchmark
22435
22435
Returns:
22436
22436
A new Project object.
@@ -22461,41 +22461,63 @@ class Client:
22461
22461
)
22462
22462
22463
22463
media_type = kwargs.get("media_type")
22464
- if media_type:
22465
- if MediaType.is_supported(media_type):
22466
- media_type = media_type.value
22467
- else:
22468
- raise TypeError(f"{media_type} is not a valid media type. Use"
22469
- f" any of {MediaType.get_supported_members()}"
22470
- " from MediaType. Example: MediaType.Image.")
22464
+ if media_type and MediaType.is_supported(media_type):
22465
+ media_type_value = media_type.value
22466
+ elif media_type:
22467
+ raise TypeError(f"{media_type} is not a valid media type. Use"
22468
+ f" any of {MediaType.get_supported_members()}"
22469
+ " from MediaType. Example: MediaType.Image.")
22471
22470
else:
22472
22471
logger.warning(
22473
22472
"Creating a project without specifying media_type"
22474
22473
" through this method will soon no longer be supported.")
22474
+ media_type_value = None
22475
+
22476
+ ontology_kind = kwargs.pop("ontology_kind", None)
22477
+ if ontology_kind and OntologyKind.is_supported(ontology_kind):
22478
+ editor_task_type_value = EditorTaskTypeMapper.to_editor_task_type(
22479
+ ontology_kind, media_type).value
22480
+ elif ontology_kind:
22481
+ raise OntologyKind.get_ontology_kind_validation_error(ontology_kind)
22482
+ else:
22483
+ editor_task_type_value = None
22475
22484
22476
- quality_mode = kwargs.get("quality_mode ")
22477
- if not quality_mode :
22478
- logger.info("Defaulting quality mode to Benchmark.")
22485
+ quality_modes = kwargs.get("quality_modes ")
22486
+ if not quality_modes :
22487
+ logger.info("Defaulting quality modes to Benchmark.")
22479
22488
22480
22489
data = kwargs
22481
- data.pop("quality_mode ", None)
22482
- if quality_mode is None or quality_mode is QualityMode.Benchmark:
22490
+ data.pop("quality_modes ", None)
22491
+ if quality_modes is None or quality_modes == [ QualityMode.Benchmark] :
22483
22492
data[
22484
22493
"auto_audit_number_of_labels"] = BENCHMARK_AUTO_AUDIT_NUMBER_OF_LABELS
22485
22494
data["auto_audit_percentage"] = BENCHMARK_AUTO_AUDIT_PERCENTAGE
22486
- elif quality_mode is QualityMode.Consensus:
22495
+ data["is_benchmark_enabled"] = True
22496
+ elif QualityMode.Consensus in quality_modes:
22487
22497
data[
22488
22498
"auto_audit_number_of_labels"] = CONSENSUS_AUTO_AUDIT_NUMBER_OF_LABELS
22489
22499
data["auto_audit_percentage"] = CONSENSUS_AUTO_AUDIT_PERCENTAGE
22500
+ data["is_consensus_enabled"] = True
22490
22501
else:
22491
- raise ValueError(f"{quality_mode} is not a valid quality mode.")
22502
+ raise ValueError(f"{quality_modes} is not a valid quality modes array. Allowed values are [Benchmark, Consensus]")
22503
+
22504
+ params = {**data}
22505
+ if media_type_value:
22506
+ params["media_type"] = media_type_value
22507
+ if editor_task_type_value:
22508
+ params["editor_task_type"] = editor_task_type_value
22509
+
22510
+ extra_params = {
22511
+ Field.String("dataset_name_or_id"):
22512
+ params.pop("dataset_name_or_id", None),
22513
+ Field.Boolean("append_to_existing_dataset"):
22514
+ params.pop("append_to_existing_dataset", None),
22515
+ Field.Int("data_row_count"):
22516
+ params.pop("data_row_count", None),
22517
+ }
22518
+ extra_params = {k: v for k, v in extra_params.items() if v is not None}
22492
22519
22493
- return self._create(Entity.Project, {
22494
- **data,
22495
- **({
22496
- "media_type": media_type
22497
- } if media_type else {})
22498
- })
22520
+ return self._create(Entity.Project, params, extra_params)
22499
22521
22500
22522
def get_roles(self) -> List[Role]:
22501
22523
"""
0 commit comments