Skip to content
Snippets Groups Projects
Commit e00c6233 authored by Stefano Borini's avatar Stefano Borini
Browse files

Added routine to generate ids

parent 949031fa
No related branches found
No related tags found
1 merge request!20Use ids instead of names in bundles.
{
"multi_criteria_optimizer": {
"id": "enthought.dakota",
"id": "force.bdss.bundles.enthought.dakota",
"model_data": {
"value_types": ["DUMMY"]
}
},
"data_sources": [
{
"id": "enthought.csv_extractor",
"id": "force.bdss.bundles.enthought.csv_extractor",
"model_data": {
"filename": "foo.csv",
"row": 3,
......@@ -16,7 +16,7 @@
}
},
{
"id": "enthought.csv_extractor",
"id": "force.bdss.bundles.enthought.csv_extractor",
"model_data": {
"filename": "foo.csv",
"row": 3,
......@@ -27,7 +27,7 @@
],
"kpi_calculators": [
{
"id": "enthought.kpi_adder",
"id": "force.bdss.bundles.enthought.kpi_adder",
"model_data": {
"cuba_type_in": "PRESSURE",
"cuba_type_out": "TOTAL_PRESSURE"
......
......@@ -2,6 +2,7 @@ from traits.api import provides, HasStrictTraits
from traits.trait_types import String
from force_bdss.data_sources.i_data_source_bundle import IDataSourceBundle
from force_bdss.id_generators import bundle_id
from .csv_extractor_model import CSVExtractorModel
from .csv_extractor_data_source import CSVExtractorDataSource
......@@ -9,7 +10,7 @@ from .csv_extractor_data_source import CSVExtractorDataSource
@provides(IDataSourceBundle)
class CSVExtractorBundle(HasStrictTraits):
id = String("enthought.csv_extractor")
id = String(bundle_id("enthought", "csv_extractor"))
def create_model(self, model_data=None):
if model_data is None:
......
......@@ -7,8 +7,6 @@ from .csv_extractor.csv_extractor_bundle import CSVExtractorBundle
class CSVExtractorPlugin(Plugin):
id = "force.bdss.plugins.enthought.csv_extractor"
data_sources = List(
IDataSourceBundle,
contributes_to='force.bdss.data_sources.bundles'
......
from traits.api import provides, HasStrictTraits
from traits.trait_types import String
from force_bdss.id_generators import bundle_id
from force_bdss.kpi.i_kpi_calculator_bundle import IKPICalculatorBundle
from .kpi_adder_model import KPIAdderModel
......@@ -9,7 +10,7 @@ from .kpi_adder_calculator import KPIAdderCalculator
@provides(IKPICalculatorBundle)
class KPIAdderBundle(HasStrictTraits):
id = String("enthought.kpi_adder")
id = String(bundle_id("enthought", "kpi_adder"))
def create_model(self, model_data=None):
if model_data is None:
......
......@@ -8,8 +8,6 @@ from .kpi_adder.kpi_adder_bundle import KPIAdderBundle
class TestKPICalculatorPlugin(Plugin):
id = "force.bdss.plugins.enthought.test_kpi_calculator_plugin"
kpi_calculators = List(
IKPICalculatorBundle,
contributes_to='force.bdss.kpi_calculators.bundles'
......
......@@ -3,6 +3,7 @@ from traits.trait_types import String
from force_bdss.core_plugins.test_mco.dakota.dakota_communicator import \
DakotaCommunicator
from force_bdss.id_generators import bundle_id
from force_bdss.mco.i_multi_criteria_optimizer_bundle import (
IMultiCriteriaOptimizerBundle)
......@@ -12,7 +13,7 @@ from .dakota_optimizer import DakotaOptimizer
@provides(IMultiCriteriaOptimizerBundle)
class DakotaBundle(HasStrictTraits):
id = String("enthought.dakota")
id = String(bundle_id("enthought", "dakota"))
def create_model(self, model_data=None):
if model_data is None:
......
......@@ -8,8 +8,6 @@ from .dakota.dakota_bundle import DakotaBundle
class MultiCriteriaOptimizersPlugin(Plugin):
id = "force.bdss.plugins.enthought.multi_criteria_optimizers_plugin"
multi_criteria_optimizers = List(
IMultiCriteriaOptimizerBundle,
contributes_to='force.bdss.mco.bundles'
......
......@@ -2,8 +2,13 @@ from traits.api import Interface, String
class IDataSourceBundle(Interface):
#: Unique identifier that identifies the bundle uniquely in the
#: universe of bundles. Create one with the function bundle_id()
id = String()
#: A human readable name of the bundle
name = String()
def create_data_source(self, application, model):
pass
......
import six
def bundle_id(producer, identifier):
"""Creates an id for the bundle.
Parameters
----------
producer: str
the company or research institute unique identifier (e.g. "enthought")
identifier: str
A unique identifier for the bundle. The producer has authority and
control over the uniqueness of this identifier.
Returns
-------
str: an identifier to be used in the bundle.
"""
def is_valid(entry):
return (
isinstance(entry, six.string_types) and
" " not in entry and
len(entry) != 0)
if not all(map(is_valid, [producer, identifier])):
raise ValueError("Invalid parameters specified.")
return "force.bdss.bundles.{}.{}".format(producer, identifier)
import unittest
from force_bdss.id_generators import bundle_id
class TestIdGenerators(unittest.TestCase):
def test_bundle_id(self):
self.assertEqual(bundle_id("foo", "bar"),
"force.bdss.bundles.foo.bar")
for bad_entry in ["", None, " ", "foo bar"]:
with self.assertRaises(ValueError):
bundle_id(bad_entry, "bar")
with self.assertRaises(ValueError):
bundle_id("foo", bad_entry)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment