import logging from doit import get_var from ee.ds import DataSetManager def configure_logging(): log_level = get_var("log-level", None) if log_level: ee_logger = logging.getLogger("ee") formatter = logging.Formatter("%(levelname)s: %(message)s") ch = logging.StreamHandler() ch.setFormatter(formatter) ee_logger.addHandler(ch) ee_logger.setLevel(log_level) class DoItConfig(object): def __init__(self): self._dsm = None # type: DataSetManager self._data_sets = {} def configure(self, *, data_set_manager: DataSetManager): self._dsm = data_set_manager @property def dsm(self): if not self._dsm: raise Exception("The DataSetManager has not been set") return self._dsm def data_sets_for(self, task): try: return self._data_sets[task] except KeyError: raise KeyError("No such task registered in this module: {}".format(task)) def out_data_set_for(self, task): return self.data_sets_for(task)[0] def input_data_sets_for(self, task): return self.data_sets_for(task)[1] def set_data_sets_for(self, task, out_dataset: str, *in_datasets: str): self._data_sets[task] = [out_dataset, list(in_datasets)] def change_data_sets_for_task(self, task, _callable): ds = self._data_sets[task] ds[1] = _callable(ds[1]) def append_in_data_set_for_task(self, task, *data_sets: str): ds = self._data_sets[task] ds[1] = ds[1] + list(data_sets)