Coverage for collectra/__init__.py: 92.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"""Public Collectra API, loaded on first attribute access."""
3from __future__ import annotations
5from importlib import import_module
7_EXPORTS = {
8 "BaseEntity": "collectra.commons.base",
9 "Node": "collectra.commons.base",
10 "NodeStatus": "collectra.commons.base",
11 "TaskContext": "collectra.commons.base",
12 "T": "collectra.commons.base",
13 "Collectra": "collectra.pipelines.base",
14 "Task": "collectra.tasks.base",
15 "TaskNode": "collectra.tasks.base",
16 "YOLOTask": "collectra.tasks.machine_learning.yolo",
17 "ObjectDetectionYOLO": "collectra.tasks.object_detection.yolo",
18 "ImageClassifierYOLO": "collectra.tasks.image_classifier.yolo",
19 "ImageClassifierTorchvision": "collectra.tasks.image_classifier.torchvision",
20 "ImageClassifierHuggingFace": "collectra.tasks.image_classifier.huggingface",
21 "ObjectDetectionDETR": "collectra.tasks.object_detection.detr",
22 "DetectionTrainResult": "collectra.tasks.object_detection.detr",
23 "ObjectDetectionRFDETR": "collectra.tasks.object_detection.rfdetr",
24 "ImageOrienter": "collectra.tasks.machine_learning.orienters",
25 "ImageSegmentationSam3": "collectra.tasks.image_segmentation.sam3",
26 "LLM": "collectra.tasks.llms",
27 "LLMCanonicaliser": "collectra.tasks.canonicalisers",
28 "IRNResolver": "collectra.tasks.irn_resolvers",
29 "OCRSuraya": "collectra.tasks.ocr",
30 "LineDetectorSurya": "collectra.tasks.ocr",
31 "LineDetectorRLSA": "collectra.tasks.line_detection",
32 "ConcatenateText": "collectra.tasks.text",
33 "Artefact": "collectra.types.base",
34 "ArtefactNode": "collectra.types.base",
35 "Image": "collectra.types.images",
36 "ImageCrop": "collectra.types.images",
37 "ImageSegmentation": "collectra.types.images",
38 "Link": "collectra.types.links",
39 "Orientation": "collectra.types.images",
40 "Text": "collectra.types.texts",
41 "Editor": "collectra.editor.base",
42 "Evaluator": "collectra.evaluator.base",
43 "generate_evaluation_html": "collectra.evaluator.visualise",
44}
46__all__ = sorted(_EXPORTS)
49def __getattr__(name: str):
50 """Import public objects without eagerly importing optional ML backends."""
51 try:
52 module_name = _EXPORTS[name]
53 except KeyError as error:
54 raise AttributeError(
55 f"module {__name__!r} has no attribute {name!r}"
56 ) from error
57 value = getattr(import_module(module_name), name)
58 globals()[name] = value
59 return value
62def __dir__() -> list[str]:
63 return sorted([*globals(), *__all__])