1+ import imghdr
12from tempfile import NamedTemporaryFile
23import uuid
34import time
@@ -56,6 +57,12 @@ def make_metadata_fields_dict():
5657 return fields
5758
5859
60+ def filter_precomputed_embeddings (metadata_fields ):
61+ return list (
62+ filter (lambda md : md ["name" ] != "precomputedImageEmbedding" ,
63+ metadata_fields ))
64+
65+
5966def test_get_data_row (datarow , client ):
6067 assert client .get_data_row (datarow .uid )
6168
@@ -177,12 +184,63 @@ def test_data_row_single_creation(dataset, rand_gen, image_url):
177184 assert requests .get (data_row_2 .row_data ).content == data
178185
179186
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+
180238def test_create_data_row_with_metadata (dataset , image_url ):
181239 client = dataset .client
182240 assert len (list (dataset .data_rows ())) == 0
183241
184242 data_row = dataset .create_data_row (row_data = image_url ,
185- custom_metadata = make_metadata_fields ())
243+ metadata_fields = make_metadata_fields ())
186244
187245 assert len (list (dataset .data_rows ())) == 1
188246 assert data_row .dataset () == dataset
@@ -191,8 +249,9 @@ def test_create_data_row_with_metadata(dataset, image_url):
191249 assert requests .get (image_url ).content == \
192250 requests .get (data_row .row_data ).content
193251 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
196255 ].sort () == EXPECTED_METADATA_SCHEMA_IDS
197256
198257
@@ -201,7 +260,7 @@ def test_create_data_row_with_metadata_dict(dataset, image_url):
201260 assert len (list (dataset .data_rows ())) == 0
202261
203262 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 ())
205264
206265 assert len (list (dataset .data_rows ())) == 1
207266 assert data_row .dataset () == dataset
@@ -210,8 +269,9 @@ def test_create_data_row_with_metadata_dict(dataset, image_url):
210269 assert requests .get (image_url ).content == \
211270 requests .get (data_row .row_data ).content
212271 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
215275 ].sort () == EXPECTED_METADATA_SCHEMA_IDS
216276
217277
@@ -221,7 +281,7 @@ def test_create_data_row_with_invalid_metadata(dataset, image_url):
221281 DataRowMetadataField (schema_id = EMBEDDING_SCHEMA_ID , value = [0.0 ] * 128 ))
222282
223283 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 )
225285
226286
227287def test_create_data_rows_with_metadata (dataset , image_url ):
@@ -232,22 +292,22 @@ def test_create_data_rows_with_metadata(dataset, image_url):
232292 {
233293 DataRow .row_data : image_url ,
234294 DataRow .external_id : "row1" ,
235- DataRow .custom_metadata : make_metadata_fields ()
295+ DataRow .metadata_fields : make_metadata_fields ()
236296 },
237297 {
238298 DataRow .row_data : image_url ,
239299 DataRow .external_id : "row2" ,
240- "custom_metadata " : make_metadata_fields ()
300+ "metadata_fields " : make_metadata_fields ()
241301 },
242302 {
243303 DataRow .row_data : image_url ,
244304 DataRow .external_id : "row3" ,
245- DataRow .custom_metadata : make_metadata_fields_dict ()
305+ DataRow .metadata_fields : make_metadata_fields_dict ()
246306 },
247307 {
248308 DataRow .row_data : image_url ,
249309 DataRow .external_id : "row4" ,
250- "custom_metadata " : make_metadata_fields_dict ()
310+ "metadata_fields " : make_metadata_fields_dict ()
251311 },
252312 ])
253313 task .wait_till_done ()
@@ -261,8 +321,11 @@ def test_create_data_rows_with_metadata(dataset, image_url):
261321 assert requests .get (image_url ).content == \
262322 requests .get (row .row_data ).content
263323 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
266329 ].sort () == EXPECTED_METADATA_SCHEMA_IDS
267330
268331
@@ -273,7 +336,7 @@ def test_create_data_rows_with_invalid_metadata(dataset, image_url):
273336
274337 task = dataset .create_data_rows ([{
275338 DataRow .row_data : image_url ,
276- DataRow .custom_metadata : fields
339+ DataRow .metadata_fields : fields
277340 }])
278341 task .wait_till_done ()
279342 assert task .status == "FAILED"
@@ -288,7 +351,7 @@ def test_create_data_rows_with_metadata_missing_value(dataset, image_url):
288351 {
289352 DataRow .row_data : image_url ,
290353 DataRow .external_id : "row1" ,
291- DataRow .custom_metadata : fields
354+ DataRow .metadata_fields : fields
292355 },
293356 ])
294357
@@ -302,7 +365,7 @@ def test_create_data_rows_with_metadata_missing_schema_id(dataset, image_url):
302365 {
303366 DataRow .row_data : image_url ,
304367 DataRow .external_id : "row1" ,
305- DataRow .custom_metadata : fields
368+ DataRow .metadata_fields : fields
306369 },
307370 ])
308371
@@ -316,7 +379,7 @@ def test_create_data_rows_with_metadata_wrong_type(dataset, image_url):
316379 {
317380 DataRow .row_data : image_url ,
318381 DataRow .external_id : "row1" ,
319- DataRow .custom_metadata : fields
382+ DataRow .metadata_fields : fields
320383 },
321384 ])
322385
0 commit comments