Coverage for collectra/tasks/machine_learning/__init__.py: 42.86%

14 statements  

« prev     ^ index     » next       coverage.py v7.16.2, created at 2026-10-16 09:56 +0000

1"""Machine-learning task classes with lazy backend imports.""" 

2 

3from __future__ import annotations 

4 

5from importlib import import_module 

6 

7_EXPORTS = { 

8 "YOLOTask": "collectra.tasks.machine_learning.yolo", 

9 "ImageOrienter": "collectra.tasks.machine_learning.orienters", 

10} 

11 

12__all__ = sorted(_EXPORTS) 

13 

14 

15def __getattr__(name: str): 

16 try: 

17 module_name = _EXPORTS[name] 

18 except KeyError as error: 

19 raise AttributeError( 

20 f"module {__name__!r} has no attribute {name!r}" 

21 ) from error 

22 value = getattr(import_module(module_name), name) 

23 globals()[name] = value 

24 return value 

25 

26 

27def __dir__() -> list[str]: 

28 return sorted([*globals(), *__all__])