From 949031fa311e93ac478883098d6c53027069440a Mon Sep 17 00:00:00 2001
From: Stefano Borini <sborini@enthought.com>
Date: Wed, 19 Jul 2017 10:39:43 +0100
Subject: [PATCH] Changed name to id

---
 force_bdss/base_core_driver.py                | 18 +++++------
 force_bdss/cli/force_bdss.py                  |  3 +-
 force_bdss/cli/tests/__init__.py              |  0
 .../cli/tests/fixtures}/foo.csv               |  0
 .../cli/tests/fixtures}/test_csv.json         |  8 ++---
 force_bdss/cli/tests/test_execution.py        | 31 +++++++++++++++++++
 force_bdss/core_evaluation_driver.py          | 10 +++---
 force_bdss/core_mco_driver.py                 |  2 +-
 .../csv_extractor/csv_extractor_bundle.py     |  2 +-
 .../csv_extractor/csv_extractor_plugin.py     |  2 +-
 .../test_kpi/kpi_adder/kpi_adder_bundle.py    |  2 +-
 .../test_kpi/test_kpi_calculator_plugin.py    |  2 +-
 .../test_mco/dakota/dakota_bundle.py          |  2 +-
 .../multi_criteria_optimizers_plugin.py       |  2 +-
 .../data_sources/i_data_source_bundle.py      |  2 +-
 force_bdss/kpi/i_kpi_calculator_bundle.py     |  2 +-
 .../mco/i_multi_criteria_optimizer_bundle.py  |  2 +-
 force_bdss/tests/__init__.py                  |  0
 force_bdss/workspecs/data_source.py           |  7 ++---
 force_bdss/workspecs/kpi_calculator.py        |  7 ++---
 .../workspecs/multi_criteria_optimizer.py     |  4 +--
 21 files changed, 69 insertions(+), 39 deletions(-)
 create mode 100644 force_bdss/cli/tests/__init__.py
 rename {examples => force_bdss/cli/tests/fixtures}/foo.csv (100%)
 rename {examples => force_bdss/cli/tests/fixtures}/test_csv.json (79%)
 create mode 100644 force_bdss/cli/tests/test_execution.py
 create mode 100644 force_bdss/tests/__init__.py

diff --git a/force_bdss/base_core_driver.py b/force_bdss/base_core_driver.py
index 7f0fa6d..b3c2702 100644
--- a/force_bdss/base_core_driver.py
+++ b/force_bdss/base_core_driver.py
@@ -37,27 +37,27 @@ class BaseCoreDriver(Plugin):
         List(IKPICalculatorBundle),
         id='force.bdss.kpi_calculators.bundles')
 
-    def _data_source_bundle_by_name(self, name):
+    def _data_source_bundle_by_id(self, id):
         for ds in self.data_source_bundles:
-            if ds.name == name:
+            if ds.id == id:
                 return ds
 
         raise Exception("Requested data source {} but don't know "
-                        "to find it.".format(name))
+                        "to find it.".format(id))
 
-    def _kpi_calculator_bundle_by_name(self, name):
+    def _kpi_calculator_bundle_by_id(self, id):
         for kpic in self.kpi_calculator_bundles:
-            if kpic.name == name:
+            if kpic.id == id:
                 return kpic
 
         raise Exception(
             "Requested kpi calculator {} but don't know "
-            "to find it.".format(name))
+            "to find it.".format(id))
 
-    def _mco_bundle_by_name(self, name):
+    def _mco_bundle_by_id(self, id):
         for mco in self.mco_bundles:
-            if mco.name == name:
+            if mco.id == id:
                 return mco
 
         raise Exception("Requested MCO {} but it's not available"
-                        "to compute it.".format(name))
+                        "to compute it.".format(id))
diff --git a/force_bdss/cli/force_bdss.py b/force_bdss/cli/force_bdss.py
index 3280750..f4d9505 100644
--- a/force_bdss/cli/force_bdss.py
+++ b/force_bdss/cli/force_bdss.py
@@ -1,7 +1,8 @@
 import click
 
 from ..bdss_application import BDSSApplication
-
+from traits.api import push_exception_handler
+push_exception_handler(reraise_exceptions=True)
 
 @click.command()
 @click.option("--evaluate", is_flag=True)
