Source code for cdm_reader_mapper.core.reader

"""Common Data Model (CDM) DataBundle class."""

from __future__ import annotations
from collections.abc import Callable
from typing import Any, get_args

from cdm_reader_mapper.cdm_mapper.reader import read_tables
from cdm_reader_mapper.mdf_reader.reader import read_data, read_mdf

from ..properties import SupportedReadModes
from .databundle import DataBundle


supported_read_modes = get_args(SupportedReadModes)

READERS: dict[str, Callable[..., DataBundle]] = {
    "mdf": read_mdf,
    "data": read_data,
    "tables": read_tables,
}


[docs] def read( source: str, mode: SupportedReadModes = "mdf", **kwargs: Any, ) -> DataBundle: r""" Read either original marine-meteorological data or MDF data or CDM tables from disk. Parameters ---------- source : str Source of the input data. mode : str, {mdf, data, tables}, default: mdf Read data mode: * "mdf" to read original marine-meteorological data from disk and convert them to MDF data * "data" to read MDF data from disk * "tables" to read CDM tables from disk. Map MDF data to CDM tables with :py:func:`DataBundle.map_model`. \**kwargs : Any Additional keyword-arguments passed to reader function. Returns ------- DataBundle Containing read data as pd.DataFrame or Iterable of pd.DataFrames. See Also -------- read_mdf : Read original marine-meteorological data from disk. read_data : Read MDF data and validation mask from disk. read_tables : Read CDM tables from disk. write : Write either MDF data or CDM tables on disk. write_data : Write MDF data and validation mask to disk. write_tables : Write CDM tables to disk. Notes ----- `kwargs` are the keyword arguments for the specific `mode` reader. """ if mode not in supported_read_modes: raise ValueError(f"No valid mode: {mode}. Choose one of {supported_read_modes}.") return READERS[mode](source, **kwargs)