Skip to content

Commit 1f744af

Browse files
vbrodskyVal Brodsky
authored andcommitted
[PLT-1611] Vb/placeholder datarows (#1851)
1 parent 8766f2f commit 1f744af

File tree

3 files changed

+171
-72
lines changed

3 files changed

+171
-72
lines changed

libs/labelbox/tests/integration/conftest.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
from typing import List, Tuple, Type
1212

1313
import pytest
14-
import requests
1514

1615
from labelbox import (
1716
Classification,
@@ -832,3 +831,21 @@ def print_perf_summary():
832831
for aaa in islice(sorted_dict, num_of_entries)
833832
]
834833
print("\nTop slowest fixtures:\n", slowest_fixtures, file=sys.stderr)
834+
835+
836+
@pytest.fixture
837+
def make_metadata_fields(constants):
838+
msg = "A message"
839+
time = datetime.now(timezone.utc)
840+
841+
fields = [
842+
DataRowMetadataField(
843+
schema_id=constants["SPLIT_SCHEMA_ID"],
844+
value=constants["TEST_SPLIT_ID"],
845+
),
846+
DataRowMetadataField(
847+
schema_id=constants["CAPTURE_DT_SCHEMA_ID"], value=time
848+
),
849+
DataRowMetadataField(schema_id=constants["TEXT_SCHEMA_ID"], value=msg),
850+
]
851+
return fields

libs/labelbox/tests/integration/test_data_rows.py

Lines changed: 95 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,17 @@
2121
from labelbox.schema.media_type import MediaType
2222
from labelbox.schema.task import Task
2323

24-
SPLIT_SCHEMA_ID = "cko8sbczn0002h2dkdaxb5kal"
25-
TEST_SPLIT_ID = "cko8scbz70005h2dkastwhgqt"
26-
TEXT_SCHEMA_ID = "cko8s9r5v0001h2dk9elqdidh"
27-
CAPTURE_DT_SCHEMA_ID = "cko8sdzv70006h2dk8jg64zvb"
28-
EXPECTED_METADATA_SCHEMA_IDS = [
29-
SPLIT_SCHEMA_ID,
30-
TEST_SPLIT_ID,
31-
TEXT_SCHEMA_ID,
32-
CAPTURE_DT_SCHEMA_ID,
33-
].sort()
34-
CUSTOM_TEXT_SCHEMA_NAME = "custom_text"
35-
3624

3725
@pytest.fixture
38-
def mdo(client):
26+
def mdo(
27+
client,
28+
constants,
29+
):
3930
mdo = client.get_data_row_metadata_ontology()
4031
try:
41-
mdo.create_schema(CUSTOM_TEXT_SCHEMA_NAME, DataRowMetadataKind.string)
32+
mdo.create_schema(
33+
constants["CUSTOM_TEXT_SCHEMA_NAME"], DataRowMetadataKind.string
34+
)
4235
except MalformedQueryException:
4336
# Do nothing if already exists
4437
pass
@@ -93,26 +86,18 @@ def tile_content():
9386
}
9487

9588

96-
def make_metadata_fields():
97-
msg = "A message"
98-
time = datetime.now(timezone.utc)
99-
100-
fields = [
101-
DataRowMetadataField(schema_id=SPLIT_SCHEMA_ID, value=TEST_SPLIT_ID),
102-
DataRowMetadataField(schema_id=CAPTURE_DT_SCHEMA_ID, value=time),
103-
DataRowMetadataField(schema_id=TEXT_SCHEMA_ID, value=msg),
104-
]
105-
return fields
106-
107-
108-
def make_metadata_fields_dict():
89+
@pytest.fixture
90+
def make_metadata_fields_dict(constants):
10991
msg = "A message"
11092
time = datetime.now(timezone.utc)
11193

