Lazy import

This commit is contained in:
ck-zhang
2025-04-26 18:24:16 +08:00
parent 766123452a
commit fa94480456

View File

@@ -1,20 +1,34 @@
from ._version import __version__
from .gaze import GazeEstimator
from .filters import make_kalman
from importlib import metadata as _md
from .calibration import (
run_9_point_calibration,
run_5_point_calibration,
run_lissajous_calibration,
fine_tune_kalman_filter,
)
__version__: str = _md.version(__name__)
__all__ = [
"__version__",
"GazeEstimator",
"make_kalman",
"run_9_point_calibration",
"run_5_point_calibration",
"run_lissajous_calibration",
"fine_tune_kalman_filter",
]
_lazy_map = {
"GazeEstimator": ("eyetrax.gaze", "GazeEstimator"),
"make_kalman": ("eyetrax.filters", "make_kalman"),
"run_9_point_calibration": ("eyetrax.calibration", "run_9_point_calibration"),
"run_5_point_calibration": ("eyetrax.calibration", "run_5_point_calibration"),
"run_lissajous_calibration": ("eyetrax.calibration", "run_lissajous_calibration"),
"fine_tune_kalman_filter": ("eyetrax.calibration", "fine_tune_kalman_filter"),
}
def __getattr__(name: str):
try:
module_name, symbol = _lazy_map[name]
except KeyError:
raise AttributeError(name) from None
import importlib
module = importlib.import_module(module_name)
value = getattr(module, symbol)
globals()[name] = value
return value
def __dir__():
std_attrs = set(globals()) | {"__getattr__", "__dir__"}
return sorted(std_attrs | _lazy_map.keys())
__all__ = list(_lazy_map) + ["__version__"]