Skip to content

Commit 61d82d7

Browse files
authored
Merge pull request #1001 from mathics/mathicssession
Mathicssession
2 parents 4622f55 + 2a2e8c7 commit 61d82d7

File tree

2 files changed

+36
-9
lines changed

2 files changed

+36
-9
lines changed

mathics/session.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from mathics.core.parser import parse, SingleLineFeeder
2+
from mathics.core.definitions import Definitions
3+
from mathics.core.evaluation import Evaluation
4+
from mathics import settings
5+
6+
7+
class MathicsSession:
8+
def __init__(self, add_builtin=True, catch_interrupt=False, form="InputForm"):
9+
self.definitions = Definitions(add_builtin)
10+
self.evaluation = Evaluation(definitions=self.definitions, catch_interrupt=catch_interrupt)
11+
self.form = form
12+
self.last_result = None
13+
14+
def evaluate(self, str_expression, timeout = None, form=None):
15+
expr = parse(self.definitions, SingleLineFeeder(str_expression))
16+
if form is None:
17+
form = self.form
18+
self.last_result = expr.evaluate(self.evaluation)
19+
return self.last_result
20+
21+
def format_result(self, str_expression=None, timeout = None, form=None):
22+
self.last_result
23+
if form is None:
24+
form = self.form
25+
return res.do_format(self.evaluation, form)

test/test_evaluation.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
1+
2+
from mathics.session import MathicsSession
3+
14
from mathics.core.parser import parse, SingleLineFeeder
25
from mathics.core.definitions import Definitions
36
from mathics.core.evaluation import Evaluation
47
import pytest
58

69

7-
definitions = Definitions(add_builtin=True)
8-
evaluation = Evaluation(definitions=definitions, catch_interrupt=False)
10+
session = MathicsSession(add_builtin=True, catch_interrupt=False)
911

1012

11-
def _evaluate(str_expression):
12-
expr = parse(definitions, SingleLineFeeder(str_expression))
13-
return expr.evaluate(evaluation)
1413

1514

1615
@pytest.mark.parametrize(
@@ -49,9 +48,11 @@ def _evaluate(str_expression):
4948
(r'StringInsert[{"abcdefghijklm", "Mathics"}, "X", {}]', r'{"abcdefghijklm", "Mathics"}'),
5049
],
5150
)
51+
5252
def test_evaluation(str_expr: str, str_expected: str, message=""):
53-
result = _evaluate(str_expr)
54-
expected = _evaluate(str_expected)
53+
global session
54+
result = session.evaluate(str_expr)
55+
expected = session.evaluate(str_expected)
5556

5657
if message:
5758
assert result == expected, message
@@ -60,14 +61,15 @@ def test_evaluation(str_expr: str, str_expected: str, message=""):
6061

6162

6263
def test_exit():
64+
global session
6365
try:
64-
_evaluate("Exit[-37]")
66+
session.evaluate("Exit[-37]")
6567
except SystemExit as e:
6668
assert e.code == -37
6769

6870

6971
def test_quit():
7072
try:
71-
_evaluate("Quit[-37]")
73+
session.evaluate("Quit[-37]")
7274
except SystemExit as e:
7375
assert e.code == -37

0 commit comments

Comments
 (0)