From 13032164ccfb479b432c0a2e8085c09983349fea Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sun, 5 Aug 2018 21:16:54 +0200 Subject: o Starting on some code for building reports from the project. --- src/ee/doit.py | 46 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 42 insertions(+), 4 deletions(-) (limited to 'src/ee/doit.py') 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] -- cgit v1.2.3