arkindex-base-worker 0.3.7rc9__py3-none-any.whl → 0.4.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. {arkindex_base_worker-0.3.7rc9.dist-info → arkindex_base_worker-0.4.0.dist-info}/METADATA +16 -20
  2. arkindex_base_worker-0.4.0.dist-info/RECORD +61 -0
  3. {arkindex_base_worker-0.3.7rc9.dist-info → arkindex_base_worker-0.4.0.dist-info}/WHEEL +1 -1
  4. arkindex_worker/cache.py +1 -1
  5. arkindex_worker/image.py +120 -1
  6. arkindex_worker/models.py +6 -0
  7. arkindex_worker/utils.py +85 -4
  8. arkindex_worker/worker/__init__.py +68 -162
  9. arkindex_worker/worker/base.py +39 -34
  10. arkindex_worker/worker/classification.py +34 -18
  11. arkindex_worker/worker/corpus.py +86 -0
  12. arkindex_worker/worker/dataset.py +71 -1
  13. arkindex_worker/worker/element.py +352 -91
  14. arkindex_worker/worker/entity.py +11 -11
  15. arkindex_worker/worker/image.py +21 -0
  16. arkindex_worker/worker/metadata.py +19 -9
  17. arkindex_worker/worker/process.py +92 -0
  18. arkindex_worker/worker/task.py +5 -4
  19. arkindex_worker/worker/training.py +25 -10
  20. arkindex_worker/worker/transcription.py +89 -68
  21. arkindex_worker/worker/version.py +3 -1
  22. tests/__init__.py +8 -0
  23. tests/conftest.py +36 -52
  24. tests/test_base_worker.py +212 -12
  25. tests/test_dataset_worker.py +21 -45
  26. tests/test_elements_worker/{test_classifications.py → test_classification.py} +216 -100
  27. tests/test_elements_worker/test_cli.py +3 -11
  28. tests/test_elements_worker/test_corpus.py +168 -0
  29. tests/test_elements_worker/test_dataset.py +7 -12
  30. tests/test_elements_worker/test_element.py +427 -0
  31. tests/test_elements_worker/test_element_create_multiple.py +715 -0
  32. tests/test_elements_worker/test_element_create_single.py +528 -0
  33. tests/test_elements_worker/test_element_list_children.py +969 -0
  34. tests/test_elements_worker/test_element_list_parents.py +530 -0
  35. tests/test_elements_worker/{test_entities.py → test_entity_create.py} +37 -195
  36. tests/test_elements_worker/test_entity_list_and_check.py +160 -0
  37. tests/test_elements_worker/test_image.py +66 -0
  38. tests/test_elements_worker/test_metadata.py +230 -139
  39. tests/test_elements_worker/test_process.py +89 -0
  40. tests/test_elements_worker/test_task.py +8 -18
  41. tests/test_elements_worker/test_training.py +17 -8
  42. tests/test_elements_worker/test_transcription_create.py +873 -0
  43. tests/test_elements_worker/test_transcription_create_with_elements.py +951 -0
  44. tests/test_elements_worker/test_transcription_list.py +450 -0
  45. tests/test_elements_worker/test_version.py +60 -0
  46. tests/test_elements_worker/test_worker.py +563 -279
  47. tests/test_image.py +432 -209
  48. tests/test_merge.py +1 -2
  49. tests/test_utils.py +66 -3
  50. arkindex_base_worker-0.3.7rc9.dist-info/RECORD +0 -47
  51. tests/test_elements_worker/test_elements.py +0 -2713
  52. tests/test_elements_worker/test_transcriptions.py +0 -2119
  53. {arkindex_base_worker-0.3.7rc9.dist-info → arkindex_base_worker-0.4.0.dist-info}/LICENSE +0 -0
  54. {arkindex_base_worker-0.3.7rc9.dist-info → arkindex_base_worker-0.4.0.dist-info}/top_level.txt +0 -0
