1
1
import json
2
2
import os
3
3
import uuid
4
- from datetime import datetime
4
+ from datetime import datetime , timezone
5
5
from tempfile import NamedTemporaryFile
6
6
from unittest .mock import patch
7
7
8
8
import pytest
9
9
import requests
10
- from constants import (
11
- CAPTURE_DT_SCHEMA_ID ,
12
- CUSTOM_TEXT_SCHEMA_NAME ,
13
- EXPECTED_METADATA_SCHEMA_IDS ,
14
- SPLIT_SCHEMA_ID ,
15
- TEST_SPLIT_ID ,
16
- TEXT_SCHEMA_ID ,
17
- )
18
10
19
11
from labelbox import AssetAttachment , DataRow
20
12
from labelbox .exceptions import (
33
25
@pytest .fixture
34
26
def mdo (
35
27
client ,
28
+ constants ,
36
29
):
37
30
mdo = client .get_data_row_metadata_ontology ()
38
31
try :
39
- mdo .create_schema (CUSTOM_TEXT_SCHEMA_NAME , DataRowMetadataKind .string )
32
+ mdo .create_schema (
33
+ constants ["CUSTOM_TEXT_SCHEMA_NAME" ], DataRowMetadataKind .string
34
+ )
40
35
except MalformedQueryException :
41
36
# Do nothing if already exists
42
37
pass
@@ -91,14 +86,18 @@ def tile_content():
91
86
}
92
87
93
88
94
- def make_metadata_fields_dict ():
89
+ @pytest .fixture
90
+ def make_metadata_fields_dict (constants ):
95
91
msg = "A message"
96
- time = datetime .utcnow ( )
92
+ time = datetime .now ( timezone . utc )
97
93
98
94
fields = [
99
- {"schema_id" : SPLIT_SCHEMA_ID , "value" : TEST_SPLIT_ID },
100
- {"schema_id" : CAPTURE_DT_SCHEMA_ID , "value" : time },
101
- {"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 },
102
101
]
103
102
return fields
104
103
@@ -362,7 +361,12 @@ def test_create_data_row_with_invalid_input(dataset, image_url):
362
361
363
362
364
363
def test_create_data_row_with_metadata (
365
- mdo , dataset , image_url , make_metadata_fields
364
+ mdo ,
365
+ dataset ,
366
+ image_url ,
367
+ make_metadata_fields ,
368
+ constants ,
369
+ make_metadata_fields_dict ,
366
370
):
367
371
client = dataset .client
368
372
assert len (list (dataset .data_rows ())) == 0
@@ -384,19 +388,21 @@ def test_create_data_row_with_metadata(
384
388
metadata = data_row .metadata
385
389
assert len (metadata_fields ) == 3
386
390
assert len (metadata ) == 3
387
- assert [
388
- m [ "schemaId" ] for m in metadata_fields
389
- ].sort () == EXPECTED_METADATA_SCHEMA_IDS . sort ()
391
+ assert [m [ "schemaId" ] for m in metadata_fields ]. sort () == constants [
392
+ "EXPECTED_METADATA_SCHEMA_IDS"
393
+ ].sort ()
390
394
for m in metadata :
391
395
assert mdo ._parse_upsert (m )
392
396
393
397
394
- 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
+ ):
395
401
client = dataset .client
396
402
assert len (list (dataset .data_rows ())) == 0
397
403
398
404
data_row = dataset .create_data_row (
399
- row_data = image_url , metadata_fields = make_metadata_fields_dict ()
405
+ row_data = image_url , metadata_fields = make_metadata_fields_dict
400
406
)
401
407
402
408
assert len (list (dataset .data_rows ())) == 1
@@ -412,28 +418,35 @@ def test_create_data_row_with_metadata_dict(mdo, dataset, image_url):
412
418
metadata = data_row .metadata
413
419
assert len (metadata_fields ) == 3
414
420
assert len (metadata ) == 3
415
- assert [
416
- m [ "schemaId" ] for m in metadata_fields
417
- ].sort () == EXPECTED_METADATA_SCHEMA_IDS . sort ()
421
+ assert [m [ "schemaId" ] for m in metadata_fields ]. sort () == constants [
422
+ "EXPECTED_METADATA_SCHEMA_IDS"
423
+ ].sort ()
418
424
for m in metadata :
419
425
assert mdo ._parse_upsert (m )
420
426
421
427
422
428
def test_create_data_row_with_invalid_metadata (
423
- dataset , image_url , make_metadata_fields
429
+ dataset , image_url , constants , make_metadata_fields
424
430
):
425
431
fields = make_metadata_fields
426
432
# make the payload invalid by providing the same schema id more than once
427
433
fields .append (
428
- DataRowMetadataField (schema_id = TEXT_SCHEMA_ID , value = "some msg" )
434
+ DataRowMetadataField (
435
+ schema_id = constants ["TEXT_SCHEMA_ID" ], value = "some msg"
436
+ )
429
437
)
430
438
431
439
with pytest .raises (ResourceCreationError ):
432
440
dataset .create_data_row (row_data = image_url , metadata_fields = fields )
433
441
434
442
435
443
def test_create_data_rows_with_metadata (
436
- mdo , dataset , image_url , make_metadata_fields
444
+ mdo ,
445
+ dataset ,
446
+ image_url ,
447
+ constants ,
448
+ make_metadata_fields ,
449
+ make_metadata_fields_dict ,
437
450
):
438
451
client = dataset .client
439
452
assert len (list (dataset .data_rows ())) == 0
@@ -453,12 +466,12 @@ def test_create_data_rows_with_metadata(
453
466
{
454
467
DataRow .row_data : image_url ,
455
468
DataRow .external_id : "row3" ,
456
- DataRow .metadata_fields : make_metadata_fields_dict () ,
469
+ DataRow .metadata_fields : make_metadata_fields_dict ,
457
470
},
458
471
{
459
472
DataRow .row_data : image_url ,
460
473
DataRow .external_id : "row4" ,
461
- "metadata_fields" : make_metadata_fields_dict () ,
474
+ "metadata_fields" : make_metadata_fields_dict ,
462
475
},
463
476
]
464
477
)
@@ -480,9 +493,9 @@ def test_create_data_rows_with_metadata(
480
493
metadata = row .metadata
481
494
assert len (metadata_fields ) == 3
482
495
assert len (metadata ) == 3
483
- assert [
484
- m [ "schemaId" ] for m in metadata_fields
485
- ].sort () == EXPECTED_METADATA_SCHEMA_IDS . sort ()
496
+ assert [m [ "schemaId" ] for m in metadata_fields ]. sort () == constants [
497
+ "EXPECTED_METADATA_SCHEMA_IDS"
498
+ ].sort ()
486
499
for m in metadata :
487
500
assert mdo ._parse_upsert (m )
488
501
@@ -499,14 +512,16 @@ def test_create_data_rows_with_metadata(
499
512
],
500
513
)
501
514
def test_create_data_rows_with_named_metadata_field_class (
502
- test_function , metadata_obj_type , mdo , dataset , image_url
515
+ test_function , metadata_obj_type , mdo , dataset , image_url , constants
503
516
):
504
517
row_with_metadata_field = {
505
518
DataRow .row_data : image_url ,
506
519
DataRow .external_id : "row1" ,
507
520
DataRow .metadata_fields : [
508
521
DataRowMetadataField (name = "split" , value = "test" ),
509
- DataRowMetadataField (name = CUSTOM_TEXT_SCHEMA_NAME , value = "hello" ),
522
+ DataRowMetadataField (
523
+ name = constants ["CUSTOM_TEXT_SCHEMA_NAME" ], value = "hello"
524
+ ),
510
525
],
511
526
}
512
527
@@ -515,7 +530,7 @@ def test_create_data_rows_with_named_metadata_field_class(
515
530
DataRow .external_id : "row2" ,
516
531
"metadata_fields" : [
517
532
{"name" : "split" , "value" : "test" },
518
- {"name" : CUSTOM_TEXT_SCHEMA_NAME , "value" : "hello" },
533
+ {"name" : constants [ " CUSTOM_TEXT_SCHEMA_NAME" ] , "value" : "hello" },
519
534
],
520
535
}
521
536
@@ -547,23 +562,26 @@ def create_data_row(data_rows):
547
562
assert len (created_rows [0 ].metadata ) == 2
548
563
549
564
metadata = created_rows [0 ].metadata
550
- assert metadata [0 ].schema_id == SPLIT_SCHEMA_ID
565
+ assert metadata [0 ].schema_id == constants [ " SPLIT_SCHEMA_ID" ]
551
566
assert metadata [0 ].name == "test"
552
567
assert metadata [0 ].value == mdo .reserved_by_name ["split" ]["test" ].uid
553
- assert metadata [1 ].name == CUSTOM_TEXT_SCHEMA_NAME
568
+ assert metadata [1 ].name == constants [ " CUSTOM_TEXT_SCHEMA_NAME" ]
554
569
assert metadata [1 ].value == "hello"
555
570
assert (
556
- metadata [1 ].schema_id == mdo .custom_by_name [CUSTOM_TEXT_SCHEMA_NAME ].uid
571
+ metadata [1 ].schema_id
572
+ == mdo .custom_by_name [constants ["CUSTOM_TEXT_SCHEMA_NAME" ]].uid
557
573
)
558
574
559
575
560
576
def test_create_data_rows_with_invalid_metadata (
561
- dataset , image_url , make_metadata_fields
577
+ dataset , image_url , constants , make_metadata_fields
562
578
):
563
579
fields = make_metadata_fields
564
580
# make the payload invalid by providing the same schema id more than once
565
581
fields .append (
566
- DataRowMetadataField (schema_id = TEXT_SCHEMA_ID , value = "some msg" )
582
+ DataRowMetadataField (
583
+ schema_id = constants ["TEXT_SCHEMA_ID" ], value = "some msg"
584
+ )
567
585
)
568
586
569
587
task = dataset .create_data_rows (
@@ -574,7 +592,7 @@ def test_create_data_rows_with_invalid_metadata(
574
592
assert task .status == "COMPLETE"
575
593
assert len (task .failed_data_rows ) == 1
576
594
assert (
577
- f"A schemaId can only be specified once per DataRow : [{ TEXT_SCHEMA_ID } ]"
595
+ f"A schemaId can only be specified once per DataRow : [{ constants [ ' TEXT_SCHEMA_ID' ] } ]"
578
596
in task .failed_data_rows [0 ]["message" ]
579
597
)
580
598
0 commit comments