diff --git a/force_bdss/cli/tests/__init__.py b/force_bdss/cli/tests/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/examples/foo.csv b/force_bdss/cli/tests/fixtures/foo.csv
similarity index 100%
rename from examples/foo.csv
rename to force_bdss/cli/tests/fixtures/foo.csv
diff --git a/examples/test_csv.json b/force_bdss/cli/tests/fixtures/test_csv.json
similarity index 79%
rename from examples/test_csv.json
rename to force_bdss/cli/tests/fixtures/test_csv.json
index 0fe5048..119ac8c 100644
--- a/examples/test_csv.json
+++ b/force_bdss/cli/tests/fixtures/test_csv.json
@@ -1,13 +1,13 @@
 {
   "multi_criteria_optimizer": {
-    "name": "dakota",
+    "id": "enthought.dakota",
     "model_data": {
       "value_types": ["DUMMY"]
     }
   },
   "data_sources": [
     {
-      "name": "csv_extractor",
+      "id": "enthought.csv_extractor",
       "model_data": {
         "filename": "foo.csv",
         "row": 3,
@@ -16,7 +16,7 @@
       }
     },
     {
-      "name": "csv_extractor",
+      "id": "enthought.csv_extractor",
       "model_data": {
         "filename": "foo.csv",
         "row": 3,
@@ -27,7 +27,7 @@
   ],
   "kpi_calculators": [
     {
-      "name": "kpi_adder",
+      "id": "enthought.kpi_adder",
       "model_data": {
         "cuba_type_in": "PRESSURE",
         "cuba_type_out": "TOTAL_PRESSURE"
diff --git a/force_bdss/cli/tests/test_execution.py b/force_bdss/cli/tests/test_execution.py
new file mode 100644
index 0000000..3e4d28d
--- /dev/null
+++ b/force_bdss/cli/tests/test_execution.py
@@ -0,0 +1,31 @@
+import unittest
+import subprocess
+import os
+from contextlib import contextmanager
+
+
+@contextmanager
+def cd(dir):
+    cwd = os.curdir
+    os.chdir(dir)
+    try:
+        yield
+    finally:
+        os.chdir(cwd)
+
+
+def fixture_dir():
+    return os.path.join(
+        os.path.dirname(os.path.abspath(__file__)),
+        "fixtures")
+
+
+class TestExecution(unittest.TestCase):
+    def test_plain_invocation_mco(self):
+        with cd(fixture_dir()):
+            out = subprocess.check_call(["force_bdss", "test_csv.json"])
+            self.assertEqual(out, 0)
+
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/force_bdss/core_evaluation_driver.py b/force_bdss/core_evaluation_driver.py
index 831c539..bf6c848 100644
--- a/force_bdss/core_evaluation_driver.py
+++ b/force_bdss/core_evaluation_driver.py
@@ -13,7 +13,7 @@ class CoreEvaluationDriver(BaseCoreDriver):
         workflow = self.application.workflow
 
         mco_data = workflow.multi_criteria_optimizer
-        mco_bundle = self._mco_bundle_by_name(mco_data.name)
+        mco_bundle = self._mco_bundle_by_id(mco_data.id)
         mco_model = mco_bundle.create_model(mco_data.model_data)
         mco_communicator = mco_bundle.create_communicator(
             self.application,
@@ -23,8 +23,8 @@ class CoreEvaluationDriver(BaseCoreDriver):
 
         ds_results = []
         for requested_ds in workflow.data_sources:
-            ds_bundle = self._data_source_bundle_by_name(
-                requested_ds.name)
+            ds_bundle = self._data_source_bundle_by_id(
+                requested_ds.id)
             ds_model = ds_bundle.create_model(requested_ds.model_data)
             data_source = ds_bundle.create_data_source(
                 self.application, ds_model)
@@ -32,8 +32,8 @@ class CoreEvaluationDriver(BaseCoreDriver):
 
         kpi_results = []
         for requested_kpic in workflow.kpi_calculators:
-            kpic_bundle = self._kpi_calculator_bundle_by_name(
-                requested_kpic.name)
+            kpic_bundle = self._kpi_calculator_bundle_by_id(
+                requested_kpic.id)
             ds_model = kpic_bundle.create_model(
                 requested_kpic.model_data)
             kpi_calculator = kpic_bundle.create_data_source(
diff --git a/force_bdss/core_mco_driver.py b/force_bdss/core_mco_driver.py
index cc296da..f1cb9b4 100644
--- a/force_bdss/core_mco_driver.py
+++ b/force_bdss/core_mco_driver.py
@@ -13,7 +13,7 @@ class CoreMCODriver(BaseCoreDriver):
         workflow = self.application.workflow
 
         mco_data = workflow.multi_criteria_optimizer
-        mco_bundle = self._mco_bundle_by_name(mco_data.name)
+        mco_bundle = self._mco_bundle_by_id(mco_data.id)
         mco_model = mco_bundle.create_model(mco_data.model_data)
         mco = mco_bundle.create_optimizer(self.application, mco_model)
 
diff --git a/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_bundle.py b/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_bundle.py
index b0a2e47..46b6951 100644
--- a/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_bundle.py
+++ b/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_bundle.py
@@ -9,7 +9,7 @@ from .csv_extractor_data_source import CSVExtractorDataSource
 
 @provides(IDataSourceBundle)
 class CSVExtractorBundle(HasStrictTraits):
-    name = String("csv_extractor")
+    id = String("enthought.csv_extractor")
 
     def create_model(self, model_data=None):
         if model_data is None:
diff --git a/force_bdss/core_plugins/csv_extractor/csv_extractor_plugin.py b/force_bdss/core_plugins/csv_extractor/csv_extractor_plugin.py
index 8f10341..2542045 100644
--- a/force_bdss/core_plugins/csv_extractor/csv_extractor_plugin.py
+++ b/force_bdss/core_plugins/csv_extractor/csv_extractor_plugin.py
@@ -7,7 +7,7 @@ from .csv_extractor.csv_extractor_bundle import CSVExtractorBundle
 
 
 class CSVExtractorPlugin(Plugin):
-    id = "force.bdss.data_sources.csv_extractor"
+    id = "force.bdss.plugins.enthought.csv_extractor"
 
     data_sources = List(
         IDataSourceBundle,
diff --git a/force_bdss/core_plugins/test_kpi/kpi_adder/kpi_adder_bundle.py b/force_bdss/core_plugins/test_kpi/kpi_adder/kpi_adder_bundle.py
index 336cb37..36fc9ac 100644
--- a/force_bdss/core_plugins/test_kpi/kpi_adder/kpi_adder_bundle.py
+++ b/force_bdss/core_plugins/test_kpi/kpi_adder/kpi_adder_bundle.py
@@ -9,7 +9,7 @@ from .kpi_adder_calculator import KPIAdderCalculator
 
 @provides(IKPICalculatorBundle)
 class KPIAdderBundle(HasStrictTraits):
-    name = String("kpi_adder")
+    id = String("enthought.kpi_adder")
 
     def create_model(self, model_data=None):
         if model_data is None:
diff --git a/force_bdss/core_plugins/test_kpi/test_kpi_calculator_plugin.py b/force_bdss/core_plugins/test_kpi/test_kpi_calculator_plugin.py
index 3be48fb..8e0d43a 100644
--- a/force_bdss/core_plugins/test_kpi/test_kpi_calculator_plugin.py
+++ b/force_bdss/core_plugins/test_kpi/test_kpi_calculator_plugin.py
@@ -8,7 +8,7 @@ from .kpi_adder.kpi_adder_bundle import KPIAdderBundle
 
 
 class TestKPICalculatorPlugin(Plugin):
-    id = "force.bdss.kpi_calculators.test_kpi_calculator_plugin"
+    id = "force.bdss.plugins.enthought.test_kpi_calculator_plugin"
 
     kpi_calculators = List(
         IKPICalculatorBundle,
diff --git a/force_bdss/core_plugins/test_mco/dakota/dakota_bundle.py b/force_bdss/core_plugins/test_mco/dakota/dakota_bundle.py
index 3d53474..7983245 100644
--- a/force_bdss/core_plugins/test_mco/dakota/dakota_bundle.py
+++ b/force_bdss/core_plugins/test_mco/dakota/dakota_bundle.py
@@ -12,7 +12,7 @@ from .dakota_optimizer import DakotaOptimizer
 
 @provides(IMultiCriteriaOptimizerBundle)
 class DakotaBundle(HasStrictTraits):
-    name = String("dakota")
+    id = String("enthought.dakota")
 
     def create_model(self, model_data=None):
         if model_data is None:
diff --git a/force_bdss/core_plugins/test_mco/multi_criteria_optimizers_plugin.py b/force_bdss/core_plugins/test_mco/multi_criteria_optimizers_plugin.py
index a71da01..9a4eb11 100644
--- a/force_bdss/core_plugins/test_mco/multi_criteria_optimizers_plugin.py
+++ b/force_bdss/core_plugins/test_mco/multi_criteria_optimizers_plugin.py
@@ -8,7 +8,7 @@ from .dakota.dakota_bundle import DakotaBundle
 
 
 class MultiCriteriaOptimizersPlugin(Plugin):
-    id = "force.bdss.mco.plugins.multi_criteria_optimizers_plugin"
+    id = "force.bdss.plugins.enthought.multi_criteria_optimizers_plugin"
 
     multi_criteria_optimizers = List(
         IMultiCriteriaOptimizerBundle,
diff --git a/force_bdss/data_sources/i_data_source_bundle.py b/force_bdss/data_sources/i_data_source_bundle.py
index 5db54c8..085b2ca 100644
--- a/force_bdss/data_sources/i_data_source_bundle.py
+++ b/force_bdss/data_sources/i_data_source_bundle.py
@@ -2,7 +2,7 @@ from traits.api import Interface, String
 
 
 class IDataSourceBundle(Interface):
-    name = String()
+    id = String()
 
     def create_data_source(self, application, model):
         pass
diff --git a/force_bdss/kpi/i_kpi_calculator_bundle.py b/force_bdss/kpi/i_kpi_calculator_bundle.py
index 42f780e..d4e8992 100644
--- a/force_bdss/kpi/i_kpi_calculator_bundle.py
+++ b/force_bdss/kpi/i_kpi_calculator_bundle.py
@@ -2,7 +2,7 @@ from traits.api import Interface, String
 
 
 class IKPICalculatorBundle(Interface):
-    name = String()
+    id = String()
 
     def create_kpi_calculator(self, application, model):
         pass
diff --git a/force_bdss/mco/i_multi_criteria_optimizer_bundle.py b/force_bdss/mco/i_multi_criteria_optimizer_bundle.py
index 69fe7a7..cb42229 100644
--- a/force_bdss/mco/i_multi_criteria_optimizer_bundle.py
+++ b/force_bdss/mco/i_multi_criteria_optimizer_bundle.py
@@ -2,7 +2,7 @@ from traits.api import Interface, String
 
 
 class IMultiCriteriaOptimizerBundle(Interface):
-    name = String()
+    id = String()
 
     def create_optimizer(self, application, model):
         pass
diff --git a/force_bdss/tests/__init__.py b/force_bdss/tests/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/force_bdss/workspecs/data_source.py b/force_bdss/workspecs/data_source.py
index 944e41c..bad5752 100644
--- a/force_bdss/workspecs/data_source.py
+++ b/force_bdss/workspecs/data_source.py
@@ -1,15 +1,14 @@
-from traits.has_traits import HasStrictTraits
-from traits.trait_types import String, Dict
+from traits.api import HasStrictTraits, String, Dict
 
 
 class DataSource(HasStrictTraits):
-    name = String()
+    id = String()
     model_data = Dict()
 
     @classmethod
     def from_json(cls, json_data):
         self = cls(
-            name=json_data["name"],
+            id=json_data["id"],
             model_data=json_data["model_data"]
         )
 
diff --git a/force_bdss/workspecs/kpi_calculator.py b/force_bdss/workspecs/kpi_calculator.py
index ec41bbf..b806625 100644
--- a/force_bdss/workspecs/kpi_calculator.py
+++ b/force_bdss/workspecs/kpi_calculator.py
@@ -1,15 +1,14 @@
-from traits.has_traits import HasStrictTraits
-from traits.trait_types import String, Dict
+from traits.api import HasStrictTraits, String, Dict
 
 
 class KPICalculator(HasStrictTraits):
-    name = String()
+    id = String()
     model_data = Dict()
 
     @classmethod
     def from_json(cls, json_data):
         self = cls(
-            name=json_data["name"],
+            id=json_data["id"],
             model_data=json_data["model_data"]
         )
 
diff --git a/force_bdss/workspecs/multi_criteria_optimizer.py b/force_bdss/workspecs/multi_criteria_optimizer.py
index 72a2fa6..efa4bfd 100644
--- a/force_bdss/workspecs/multi_criteria_optimizer.py
+++ b/force_bdss/workspecs/multi_criteria_optimizer.py
@@ -2,13 +2,13 @@ from traits.api import HasStrictTraits, String, Dict
 
 
 class MultiCriteriaOptimizer(HasStrictTraits):
-    name = String()
+    id = String()
     model_data = Dict()
 
     @classmethod
     def from_json(cls, json_data):
         self = cls(
-            name=json_data["name"],
+            id=json_data["id"],
             model_data=json_data["model_data"]
         )
 
-- 
GitLab