11294
fields = [
113-
{"schema_id": SPLIT_SCHEMA_ID, "value": TEST_SPLIT_ID},
114-
{"schema_id": CAPTURE_DT_SCHEMA_ID, "value": time},
115-
{"schema_id": TEXT_SCHEMA_ID, "value": msg},
95+
{
96+
"schema_id": constants["SPLIT_SCHEMA_ID"],
97+
"value": constants["TEST_SPLIT_ID"],
98+
},
99+
{"schema_id": constants["CAPTURE_DT_SCHEMA_ID"], "value": time},
100+
{"schema_id": constants["TEXT_SCHEMA_ID"], "value": msg},
116101
]
117102
return fields
118103

@@ -375,15 +360,22 @@ def test_create_data_row_with_invalid_input(dataset, image_url):
375360
dataset.create_data_row("asdf")
376361

377362

378-
def test_create_data_row_with_metadata(mdo, dataset, image_url):
363+
def test_create_data_row_with_metadata(
364+
mdo,
365+
dataset,
366+
image_url,
367+
make_metadata_fields,
368+
constants,
369+
make_metadata_fields_dict,
370+
):
379371
client = dataset.client
380372
assert len(list(dataset.data_rows())) == 0
381373

382374
data_row = dataset.create_data_row(
383-
row_data=image_url, metadata_fields=make_metadata_fields()
375+
row_data=image_url, metadata_fields=make_metadata_fields
384376
)
385377

386-
assert len(list(dataset.data_rows())) == 1
378+
assert len([dr for dr in dataset.data_rows()]) == 1
387379
assert data_row.dataset() == dataset
388380
assert data_row.created_by() == client.get_user()
389381
assert data_row.organization() == client.get_organization()
@@ -396,19 +388,21 @@ def test_create_data_row_with_metadata(mdo, dataset, image_url):
396388
metadata = data_row.metadata
397389
assert len(metadata_fields) == 3
398390
assert len(metadata) == 3
399-
assert [
400-
m["schemaId"] for m in metadata_fields
401-
].sort() == EXPECTED_METADATA_SCHEMA_IDS
391+
assert [m["schemaId"] for m in metadata_fields].sort() == constants[
392+
"EXPECTED_METADATA_SCHEMA_IDS"
393+
].sort()
402394
for m in metadata:
403395
assert mdo._parse_upsert(m)
404396

405397

406-
def test_create_data_row_with_metadata_dict(mdo, dataset, image_url):
398+
def test_create_data_row_with_metadata_dict(
399+
mdo, dataset, image_url, constants, make_metadata_fields_dict
400+
):
407401
client = dataset.client
408402
assert len(list(dataset.data_rows())) == 0
409403

410404
data_row = dataset.create_data_row(
411-
row_data=image_url, metadata_fields=make_metadata_fields_dict()
405+
row_data=image_url, metadata_fields=make_metadata_fields_dict
412406
)
413407

414408
assert len(list(dataset.data_rows())) == 1
@@ -424,25 +418,36 @@ def test_create_data_row_with_metadata_dict(mdo, dataset, image_url):
424418
metadata = data_row.metadata
425419
assert len(metadata_fields) == 3
426420
assert len(metadata) == 3
427-
assert [
428-
m["schemaId"] for m in metadata_fields
429-
].sort() == EXPECTED_METADATA_SCHEMA_IDS
421+
assert [m["schemaId"] for m in metadata_fields].sort() == constants[
422+
"EXPECTED_METADATA_SCHEMA_IDS"
423+
].sort()
430424
for m in metadata:
431425
assert mdo._parse_upsert(m)
432426

433427

434-
def test_create_data_row_with_invalid_metadata(dataset, image_url):
435-
fields = make_metadata_fields()
428+
def test_create_data_row_with_invalid_metadata(
429+
dataset, image_url, constants, make_metadata_fields
430+
):
431+
fields = make_metadata_fields
436432
# make the payload invalid by providing the same schema id more than once
437433
fields.append(
438-
DataRowMetadataField(schema_id=TEXT_SCHEMA_ID, value="some msg")
434+
DataRowMetadataField(
435+
schema_id=constants["TEXT_SCHEMA_ID"], value="some msg"
436+
)
439437
)
440438

441439
with pytest.raises(ResourceCreationError):
442440
dataset.create_data_row(row_data=image_url, metadata_fields=fields)
443441

444442

