66from labelbox .schema .data_row_metadata import DataRowMetadataField , DataRowMetadata , DeleteDataRowMetadata , \
77 DataRowMetadataOntology
88
9- IMG_URL = "https://picsum.photos/id/829/200/300"
109FAKE_SCHEMA_ID = "0" * 25
1110SPLIT_SCHEMA_ID = "cko8sbczn0002h2dkdaxb5kal"
1211TRAIN_SPLIT_ID = "cko8sbscr0003h2dk04w86hof"
@@ -22,13 +21,13 @@ def mdo(client):
2221
2322
2423@pytest .fixture
25- def big_dataset (dataset : Dataset ):
24+ def big_dataset (dataset : Dataset , image_url ):
2625 task = dataset .create_data_rows ([
2726 {
28- "row_data" : IMG_URL ,
27+ "row_data" : image_url ,
2928 "external_id" : "my-image"
3029 },
31- ] * 1000 )
30+ ] * 250 )
3231 task .wait_till_done ()
3332
3433 yield dataset
@@ -97,35 +96,37 @@ def test_bulk_delete_datarow_metadata(datarow, mdo):
9796 mdo .bulk_upsert ([metadata ])
9897
9998 assert len (datarow .metadata ["fields" ])
100-
101- mdo .bulk_delete ([
102- DeleteDataRowMetadata (data_row_id = datarow .uid ,
103- fields = [m .schema_id for m in metadata .fields ])
104- ])
105-
106- assert not len (datarow .metadata ["fields" ])
99+ upload_ids = [m .schema_id for m in metadata .fields ]
100+ mdo .bulk_delete (
101+ [DeleteDataRowMetadata (data_row_id = datarow .uid , fields = upload_ids )])
102+ remaining_ids = set ([f ['schema_id' ] for f in datarow .metadata ["fields" ]])
103+ assert not len (remaining_ids .intersection (set (upload_ids )))
107104
108105
109106def test_bulk_partial_delete_datarow_metadata (datarow , mdo ):
110107 """Delete a single from metadata"""
111- assert not len (datarow .metadata ["fields" ])
108+ n_fields = len (datarow .metadata ["fields" ])
112109
113110 metadata = make_metadata (datarow .uid )
114111 mdo .bulk_upsert ([metadata ])
115112
116- assert len (datarow .metadata ["fields" ])
113+ assert len (datarow .metadata ["fields" ]) == ( n_fields + 5 )
117114
118115 mdo .bulk_delete ([
119116 DeleteDataRowMetadata (data_row_id = datarow .uid , fields = [TEXT_SCHEMA_ID ])
120117 ])
121118
122- assert len (datarow .metadata ["fields" ]) == 4
119+ assert len (datarow .metadata ["fields" ]) == ( n_fields + 4 )
123120
124121
125122@pytest .mark .slow
126123def test_large_bulk_delete_datarow_metadata (big_dataset , mdo ):
127124 metadata = []
128- for dr in big_dataset .export_data_rows ():
125+ n_fields_start = 0
126+ for idx , dr in enumerate (big_dataset .export_data_rows ()):
127+ if idx == 0 :
128+ n_fields_start = len (dr .metadata ["fields" ])
129+
129130 metadata .append (
130131 DataRowMetadata (data_row_id = dr .uid ,
131132 fields = [
@@ -151,24 +152,26 @@ def test_large_bulk_delete_datarow_metadata(big_dataset, mdo):
151152 errors = mdo .bulk_delete (deletes )
152153 assert len (errors ) == 0
153154 for dr in big_dataset .export_data_rows ():
154- assert len (dr .metadata ["fields" ]) == 1
155+ assert len (dr .metadata ["fields" ]) == 1 + n_fields_start
155156 break
156157
157158
158159def test_bulk_delete_datarow_enum_metadata (datarow : DataRow , mdo ):
159160 """test bulk deletes for non non fields"""
160- assert not len (datarow .metadata ["fields" ])
161+ n_fields = len (datarow .metadata ["fields" ])
161162 metadata = make_metadata (datarow .uid )
162163 metadata .fields = [
163164 m for m in metadata .fields if m .schema_id == SPLIT_SCHEMA_ID
164165 ]
165166 mdo .bulk_upsert ([metadata ])
166- assert len (datarow .metadata ["fields" ])
167+ assert len (datarow .metadata ["fields" ]) == len (
168+ set ([x .schema_id for x in metadata .fields ] +
169+ [x ['schema_id' ] for x in datarow .metadata ["fields" ]]))
167170
168171 mdo .bulk_delete ([
169172 DeleteDataRowMetadata (data_row_id = datarow .uid , fields = [SPLIT_SCHEMA_ID ])
170173 ])
171- assert not len (datarow .metadata ["fields" ])
174+ assert len (datarow .metadata ["fields" ]) == n_fields
172175
173176
174177def test_raise_enum_upsert_schema_error (datarow , mdo ):
@@ -196,7 +199,6 @@ def test_upsert_non_existent_schema_id(datarow, mdo):
196199
197200
198201def test_delete_non_existent_schema_id (datarow , mdo ):
199- assert not len (datarow .metadata ["fields" ])
200202 mdo .bulk_delete ([
201203 DeleteDataRowMetadata (data_row_id = datarow .uid ,
202204 fields = [EMBEDDING_SCHEMA_ID ])
@@ -207,15 +209,18 @@ def test_delete_non_existent_schema_id(datarow, mdo):
207209@pytest .mark .slow
208210def test_large_bulk_delete_non_existent_schema_id (big_dataset , mdo ):
209211 deletes = []
210- for dr in big_dataset .export_data_rows ():
212+ n_fields_start = 0
213+ for idx , dr in enumerate (big_dataset .export_data_rows ()):
214+ if idx == 0 :
215+ n_fields_start = len (dr .metadata ["fields" ])
211216 deletes .append (
212217 DeleteDataRowMetadata (data_row_id = dr .uid ,
213218 fields = [EMBEDDING_SCHEMA_ID ]))
214219 errors = mdo .bulk_delete (deletes )
215220 assert len (errors ) == 0
216221
217222 for dr in big_dataset .export_data_rows ():
218- assert not len (dr .metadata ["fields" ])
223+ assert len (dr .metadata ["fields" ]) == n_fields_start
219224 break
220225
221226
0 commit comments