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:
BaseReaderBase 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}#
- 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:
BaseReaderBase 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}#
- 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:
ABCBase 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 optionallyextract_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'}#
- 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.
- mask_def: Dict[str, List[str]] = {'all': []}#
- meas_def: Dict[str, List[str]] = {'all': []}#
- 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] = []#