# -*- coding: utf-8 -*-
#
# Copyright (C) 2020-2026 Matthias Klumpp <matthias@tenstral.net>
#
# Licensed under the GNU Lesser General Public License Version 3
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the license, or
# (at your option) any later version.
#
# This software is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this software.  If not, see <http://www.gnu.org/licenses/>.

import typing as T
import importlib

# Determine which loader is responsible for which file type.
DATA_LOADERS = {
    'csv': 'edlio.dataio.csvdata',
    'json': 'edlio.dataio.jsondata',
    'rhd': 'edlio.dataio.intan',
    'tsync': 'edlio.dataio.tsyncfile',
    'video': 'edlio.dataio.video',
    'zarr': 'edlio.dataio.zarr',
}


def load_dataio_module(what: str) -> T.Callable[..., T.Any]:
    path = DATA_LOADERS[what]
    mod = importlib.import_module(path)
    return T.cast(T.Callable[..., T.Any], mod.load_data)
