import importlib __attributes = { 'OctreeRenderer': 'octree_renderer', 'GaussianRenderer': 'gaussian_render', 'MeshRenderer': 'mesh_renderer', } __submodules = [] __all__ = list(__attributes.keys()) + __submodules def __getattr__(name): if name not in globals(): if name in __attributes: module_name = __attributes[name] module = importlib.import_module(f".{module_name}", __name__) globals()[name] = getattr(module, name) elif name in __submodules: module = importlib.import_module(f".{name}", __name__) globals()[name] = module else: raise AttributeError(f"module {__name__} has no attribute {name}") return globals()[name] # For Pylance if __name__ == '__main__': from .octree_renderer import OctreeRenderer from .gaussian_render import GaussianRenderer from .mesh_renderer import MeshRenderer