Skip to content

Commit c99b2ce

Browse files
Added replacement of as with a s to remove issues caused by as being a python keyword
`as` is replaced by `a s` unless `as` is defined as an input symbol
1 parent 7073f8f commit c99b2ce

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

app/expression_utilities.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -268,13 +268,16 @@ def substitute_input_symbols(exprs, params):
268268
for code in input_symbols_to_remove:
269269
del input_symbols[code]
270270

271-
# Since 'lambda' is a reserved keyword in python
272-
# it needs to be replaced with 'lamda' for expression
273-
# parsing to work properly
271+
# Since 'lambda' and 'as' are reserved keywords in python they
272+
# have to be replaced for expression parsing to work properly
274273
lambda_value = input_symbols.pop("lambda", {"latex": r"\lambda", "aliases": ["lambda"]})
275274
if lambda_value is not None:
276275
lambda_value["aliases"].append("lambda")
277276
input_symbols.update({"lamda": lambda_value})
277+
as_value = input_symbols.pop("as", {"latex": r"as", "aliases": ["as"]})
278+
if as_value is not None:
279+
as_value["aliases"].append("as")
280+
input_symbols.update({"a s": as_value})
278281
params.update({"symbols": input_symbols})
279282

280283
for (code, symbol_data) in input_symbols.items():

app/symbolic_comparison_evaluation_tests.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1512,5 +1512,29 @@ def test_CHEM40002_1_5_instance_2024_25(self):
15121512
result = evaluation_function(response, answer, params)
15131513
assert result["is_correct"] is True
15141514

1515+
def test_as_in_expression(self):
1516+
response = "A/s(e^(-as)-e^(-bs))"
1517+
answer = "A/s(e^(-a*s)-e^(-b*s))"
1518+
params = {
1519+
"strict_syntax": False,
1520+
"elementary_functions": True,
1521+
}
1522+
result = evaluation_function(response, answer, params)
1523+
assert result["is_correct"] is True
1524+
1525+
def test_as_in_input_symbols(self):
1526+
response = "A/s(e^(-as)-e^(-bs))"
1527+
answer = "A/s(e^(-as)-e^(-bs))"
1528+
params = {
1529+
"strict_syntax": False,
1530+
"elementary_functions": True,
1531+
"symbols": {
1532+
"as": {"aliases": ["a_s"], "latex": r"$a_s$"},
1533+
"bs": {"aliases": ["b_s"], "latex": r"$b_s$"},
1534+
},
1535+
}
1536+
result = evaluation_function(response, answer, params)
1537+
assert result["is_correct"] is True
1538+
15151539
if __name__ == "__main__":
15161540
pytest.main(['-xk not slow', "--tb=line", '--durations=10', os.path.abspath(__file__)])

0 commit comments

Comments
 (0)