コード例 #1
0
ファイル: test_utils.py プロジェクト: jimbog/sympy_gamma
def test_eval2():
    e = Eval()
    assert e.eval("""\
def f(x):
    return x**2
f(3)
"""\
        ) == "9"
    assert e.eval("""\
def f(x):
    return x**2
f(3)
a = 5
"""\
        ) == ""
    assert e.eval("""\
def f(x):
    return x**2
if f(3) == 9:
    a = 1
else:
    a = 0
a
"""\
        ) == "1"
    assert e.eval("""\
def f(x):
    return x**2 + 1
if f(3) == 9:
    a = 1
else:
    a = 0
a
"""\
        ) == "0"
コード例 #2
0
ファイル: test_utils.py プロジェクト: 5n1p/sympy_gamma
def test_eval2():
    e = Eval()
    assert e.eval("""\
def f(x):
    return x**2
f(3)
"""\
        ) == "9"
    assert e.eval("""\
def f(x):
    return x**2
f(3)
a = 5
"""\
        ) == ""
    assert e.eval("""\
def f(x):
    return x**2
if f(3) == 9:
    a = 1
else:
    a = 0
a
"""\
        ) == "1"
    assert e.eval("""\
def f(x):
    return x**2 + 1
if f(3) == 9:
    a = 1
else:
    a = 0
a
"""\
        ) == "0"
コード例 #3
0
ファイル: test_utils.py プロジェクト: jimbog/sympy_gamma
def test_eval3():
    e = Eval()
    assert e.eval("xxxx").startswith("Traceback")
    assert e.eval("""\
def f(x):
    return x**2 + 1 + y
if f(3) == 9:
    a = 1
else:
    a = 0
a
"""\
        ).startswith("Traceback")
コード例 #4
0
ファイル: test_utils.py プロジェクト: 5n1p/sympy_gamma
def test_eval3():
    e = Eval()
    assert e.eval("xxxx").startswith("Traceback")
    assert e.eval("""\
def f(x):
    return x**2 + 1 + y
if f(3) == 9:
    a = 1
else:
    a = 0
a
"""\
        ).startswith("Traceback")
コード例 #5
0
ファイル: logic.py プロジェクト: certik/sympy_gamma
    def try_sympy(self, s):
        namespace = {}
        exec "from sympy.interactive import *" in {}, namespace
        a = Eval(namespace)
        # change to True to spare the user from exceptions:
        r = a.eval(s, use_none_for_exceptions=False)
        if r is not None:
            result = [
                    {"title": "Input", "input": s},
                    {"title": "SymPy", "input": s, "output": r},
                    ]
            code = """\
s = %s
a = s.atoms(Symbol)
if len(a) == 1:
    x = a.pop()
    result = %s
else:
    result = None
result
"""
            line = "diff(%s, x)" % s
            r = a.eval(code % (s, line), use_none_for_exceptions=True)
            if r and r != "None":
                result.append(
                        {"title": "Derivative", "input": line,
                            "output": r})
            line = "integrate(%s, x)" % s
            r = a.eval(code % (s, line), use_none_for_exceptions=True)
            if r and r != "None":
                result.append(
                        {"title": "Indefinite integral", "input": line,
                            "output": r})
            line = "series(%s, x, 0, 10)" % s
            r = a.eval(code % (s, line), use_none_for_exceptions=True)
            if r and r != "None":
                result.append(
                        {"title": "Series expansion around 0", "input": line,
                            "output": r})
            return result
        else:
            return None
コード例 #6
0
ファイル: test_utils.py プロジェクト: jimbog/sympy_gamma
def test_eval1():
    e = Eval()
    assert e.eval("1+1") == "2"
    assert e.eval("1+1\n") == "2"
    assert e.eval("a=1+1") == ""
    assert e.eval("a=1+1\n") == ""
    assert e.eval("a=1+1\na") == "2"
    assert e.eval("a=1+1\na\n") == "2"
    assert e.eval("a=1+1\na=3") == ""
    assert e.eval("a=1+1\na=3\n") == ""
コード例 #7
0
ファイル: test_utils.py プロジェクト: 5n1p/sympy_gamma
def test_eval1():
    e = Eval()
    assert e.eval("1+1") == "2"
    assert e.eval("1+1\n") == "2"
    assert e.eval("a=1+1") == ""
    assert e.eval("a=1+1\n") == ""
    assert e.eval("a=1+1\na") == "2"
    assert e.eval("a=1+1\na\n") == "2"
    assert e.eval("a=1+1\na=3") == ""
    assert e.eval("a=1+1\na=3\n") == ""
