import importlib __attributes = { 'Mesh': 'mesh', 'Voxel': 'voxel', 'MeshWithVoxel': 'mesh', 'MeshWithPbrMaterial': 'mesh', } __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 .mesh import Mesh, MeshWithVoxel, MeshWithPbrMaterial from .voxel import Voxel