445-
def test_create_data_rows_with_metadata(mdo, dataset, image_url):
443+
def test_create_data_rows_with_metadata(
444+
mdo,
445+
dataset,
446+
image_url,
447+
constants,
448+
make_metadata_fields,
449+
make_metadata_fields_dict,
450+
):
446451
client = dataset.client
447452
assert len(list(dataset.data_rows())) == 0
448453

@@ -451,22 +456,22 @@ def test_create_data_rows_with_metadata(mdo, dataset, image_url):
451456
{
452457
DataRow.row_data: image_url,
453458
DataRow.external_id: "row1",
454-
DataRow.metadata_fields: make_metadata_fields(),
459+
DataRow.metadata_fields: make_metadata_fields,
455460
},
456461
{
457462
DataRow.row_data: image_url,
458463
DataRow.external_id: "row2",
459-
"metadata_fields": make_metadata_fields(),
464+
"metadata_fields": make_metadata_fields,
460465
},
461466
{
462467
DataRow.row_data: image_url,
463468
DataRow.external_id: "row3",
464-
DataRow.metadata_fields: make_metadata_fields_dict(),
469+
DataRow.metadata_fields: make_metadata_fields_dict,
465470
},
466471
{
467472
DataRow.row_data: image_url,
468473
DataRow.external_id: "row4",
469-
"metadata_fields": make_metadata_fields_dict(),
474+
"metadata_fields": make_metadata_fields_dict,
470475
},
471476
]
472477
)
@@ -488,9 +493,9 @@ def test_create_data_rows_with_metadata(mdo, dataset, image_url):
488493
metadata = row.metadata
489494
assert len(metadata_fields) == 3
490495
assert len(metadata) == 3
491-
assert [
492-
m["schemaId"] for m in metadata_fields
493-
].sort() == EXPECTED_METADATA_SCHEMA_IDS
496+
assert [m["schemaId"] for m in metadata_fields].sort() == constants[
497+
"EXPECTED_METADATA_SCHEMA_IDS"
498+
].sort()
494499
for m in metadata:
495500
assert mdo._parse_upsert(m)
496501

@@ -505,14 +510,16 @@ def test_create_data_rows_with_metadata(mdo, dataset, image_url):
505510
],
506511
)
507512
def test_create_data_rows_with_named_metadata_field_class(
508-
test_function, metadata_obj_type, mdo, dataset, image_url
513+
test_function, metadata_obj_type, mdo, dataset, image_url, constants
509514
):
510515
row_with_metadata_field = {
511516
DataRow.row_data: image_url,
512517
DataRow.external_id: "row1",
513518
DataRow.metadata_fields: [
514519
DataRowMetadataField(name="split", value="test"),
515-
DataRowMetadataField(name=CUSTOM_TEXT_SCHEMA_NAME, value="hello"),
520+
DataRowMetadataField(
521+
name=constants["CUSTOM_TEXT_SCHEMA_NAME"], value="hello"
522+
),
516523
],
517524
}
518525

@@ -521,7 +528,7 @@ def test_create_data_rows_with_named_metadata_field_class(
521528
DataRow.external_id: "row2",
522529
"metadata_fields": [
523530
{"name": "split", "value": "test"},
524-
{"name": CUSTOM_TEXT_SCHEMA_NAME, "value": "hello"},
531+
{"name": constants["CUSTOM_TEXT_SCHEMA_NAME"], "value": "hello"},
525532
],
526533
}
527534

@@ -552,21 +559,26 @@ def create_data_row(data_rows):
552559
assert len(created_rows[0].metadata) == 2
553560

554561
metadata = created_rows[0].metadata
555-
assert metadata[0].schema_id == SPLIT_SCHEMA_ID
562+
assert metadata[0].schema_id == constants["SPLIT_SCHEMA_ID"]
556563
assert metadata[0].name == "test"
557564
assert metadata[0].value == mdo.reserved_by_name["split"]["test"].uid
558-
assert metadata[1].name == CUSTOM_TEXT_SCHEMA_NAME
565+
assert metadata[1].name == constants["CUSTOM_TEXT_SCHEMA_NAME"]
559566
assert metadata[1].value == "hello"
560567
assert (
561-
metadata[1].schema_id == mdo.custom_by_name[CUSTOM_TEXT_SCHEMA_NAME].uid
568+
metadata[1].schema_id
569+
== mdo.custom_by_name[constants["CUSTOM_TEXT_SCHEMA_NAME"]].uid
562570
)
563571