@@ -2,11 +2,12 @@ import json
2
2
  import re
3
3
 
4
4
  import pytest
5
- from apistar.exceptions import ErrorResponse
6
5
 
6
+ from arkindex.exceptions import ErrorResponse
7
7
  from arkindex.mock import MockApiClient
8
8
  from arkindex_worker.cache import CachedElement
9
9
  from arkindex_worker.models import Element
10
+ from arkindex_worker.utils import DEFAULT_BATCH_SIZE
10
11
  from arkindex_worker.worker import MetaType
11
12
 
12
13
  from . import BASE_API_CALLS
@@ -136,7 +137,7 @@ def test_create_metadata_api_error(responses, mock_elements_worker):
136
137
  responses.add(
137
138
  responses.POST,
138
139
  "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/",
139
- status=500,
140
+ status=418,
140
141
  )
141
142
 
142
143
  with pytest.raises(ErrorResponse):
@@ -147,31 +148,14 @@ def test_create_metadata_api_error(responses, mock_elements_worker):
147
148
  value="La Turbine, Grenoble 38000",
148
149
  )
149
150
 
150
- assert len(responses.calls) == len(BASE_API_CALLS) + 5
151
+ assert len(responses.calls) == len(BASE_API_CALLS) + 1
151
152
  assert [
152
153
  (call.request.method, call.request.url) for call in responses.calls
153
154
  ] == BASE_API_CALLS + [
154
- # We retry 5 times the API call
155
- (
156
- "POST",
157
- "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/",
158
- ),
159
- (
160
- "POST",
161
- "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/",
162
- ),
163
- (
164
- "POST",
165
- "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/",
166
- ),
167
- (
168
- "POST",
169
- "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/",
170
- ),
171
155
  (
172
156
  "POST",
173
157
  "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/",
174
- ),
158
+ )
175
159
  ]
176
160
 
177
161
 
