Source code for cdm_reader_mapper.core.writer

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

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

import pandas as pd

from cdm_reader_mapper.cdm_mapper.writer import write_tables
from cdm_reader_mapper.mdf_reader.writer import write_data

from ..properties import SupportedWriteModes


supported_write_modes = get_args(SupportedWriteModes)

WRITERS: dict[str, Callable[..., pd.DataFrame | Iterable[pd.DataFrame]]] = {
    "data": write_data,
    "tables": write_tables,
}


[docs] def write( data: pd.DataFrame | Iterable[pd.DataFrame], mode: SupportedWriteModes = "data", **kwargs: Any, ) -> None: r""" Write either MDF data or CDM tables on disk. Parameters ---------- data : pandas.DataFrame or Iterable[pd.DataFrame] Data to export. mode : str, {data, tables}, default: data Write data mode: * "data" to write MDF data to disk * "tables" to write CDM tables to disk. Map MDF data to CDM tables with :py:func:`DataBundle.map_model`. \**kwargs : Any Additional key-word arguments used to write `data` on disk. See Also -------- write_data : Write MDF data and validation mask to disk. write_tables: Write CDM tables to disk. read: Read either original marine-meteorological data or MDF data or CDM tables from disk. 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. Notes ----- `kwargs` are the keyword arguments for the specific `mode` reader. """ if mode not in supported_write_modes: raise ValueError(f"No valid mode: {mode}. Choose one of {supported_write_modes}.") WRITERS[mode](data, **kwargs)