eoio.readers.base module#

eoio.readers.base - base classes for eoio product readers

Design goals#

  • Keep import-time dependencies light (optional backends are imported lazily).

  • Provide a small, explicit reader contract suitable for thin orchestrator readers.

  • Use validated configuration dictionaries for subsetting and read-time options.

Reader contract#

Concrete readers must implement: - open_dataset() -> xarray.Dataset - extract_metadata() -> tuple[dict, dict] (if metadata is supported) - get_extension() -> str

Typical usage#

reader = SomeReader(path, vars_sel={…}, subset={…}, read_params={…}) ds = reader.open()

open() is the public entrypoint and handles optional metadata attachment.

class eoio.readers.base.BaseInSituReader(path: Path | str, vars_sel: Dict[str, Any] | None = None, subset: Dict[str, Any] | None = None, read_params: Dict[str, Any] | None = None)[source]#

Bases: BaseReader

Base Reader class for In Situ data

all_subset: Dict[str, Any] = {'angle': 'min/max/nearest/tolerance', 'datetime': 'min/max/nearest/tolerance_days/tolerance_hours/tolerance_minutes', 'time_of_day_utc': 'min/max/nearest/tolerance_hours/tolerance_minutes', 'wavelength': 'min/max/nearest/tolerance'}#
default_subset: Dict[str, Any] = {'angle': None, 'datetime': None, 'wavelength': None}#
abstractmethod static get_extension()[source]#
class eoio.readers.base.BaseRasterReader(path: Path | str, vars_sel: Dict[str, Any] | None = None, subset: Dict[str, Any] | None = None, read_params: Dict[str, Any] | None = None)[source]#

Bases: BaseReader

Base Reader class for raster imagery

all_subset: Dict[str, Any] = {'angle': 'min/max/nearest/tolerance', 'roi': 'TBD', 'roi_crs': 'str/int', 'wavelength': 'min/max/nearest/tolerance'}#
default_subset: Dict[str, Any] = {'angle': None, 'roi': None, 'roi_crs': 4326, 'wavelength': None}#
abstractmethod get_extension()[source]#
class eoio.readers.base.BaseReader(path: Path | str, vars_sel: Dict[str, Any] | None = None, subset: Dict[str, Any] | None = None, read_params: Dict[str, Any] | None = None)[source]#

Bases: ABC

Base class for EOIO readers.

This class is intentionally small. It owns: - path validation - config merge/validation - a single public entrypoint: open()

Concrete readers implement open_dataset() and optionally extract_metadata().

property all_options: Dict[str, Any]#

Return dictionary of available subsetting parameters.

Returns:

Dictionary of available subsetting parameters.

all_read_params = {'include_uncertainties': 'True/False', 'metadata_level': 'all/basic/None', 'save_extracted': 'True/False'}#
all_subset: Dict[str, Any] = {}#
aux_def: Dict[str, List[str]] = {'all': [], 'basic': []}#
default_read_params: Dict[str, Any] = {'include_uncertainties': False, 'metadata_level': 'all', 'save_extracted': False}#
default_subset: Dict[str, Any] = {}#
default_vars_sel = {'aux': None, 'mask': None, 'meas': 'all'}#
abstractmethod static get_extension() str[source]#
list_include_vars() List[str][source]#
list_selected_aux() List[str][source]#

List auxiliary variables to read based on provider user values or defaults.

list_selected_mask() List[str][source]#

List mask variables to read based on provider user values or defaults.

list_selected_meas() List[str][source]#

List measurement variables to read based on provider user values or defaults.

list_uncertainty_vars() List[str][source]#

List uncertainty variables to read based on defaults.

mask_def: Dict[str, List[str]] = {'all': []}#
meas_def: Dict[str, List[str]] = {'all': []}#
open() Dataset[source]#

Public entrypoint: open the product and return an xarray.Dataset.

abstractmethod open_dataset() Dataset[source]#

Read the product and return an xarray.Dataset.

resolve_subset(subset: Dict[str, Any] | None) Any[source]#

Resolve the subset variables to read based on provider user values or defaults.

Subclasses should implement their own version of this method.

resolved_vars_sel() dict[str, List[str]][source]#

List selected variables to read based on provider user values or defaults.

uncertainty_vars: List[str] = []#
class eoio.readers.base.ReaderConfig(vars_sel: Dict[str, Any], subset: Any, read_params: Dict[str, Any])[source]#

Bases: object

Normalised, validated configuration for a reader instance.

read_params: Dict[str, Any]#
subset: Any#
vars_sel: Dict[str, Any]#