diff --git a/src/ansys/dpf/core/dpf_operator.py b/src/ansys/dpf/core/dpf_operator.py index 700cc2456fb..93459425ac4 100644 --- a/src/ansys/dpf/core/dpf_operator.py +++ b/src/ansys/dpf/core/dpf_operator.py @@ -473,9 +473,11 @@ def _type_to_input_method(self): model, generic_data_container, any, + streams_container, ) out = [ + (streams_container.StreamsContainer, self._api.operator_connect_streams), (any.Any, self._api.operator_connect_any), (bool, self._api.operator_connect_bool), ((int, Enum), self._api.operator_connect_int), diff --git a/src/ansys/dpf/core/workflow.py b/src/ansys/dpf/core/workflow.py index a8d73a787c0..9b6752ee42f 100644 --- a/src/ansys/dpf/core/workflow.py +++ b/src/ansys/dpf/core/workflow.py @@ -242,9 +242,11 @@ def _type_to_input_method(self): model, generic_data_container, any, + streams_container, ) out = [ + (streams_container.StreamsContainer, self._api.work_flow_connect_streams), (any.Any, self._api.work_flow_connect_any), (bool, self._api.work_flow_connect_bool), ((int, Enum), self._api.work_flow_connect_int), @@ -307,9 +309,11 @@ def _type_to_output_method(self): generic_data_container, any, collection_base, + streams_container, ) out = [ + (streams_container.StreamsContainer, self._api.work_flow_getoutput_streams), (any.Any, self._api.work_flow_getoutput_as_any), (bool, self._api.work_flow_getoutput_bool), (int, self._api.work_flow_getoutput_int), diff --git a/tests/test_operator.py b/tests/test_operator.py index 9b278da4505..17912cb3188 100644 --- a/tests/test_operator.py +++ b/tests/test_operator.py @@ -1381,3 +1381,18 @@ def test_input_any(server_type): output = op.get_output(pin=0, output_type=dpf.core.types.field) assert isinstance(output, dpf.core.Field) assert len(output.data_as_list) == len(data) + + +@pytest.mark.skipif( + condition=not conftest.SERVERS_VERSION_GREATER_THAN_OR_EQUAL_TO_6_0, + reason="Input/output of Streams requires DPF 6.0 or above.", +) +def test_operator_input_output_streams(server_in_process, simple_bar): + data_source = dpf.core.DataSources(simple_bar, server=server_in_process) + streams_op = dpf.core.operators.metadata.streams_provider(server=server_in_process) + streams_op.inputs.data_sources.connect(data_source) + streams = streams_op.outputs.streams_container() + time_provider = dpf.core.operators.metadata.time_freq_provider(server=server_in_process) + time_provider.connect(pin=3, inpt=streams) + times = time_provider.outputs.time_freq_support() + assert times diff --git a/tests/test_workflow.py b/tests/test_workflow.py index 29286465cfc..861a92276a6 100644 --- a/tests/test_workflow.py +++ b/tests/test_workflow.py @@ -983,6 +983,31 @@ def test_input_any(server_type): assert isinstance(output, dpf.core.Field) +@pytest.mark.skipif( + condition=not conftest.SERVERS_VERSION_GREATER_THAN_OR_EQUAL_TO_6_0, + reason="Input/output of Streams requires DPF 6.0 or above.", +) +def test_workflow_input_output_streams(server_in_process, simple_bar): + data_source = dpf.core.DataSources(simple_bar, server=server_in_process) + streams_op = dpf.core.operators.metadata.streams_provider(server=server_in_process) + streams_op.inputs.data_sources.connect(data_source) + wf_1 = dpf.core.Workflow(server=server_in_process) + wf_1.add_operator(streams_op) + wf_1.set_output_name("output_streams", streams_op.outputs.streams_container) + + streams = wf_1.get_output("output_streams", dpf.core.types.streams_container) + + time_provider = dpf.core.operators.metadata.time_freq_provider(server=server_in_process) + + wf_2 = dpf.core.Workflow(server=server_in_process) + wf_2.add_operator(time_provider) + wf_2.set_input_name("input_streams", time_provider.inputs.streams_container) + wf_2.set_output_name("output_tfs", time_provider.outputs.time_freq_support) + wf_2.connect("input_streams", streams) + times = wf_2.get_output("output_tfs", dpf.core.types.time_freq_support) + assert times + + def main(): test_connect_field_workflow() velocity_acceleration = conftest.resolve_test_file("velocity_acceleration.rst", "rst_operators")