@@ -245,143 +229,267 @@ def test_create_metadata_cached_element(responses, mock_elements_worker_with_cac
245
229
  assert metadata_id == "12345678-1234-1234-1234-123456789123"
246
230
 
247
231
 
248
- @pytest.mark.parametrize(
249
- "metadata_list",
250
- [
251
- [{"type": MetaType.Text, "name": "fake_name", "value": "fake_value"}],
252
- [
253
- {
254
- "type": MetaType.Text,
255
- "name": "fake_name",
256
- "value": "fake_value",
257
- "entity_id": "fake_entity_id",
258
- }
259
- ],
260
- ],
261
- )
262
- def test_create_metadata_bulk(responses, mock_elements_worker, metadata_list):
232
+ @pytest.mark.parametrize("batch_size", [DEFAULT_BATCH_SIZE, 1])
233
+ def test_create_metadata_bulk(batch_size, responses, mock_elements_worker):
263
234
  element = Element({"id": "12341234-1234-1234-1234-123412341234"})
264
- responses.add(
265
- responses.POST,
266
- "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/bulk/",
267
- status=201,
268
- json={
269
- "worker_run_id": "56785678-5678-5678-5678-567856785678",
270
- "metadata_list": [
271
- {
272
- "id": "fake_metadata_id",
273
- "type": metadata_list[0]["type"].value,
274
- "name": metadata_list[0]["name"],
275
- "value": metadata_list[0]["value"],
276
- "dates": [],
277
- "entity_id": metadata_list[0].get("entity_id"),
278
- }
279
- ],
235
+
236
+ metadata_list = [
237
+ {"type": MetaType.Text, "name": "fake_name", "value": "fake_value"},
238
+ {
239
+ "type": MetaType.Text,
240
+ "name": "Year",
241
+ "value": "2024",
242
+ "entity_id": "entity_id",
280
243
  },
281
- )
244
+ ]
245
+ if batch_size > 1:
246
+ responses.add(
247
+ responses.POST,
248
+ "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/bulk/",
249
+ status=201,
250
+ json={
251
+ "worker_run_id": "56785678-5678-5678-5678-567856785678",
252
+ "metadata_list": [
253
+ {
254
+ "id": "fake_metadata_id1",
255
+ "type": metadata_list[0]["type"].value,
256
+ "name": metadata_list[0]["name"],
257
+ "value": metadata_list[0]["value"],
258
+ "dates": [],
259
+ "entity_id": None,
260
+ },
261
+ {
262
+ "id": "fake_metadata_id2",
263
+ "type": metadata_list[1]["type"].value,
264
+ "name": metadata_list[1]["name"],
265
+ "value": metadata_list[1]["value"],
266
+ "dates": [],
267
+ "entity_id": metadata_list[1]["entity_id"],
268
+ },
269
+ ],
270
+ },
271
+ )
272
+ else:
273
+ for idx, meta in enumerate(metadata_list, start=1):
274
+ responses.add(
275
+ responses.POST,
276
+ "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/bulk/",
277
+ status=201,
278
+ json={
279
+ "worker_run_id": "56785678-5678-5678-5678-567856785678",
280
+ "metadata_list": [
281
+ {
282
+ "id": f"fake_metadata_id{idx}",
283
+ "type": meta["type"].value,
284
+ "name": meta["name"],
285
+ "value": meta["value"],
286
+ "dates": [],
287
+ "entity_id": meta.get("entity_id"),
288
+ }
289
+ ],
290
+ },
291
+ )
282
292
 
283
293
  created_metadata_list = mock_elements_worker.create_metadata_bulk(
284
- element, metadata_list
294
+ element, metadata_list, batch_size=batch_size
285
295
  )
286
296
 
287
- assert len(responses.calls) == len(BASE_API_CALLS) + 1
288
- assert [
289
- (call.request.method, call.request.url) for call in responses.calls
290
- ] == BASE_API_CALLS + [
297
+ bulk_api_calls = [
291
298
  (
292
299
  "POST",
293
300
  "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/bulk/",
294
- ),
295
- ]
296
- assert json.loads(responses.calls[-1].request.body)["metadata_list"] == [
297
- {
298
- "type": metadata_list[0]["type"].value,
299
- "name": metadata_list[0]["name"],
300
- "value": metadata_list[0]["value"],
301
- "entity_id": metadata_list[0].get("entity_id"),
302
- }
301
+ )
303
302
  ]
303
+ if batch_size != DEFAULT_BATCH_SIZE:
304
+ bulk_api_calls.append(
305
+ (
306
+ "POST",
307
+ "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/bulk/",
308
+ )
309
+ )
310
+
311
+ assert len(responses.calls) == len(BASE_API_CALLS) + len(bulk_api_calls)
312
+ assert [
313
+ (call.request.method, call.request.url) for call in responses.calls
314
+ ] == BASE_API_CALLS + bulk_api_calls
315
+
316
+ first_meta = {
317
+ **metadata_list[0],
318
+ "type": metadata_list[0]["type"].value,
319
+ "entity_id": None,
320
+ }
321
+ second_meta = {**metadata_list[1], "type": metadata_list[1]["type"].value}
322
+ empty_payload = {
323
+ "worker_run_id": "56785678-5678-5678-5678-567856785678",
324
+ "metadata_list": [],
325
+ }
326
+
327
+ bodies = []
328
+ first_call_idx = None
329
+ if batch_size > 1:
330
+ first_call_idx = -1
331
+ bodies.append({**empty_payload, "metadata_list": [first_meta, second_meta]})
332
+ else:
333
+ first_call_idx = -2
334
+ bodies.append({**empty_payload, "metadata_list": [first_meta]})
335
+ bodies.append({**empty_payload, "metadata_list": [second_meta]})
336
+
337
+ assert [
338
+ json.loads(bulk_call.request.body)
339
+ for bulk_call in responses.calls[first_call_idx:]
340
+ ] == bodies
341
+
304
342
  assert created_metadata_list == [
305
343
  {
306
- "id": "fake_metadata_id",
344
+ "id": "fake_metadata_id1",
307
345
  "type": metadata_list[0]["type"].value,
308
346
  "name": metadata_list[0]["name"],
309
347
  "value": metadata_list[0]["value"],
310
348
  "dates": [],
311
- "entity_id": metadata_list[0].get("entity_id"),
312
- }
349
+ "entity_id": None,
350
+ },
351
+ {
352
+ "id": "fake_metadata_id2",
353
+ "type": metadata_list[1]["type"].value,
354
+ "name": metadata_list[1]["name"],
355
+ "value": metadata_list[1]["value"],
356
+ "dates": [],
357
+ "entity_id": metadata_list[1]["entity_id"],
358
+ },
313
359
  ]
314
360
 
315
361
 
316
- @pytest.mark.parametrize(
317
- "metadata_list",
318
- [
319
- [{"type": MetaType.Text, "name": "fake_name", "value": "fake_value"}],
320
- [
321
- {
322
- "type": MetaType.Text,
323
- "name": "fake_name",
324
- "value": "fake_value",
325
- "entity_id": "fake_entity_id",
326
- }
327
- ],
328
- ],
329
- )
362
+ @pytest.mark.parametrize("batch_size", [DEFAULT_BATCH_SIZE, 1])
330
363
  def test_create_metadata_bulk_cached_element(
331
- responses, mock_elements_worker_with_cache, metadata_list
364
+ batch_size, responses, mock_elements_worker_with_cache
332
365
  ):
333
366
  element = CachedElement.create(
334
367
  id="12341234-1234-1234-1234-123412341234", type="thing"
335
368
  )
336
- responses.add(
337
- responses.POST,
338
- "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/bulk/",
339
- status=201,
340
- json={
341
- "worker_run_id": "56785678-5678-5678-5678-567856785678",
342
- "metadata_list": [
343
- {
344
- "id": "fake_metadata_id",
345
- "type": metadata_list[0]["type"].value,
346
- "name": metadata_list[0]["name"],
347
- "value": metadata_list[0]["value"],
348
- "dates": [],
349
- "entity_id": metadata_list[0].get("entity_id"),
350
- }
351
- ],
369
+
370
+ metadata_list = [
371
+ {"type": MetaType.Text, "name": "fake_name", "value": "fake_value"},
372
+ {
373
+ "type": MetaType.Text,
374
+ "name": "Year",
375
+ "value": "2024",
376
+ "entity_id": "entity_id",
352
377
  },
353
- )
378
+ ]
379
+ if batch_size > 1:
380
+ responses.add(
381
+ responses.POST,
382
+ "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/bulk/",
383
+ status=201,
384
+ json={
385
+ "worker_run_id": "56785678-5678-5678-5678-567856785678",
386
+ "metadata_list": [
387
+ {
388
+ "id": "fake_metadata_id1",
389
+ "type": metadata_list[0]["type"].value,
390
+ "name": metadata_list[0]["name"],
391
+ "value": metadata_list[0]["value"],
392
+ "dates": [],
393
+ "entity_id": None,
394
+ },
395
+ {
396
+ "id": "fake_metadata_id2",
397
+ "type": metadata_list[1]["type"].value,
398
+ "name": metadata_list[1]["name"],
399
+ "value": metadata_list[1]["value"],
400
+ "dates": [],
401
+ "entity_id": metadata_list[1]["entity_id"],
402
+ },
403
+ ],
404
+ },
405
+ )
406
+ else:
407
+ for idx, meta in enumerate(metadata_list, start=1):
408
+ responses.add(
409
+ responses.POST,
410
+ "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/bulk/",
411
+ status=201,
412
+ json={
413
+ "worker_run_id": "56785678-5678-5678-5678-567856785678",
414
+ "metadata_list": [
415
+ {
416
+ "id": f"fake_metadata_id{idx}",
417
+ "type": meta["type"].value,
418
+ "name": meta["name"],
419
+ "value": meta["value"],
420
+ "dates": [],
421
+ "entity_id": meta.get("entity_id"),
422
+ }
423
+ ],
424
+ },
425
+ )
354
426
 
355
427
  created_metadata_list = mock_elements_worker_with_cache.create_metadata_bulk(
356
- element, metadata_list
428
+ element, metadata_list, batch_size=batch_size
357
429
  )
358
430
 
359
- assert len(responses.calls) == len(BASE_API_CALLS) + 1
360
- assert [
361
- (call.request.method, call.request.url) for call in responses.calls
362
- ] == BASE_API_CALLS + [
431
+ bulk_api_calls = [
363
432
  (
364
433
  "POST",
365
434
  "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/bulk/",
366
- ),
367
- ]
368
- assert json.loads(responses.calls[-1].request.body)["metadata_list"] == [
369
- {
370
- "type": metadata_list[0]["type"].value,
371
- "name": metadata_list[0]["name"],
372
- "value": metadata_list[0]["value"],
373
- "entity_id": metadata_list[0].get("entity_id"),
374
- }
435
+ )
375
436
  ]
437
+ if batch_size != DEFAULT_BATCH_SIZE:
438
+ bulk_api_calls.append(
439
+ (
440
+ "POST",
441
+ "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/bulk/",
442
+ )
443
+ )
444
+
445
+ assert len(responses.calls) == len(BASE_API_CALLS) + len(bulk_api_calls)
446
+ assert [
447
+ (call.request.method, call.request.url) for call in responses.calls
448
+ ] == BASE_API_CALLS + bulk_api_calls
449
+
450
+ first_meta = {
451
+ **metadata_list[0],
452
+ "type": metadata_list[0]["type"].value,
453
+ "entity_id": None,
454
+ }
455
+ second_meta = {**metadata_list[1], "type": metadata_list[1]["type"].value}
456
+ empty_payload = {
457
+ "worker_run_id": "56785678-5678-5678-5678-567856785678",
458
+ "metadata_list": [],
459
+ }
460
+
461
+ bodies = []
462
+ first_call_idx = None
463
+ if batch_size > 1:
464
+ first_call_idx = -1
465
+ bodies.append({**empty_payload, "metadata_list": [first_meta, second_meta]})
466
+ else:
467
+ first_call_idx = -2
468
+ bodies.append({**empty_payload, "metadata_list": [first_meta]})
469
+ bodies.append({**empty_payload, "metadata_list": [second_meta]})
470
+
471
+ assert [
472
+ json.loads(bulk_call.request.body)
473
+ for bulk_call in responses.calls[first_call_idx:]
474
+ ] == bodies
475
+
376
476
  assert created_metadata_list == [
377
477
  {
378
- "id": "fake_metadata_id",
478
+ "id": "fake_metadata_id1",
379
479
  "type": metadata_list[0]["type"].value,
380
480
  "name": metadata_list[0]["name"],
381
481
  "value": metadata_list[0]["value"],
382
482
  "dates": [],
383
- "entity_id": metadata_list[0].get("entity_id"),
384
- }
483
+ "entity_id": None,
484
+ },
485
+ {
486
+ "id": "fake_metadata_id2",
487
+ "type": metadata_list[1]["type"].value,
488
+ "name": metadata_list[1]["name"],
489
+ "value": metadata_list[1]["value"],
490
+ "dates": [],
491
+ "entity_id": metadata_list[1]["entity_id"],
492
+ },
385
493
  ]
386
494
 
387
495
 
@@ -474,37 +582,20 @@ def test_create_metadata_bulk_api_error(responses, mock_elements_worker):
474
582
  responses.add(
475
583
  responses.POST,
476
584
  "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/bulk/",
477
- status=500,
585
+ status=418,
478
586
  )
479
587
 
480
588
  with pytest.raises(ErrorResponse):
481
589
  mock_elements_worker.create_metadata_bulk(element, metadata_list)
482
590
 
483
- assert len(responses.calls) == len(BASE_API_CALLS) + 5
591
+ assert len(responses.calls) == len(BASE_API_CALLS) + 1
484
592
  assert [
485
593
  (call.request.method, call.request.url) for call in responses.calls
486
594
  ] == BASE_API_CALLS + [
487
- # We retry 5 times the API call
488
- (
489
- "POST",
490
- "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/bulk/",
491
- ),
492
- (
493
- "POST",
494
- "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/bulk/",
495
- ),
496
595
  (
497
596
  "POST",
498
597
  "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/bulk/",
499
- ),
500
- (
501
- "POST",
502
- "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/bulk/",
503
- ),
504
- (
505
- "POST",
506
- "http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/bulk/",
507
- ),
598
+ )
508
599
  ]
