aboutsummaryrefslogtreecommitdiff
path: root/src/ee/doit.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/ee/doit.py')
-rw-r--r--src/ee/doit.py46
1 files changed, 42 insertions, 4 deletions
diff --git a/src/ee/doit.py b/src/ee/doit.py
index a89fdf7..665f039 100644
--- a/src/ee/doit.py
+++ b/src/ee/doit.py
@@ -1,9 +1,12 @@
import logging
+from typing import Tuple, List, Mapping, Any
from doit import get_var
from ee.ds import DataSetManager
+logger = logging.getLogger(__name__)
+
def configure_logging():
log_level = get_var("log-level", None)
@@ -18,20 +21,55 @@ def configure_logging():
ee_logger.setLevel(log_level)
+class Report(object):
+ def __init__(self, task):
+ self.task = task
+
+
+class ReportCollection(object):
+ def __init__(self):
+ self._reports = [] # type: List[Report]
+
+ def add_report(self, report: Report):
+ self._reports.append(report)
+
+ @property
+ def reports(self) -> Tuple[Report]:
+ return tuple(self._reports)
+
+
+# This should probably be called "DoItModuleConfig" since it is used once per module. The module is responsible for
+# instantiating it.
class DoItConfig(object):
def __init__(self):
self._dsm = None # type: DataSetManager
+ self._report_collection = None # type: ReportCollection
+ self._extra_config = None # type: Mapping[str, Any]
self._data_sets = {}
+ self._reports = []
- def configure(self, *, data_set_manager: DataSetManager):
+ def configure(self, *, data_set_manager: DataSetManager, report_collection: ReportCollection = None,
+ extra_config: Mapping[str, Any] = None):
self._dsm = data_set_manager
+ self._report_collection = report_collection if report_collection is not None else {}
+ self._extra_config = extra_config
@property
- def dsm(self):
- if not self._dsm:
- raise Exception("The DataSetManager has not been set")
+ def dsm(self) -> DataSetManager:
+ if self._dsm is None:
+ raise Exception("The data set manager has not been set")
return self._dsm
+ @property
+ def report_collection(self):
+ if self._report_collection is None:
+ raise Exception("The report collection has not been set")
+ return self._report_collection
+
+ @property
+ def extra_config(self):
+ return self._extra_config
+
def data_sets_for(self, task):
try:
return self._data_sets[task]