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

Merge branch 'master' into remove-kpi

parents 559aa1ea 1c9eb65f
No related branches found
No related tags found
1 merge request!120Allow KPIs to be specified as datasource outputs.
......@@ -19,10 +19,10 @@ force\_bdss\.core\.data\_value module
:undoc-members:
:show-inheritance:
force\_bdss\.core\.input\_slot\_map module
------------------------------------------
force\_bdss\.core\.input\_slot\_info module
-------------------------------------------
.. automodule:: force_bdss.core.input_slot_map
.. automodule:: force_bdss.core.input_slot_info
:members:
:undoc-members:
:show-inheritance:
......
......@@ -12,10 +12,10 @@ force\_bdss\.core\.tests\.test\_data\_value module
:undoc-members:
:show-inheritance:
force\_bdss\.core\.tests\.test\_input\_slot\_map module
-------------------------------------------------------
force\_bdss\.core\.tests\.test\_input\_slot\_info module
--------------------------------------------------------
.. automodule:: force_bdss.core.tests.test_input_slot_map
.. automodule:: force_bdss.core.tests.test_input_slot_info
:members:
:undoc-members:
:show-inheritance:
......
import unittest
from traits.api import TraitError
from force_bdss.core.input_slot_map import InputSlotInfo
from force_bdss.core.input_slot_info import InputSlotInfo
class TestDataValue(unittest.TestCase):
......
from traits.api import ABCHasStrictTraits, Instance, List, Event
from force_bdss.core.input_slot_map import InputSlotInfo
from force_bdss.core.input_slot_info import InputSlotInfo
from force_bdss.core.output_slot_info import OutputSlotInfo
from force_bdss.data_sources.i_data_source_factory import IDataSourceFactory
......
import unittest
from force_bdss.core.input_slot_map import InputSlotInfo
from force_bdss.core.input_slot_info import InputSlotInfo
from force_bdss.core.output_slot_info import OutputSlotInfo
try:
......
......@@ -3,7 +3,7 @@ import logging
from traits.api import HasStrictTraits, Instance
from force_bdss.core.input_slot_map import InputSlotInfo
from force_bdss.core.input_slot_info import InputSlotInfo
from force_bdss.core.output_slot_info import OutputSlotInfo
from force_bdss.core.workflow import Workflow
from ..factory_registry_plugin import IFactoryRegistryPlugin
......
from traits.api import ABCHasStrictTraits, Instance, List, Event
from force_bdss.core.output_slot_info import OutputSlotInfo
from ..core.input_slot_info import InputSlotInfo
from .i_kpi_calculator_factory import IKPICalculatorFactory
class BaseKPICalculatorModel(ABCHasStrictTraits):
"""Base class for the factory specific KPI calculator models.
This model will also provide, through traits/traitsui magic the View
that will appear in the workflow manager UI.
In your factory definition, your factory-specific model must reimplement
this class.
"""
#: A reference to the creating factory, so that we can
#: retrieve it as the originating factory.
factory = Instance(IKPICalculatorFactory, visible=False, transient=True)
#: Specifies binding between input slots and source for that value.
#: Each InputSlotMap instance specifies this information for each of the
#: slots.
input_slot_info = List(Instance(InputSlotInfo), visible=False)
#: Allows to assign names to the output slots, so that they can be
#: referenced somewhere else (e.g. the KPICalculators).
#: If the name is the empty string, it means that the user is not
#: interested in preserving the information, and should therefore be
#: discarded and not propagated further.
output_slot_info = List(Instance(OutputSlotInfo), visible=False)
#: This event claims that a change in the model influences the slots
#: (either input or output). It must be triggered every time a specific
#: option in your model implies a change in the slots. The UI will detect
#: this and adapt the visual entries.
changes_slots = Event()
def __init__(self, factory, *args, **kwargs):
self.factory = factory
super(BaseKPICalculatorModel, self).__init__(*args, **kwargs)
def __getstate__(self):
state = super(BaseKPICalculatorModel, self).__getstate__()
state["input_slot_info"] = [
x.__getstate__() for x in self.input_slot_info
]
state["output_slot_info"] = [
x.__getstate__() for x in self.output_slot_info
]
return state
import unittest
from force_bdss.core.input_slot_info import InputSlotInfo
from force_bdss.core.output_slot_info import OutputSlotInfo
from force_bdss.kpi.base_kpi_calculator_factory import BaseKPICalculatorFactory
from force_bdss.kpi.base_kpi_calculator_model import BaseKPICalculatorModel
try:
import mock
except ImportError:
from unittest import mock
class DummyKPICalculatorModel(BaseKPICalculatorModel):
pass
class TestBaseKPICalculatorModel(unittest.TestCase):
def test_getstate(self):
model = DummyKPICalculatorModel(
mock.Mock(spec=BaseKPICalculatorFactory))
self.assertEqual(
model.__getstate__(),
{
"__traits_version__": "4.6.0",
"input_slot_info": [],
"output_slot_info": []
})
model.input_slot_info = [
InputSlotInfo(name="foo"),
InputSlotInfo(name="bar")
]
model.output_slot_info = [
OutputSlotInfo(name="baz"),
OutputSlotInfo(name="quux")
]
self.assertEqual(
model.__getstate__(),
{
"__traits_version__": "4.6.0",
"input_slot_info": [
{
"__traits_version__": "4.6.0",
"source": "Environment",
"name": "foo"
},
{
"__traits_version__": "4.6.0",
"source": "Environment",
"name": "bar"
}
],
"output_slot_info": [
{
"__traits_version__": "4.6.0",
"name": "baz",
"kpi": False,
},
{
"__traits_version__": "4.6.0",
"name": "quux",
"kpi": False,
}
]
})
......@@ -12,7 +12,7 @@ from force_bdss.tests.probe_classes.data_source import ProbeDataSourceFactory
from force_bdss.tests.probe_classes.kpi_calculator import (
ProbeKPICalculatorFactory)
from force_bdss.core.input_slot_map import InputSlotInfo
from force_bdss.core.input_slot_info import InputSlotInfo
from force_bdss.core.data_value import DataValue
from force_bdss.core.slot import Slot
from force_bdss.tests import fixtures
......
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