509
600
 
510
601
 
@@ -0,0 +1,89 @@
1
+ import pytest
2
+
3
+ from tests import PROCESS_ID
4
+
5
+
6
+ @pytest.mark.parametrize(
7
+ ("with_image", "elements"),
8
+ [
9
+ (
10
+ False,
11
+ [
12
+ {
13
+ "id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
14
+ "type_id": "baaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
15
+ "name": "element 1",
16
+ "confidence": 1,
17
+ "image_id": None,
18
+ "image_width": None,
19
+ "image_height": None,
20
+ "image_url": None,
21
+ "polygon": None,
22
+ "rotation_angle": 0,
23
+ "mirrored": False,
24
+ },
25
+ {
26
+ "id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa0",
27
+ "type_id": "baaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
28
+ "name": "element 2",
29
+ "confidence": 1,
30
+ "image_id": None,
31
+ "image_width": None,
32
+ "image_height": None,
33
+ "image_url": None,
34
+ "polygon": None,
35
+ "rotation_angle": 0,
36
+ "mirrored": False,
37
+ },
38
+ ],
39
+ ),
40
+ (
41
+ True,
42
+ [
43
+ {
44
+ "id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
45
+ "type_id": "baaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
46
+ "name": "element 1",
47
+ "confidence": 1,
48
+ "image_id": "aaa2aaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
49
+ "image_width": 76,
50
+ "image_height": 138,
51
+ "image_url": "http://somewhere.com/iiif/image.jpeg",
52
+ "polygon": [[0, 0], [0, 40], [20, 40], [20, 0]],
53
+ "rotation_angle": 0,
54
+ "mirrored": False,
55
+ },
56
+ {
57
+ "id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa0",
58
+ "type_id": "baaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
59
+ "name": "element 2",
60
+ "confidence": 1,
61
+ "image_id": "aaa2aaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
62
+ "image_width": 138,
63
+ "image_height": 76,
64
+ "image_url": "http://somewhere.com/iiif/image.jpeg",
65
+ "polygon": [[0, 0], [0, 40], [20, 40], [20, 0]],
66
+ "rotation_angle": 0,
67
+ "mirrored": False,
68
+ },
69
+ ],
70
+ ),
71
+ ],
72
+ )
73
+ def test_list_process_elements_with_image(
74
+ responses, mock_elements_worker, with_image, elements
75
+ ):
76
+ responses.add(
77
+ responses.GET,
78
+ f"http://testserver/api/v1/process/{PROCESS_ID}/elements/?page_size=500&with_count=true&with_image={with_image}",
79
+ status=200,
80
+ json={
81
+ "count": 2,
82
+ "next": None,
83
+ "results": elements,
84
+ },
85
+ )
86
+ assert (
87
+ list(mock_elements_worker.list_process_elements(with_image=with_image))
88
+ == elements
89
+ )
@@ -1,10 +1,10 @@
1
1
  import uuid
