refactor(worker): defer optional visualization imports
This commit is contained in:
@@ -1,5 +1,30 @@
|
||||
"""XGRIDS/LixelKity K1 compatibility plugin implementation."""
|
||||
|
||||
from .observation import build_xgrids_k1_observation, xgrids_k1_archive_source
|
||||
from importlib import import_module
|
||||
from typing import TYPE_CHECKING, Any, Final
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from .observation import build_xgrids_k1_observation, xgrids_k1_archive_source
|
||||
|
||||
__all__ = ["build_xgrids_k1_observation", "xgrids_k1_archive_source"]
|
||||
|
||||
_EXPORTS: Final = {
|
||||
"build_xgrids_k1_observation": ".observation",
|
||||
"xgrids_k1_archive_source": ".observation",
|
||||
}
|
||||
|
||||
if set(_EXPORTS) != set(__all__) or len(_EXPORTS) != len(__all__):
|
||||
raise RuntimeError("XGRIDS K1 lazy export table does not match __all__")
|
||||
|
||||
|
||||
def __getattr__(name: str) -> Any:
|
||||
module_name = _EXPORTS.get(name)
|
||||
if module_name is None:
|
||||
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
||||
value: Any = getattr(import_module(module_name, __name__), name)
|
||||
globals()[name] = value
|
||||
return value
|
||||
|
||||
|
||||
def __dir__() -> list[str]:
|
||||
return sorted({*globals(), *__all__})
|
||||
|
||||
@@ -1,33 +1,37 @@
|
||||
"""Bounded, offline analysis of sensitive K1 evidence artifacts."""
|
||||
|
||||
from k1link.device_plugins.xgrids_k1.analyze.calibrated_overlay import (
|
||||
CalibratedOverlayExperiment,
|
||||
CalibratedOverlayExperimentError,
|
||||
run_calibrated_overlay_experiment,
|
||||
)
|
||||
from k1link.device_plugins.xgrids_k1.analyze.calibrated_projection import (
|
||||
CalibratedProjectionError,
|
||||
Kb4ProjectionProfile,
|
||||
ProjectedPointCloud,
|
||||
depth_colors,
|
||||
map_points_to_lidar,
|
||||
project_map_points_kb4,
|
||||
quaternion_xyzw_to_rotation_matrix,
|
||||
unproject_pixels_kb4,
|
||||
)
|
||||
from k1link.device_plugins.xgrids_k1.analyze.stream_summary import (
|
||||
DEFAULT_STREAM_SUMMARY_MAX_PAYLOAD_BYTES,
|
||||
MAX_STREAM_SUMMARY_PAYLOAD_BYTES,
|
||||
StreamSummary,
|
||||
summarize_mqtt_streams,
|
||||
)
|
||||
from k1link.device_plugins.xgrids_k1.analyze.valid_fov import (
|
||||
DEFAULT_EDGE_MARGIN_PIXELS,
|
||||
K1ValidFovMask,
|
||||
K1ValidFovMaskError,
|
||||
prepare_k1_valid_fov_mask,
|
||||
validate_k1_valid_fov_mask,
|
||||
)
|
||||
from importlib import import_module
|
||||
from typing import TYPE_CHECKING, Any, Final
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from k1link.device_plugins.xgrids_k1.analyze.calibrated_overlay import (
|
||||
CalibratedOverlayExperiment,
|
||||
CalibratedOverlayExperimentError,
|
||||
run_calibrated_overlay_experiment,
|
||||
)
|
||||
from k1link.device_plugins.xgrids_k1.analyze.calibrated_projection import (
|
||||
CalibratedProjectionError,
|
||||
Kb4ProjectionProfile,
|
||||
ProjectedPointCloud,
|
||||
depth_colors,
|
||||
map_points_to_lidar,
|
||||
project_map_points_kb4,
|
||||
quaternion_xyzw_to_rotation_matrix,
|
||||
unproject_pixels_kb4,
|
||||
)
|
||||
from k1link.device_plugins.xgrids_k1.analyze.stream_summary import (
|
||||
DEFAULT_STREAM_SUMMARY_MAX_PAYLOAD_BYTES,
|
||||
MAX_STREAM_SUMMARY_PAYLOAD_BYTES,
|
||||
StreamSummary,
|
||||
summarize_mqtt_streams,
|
||||
)
|
||||
from k1link.device_plugins.xgrids_k1.analyze.valid_fov import (
|
||||
DEFAULT_EDGE_MARGIN_PIXELS,
|
||||
K1ValidFovMask,
|
||||
K1ValidFovMaskError,
|
||||
prepare_k1_valid_fov_mask,
|
||||
validate_k1_valid_fov_mask,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"CalibratedOverlayExperiment",
|
||||
@@ -51,3 +55,62 @@ __all__ = [
|
||||
"unproject_pixels_kb4",
|
||||
"validate_k1_valid_fov_mask",
|
||||
]
|
||||
|
||||
_EXPORTS: Final = {
|
||||
**dict.fromkeys(
|
||||
(
|
||||
"CalibratedOverlayExperiment",
|
||||
"CalibratedOverlayExperimentError",
|
||||
"run_calibrated_overlay_experiment",
|
||||
),
|
||||
".calibrated_overlay",
|
||||
),
|
||||
**dict.fromkeys(
|
||||
(
|
||||
"CalibratedProjectionError",
|
||||
"Kb4ProjectionProfile",
|
||||
"ProjectedPointCloud",
|
||||
"depth_colors",
|
||||
"map_points_to_lidar",
|
||||
"project_map_points_kb4",
|
||||
"quaternion_xyzw_to_rotation_matrix",
|
||||
"unproject_pixels_kb4",
|
||||
),
|
||||
".calibrated_projection",
|
||||
),
|
||||
**dict.fromkeys(
|
||||
(
|
||||
"DEFAULT_STREAM_SUMMARY_MAX_PAYLOAD_BYTES",
|
||||
"MAX_STREAM_SUMMARY_PAYLOAD_BYTES",
|
||||
"StreamSummary",
|
||||
"summarize_mqtt_streams",
|
||||
),
|
||||
".stream_summary",
|
||||
),
|
||||
**dict.fromkeys(
|
||||
(
|
||||
"DEFAULT_EDGE_MARGIN_PIXELS",
|
||||
"K1ValidFovMask",
|
||||
"K1ValidFovMaskError",
|
||||
"prepare_k1_valid_fov_mask",
|
||||
"validate_k1_valid_fov_mask",
|
||||
),
|
||||
".valid_fov",
|
||||
),
|
||||
}
|
||||
|
||||
if set(_EXPORTS) != set(__all__) or len(_EXPORTS) != len(__all__):
|
||||
raise RuntimeError("XGRIDS K1 analysis lazy export table does not match __all__")
|
||||
|
||||
|
||||
def __getattr__(name: str) -> Any:
|
||||
module_name = _EXPORTS.get(name)
|
||||
if module_name is None:
|
||||
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
||||
value: Any = getattr(import_module(module_name, __name__), name)
|
||||
globals()[name] = value
|
||||
return value
|
||||
|
||||
|
||||
def __dir__() -> list[str]:
|
||||
return sorted({*globals(), *__all__})
|
||||
|
||||
Reference in New Issue
Block a user