コード例 #8
0
    def try_sympy(self, s):
        namespace = {}
        exec PREEXEC in {}, namespace
        a = Eval(namespace)
        # change to True to spare the user from exceptions:
        if not len(s):
            return
        try:
            evaluated = sympify(s,
                                convert_xor=True,
                                locals={
                                    'integrate': sympy.Integral,
                                    'plot': lambda func: func
                                })
            input_repr = repr(evaluated)
            namespace['input_evaluated'] = evaluated
        except sympy_parser.TokenError:
            return [{
                "title": "Input",
                "input": s
            }, {
                "title": "Error",
                "input": s,
                "error": "Invalid input"
            }]
        except Exception as e:
            return self.handle_error(s, e)

        if input_repr is not None:
            result = [
                {
                    "title": "Input",
                    "input": s
                },
                {
                    "title": "SymPy",
                    "input": s,
                    "output": input_repr
                },
            ]

            if isinstance(evaluated, sympy.Basic):
                variables = evaluated.atoms(Symbol)
                if len(variables) == 1:
                    var = variables.pop()
                else:
                    var = None
            else:
                var = None

            convert_input, cards = find_result_set(evaluated)
            namespace['input_evaluated'], var = convert_input(evaluated, var)

            # Come up with a solution to use all variables if more than 1
            # is entered.
            if var != None:  # See a better way to do this.
                input_repr = repr(namespace['input_evaluated'])
                line = "simplify(input_evaluated)"
                simplified = a.eval(line, use_none_for_exceptions=True)
                r = sympify(a.eval(line, use_none_for_exceptions=True))

                if simplified != "None" and simplified != input_repr:
                    result.append({
                        "title": "Simplification",
                        "input": simplified,
                        "output": mathjax_latex(r)
                    })

                for card in cards:
                    try:
                        r = card.eval(a, var)
                        if r != "None":
                            formatted_input = card.format_input(
                                input_repr, var)
                            result.append(
                                dict(title=card.title,
                                     input=formatted_input,
                                     pre_output=latex(
                                         card.pre_output_function(
                                             input_repr, var)),
                                     output=card.format_output(
                                         r, mathjax_latex)))
                    except SyntaxError:
                        pass
            return result
        else:
            return None
コード例 #9
0
ファイル: logic.py プロジェクト: catchmrbharath/sympy_gamma
    def try_sympy(self, s):
        namespace = {}
        exec PREEXEC in {}, namespace
        a = Eval(namespace)
        # change to True to spare the user from exceptions:
        if not len(s):
            return
        try:
            evaluated = sympify(s, convert_xor=True, locals={
                'integrate': sympy.Integral,
                'plot': lambda func: func
            })
            input_repr = repr(evaluated)
            namespace['input_evaluated'] = evaluated
        except sympy_parser.TokenError:
            return [
                {"title": "Input", "input": s},
                {"title": "Error", "input": s, "error": "Invalid input"}
            ]
        except Exception as e:
            return self.handle_error(s, e)

        if input_repr is not None:
            result = [
                {"title": "Input", "input": s},
                {"title": "SymPy", "input": s, "output": input_repr},
            ]

            if isinstance(evaluated, sympy.Basic):
                variables = evaluated.atoms(Symbol)
                if len(variables) == 1:
                    var = variables.pop()
                else:
                    var = None
            else:
                var = None

            convert_input, cards = find_result_set(evaluated)
            namespace['input_evaluated'], var = convert_input(evaluated, var)

            # Come up with a solution to use all variables if more than 1
            # is entered.
            if var != None:  # See a better way to do this.
                input_repr = repr(namespace['input_evaluated'])
                line = "simplify(input_evaluated)"
                simplified = a.eval(line, use_none_for_exceptions=True)
                r = sympify(a.eval(line, use_none_for_exceptions=True))

                if simplified != "None" and simplified != input_repr:
                    result.append(
                        {"title": "Simplification", "input": simplified,
                         "output": mathjax_latex(r)})

                for card in cards:
                    try:
                        r = card.eval(a, var)
                        if r != "None":
                            formatted_input = card.format_input(input_repr, var)
                            result.append(dict(
                                title=card.title,
                                input=formatted_input,
                                pre_output=latex(
                                    card.pre_output_function(input_repr, var)),
                                output=card.format_output(r, mathjax_latex)
                            ))
                    except SyntaxError:
                        pass
            return result
        else:
            return None