1
+ import imghdr
1
2
from tempfile import NamedTemporaryFile
2
3
import uuid
3
4
import time
@@ -56,6 +57,12 @@ def make_metadata_fields_dict():
56
57
return fields
57
58
58
59
60
+ def filter_precomputed_embeddings (metadata_fields ):
61
+ return list (
62
+ filter (lambda md : md ["name" ] != "precomputedImageEmbedding" ,
63
+ metadata_fields ))
64
+
65
+
59
66
def test_get_data_row (datarow , client ):
60
67
assert client .get_data_row (datarow .uid )
61
68
@@ -177,12 +184,63 @@ def test_data_row_single_creation(dataset, rand_gen, image_url):
177
184
assert requests .get (data_row_2 .row_data ).content == data
178
185
179
186
187
+ def test_create_data_row_with_dict (dataset , image_url ):
188
+ client = dataset .client
189
+ assert len (list (dataset .data_rows ())) == 0
190
+ dr = {"row_data" : image_url }
191
+ data_row = dataset .create_data_row (dr )
192
+ assert len (list (dataset .data_rows ())) == 1
193
+ assert data_row .dataset () == dataset
194
+ assert data_row .created_by () == client .get_user ()
195
+ assert data_row .organization () == client .get_organization ()
196
+ assert requests .get (image_url ).content == \
197
+ requests .get (data_row .row_data ).content
198
+ assert data_row .media_attributes is not None
199
+
200
+
201
+ def test_create_data_row_with_dict_containing_field (dataset , image_url ):
202
+ client = dataset .client
203
+ assert len (list (dataset .data_rows ())) == 0
204
+ dr = {DataRow .row_data : image_url }
205
+ data_row = dataset .create_data_row (dr )
206
+ assert len (list (dataset .data_rows ())) == 1
207
+ assert data_row .dataset () == dataset
208
+ assert data_row .created_by () == client .get_user ()
209
+ assert data_row .organization () == client .get_organization ()
210
+ assert requests .get (image_url ).content == \
211
+ requests .get (data_row .row_data ).content
212
+ assert data_row .media_attributes is not None
213
+
214
+
215
+ def test_create_data_row_with_dict_unpacked (dataset , image_url ):
216
+ client = dataset .client
217
+ assert len (list (dataset .data_rows ())) == 0
218
+ dr = {"row_data" : image_url }
219
+ data_row = dataset .create_data_row (** dr )
220
+ assert len (list (dataset .data_rows ())) == 1
221
+ assert data_row .dataset () == dataset
222
+ assert data_row .created_by () == client .get_user ()
223
+ assert data_row .organization () == client .get_organization ()
224
+ assert requests .get (image_url ).content == \
225
+ requests .get (data_row .row_data ).content
226
+ assert data_row .media_attributes is not None
227
+
228
+
229
+ def test_create_data_row_with_invalid_input (dataset , image_url ):
230
+ with pytest .raises (labelbox .exceptions .InvalidQueryError ) as exc :
231
+ dataset .create_data_row ("asdf" )
232
+
233
+ dr = {"row_data" : image_url }
234
+ with pytest .raises (labelbox .exceptions .InvalidQueryError ) as exc :
235
+ dataset .create_data_row (dr , row_data = image_url )
236
+
237
+
180
238
def test_create_data_row_with_metadata (dataset , image_url ):
181
239
client = dataset .client
182
240
assert len (list (dataset .data_rows ())) == 0
183
241
184
242
data_row = dataset .create_data_row (row_data = image_url ,
185
- custom_metadata = make_metadata_fields ())
243
+ metadata_fields = make_metadata_fields ())
186
244
187
245
assert len (list (dataset .data_rows ())) == 1
188
246
assert data_row .dataset () == dataset
@@ -191,8 +249,9 @@ def test_create_data_row_with_metadata(dataset, image_url):
191
249
assert requests .get (image_url ).content == \
192
250
requests .get (data_row .row_data ).content
193
251
assert data_row .media_attributes is not None
194
- assert len (data_row .custom_metadata ) == 5
195
- assert [m ["schemaId" ] for m in data_row .custom_metadata
252
+ filtered_md_fields = filter_precomputed_embeddings (data_row .metadata_fields )
253
+ assert len (filtered_md_fields ) == 4
254
+ assert [m ["schemaId" ] for m in filtered_md_fields
196
255
].sort () == EXPECTED_METADATA_SCHEMA_IDS
197
256
198
257
@@ -201,7 +260,7 @@ def test_create_data_row_with_metadata_dict(dataset, image_url):
201
260
assert len (list (dataset .data_rows ())) == 0
202
261
203
262
data_row = dataset .create_data_row (
204
- row_data = image_url , custom_metadata = make_metadata_fields_dict ())
263
+ row_data = image_url , metadata_fields = make_metadata_fields_dict ())
205
264
206
265
assert len (list (dataset .data_rows ())) == 1
207
266
assert data_row .dataset () == dataset
@@ -210,8 +269,9 @@ def test_create_data_row_with_metadata_dict(dataset, image_url):
210
269
assert requests .get (image_url ).content == \
211
270
requests .get (data_row .row_data ).content
212
271
assert data_row .media_attributes is not None
213
- assert len (data_row .custom_metadata ) == 5
214
- assert [m ["schemaId" ] for m in data_row .custom_metadata
272
+ filtered_md_fields = filter_precomputed_embeddings (data_row .metadata_fields )
273
+ assert len (filtered_md_fields ) == 4
274
+ assert [m ["schemaId" ] for m in filtered_md_fields
215
275
].sort () == EXPECTED_METADATA_SCHEMA_IDS
216
276
217
277
@@ -221,7 +281,7 @@ def test_create_data_row_with_invalid_metadata(dataset, image_url):
221
281
DataRowMetadataField (schema_id = EMBEDDING_SCHEMA_ID , value = [0.0 ] * 128 ))
222
282
223
283
with pytest .raises (labelbox .exceptions .MalformedQueryException ) as excinfo :
224
- dataset .create_data_row (row_data = image_url , custom_metadata = fields )
284
+ dataset .create_data_row (row_data = image_url , metadata_fields = fields )
225
285
226
286
227
287
def test_create_data_rows_with_metadata (dataset , image_url ):
@@ -232,22 +292,22 @@ def test_create_data_rows_with_metadata(dataset, image_url):
232
292
{
233
293
DataRow .row_data : image_url ,
234
294
DataRow .external_id : "row1" ,
235
- DataRow .custom_metadata : make_metadata_fields ()
295
+ DataRow .metadata_fields : make_metadata_fields ()
236
296
},
237
297
{
238
298
DataRow .row_data : image_url ,
239
299
DataRow .external_id : "row2" ,
240
- "custom_metadata " : make_metadata_fields ()
300
+ "metadata_fields " : make_metadata_fields ()
241
301
},
242
302
{
243
303
DataRow .row_data : image_url ,
244
304
DataRow .external_id : "row3" ,
245
- DataRow .custom_metadata : make_metadata_fields_dict ()
305
+ DataRow .metadata_fields : make_metadata_fields_dict ()
246
306
},
247
307
{
248
308
DataRow .row_data : image_url ,
249
309
DataRow .external_id : "row4" ,
250
- "custom_metadata " : make_metadata_fields_dict ()
310
+ "metadata_fields " : make_metadata_fields_dict ()
251
311
},
252
312
])
253
313
task .wait_till_done ()
@@ -261,8 +321,11 @@ def test_create_data_rows_with_metadata(dataset, image_url):
261
321
assert requests .get (image_url ).content == \
262
322
requests .get (row .row_data ).content
263
323
assert row .media_attributes is not None
264
- assert len (row .custom_metadata ) == 5
265
- assert [m ["schemaId" ] for m in row .custom_metadata
324
+
325
+ # Remove 'precomputedImageEmbedding' metadata if automatically added
326
+ filtered_md_fields = filter_precomputed_embeddings (row .metadata_fields )
327
+ assert len (filtered_md_fields ) == 4
328
+ assert [m ["schemaId" ] for m in filtered_md_fields
266
329
].sort () == EXPECTED_METADATA_SCHEMA_IDS
267
330
268
331
@@ -273,7 +336,7 @@ def test_create_data_rows_with_invalid_metadata(dataset, image_url):
273
336
274
337
task = dataset .create_data_rows ([{
275
338
DataRow .row_data : image_url ,
276
- DataRow .custom_metadata : fields
339
+ DataRow .metadata_fields : fields
277
340
}])
278
341
task .wait_till_done ()
279
342
assert task .status == "FAILED"
@@ -288,7 +351,7 @@ def test_create_data_rows_with_metadata_missing_value(dataset, image_url):
288
351
{
289
352
DataRow .row_data : image_url ,
290
353
DataRow .external_id : "row1" ,
291
- DataRow .custom_metadata : fields
354
+ DataRow .metadata_fields : fields
292
355
},
293
356
])
294
357
@@ -302,7 +365,7 @@ def test_create_data_rows_with_metadata_missing_schema_id(dataset, image_url):
302
365
{
303
366
DataRow .row_data : image_url ,
304
367
DataRow .external_id : "row1" ,
305
- DataRow .custom_metadata : fields
368
+ DataRow .metadata_fields : fields
306
369
},
307
370
])
308
371
@@ -316,7 +379,7 @@ def test_create_data_rows_with_metadata_wrong_type(dataset, image_url):
316
379
{
317
380
DataRow .row_data : image_url ,
318
381
DataRow .external_id : "row1" ,
319
- DataRow .custom_metadata : fields
382
+ DataRow .metadata_fields : fields
320
383
},
321
384
])
322
385
0 commit comments