From cb1bf681dd2432cd8a405e48cbfce5b75d306673 Mon Sep 17 00:00:00 2001 From: Stefano Borini <sborini@enthought.com> Date: Tue, 25 Jul 2017 14:11:11 +0100 Subject: [PATCH] docs and trivial test for parameter factory registry --- .../mco/parameters/base_mco_parameter_factory.py | 15 +++++++++++++++ .../mco/parameters/i_mco_parameter_factory.py | 0 .../mco/parameters/parameter_factory_registry.py | 14 ++++++++++++-- .../tests/test_parameter_factory_registry.py | 10 ++++++++++ 4 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 force_bdss/mco/parameters/base_mco_parameter_factory.py create mode 100644 force_bdss/mco/parameters/i_mco_parameter_factory.py create mode 100644 force_bdss/mco/parameters/tests/test_parameter_factory_registry.py diff --git a/force_bdss/mco/parameters/base_mco_parameter_factory.py b/force_bdss/mco/parameters/base_mco_parameter_factory.py new file mode 100644 index 0000000..57f16ec --- /dev/null +++ b/force_bdss/mco/parameters/base_mco_parameter_factory.py @@ -0,0 +1,15 @@ +from traits.has_traits import HasStrictTraits +from traits.trait_types import String, Type + + +class BaseMCOParameterFactory(HasStrictTraits): + id = String() + name = String("Undefined parameter") + description = String("Undefined parameter") + model_class = Type('BaseMCOParameter') + + def create_model(self, data_values=None): + if data_values is None: + data_values = {} + + return self.model_class(factory=self, **data_values) diff --git a/force_bdss/mco/parameters/i_mco_parameter_factory.py b/force_bdss/mco/parameters/i_mco_parameter_factory.py new file mode 100644 index 0000000..e69de29 diff --git a/force_bdss/mco/parameters/parameter_factory_registry.py b/force_bdss/mco/parameters/parameter_factory_registry.py index 915cd0c..8bd180e 100644 --- a/force_bdss/mco/parameters/parameter_factory_registry.py +++ b/force_bdss/mco/parameters/parameter_factory_registry.py @@ -1,11 +1,21 @@ -from traits.api import HasStrictTraits, Dict +from traits.api import HasStrictTraits, Dict, String + +from force_bdss.mco.parameters.base_mco_parameter_factory import \ + BaseMCOParameterFactory class ParameterFactoryRegistry(HasStrictTraits): - factories = Dict() + """Registry to keep the parameter factories and lookup them. + """ + # Temp: this will become an extension point. + factories = Dict(String, BaseMCOParameterFactory) def get_factory_by_id(self, id): + """Finds the factory by its id, so that we can obtain it as from + the id in the model file. + """ return self.factories[id] def register(self, factory): + """Registers a new factory""" self.factories[factory.id] = factory diff --git a/force_bdss/mco/parameters/tests/test_parameter_factory_registry.py b/force_bdss/mco/parameters/tests/test_parameter_factory_registry.py new file mode 100644 index 0000000..39aca6b --- /dev/null +++ b/force_bdss/mco/parameters/tests/test_parameter_factory_registry.py @@ -0,0 +1,10 @@ +import unittest + +from force_bdss.mco.parameters.parameter_factory_registry import \ + ParameterFactoryRegistry + + +class TestParameterFactoryRegistry(unittest.TestCase): + def test_registry_init(self): + reg = ParameterFactoryRegistry() + self.assertEqual(reg.factories, {}) -- GitLab