コード例 #1
0
    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)
コード例 #2
0
    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
コード例 #3
0
    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)