Source code for glotaran.io.reader

import pathlib

import xarray as xr

known_reading_formats = {}


[docs]def read_data_file(filename: str, fmt: str = None) -> xr.Dataset: path = pathlib.Path(filename) if fmt is None: fmt = path.suffix[1:] if path.suffix != "" else "nc" if fmt not in known_reading_formats: raise Exception( f"Unknown file format '{fmt}'." f"Supported formats are {list(known_reading_formats.keys())}" ) return known_reading_formats[fmt].read(filename)
[docs]class Reader: def __init__(self, extension, name, reader): self.extension = extension self.name = name or f" '.{extension}' format" self.read = reader
[docs]def file_reader(extension: str = None, name: str = None): def decorator(reader): known_reading_formats[extension] = Reader(extension, name, reader) return reader return decorator
file_reader(extension="nc", name="netCDF4")(xr.open_dataset)