Source code for ewoksfluo.tests.tutorials.assert_results
from typing import Any
from typing import Dict
from typing import List
from typing import Tuple
try:
from importlib.resources import files as resource_files
except ImportError:
from importlib_resources import files as resource_files
from ewokscore import execute_graph
from ewoksorange.gui.workflows.owscheme import ows_to_ewoks
from ..utils import hdf5
[docs]
def assert_without_qt(
basename: str,
inputs: List[Dict[str, Any]],
expected_outputs: Dict[str, Dict[str, Any]],
expected_hdf5: Tuple[str, Dict[str, Any]],
) -> None:
"""Execute workflow after converting it to an ewoks workflow"""
from orangecontrib.ewoksfluo.categories.demo import tutorials
filename = resource_files(tutorials).joinpath(basename)
graph = ows_to_ewoks(filename)
outputs = execute_graph(
graph, inputs=inputs, outputs=[{"all": True}], merge_outputs=False
)
expected = expected_outputs
label_to_id = {
attrs["label"]: node_id for node_id, attrs in graph.graph.nodes.items()
}
expected = {label_to_id[k]: v for k, v in expected.items()}
assert outputs == expected
output_path, expected = expected_hdf5
hdf5.assert_hdf5_content(output_path, expected)
[docs]
def assert_with_qt(
ewoks_orange_canvas,
basename: str,
inputs: List[Dict[str, Any]],
expected_outputs: Dict[str, Dict[str, Any]],
expected_hdf5: Tuple[str, Dict[str, Any]],
) -> None:
"""Execute workflow using the Qt widgets and signals"""
from orangecontrib.ewoksfluo.categories.demo import tutorials
filename = resource_files(tutorials).joinpath(basename)
ewoks_orange_canvas.load_graph(str(filename), inputs=inputs)
ewoks_orange_canvas.start_workflow()
ewoks_orange_canvas.wait_widgets(timeout=30)
outputs = dict(ewoks_orange_canvas.iter_output_values())
assert outputs == expected_outputs
output_path, expected = expected_hdf5
hdf5.assert_hdf5_content(output_path, expected)