2023-10-05 16:53:51 +02:00
|
|
|
import importlib.util
|
2023-10-09 08:32:43 +02:00
|
|
|
|
2023-10-05 16:53:51 +02:00
|
|
|
from ..utils.tools import get_class
|
2023-10-09 08:32:43 +02:00
|
|
|
from .base_dataset import BaseDataset
|
2023-10-05 16:53:51 +02:00
|
|
|
|
|
|
|
|
|
|
|
def get_dataset(name):
|
|
|
|
import_paths = [name, f"{__name__}.{name}"]
|
|
|
|
for path in import_paths:
|
|
|
|
try:
|
|
|
|
spec = importlib.util.find_spec(path)
|
|
|
|
except ModuleNotFoundError:
|
|
|
|
spec = None
|
|
|
|
if spec is not None:
|
|
|
|
try:
|
|
|
|
return get_class(path, BaseDataset)
|
|
|
|
except AssertionError:
|
|
|
|
mod = __import__(path, fromlist=[""])
|
|
|
|
try:
|
|
|
|
return mod.__main_dataset__
|
|
|
|
except AttributeError as exc:
|
|
|
|
print(exc)
|
|
|
|
continue
|
|
|
|
|
|
|
|
raise RuntimeError(f'Dataset {name} not found in any of [{" ".join(import_paths)}]')
|