Source code for eradiate.data._access

from __future__ import annotations

from contextlib import contextmanager

import xarray as xr

from ..typing import PathLike


[docs]def open_dataset(filename: PathLike, **kwargs) -> xr.Dataset: """ Open a dataset from the online data store (requires Internet access). Parameters ---------- filename : path-like Path to the requested dataset, relative to the data store root. **kwargs Forwarded to :func:`xarray.open_dataset`. Returns ------- Dataset Open dataset, if found in the data store. See Also -------- xarray.open_dataset """ from ._store import data_store filename = data_store.fetch(filename) return xr.open_dataset(filename, **kwargs)
[docs]def load_dataset(*args, **kwargs) -> xr.Dataset: """ Open, load into memory, and close a dataset from the online data store (requires Internet access). See Also -------- open_dataset """ with open_dataset(*args, **kwargs) as ds: return ds.load()
@contextmanager def open_datasets(paths): try: datasets = [open_dataset(path) for path in paths] yield datasets finally: for ds in datasets: ds.close()