Coverage for collectra/tasks/__init__.py: 42.86%
14 statements
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-16 09:56 +0000
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-16 09:56 +0000
1"""Task classes with lazy optional-backend imports."""
3from __future__ import annotations
5from importlib import import_module
7_EXPORTS = {
8 "Task": "collectra.tasks.base",
9 "TaskNode": "collectra.tasks.base",
10 "YOLOTask": "collectra.tasks.machine_learning.yolo",
11 "ObjectDetectionYOLO": "collectra.tasks.object_detection.yolo",
12 "ImageClassifierYOLO": "collectra.tasks.image_classifier.yolo",
13 "ImageClassifierTorchvision": "collectra.tasks.image_classifier.torchvision",
14 "ImageClassifierHuggingFace": "collectra.tasks.image_classifier.huggingface",
15 "ObjectDetectionDETR": "collectra.tasks.object_detection.detr",
16 "DetectionTrainResult": "collectra.tasks.object_detection.detr",
17 "ObjectDetectionRFDETR": "collectra.tasks.object_detection.rfdetr",
18 "ImageOrienter": "collectra.tasks.machine_learning.orienters",
19 "ImageSegmentationSam3": "collectra.tasks.image_segmentation.sam3",
20 "LLM": "collectra.tasks.llms",
21 "LLMCanonicaliser": "collectra.tasks.canonicalisers",
22 "IRNResolver": "collectra.tasks.irn_resolvers",
23 "normalise_column_name": "collectra.tasks.irn_resolvers",
24 "render_card": "collectra.tasks.irn_resolvers",
25 "OCRSuraya": "collectra.tasks.ocr",
26 "LineDetectorSurya": "collectra.tasks.ocr",
27 "LineDetectorRLSA": "collectra.tasks.line_detection",
28 "ConcatenateText": "collectra.tasks.text",
29}
31__all__ = sorted(_EXPORTS)
34def __getattr__(name: str):
35 try:
36 module_name = _EXPORTS[name]
37 except KeyError as error:
38 raise AttributeError(
39 f"module {__name__!r} has no attribute {name!r}"
40 ) from error
41 value = getattr(import_module(module_name), name)
42 globals()[name] = value
43 return value
46def __dir__() -> list[str]:
47 return sorted([*globals(), *__all__])