564572

565-
def test_create_data_rows_with_invalid_metadata(dataset, image_url):
566-
fields = make_metadata_fields()
573+
def test_create_data_rows_with_invalid_metadata(
574+
dataset, image_url, constants, make_metadata_fields
575+
):
576+
fields = make_metadata_fields
567577
# make the payload invalid by providing the same schema id more than once
568578
fields.append(
569-
DataRowMetadataField(schema_id=TEXT_SCHEMA_ID, value="some msg")
579+
DataRowMetadataField(
580+
schema_id=constants["TEXT_SCHEMA_ID"], value="some msg"
581+
)
570582
)
571583

572584
task = dataset.create_data_rows(
@@ -577,13 +589,15 @@ def test_create_data_rows_with_invalid_metadata(dataset, image_url):
577589
assert task.status == "COMPLETE"
578590
assert len(task.failed_data_rows) == 1
579591
assert (
580-
f"A schemaId can only be specified once per DataRow : [{TEXT_SCHEMA_ID}]"
592+
f"A schemaId can only be specified once per DataRow : [{constants['TEXT_SCHEMA_ID']}]"
581593
in task.failed_data_rows[0]["message"]
582594
)
583595

584596

585-
def test_create_data_rows_with_metadata_missing_value(dataset, image_url):
586-
fields = make_metadata_fields()
597+
def test_create_data_rows_with_metadata_missing_value(
598+
dataset, image_url, make_metadata_fields
599+
):
600+
fields = make_metadata_fields
587601
fields.append({"schemaId": "some schema id"})
588602

589603
with pytest.raises(ValueError) as exc:
@@ -598,8 +612,10 @@ def test_create_data_rows_with_metadata_missing_value(dataset, image_url):
598612
)
599613

600614

601-
def test_create_data_rows_with_metadata_missing_schema_id(dataset, image_url):
602-
fields = make_metadata_fields()
615+
def test_create_data_rows_with_metadata_missing_schema_id(
616+
dataset, image_url, make_metadata_fields
617+
):
618+
fields = make_metadata_fields
603619
fields.append({"value": "some value"})
604620

605621
with pytest.raises(ValueError) as exc:
@@ -614,8 +630,10 @@ def test_create_data_rows_with_metadata_missing_schema_id(dataset, image_url):
614630
)
615631

616632

617-
def test_create_data_rows_with_metadata_wrong_type(dataset, image_url):
618-
fields = make_metadata_fields()
633+
def test_create_data_rows_with_metadata_wrong_type(
634+
dataset, image_url, make_metadata_fields
635+
):
636+
fields = make_metadata_fields
619637
fields.append("Neither DataRowMetadataField or dict")
620638

621639
with pytest.raises(ValueError) as exc:
@@ -899,7 +917,11 @@ def test_does_not_update_not_provided_attachment_fields(data_row):
899917
assert attachment.attachment_type == "RAW_TEXT"
900918

901919

902-
def test_create_data_rows_result(client, dataset, image_url):
920+
def test_create_data_rows_result(
921+
client,
922+
dataset,
923+
image_url,
924+
):
903925
task = dataset.create_data_rows(
904926
[
905927
{
@@ -918,12 +940,14 @@ def test_create_data_rows_result(client, dataset, image_url):
918940
client.get_data_row(result["id"])
919941

920942

921-
def test_create_data_rows_local_file(dataset, sample_image):
943+
def test_create_data_rows_local_file(
944+
dataset, sample_image, make_metadata_fields
945+
):
922946
task = dataset.create_data_rows(
923947
[
924948
{
925949
DataRow.row_data: sample_image,
926-
DataRow.metadata_fields: make_metadata_fields(),
950+
DataRow.metadata_fields: make_metadata_fields,
927951
}
928952
]
929953
)

0 commit comments

Comments
 (0)