8000 Fix evaluating strings. · numpy/numpy@1601cce · GitHub
[go: up one dir, main page]

Skip to content

Commit 1601cce

Browse files
committed
Fix evaluating strings.
1 parent 2693f48 commit 1601cce

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

numpy/f2py/crackfortran.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2629,7 +2629,9 @@ def _eval_scalar(value, params):
26292629
if _is_kind_number(value):
26302630
value = value.split('_')[0]
26312631
try:
2632-
value = str(eval(value, {}, params))
2632+
# TODO: use symbolic from PR #19805
2633+
value = eval(value, {}, params)
2634+
value = (repr if isinstance(value, str) else str)(value)
26332635
except (NameError, SyntaxError, TypeError):
26342636
return value
26352637
except Exception as msg:

numpy/f2py/tests/test_crackfortran.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ def test_module(self):
3838
assert self.module.t0('23') == b'2'
3939

4040

41-
4241
class TestPublicPrivate():
4342
def test_defaultPrivate(self, tmp_path):
4443
f_path = tmp_path / "mod.f90"
@@ -166,3 +165,14 @@ def test_ignore_inner_quotes(self):
166165
def test_multiple_relevant_spaces(self):
167166
assert_equal(markinnerspaces("a 'b c' 'd e'"), "a 'b@_@c' 'd@_@e'")
168167
assert_equal(markinnerspaces(r'a "b c" "d e"'), r'a "b@_@c" "d@_@e"')
168+
169+
170+
class TestEval(util.F2PyTest):
171+
172+
def test_eval_scalar(self):
173+
eval_scalar = crackfortran._eval_scalar
174+
175+
assert eval_scalar('123', {}) == '123'
176+
assert eval_scalar('12 + 3', {}) == '15'
177+
assert eval_scalar('a + b', dict(a=1, b=2)) == '3'
178+
assert eval_scalar('"123"', {}) == "'123'"

0 commit comments

Comments
 (0)
0