Source code for cdm_reader_mapper.core.reader
"""Common Data Model (CDM) DataBundle class."""
from __future__ import annotations
from typing import get_args
from cdm_reader_mapper.cdm_mapper.reader import read_tables
from cdm_reader_mapper.mdf_reader.reader import read_mdf, read_data
from .databundle import DataBundle
from ..properties import SupportedReadModes
supported_read_modes = get_args(SupportedReadModes)
READERS = {
"mdf": read_mdf,
"data": read_data,
"tables": read_tables,
}
[docs]
def read(
source: str,
mode: SupportedReadModes = "mdf",
**kwargs,
) -> DataBundle:
"""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`.
Returns
-------
DataBundle
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.
Note
----
`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)