Source code for SciFiReaders.ingestor

"""
Utilities for automated ingestion of data and metadata from proprietary file formats
"""

from warnings import warn
from .readers import all_readers


[docs]def ingest(file_path): """ Extracts sidpy.Dataset objects from proprietary data files. The sidpy.Dataset object(s) would contain both raw data and metadata. More than one Dataset object could be returned from this function. Parameters ---------- file_path : str Path to raw data file Returns ------- list List of sidpy.Dataset objects """ valid_readers = [] for this_reader in all_readers: try: t = this_reader(file_path) except Exception: continue try: # TODO: This code should be absorbed into the constructor. That can fail anyway readable = t.can_read() except Exception: continue if readable: valid_readers.append(this_reader) # print('{} is a valid reader'.format(this_reader)) final_reader = valid_readers[0] if len(valid_readers) == 0: raise TypeError( "The automatic search for a suitable Reader was unsuccessful") elif len(valid_readers) > 1: warn("Multiple Reader s may be able to read your file." + "The {} will be applied.".format(valid_readers[-1]) + " Consider specifying 'force_translator'") final_reader = valid_readers[-1] try: extracted = final_reader(file_path).read() except Exception: return None return extracted