2
2
 
3
3
  import pytest
4
- from apistar.exceptions import ErrorResponse
5
4
 
5
+ from arkindex.exceptions import ErrorResponse
6
6
  from arkindex_worker.models import Artifact
7
- from tests.conftest import FIXTURES_DIR
7
+ from tests import FIXTURES_DIR
8
8
  from tests.test_elements_worker import BASE_API_CALLS
9
9
 
10
10
  TASK_ID = uuid.UUID("cafecafe-cafe-cafe-cafe-cafecafecafe")
@@ -33,22 +33,17 @@ def test_list_artifacts_api_error(responses, mock_dataset_worker):
33
33
  responses.add(
34
34
  responses.GET,
35
35
  f"http://testserver/api/v1/task/{TASK_ID}/artifacts/",
36
- status=500,
36
+ status=418,
37
37
  )
38
38
 
39
39
  with pytest.raises(ErrorResponse):
40
40
  mock_dataset_worker.list_artifacts(task_id=TASK_ID)
41
41
 
42
- assert len(responses.calls) == len(BASE_API_CALLS) + 5
42
+ assert len(responses.calls) == len(BASE_API_CALLS) + 1
43
43
  assert [
44
44
  (call.request.method, call.request.url) for call in responses.calls
45
45
  ] == BASE_API_CALLS + [
46
- # The API call is retried 5 times
47
- ("GET", f"http://testserver/api/v1/task/{TASK_ID}/artifacts/"),
48
- ("GET", f"http://testserver/api/v1/task/{TASK_ID}/artifacts/"),
49
- ("GET", f"http://testserver/api/v1/task/{TASK_ID}/artifacts/"),
50
- ("GET", f"http://testserver/api/v1/task/{TASK_ID}/artifacts/"),
51
- ("GET", f"http://testserver/api/v1/task/{TASK_ID}/artifacts/"),
46
+ ("GET", f"http://testserver/api/v1/task/{TASK_ID}/artifacts/")
52
47
  ]
