def test_fixed_inputs(self): def wf(a, b, c): return {'a': a, 'b': b, 'c': c} inputs = {'a': Int(4), 'b': Int(5), 'c': Int(6)} FP = FunctionProcess.build(wf) self.assertEqual(FP.run(**inputs), inputs)
def wrapped_function(*args, **kwargs): """ This wrapper function is the actual function that is called. """ # Do this here so that it doesn't enter as an input to the process return_pid = kwargs.pop('_return_pid', False) # Build up the Process representing this function FuncProc = FunctionProcess.build(func, **kwargs) inputs = {} if kwargs: inputs.update(kwargs) if args: inputs.update(FuncProc.args_to_dict(*args)) future = serial_engine.submit(FuncProc, inputs) pid = future.pid results = future.result() # Check if there is just one value returned if len(results) == 1 and FuncProc.SINGLE_RETURN_LINKNAME in results: if return_pid: return results[FuncProc.SINGLE_RETURN_LINKNAME], pid else: return results[FuncProc.SINGLE_RETURN_LINKNAME] else: if return_pid: return results, pid else: return results
def test_kwargs(self): def wf_with_kwargs(**kwargs): return kwargs def wf_without_kwargs(): return Int(4) def wf_fixed_args(a): return {'a': a} a = Int(4) inputs = {'a': a} FP = FunctionProcess.build(wf_with_kwargs) outs = FP.run(**inputs) self.assertEqual(outs, inputs) FP = FunctionProcess.build(wf_without_kwargs) with self.assertRaises(ValueError): FP.run(**inputs) FP = FunctionProcess.build(wf_fixed_args) outs = FP.run(**inputs) self.assertEqual(outs, inputs)