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

Removed the old registry. We don't need it anymore

parent 2932e045
No related branches found
No related tags found
1 merge request!60Moved parameters into MCO
...@@ -6,8 +6,6 @@ from .bundle_registry_plugin import ( ...@@ -6,8 +6,6 @@ from .bundle_registry_plugin import (
BUNDLE_REGISTRY_PLUGIN_ID BUNDLE_REGISTRY_PLUGIN_ID
) )
from .io.workflow_reader import WorkflowReader from .io.workflow_reader import WorkflowReader
from .mco.parameters.mco_parameter_factory_registry import (
MCOParameterFactoryRegistry)
from .workspecs.workflow import Workflow from .workspecs.workflow import Workflow
...@@ -19,26 +17,13 @@ class BaseCoreDriver(Plugin): ...@@ -19,26 +17,13 @@ class BaseCoreDriver(Plugin):
#: The registry of the bundles. #: The registry of the bundles.
bundle_registry = Instance(BundleRegistryPlugin) bundle_registry = Instance(BundleRegistryPlugin)
#: The registry of the MCO parameters
parameter_factory_registry = Instance(MCOParameterFactoryRegistry)
#: Deserialized content of the workflow file. #: Deserialized content of the workflow file.
workflow = Instance(Workflow) workflow = Instance(Workflow)
def _bundle_registry_default(self): def _bundle_registry_default(self):
return self.application.get_plugin(BUNDLE_REGISTRY_PLUGIN_ID) return self.application.get_plugin(BUNDLE_REGISTRY_PLUGIN_ID)
def _parameter_factory_registry_default(self):
registry = MCOParameterFactoryRegistry()
for mco_bundle in self.bundle_registry.mco_bundles:
for factory in mco_bundle.parameter_factories():
registry.register(factory)
return registry
def _workflow_default(self): def _workflow_default(self):
reader = WorkflowReader(self.bundle_registry, reader = WorkflowReader(self.bundle_registry)
self.parameter_factory_registry)
with open(self.application.workflow_filepath) as f: with open(self.application.workflow_filepath) as f:
return reader.read(f) return reader.read(f)
...@@ -108,7 +108,26 @@ class BundleRegistryPlugin(Plugin): ...@@ -108,7 +108,26 @@ class BundleRegistryPlugin(Plugin):
raise ValueError("Requested MCO {} but don't know how " raise ValueError("Requested MCO {} but don't know how "
"to find it.".format(id)) "to find it.".format(id))
def mco_parameters_by_id(self, mco_id, parameter_id): def mco_parameter_factory_by_id(self, mco_id, parameter_id):
"""Retrieves the MCO parameter factory for a given MCO id and
parameter id.
Parameters
----------
mco_id: str
The MCO identifier string
parameter_id: str
the parameter identifier string
Returns
-------
An instance of BaseMCOParameterFactory.
Raises
------
ValueError:
if the entry is not found
"""
mco_bundle = self.mco_bundle_by_id(mco_id) mco_bundle = self.mco_bundle_by_id(mco_id)
for factory in mco_bundle.parameter_factories(): for factory in mco_bundle.parameter_factories():
......
...@@ -6,8 +6,6 @@ from force_bdss.bundle_registry_plugin import BundleRegistryPlugin ...@@ -6,8 +6,6 @@ from force_bdss.bundle_registry_plugin import BundleRegistryPlugin
from force_bdss.io.workflow_reader import ( from force_bdss.io.workflow_reader import (
WorkflowReader, WorkflowReader,
InvalidVersionException, InvalidFileException) InvalidVersionException, InvalidFileException)
from force_bdss.mco.parameters.mco_parameter_factory_registry import \
MCOParameterFactoryRegistry
try: try:
import mock import mock
...@@ -18,12 +16,8 @@ except ImportError: ...@@ -18,12 +16,8 @@ except ImportError:
class TestWorkflowReader(unittest.TestCase): class TestWorkflowReader(unittest.TestCase):
def setUp(self): def setUp(self):
self.mock_bundle_registry = mock.Mock(spec=BundleRegistryPlugin) self.mock_bundle_registry = mock.Mock(spec=BundleRegistryPlugin)
self.mock_mco_parameter_registry = mock.Mock(
spec=MCOParameterFactoryRegistry)
self.wfreader = WorkflowReader( self.wfreader = WorkflowReader(self.mock_bundle_registry)
self.mock_bundle_registry,
self.mock_mco_parameter_registry)
def test_initialization(self): def test_initialization(self):
self.assertEqual(self.wfreader.bundle_registry, self.assertEqual(self.wfreader.bundle_registry,
......
...@@ -7,8 +7,6 @@ from force_bdss.io.workflow_reader import WorkflowReader ...@@ -7,8 +7,6 @@ from force_bdss.io.workflow_reader import WorkflowReader
from force_bdss.mco.parameters.base_mco_parameter import BaseMCOParameter from force_bdss.mco.parameters.base_mco_parameter import BaseMCOParameter
from force_bdss.mco.parameters.base_mco_parameter_factory import \ from force_bdss.mco.parameters.base_mco_parameter_factory import \
BaseMCOParameterFactory BaseMCOParameterFactory
from force_bdss.mco.parameters.mco_parameter_factory_registry import \
MCOParameterFactoryRegistry
try: try:
import mock import mock
...@@ -37,9 +35,6 @@ class TestWorkflowWriter(unittest.TestCase): ...@@ -37,9 +35,6 @@ class TestWorkflowWriter(unittest.TestCase):
self.mock_registry.mco_bundle_by_id = mock.Mock( self.mock_registry.mco_bundle_by_id = mock.Mock(
return_value=mock_mco_bundle) return_value=mock_mco_bundle)
self.mock_mco_parameter_registry = mock.Mock(
spec=MCOParameterFactoryRegistry)
def test_write(self): def test_write(self):
wfwriter = WorkflowWriter() wfwriter = WorkflowWriter()
fp = StringIO() fp = StringIO()
...@@ -58,8 +53,7 @@ class TestWorkflowWriter(unittest.TestCase): ...@@ -58,8 +53,7 @@ class TestWorkflowWriter(unittest.TestCase):
wf = self._create_mock_workflow() wf = self._create_mock_workflow()
wfwriter.write(wf, fp) wfwriter.write(wf, fp)
fp.seek(0) fp.seek(0)
wfreader = WorkflowReader(self.mock_registry, wfreader = WorkflowReader(self.mock_registry)
self.mock_mco_parameter_registry)
wf_result = wfreader.read(fp) wf_result = wfreader.read(fp)
self.assertEqual(wf_result.mco.bundle.id, self.assertEqual(wf_result.mco.bundle.id,
wf.mco.bundle.id) wf.mco.bundle.id)
......
...@@ -3,8 +3,6 @@ import logging ...@@ -3,8 +3,6 @@ import logging
from traits.api import HasStrictTraits, Instance from traits.api import HasStrictTraits, Instance
from ..mco.parameters.mco_parameter_factory_registry import (
MCOParameterFactoryRegistry)
from ..bundle_registry_plugin import BundleRegistryPlugin from ..bundle_registry_plugin import BundleRegistryPlugin
from ..workspecs.workflow import Workflow from ..workspecs.workflow import Workflow
...@@ -28,13 +26,8 @@ class WorkflowReader(HasStrictTraits): ...@@ -28,13 +26,8 @@ class WorkflowReader(HasStrictTraits):
#: bundle-specific model objects. #: bundle-specific model objects.
bundle_registry = Instance(BundleRegistryPlugin) bundle_registry = Instance(BundleRegistryPlugin)
#: The registry for the MCO parameters. At the moment this
#: is not extensible via plugins as the one above.
mco_parameter_registry = Instance(MCOParameterFactoryRegistry)
def __init__(self, def __init__(self,
bundle_registry, bundle_registry,
mco_parameter_registry,
*args, *args,
**kwargs): **kwargs):
"""Initializes the reader. """Initializes the reader.
...@@ -46,7 +39,6 @@ class WorkflowReader(HasStrictTraits): ...@@ -46,7 +39,6 @@ class WorkflowReader(HasStrictTraits):
for a bundle identified by a given id. for a bundle identified by a given id.
""" """
self.bundle_registry = bundle_registry self.bundle_registry = bundle_registry
self.mco_parameter_registry = mco_parameter_registry
super(WorkflowReader, self).__init__(*args, **kwargs) super(WorkflowReader, self).__init__(*args, **kwargs)
...@@ -195,13 +187,13 @@ class WorkflowReader(HasStrictTraits): ...@@ -195,13 +187,13 @@ class WorkflowReader(HasStrictTraits):
------- -------
List of instances of a subclass of BaseMCOParameter List of instances of a subclass of BaseMCOParameter
""" """
registry = self.mco_parameter_registry registry = self.bundle_registry
parameters = [] parameters = []
for p in parameters_data: for p in parameters_data:
id = p["id"] id = p["id"]
factory = registry.get_factory_by_id(mco_id, id) factory = registry.mco_parameter_factory_by_id(mco_id, id)
model = factory.create_model(p["model_data"]) model = factory.create_model(p["model_data"])
parameters.append(model) parameters.append(model)
......
from traits.api import HasStrictTraits, Dict, Tuple, String
from force_bdss.mco.parameters.base_mco_parameter_factory import \
BaseMCOParameterFactory
class MCOParameterFactoryRegistry(HasStrictTraits):
"""Registry to keep the parameter factories and lookup them.
"""
# Temp: this will become an extension point.
factories = Dict(Tuple(String, String), BaseMCOParameterFactory)
def get_factory_by_id(self, bundle_id, parameter_factory_id):
"""Finds the factory by its id, so that we can obtain it as from
the id in the model file.
"""
return self.factories[(bundle_id, parameter_factory_id)]
def register(self, factory):
"""Registers a new factory"""
self.factories[(factory.bundle.id, factory.id)] = factory
import unittest
from force_bdss.mco.parameters.mco_parameter_factory_registry import \
MCOParameterFactoryRegistry
class TestParameterFactoryRegistry(unittest.TestCase):
def test_registry_init(self):
reg = MCOParameterFactoryRegistry()
self.assertEqual(reg.factories, {})
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