53
48
 
54
49
 
@@ -153,7 +148,7 @@ def test_download_artifact_api_error(responses, mock_dataset_worker, default_art
153
148
  responses.add(
154
149
  responses.GET,
155
150
  f"http://testserver/api/v1/task/{TASK_ID}/artifact/dataset_id.tar.zst",
156
- status=500,
151
+ status=418,
157
152
  )
158
153
 
159
154
  with pytest.raises(ErrorResponse):
@@ -161,16 +156,11 @@ def test_download_artifact_api_error(responses, mock_dataset_worker, default_art
161
156
  task_id=TASK_ID, artifact=default_artifact
162
157
  )
163
158
 
164
- assert len(responses.calls) == len(BASE_API_CALLS) + 5
159
+ assert len(responses.calls) == len(BASE_API_CALLS) + 1
165
160
  assert [
166
161
  (call.request.method, call.request.url) for call in responses.calls
167
162
  ] == BASE_API_CALLS + [
168
- # The API call is retried 5 times
169
- ("GET", f"http://testserver/api/v1/task/{TASK_ID}/artifact/dataset_id.tar.zst"),
170
- ("GET", f"http://testserver/api/v1/task/{TASK_ID}/artifact/dataset_id.tar.zst"),
171
- ("GET", f"http://testserver/api/v1/task/{TASK_ID}/artifact/dataset_id.tar.zst"),
172
- ("GET", f"http://testserver/api/v1/task/{TASK_ID}/artifact/dataset_id.tar.zst"),
173
- ("GET", f"http://testserver/api/v1/task/{TASK_ID}/artifact/dataset_id.tar.zst"),
163
+ ("GET", f"http://testserver/api/v1/task/{TASK_ID}/artifact/dataset_id.tar.zst")
174
164
  ]
175
165
 
176
166