Exemplo n.º 1
0
 def test_operator_pow(self):
     key = '**'
     testname = 'find_operator({!r})'.format(key)
     actual = functions.find_operator(key)
     expected = functions.PowerOperator
     print_test_message(testname, key=key, actual=actual, expected=expected)
     self.assertEqual(actual, expected, '{} failed'.format(testname))
Exemplo n.º 2
0
 def test_operator_div(self):
     key = "/"
     testname = "find_operator({!r})".format(key)
     actual = functions.find_operator(key)
     expected = functions.DivisionOperator
     print_test_message(testname, key=key, actual=actual, expected=expected)
     self.assertEqual(actual, expected, "{} failed".format(testname))
Exemplo n.º 3
0
 def test_operator_sub(self):
     key = '-'
     numargs = 2
     testname = 'find_operator({!r}, {})'.format(key, numargs)
     actual = functions.find_operator(key, numargs)
     expected = functions.SubtractionOperator
     print_test_message(testname, actual=actual,
                        expected=expected, key=key, numargs=numargs)
     self.assertEqual(actual, expected, '{} failed'.format(testname))
Exemplo n.º 4
0
 def test_operator_add(self):
     key = "+"
     numargs = 2
     testname = "find_operator({!r}, {})".format(key, numargs)
     actual = functions.find_operator(key, numargs)
     expected = functions.AdditionOperator
     print_test_message(
         testname, actual=actual, expected=expected, key=key, numargs=numargs
     )
     self.assertEqual(actual, expected, "{} failed".format(testname))
Exemplo n.º 5
0
    def _construct_flow_(self, obj, datnodes={}):
        if isinstance(obj, VarType):
            vname = obj.key
            if vname in self._ids.variables:
                indices = numpy.index_exp[tuple(
                    obj.ind)] if len(obj.ind) > 0 else ()
                return ReadNode(self._ids.variables[vname], index=indices)

            elif vname in datnodes:
                return datnodes[vname]

            else:
                raise VariableNotFoundError(
                    "Input variable {!r} not found or cannot be used as input".
                    format(vname))

        elif isinstance(obj, OpType):
            name = obj.key
            nargs = len(obj.args)
            op = find_operator(name, numargs=nargs)
            args = [
                self._construct_flow_(arg, datnodes=datnodes)
                for arg in obj.args
            ]
            return EvalNode(name, op, *args)

        elif isinstance(obj, FuncType):
            name = obj.key
            func = find_function(name)
            args = [
                self._construct_flow_(arg, datnodes=datnodes)
                for arg in obj.args
            ]
            kwds = {
                k: self._construct_flow_(obj.kwds[k], datnodes=datnodes)
                for k in obj.kwds
            }
            return EvalNode(name, func, *args, **kwds)

        else:
            return obj
Exemplo n.º 6
0
    def _construct_flow_(self, obj, datnodes={}):
        if isinstance(obj, ParsedVariable):
            vname = obj.key
            if vname in self._ids.variables:
                return ReadNode(self._ids.variables[vname], index=obj.args)

            elif vname in datnodes:
                return datnodes[vname]

            else:
                raise VariableNotFoundError(
                    'Input variable {!r} not found or cannot be used as input'.
                    format(vname))

        elif isinstance(obj, (ParsedUniOp, ParsedBinOp)):
            name = obj.key
            nargs = len(obj.args)
            op = find_operator(name, numargs=nargs)
            args = [
                self._construct_flow_(arg, datnodes=datnodes)
                for arg in obj.args
            ]
            return EvalNode(name, op, *args)

        elif isinstance(obj, ParsedFunction):
            name = obj.key
            func = find_function(name)
            args = [
                self._construct_flow_(arg, datnodes=datnodes)
                for arg in obj.args
            ]
            kwds = {
                k: self._construct_flow_(obj.kwds[k], datnodes=datnodes)
                for k in obj.kwds
            }
            return EvalNode(name, func, *args, **kwds)

        else:
            return obj