arkindex-base-worker 0.5.0a1__py3-none-any.whl → 0.5.0a3__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.
- {arkindex_base_worker-0.5.0a1.dist-info → arkindex_base_worker-0.5.0a3.dist-info}/METADATA +2 -2
- {arkindex_base_worker-0.5.0a1.dist-info → arkindex_base_worker-0.5.0a3.dist-info}/RECORD +21 -21
- arkindex_worker/__init__.py +3 -0
- arkindex_worker/cache.py +3 -3
- arkindex_worker/image.py +31 -24
- arkindex_worker/worker/__init__.py +17 -17
- arkindex_worker/worker/base.py +6 -6
- arkindex_worker/worker/classification.py +34 -32
- arkindex_worker/worker/corpus.py +3 -3
- arkindex_worker/worker/dataset.py +9 -9
- arkindex_worker/worker/element.py +193 -189
- arkindex_worker/worker/entity.py +61 -60
- arkindex_worker/worker/image.py +3 -3
- arkindex_worker/worker/metadata.py +27 -27
- arkindex_worker/worker/task.py +9 -9
- arkindex_worker/worker/training.py +15 -11
- arkindex_worker/worker/transcription.py +77 -71
- tests/test_elements_worker/test_training.py +6 -6
- {arkindex_base_worker-0.5.0a1.dist-info → arkindex_base_worker-0.5.0a3.dist-info}/LICENSE +0 -0
- {arkindex_base_worker-0.5.0a1.dist-info → arkindex_base_worker-0.5.0a3.dist-info}/WHEEL +0 -0
- {arkindex_base_worker-0.5.0a1.dist-info → arkindex_base_worker-0.5.0a3.dist-info}/top_level.txt +0 -0
|
@@ -67,7 +67,7 @@ class ElementMixin:
|
|
|
67
67
|
}
|
|
68
68
|
count = len(self.corpus_types)
|
|
69
69
|
logger.info(
|
|
70
|
-
f
|
|
70
|
+
f"Loaded {count} element {pluralize('type', count)} in corpus ({self.corpus_id})."
|
|
71
71
|
)
|
|
72
72
|
|
|
73
73
|
@unsupported_cache
|
|
@@ -101,9 +101,9 @@ class ElementMixin:
|
|
|
101
101
|
:raises MissingTypeError: If any of the specified type slugs were not found.
|
|
102
102
|
"""
|
|
103
103
|
assert len(type_slugs), "At least one element type slug is required."
|
|
104
|
-
assert all(
|
|
105
|
-
|
|
106
|
-
)
|
|
104
|
+
assert all(isinstance(slug, str) for slug in type_slugs), (
|
|
105
|
+
"Element type slugs must be strings."
|
|
106
|
+
)
|
|
107
107
|
|
|
108
108
|
if not self.corpus_types:
|
|
109
109
|
self.list_corpus_types()
|
|
@@ -118,7 +118,7 @@ class ElementMixin:
|
|
|
118
118
|
)
|
|
119
119
|
else:
|
|
120
120
|
raise MissingTypeError(
|
|
121
|
-
f
|
|
121
|
+
f"Element {pluralize('type', len(missing_slugs))} {', '.join(sorted(missing_slugs))} were not found in corpus ({self.corpus_id})."
|
|
122
122
|
)
|
|
123
123
|
|
|
124
124
|
return True
|
|
@@ -146,18 +146,18 @@ class ElementMixin:
|
|
|
146
146
|
:param slim_output: Whether to return the child ID or the full child.
|
|
147
147
|
:returns: UUID of the created element.
|
|
148
148
|
"""
|
|
149
|
-
assert element and isinstance(
|
|
150
|
-
element
|
|
151
|
-
)
|
|
152
|
-
assert type and isinstance(
|
|
153
|
-
type
|
|
154
|
-
)
|
|
155
|
-
assert name and isinstance(
|
|
156
|
-
name
|
|
157
|
-
)
|
|
158
|
-
assert polygon is None or isinstance(
|
|
159
|
-
polygon
|
|
160
|
-
)
|
|
149
|
+
assert element and isinstance(element, Element), (
|
|
150
|
+
"element shouldn't be null and should be of type Element"
|
|
151
|
+
)
|
|
152
|
+
assert type and isinstance(type, str), (
|
|
153
|
+
"type shouldn't be null and should be of type str"
|
|
154
|
+
)
|
|
155
|
+
assert name and isinstance(name, str), (
|
|
156
|
+
"name shouldn't be null and should be of type str"
|
|
157
|
+
)
|
|
158
|
+
assert polygon is None or isinstance(polygon, list), (
|
|
159
|
+
"polygon should be None or a list"
|
|
160
|
+
)
|
|
161
161
|
if polygon is not None:
|
|
162
162
|
assert len(polygon) >= 3, "polygon should have at least three points"
|
|
163
163
|
assert all(
|
|
@@ -177,7 +177,9 @@ class ElementMixin:
|
|
|
177
177
|
except ValueError as e:
|
|
178
178
|
raise ValueError("image is not a valid uuid.") from e
|
|
179
179
|
if polygon and image is None:
|
|
180
|
-
assert element.zone,
|
|
180
|
+
assert element.zone, (
|
|
181
|
+
"An image or a parent with an image is required to create an element with a polygon."
|
|
182
|
+
)
|
|
181
183
|
assert isinstance(slim_output, bool), "slim_output should be of type bool"
|
|
182
184
|
|
|
183
185
|
if self.is_read_only:
|
|
@@ -231,56 +233,61 @@ class ElementMixin:
|
|
|
231
233
|
:return: List of dicts, with each dict having a single key, ``id``, holding the UUID of each created element.
|
|
232
234
|
"""
|
|
233
235
|
if isinstance(parent, Element):
|
|
234
|
-
assert parent.get(
|
|
235
|
-
"
|
|
236
|
-
)
|
|
236
|
+
assert parent.get("zone"), (
|
|
237
|
+
"create_elements cannot be used on parents without zones"
|
|
238
|
+
)
|
|
237
239
|
elif isinstance(parent, CachedElement):
|
|
238
|
-
assert (
|
|
239
|
-
|
|
240
|
-
)
|
|
240
|
+
assert parent.image_id, (
|
|
241
|
+
"create_elements cannot be used on parents without images"
|
|
242
|
+
)
|
|
241
243
|
else:
|
|
242
244
|
raise TypeError(
|
|
243
245
|
"Parent element should be an Element or CachedElement instance"
|
|
244
246
|
)
|
|
245
247
|
|
|
246
|
-
assert elements and isinstance(
|
|
247
|
-
elements
|
|
248
|
-
)
|
|
248
|
+
assert elements and isinstance(elements, list), (
|
|
249
|
+
"elements shouldn't be null and should be of type list"
|
|
250
|
+
)
|
|
249
251
|
|
|
250
252
|
for index, element in enumerate(elements):
|
|
251
|
-
assert isinstance(
|
|
252
|
-
|
|
253
|
-
)
|
|
253
|
+
assert isinstance(element, dict), (
|
|
254
|
+
f"Element at index {index} in elements: Should be of type dict"
|
|
255
|
+
)
|
|
254
256
|
|
|
255
257
|
name = element.get("name")
|
|
256
|
-
assert (
|
|
257
|
-
name and
|
|
258
|
-
)
|
|
258
|
+
assert name and isinstance(name, str), (
|
|
259
|
+
f"Element at index {index} in elements: name shouldn't be null and should be of type str"
|
|
260
|
+
)
|
|
259
261
|
|
|
260
262
|
type = element.get("type")
|
|
261
|
-
assert (
|
|
262
|
-
type and
|
|
263
|
-
)
|
|
263
|
+
assert type and isinstance(type, str), (
|
|
264
|
+
f"Element at index {index} in elements: type shouldn't be null and should be of type str"
|
|
265
|
+
)
|
|
264
266
|
|
|
265
267
|
polygon = element.get("polygon")
|
|
266
|
-
assert (
|
|
267
|
-
polygon and
|
|
268
|
-
)
|
|
269
|
-
assert (
|
|
270
|
-
|
|
271
|
-
)
|
|
268
|
+
assert polygon and isinstance(polygon, list), (
|
|
269
|
+
f"Element at index {index} in elements: polygon shouldn't be null and should be of type list"
|
|
270
|
+
)
|
|
271
|
+
assert len(polygon) >= 3, (
|
|
272
|
+
f"Element at index {index} in elements: polygon should have at least three points"
|
|
273
|
+
)
|
|
272
274
|
assert all(
|
|
273
275
|
isinstance(point, list) and len(point) == 2 for point in polygon
|
|
274
|
-
),
|
|
276
|
+
), (
|
|
277
|
+
f"Element at index {index} in elements: polygon points should be lists of two items"
|
|
278
|
+
)
|
|
275
279
|
assert all(
|
|
276
280
|
isinstance(coord, int | float) for point in polygon for coord in point
|
|
277
|
-
),
|
|
281
|
+
), (
|
|
282
|
+
f"Element at index {index} in elements: polygon points should be lists of two numbers"
|
|
283
|
+
)
|
|
278
284
|
|
|
279
285
|
confidence = element.get("confidence")
|
|
280
|
-
assert (
|
|
281
|
-
confidence
|
|
282
|
-
|
|
283
|
-
|
|
286
|
+
assert confidence is None or (
|
|
287
|
+
isinstance(confidence, float) and 0 <= confidence <= 1
|
|
288
|
+
), (
|
|
289
|
+
f"Element at index {index} in elements: confidence should be None or a float in [0..1] range"
|
|
290
|
+
)
|
|
284
291
|
|
|
285
292
|
if self.is_read_only:
|
|
286
293
|
logger.warning("Cannot create elements as this worker is in read-only mode")
|
|
@@ -347,12 +354,12 @@ class ElementMixin:
|
|
|
347
354
|
:param child: Child element.
|
|
348
355
|
:returns: A dict from the ``CreateElementParent`` API endpoint.
|
|
349
356
|
"""
|
|
350
|
-
assert parent and isinstance(
|
|
351
|
-
parent
|
|
352
|
-
)
|
|
353
|
-
assert child and isinstance(
|
|
354
|
-
child
|
|
355
|
-
)
|
|
357
|
+
assert parent and isinstance(parent, Element), (
|
|
358
|
+
"parent shouldn't be null and should be of type Element"
|
|
359
|
+
)
|
|
360
|
+
assert child and isinstance(child, Element), (
|
|
361
|
+
"child shouldn't be null and should be of type Element"
|
|
362
|
+
)
|
|
356
363
|
|
|
357
364
|
if self.is_read_only:
|
|
358
365
|
logger.warning("Cannot link elements as this worker is in read-only mode")
|
|
@@ -381,18 +388,18 @@ class ElementMixin:
|
|
|
381
388
|
|
|
382
389
|
:returns: A list containing the string UUID of each child linked to the parent.
|
|
383
390
|
"""
|
|
384
|
-
assert parent and isinstance(
|
|
385
|
-
parent
|
|
386
|
-
)
|
|
391
|
+
assert parent and isinstance(parent, Element), (
|
|
392
|
+
"parent shouldn't be null and should be of type Element"
|
|
393
|
+
)
|
|
387
394
|
|
|
388
|
-
assert children and isinstance(
|
|
389
|
-
children
|
|
390
|
-
)
|
|
395
|
+
assert children and isinstance(children, list), (
|
|
396
|
+
"children shouldn't be null and should be of type list"
|
|
397
|
+
)
|
|
391
398
|
|
|
392
399
|
for index, child in enumerate(children):
|
|
393
|
-
assert isinstance(
|
|
394
|
-
|
|
395
|
-
)
|
|
400
|
+
assert isinstance(child, Element), (
|
|
401
|
+
f"Child at index {index} in children: Should be of type Element"
|
|
402
|
+
)
|
|
396
403
|
|
|
397
404
|
if self.is_read_only:
|
|
398
405
|
logger.warning("Cannot link elements as this worker is in read-only mode")
|
|
@@ -430,9 +437,9 @@ class ElementMixin:
|
|
|
430
437
|
|
|
431
438
|
:returns: A dict from the ``PartialUpdateElement`` API endpoint.
|
|
432
439
|
"""
|
|
433
|
-
assert element and isinstance(
|
|
434
|
-
element
|
|
435
|
-
)
|
|
440
|
+
assert element and isinstance(element, Element | CachedElement), (
|
|
441
|
+
"element shouldn't be null and should be an Element or CachedElement"
|
|
442
|
+
)
|
|
436
443
|
|
|
437
444
|
if "type" in kwargs:
|
|
438
445
|
assert isinstance(kwargs["type"], str), "type should be a str"
|
|
@@ -459,9 +466,9 @@ class ElementMixin:
|
|
|
459
466
|
|
|
460
467
|
if "rotation_angle" in kwargs:
|
|
461
468
|
rotation_angle = kwargs["rotation_angle"]
|
|
462
|
-
assert (
|
|
463
|
-
|
|
464
|
-
)
|
|
469
|
+
assert isinstance(rotation_angle, int) and rotation_angle >= 0, (
|
|
470
|
+
"rotation_angle should be a positive integer"
|
|
471
|
+
)
|
|
465
472
|
|
|
466
473
|
if "mirrored" in kwargs:
|
|
467
474
|
assert isinstance(kwargs["mirrored"], bool), "mirrored should be a boolean"
|
|
@@ -571,22 +578,22 @@ class ElementMixin:
|
|
|
571
578
|
DeprecationWarning,
|
|
572
579
|
stacklevel=1,
|
|
573
580
|
)
|
|
574
|
-
assert isinstance(
|
|
575
|
-
transcription_worker_version
|
|
576
|
-
)
|
|
581
|
+
assert isinstance(transcription_worker_version, str | bool), (
|
|
582
|
+
"transcription_worker_version should be of type str or bool"
|
|
583
|
+
)
|
|
577
584
|
if isinstance(transcription_worker_version, bool):
|
|
578
|
-
assert (
|
|
579
|
-
transcription_worker_version
|
|
580
|
-
)
|
|
585
|
+
assert transcription_worker_version is False, (
|
|
586
|
+
"if of type bool, transcription_worker_version can only be set to False"
|
|
587
|
+
)
|
|
581
588
|
query_params["transcription_worker_version"] = transcription_worker_version
|
|
582
589
|
if transcription_worker_run is not None:
|
|
583
|
-
assert isinstance(
|
|
584
|
-
transcription_worker_run
|
|
585
|
-
)
|
|
590
|
+
assert isinstance(transcription_worker_run, str | bool), (
|
|
591
|
+
"transcription_worker_run should be of type str or bool"
|
|
592
|
+
)
|
|
586
593
|
if isinstance(transcription_worker_run, bool):
|
|
587
|
-
assert (
|
|
588
|
-
transcription_worker_run
|
|
589
|
-
)
|
|
594
|
+
assert transcription_worker_run is False, (
|
|
595
|
+
"if of type bool, transcription_worker_run can only be set to False"
|
|
596
|
+
)
|
|
590
597
|
query_params["transcription_worker_run"] = transcription_worker_run
|
|
591
598
|
if type:
|
|
592
599
|
assert isinstance(type, str), "type should be of type str"
|
|
@@ -598,14 +605,14 @@ class ElementMixin:
|
|
|
598
605
|
assert isinstance(with_corpus, bool), "with_corpus should be of type bool"
|
|
599
606
|
query_params["with_corpus"] = with_corpus
|
|
600
607
|
if with_has_children is not None:
|
|
601
|
-
assert isinstance(
|
|
602
|
-
with_has_children
|
|
603
|
-
)
|
|
608
|
+
assert isinstance(with_has_children, bool), (
|
|
609
|
+
"with_has_children should be of type bool"
|
|
610
|
+
)
|
|
604
611
|
query_params["with_has_children"] = with_has_children
|
|
605
612
|
if with_metadata is not None:
|
|
606
|
-
assert isinstance(
|
|
607
|
-
with_metadata
|
|
608
|
-
)
|
|
613
|
+
assert isinstance(with_metadata, bool), (
|
|
614
|
+
"with_metadata should be of type bool"
|
|
615
|
+
)
|
|
609
616
|
query_params["with_metadata"] = with_metadata
|
|
610
617
|
if with_zone is not None:
|
|
611
618
|
assert isinstance(with_zone, bool), "with_zone should be of type bool"
|
|
@@ -616,22 +623,22 @@ class ElementMixin:
|
|
|
616
623
|
DeprecationWarning,
|
|
617
624
|
stacklevel=1,
|
|
618
625
|
)
|
|
619
|
-
assert isinstance(
|
|
620
|
-
worker_version
|
|
621
|
-
)
|
|
626
|
+
assert isinstance(worker_version, str | bool), (
|
|
627
|
+
"worker_version should be of type str or bool"
|
|
628
|
+
)
|
|
622
629
|
if isinstance(worker_version, bool):
|
|
623
|
-
assert (
|
|
624
|
-
worker_version
|
|
625
|
-
)
|
|
630
|
+
assert worker_version is False, (
|
|
631
|
+
"if of type bool, worker_version can only be set to False"
|
|
632
|
+
)
|
|
626
633
|
query_params["worker_version"] = worker_version
|
|
627
634
|
if worker_run is not None:
|
|
628
|
-
assert isinstance(
|
|
629
|
-
worker_run
|
|
630
|
-
)
|
|
635
|
+
assert isinstance(worker_run, str | bool), (
|
|
636
|
+
"worker_run should be of type str or bool"
|
|
637
|
+
)
|
|
631
638
|
if isinstance(worker_run, bool):
|
|
632
|
-
assert (
|
|
633
|
-
worker_run
|
|
634
|
-
)
|
|
639
|
+
assert worker_run is False, (
|
|
640
|
+
"if of type bool, worker_run can only be set to False"
|
|
641
|
+
)
|
|
635
642
|
query_params["worker_run"] = worker_run
|
|
636
643
|
|
|
637
644
|
if not self.use_cache:
|
|
@@ -640,14 +647,13 @@ class ElementMixin:
|
|
|
640
647
|
)
|
|
641
648
|
|
|
642
649
|
# Checking that we only received query_params handled by the cache
|
|
643
|
-
assert (
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
), "When using the local cache, you can only filter by 'type' and/or 'worker_version' and/or 'worker_run'"
|
|
650
|
+
assert set(query_params.keys()) <= {
|
|
651
|
+
"type",
|
|
652
|
+
"worker_version",
|
|
653
|
+
"worker_run",
|
|
654
|
+
}, (
|
|
655
|
+
"When using the local cache, you can only filter by 'type' and/or 'worker_version' and/or 'worker_run'"
|
|
656
|
+
)
|
|
651
657
|
|
|
652
658
|
query = CachedElement.select()
|
|
653
659
|
if type:
|
|
@@ -729,9 +735,9 @@ class ElementMixin:
|
|
|
729
735
|
:return: An iterable of dicts from the ``ListElementChildren`` API endpoint,
|
|
730
736
|
or an iterable of [CachedElement][arkindex_worker.cache.CachedElement] when caching is enabled.
|
|
731
737
|
"""
|
|
732
|
-
assert element and isinstance(
|
|
733
|
-
element
|
|
734
|
-
)
|
|
738
|
+
assert element and isinstance(element, Element | CachedElement), (
|
|
739
|
+
"element shouldn't be null and should be an Element or CachedElement"
|
|
740
|
+
)
|
|
735
741
|
query_params = {}
|
|
736
742
|
if folder is not None:
|
|
737
743
|
assert isinstance(folder, bool), "folder should be of type bool"
|
|
@@ -748,22 +754,22 @@ class ElementMixin:
|
|
|
748
754
|
DeprecationWarning,
|
|
749
755
|
stacklevel=1,
|
|
750
756
|
)
|
|
751
|
-
assert isinstance(
|
|
752
|
-
transcription_worker_version
|
|
753
|
-
)
|
|
757
|
+
assert isinstance(transcription_worker_version, str | bool), (
|
|
758
|
+
"transcription_worker_version should be of type str or bool"
|
|
759
|
+
)
|
|
754
760
|
if isinstance(transcription_worker_version, bool):
|
|
755
|
-
assert (
|
|
756
|
-
transcription_worker_version
|
|
757
|
-
)
|
|
761
|
+
assert transcription_worker_version is False, (
|
|
762
|
+
"if of type bool, transcription_worker_version can only be set to False"
|
|
763
|
+
)
|
|
758
764
|
query_params["transcription_worker_version"] = transcription_worker_version
|
|
759
765
|
if transcription_worker_run is not None:
|
|
760
|
-
assert isinstance(
|
|
761
|
-
transcription_worker_run
|
|
762
|
-
)
|
|
766
|
+
assert isinstance(transcription_worker_run, str | bool), (
|
|
767
|
+
"transcription_worker_run should be of type str or bool"
|
|
768
|
+
)
|
|
763
769
|
if isinstance(transcription_worker_run, bool):
|
|
764
|
-
assert (
|
|
765
|
-
transcription_worker_run
|
|
766
|
-
)
|
|
770
|
+
assert transcription_worker_run is False, (
|
|
771
|
+
"if of type bool, transcription_worker_run can only be set to False"
|
|
772
|
+
)
|
|
767
773
|
query_params["transcription_worker_run"] = transcription_worker_run
|
|
768
774
|
if type:
|
|
769
775
|
assert isinstance(type, str), "type should be of type str"
|
|
@@ -775,14 +781,14 @@ class ElementMixin:
|
|
|
775
781
|
assert isinstance(with_corpus, bool), "with_corpus should be of type bool"
|
|
776
782
|
query_params["with_corpus"] = with_corpus
|
|
777
783
|
if with_has_children is not None:
|
|
778
|
-
assert isinstance(
|
|
779
|
-
with_has_children
|
|
780
|
-
)
|
|
784
|
+
assert isinstance(with_has_children, bool), (
|
|
785
|
+
"with_has_children should be of type bool"
|
|
786
|
+
)
|
|
781
787
|
query_params["with_has_children"] = with_has_children
|
|
782
788
|
if with_metadata is not None:
|
|
783
|
-
assert isinstance(
|
|
784
|
-
with_metadata
|
|
785
|
-
)
|
|
789
|
+
assert isinstance(with_metadata, bool), (
|
|
790
|
+
"with_metadata should be of type bool"
|
|
791
|
+
)
|
|
786
792
|
query_params["with_metadata"] = with_metadata
|
|
787
793
|
if with_zone is not None:
|
|
788
794
|
assert isinstance(with_zone, bool), "with_zone should be of type bool"
|
|
@@ -793,22 +799,22 @@ class ElementMixin:
|
|
|
793
799
|
DeprecationWarning,
|
|
794
800
|
stacklevel=1,
|
|
795
801
|
)
|
|
796
|
-
assert isinstance(
|
|
797
|
-
worker_version
|
|
798
|
-
)
|
|
802
|
+
assert isinstance(worker_version, str | bool), (
|
|
803
|
+
"worker_version should be of type str or bool"
|
|
804
|
+
)
|
|
799
805
|
if isinstance(worker_version, bool):
|
|
800
|
-
assert (
|
|
801
|
-
worker_version
|
|
802
|
-
)
|
|
806
|
+
assert worker_version is False, (
|
|
807
|
+
"if of type bool, worker_version can only be set to False"
|
|
808
|
+
)
|
|
803
809
|
query_params["worker_version"] = worker_version
|
|
804
810
|
if worker_run is not None:
|
|
805
|
-
assert isinstance(
|
|
806
|
-
worker_run
|
|
807
|
-
)
|
|
811
|
+
assert isinstance(worker_run, str | bool), (
|
|
812
|
+
"worker_run should be of type str or bool"
|
|
813
|
+
)
|
|
808
814
|
if isinstance(worker_run, bool):
|
|
809
|
-
assert (
|
|
810
|
-
worker_run
|
|
811
|
-
)
|
|
815
|
+
assert worker_run is False, (
|
|
816
|
+
"if of type bool, worker_run can only be set to False"
|
|
817
|
+
)
|
|
812
818
|
query_params["worker_run"] = worker_run
|
|
813
819
|
|
|
814
820
|
if not self.use_cache:
|
|
@@ -817,14 +823,13 @@ class ElementMixin:
|
|
|
817
823
|
)
|
|
818
824
|
|
|
819
825
|
# Checking that we only received query_params handled by the cache
|
|
820
|
-
assert (
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
), "When using the local cache, you can only filter by 'type' and/or 'worker_version' and/or 'worker_run'"
|
|
826
|
+
assert set(query_params.keys()) <= {
|
|
827
|
+
"type",
|
|
828
|
+
"worker_version",
|
|
829
|
+
"worker_run",
|
|
830
|
+
}, (
|
|
831
|
+
"When using the local cache, you can only filter by 'type' and/or 'worker_version' and/or 'worker_run'"
|
|
832
|
+
)
|
|
828
833
|
|
|
829
834
|
query = CachedElement.select().where(CachedElement.parent_id == element.id)
|
|
830
835
|
if type:
|
|
@@ -906,9 +911,9 @@ class ElementMixin:
|
|
|
906
911
|
:return: An iterable of dicts from the ``ListElementParents`` API endpoint,
|
|
907
912
|
or an iterable of [CachedElement][arkindex_worker.cache.CachedElement] when caching is enabled.
|
|
908
913
|
"""
|
|
909
|
-
assert element and isinstance(
|
|
910
|
-
element
|
|
911
|
-
)
|
|
914
|
+
assert element and isinstance(element, Element | CachedElement), (
|
|
915
|
+
"element shouldn't be null and should be an Element or CachedElement"
|
|
916
|
+
)
|
|
912
917
|
query_params = {}
|
|
913
918
|
if folder is not None:
|
|
914
919
|
assert isinstance(folder, bool), "folder should be of type bool"
|
|
@@ -925,22 +930,22 @@ class ElementMixin:
|
|
|
925
930
|
DeprecationWarning,
|
|
926
931
|
stacklevel=1,
|
|
927
932
|
)
|
|
928
|
-
assert isinstance(
|
|
929
|
-
transcription_worker_version
|
|
930
|
-
)
|
|
933
|
+
assert isinstance(transcription_worker_version, str | bool), (
|
|
934
|
+
"transcription_worker_version should be of type str or bool"
|
|
935
|
+
)
|
|
931
936
|
if isinstance(transcription_worker_version, bool):
|
|
932
|
-
assert (
|
|
933
|
-
transcription_worker_version
|
|
934
|
-
)
|
|
937
|
+
assert transcription_worker_version is False, (
|
|
938
|
+
"if of type bool, transcription_worker_version can only be set to False"
|
|
939
|
+
)
|
|
935
940
|
query_params["transcription_worker_version"] = transcription_worker_version
|
|
936
941
|
if transcription_worker_run is not None:
|
|
937
|
-
assert isinstance(
|
|
938
|
-
transcription_worker_run
|
|
939
|
-
)
|
|
942
|
+
assert isinstance(transcription_worker_run, str | bool), (
|
|
943
|
+
"transcription_worker_run should be of type str or bool"
|
|
944
|
+
)
|
|
940
945
|
if isinstance(transcription_worker_run, bool):
|
|
941
|
-
assert (
|
|
942
|
-
transcription_worker_run
|
|
943
|
-
)
|
|
946
|
+
assert transcription_worker_run is False, (
|
|
947
|
+
"if of type bool, transcription_worker_run can only be set to False"
|
|
948
|
+
)
|
|
944
949
|
query_params["transcription_worker_run"] = transcription_worker_run
|
|
945
950
|
if type:
|
|
946
951
|
assert isinstance(type, str), "type should be of type str"
|
|
@@ -952,14 +957,14 @@ class ElementMixin:
|
|
|
952
957
|
assert isinstance(with_corpus, bool), "with_corpus should be of type bool"
|
|
953
958
|
query_params["with_corpus"] = with_corpus
|
|
954
959
|
if with_has_children is not None:
|
|
955
|
-
assert isinstance(
|
|
956
|
-
with_has_children
|
|
957
|
-
)
|
|
960
|
+
assert isinstance(with_has_children, bool), (
|
|
961
|
+
"with_has_children should be of type bool"
|
|
962
|
+
)
|
|
958
963
|
query_params["with_has_children"] = with_has_children
|
|
959
964
|
if with_metadata is not None:
|
|
960
|
-
assert isinstance(
|
|
961
|
-
with_metadata
|
|
962
|
-
)
|
|
965
|
+
assert isinstance(with_metadata, bool), (
|
|
966
|
+
"with_metadata should be of type bool"
|
|
967
|
+
)
|
|
963
968
|
query_params["with_metadata"] = with_metadata
|
|
964
969
|
if with_zone is not None:
|
|
965
970
|
assert isinstance(with_zone, bool), "with_zone should be of type bool"
|
|
@@ -970,22 +975,22 @@ class ElementMixin:
|
|
|
970
975
|
DeprecationWarning,
|
|
971
976
|
stacklevel=1,
|
|
972
977
|
)
|
|
973
|
-
assert isinstance(
|
|
974
|
-
worker_version
|
|
975
|
-
)
|
|
978
|
+
assert isinstance(worker_version, str | bool), (
|
|
979
|
+
"worker_version should be of type str or bool"
|
|
980
|
+
)
|
|
976
981
|
if isinstance(worker_version, bool):
|
|
977
|
-
assert (
|
|
978
|
-
worker_version
|
|
979
|
-
)
|
|
982
|
+
assert worker_version is False, (
|
|
983
|
+
"if of type bool, worker_version can only be set to False"
|
|
984
|
+
)
|
|
980
985
|
query_params["worker_version"] = worker_version
|
|
981
986
|
if worker_run is not None:
|
|
982
|
-
assert isinstance(
|
|
983
|
-
worker_run
|
|
984
|
-
)
|
|
987
|
+
assert isinstance(worker_run, str | bool), (
|
|
988
|
+
"worker_run should be of type str or bool"
|
|
989
|
+
)
|
|
985
990
|
if isinstance(worker_run, bool):
|
|
986
|
-
assert (
|
|
987
|
-
worker_run
|
|
988
|
-
)
|
|
991
|
+
assert worker_run is False, (
|
|
992
|
+
"if of type bool, worker_run can only be set to False"
|
|
993
|
+
)
|
|
989
994
|
query_params["worker_run"] = worker_run
|
|
990
995
|
|
|
991
996
|
if not self.use_cache:
|
|
@@ -994,14 +999,13 @@ class ElementMixin:
|
|
|
994
999
|
)
|
|
995
1000
|
|
|
996
1001
|
# Checking that we only received query_params handled by the cache
|
|
997
|
-
assert (
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
), "When using the local cache, you can only filter by 'type' and/or 'worker_version' and/or 'worker_run'"
|
|
1002
|
+
assert set(query_params.keys()) <= {
|
|
1003
|
+
"type",
|
|
1004
|
+
"worker_version",
|
|
1005
|
+
"worker_run",
|
|
1006
|
+
}, (
|
|
1007
|
+
"When using the local cache, you can only filter by 'type' and/or 'worker_version' and/or 'worker_run'"
|
|
1008
|
+
)
|
|
1005
1009
|
|
|
1006
1010
|
parent_ids = CachedElement.select(CachedElement.parent_id).where(
|
|
1007
1011
|
CachedElement.id == element.id
|