From 77b9de16438c1914f2ccd7abbeafc7fbdd216f96 Mon Sep 17 00:00:00 2001 From: esophagoose <118142981+esophagoose@users.noreply.github.com> Date: Thu, 23 Nov 2023 16:17:31 -0800 Subject: [PATCH] Added blocks to prevent automatic scientific notation or infinity conversion --- sexpdata.py | 2 ++ test_sexpdata.py | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/sexpdata.py b/sexpdata.py index df389d9..9aa24fb 100644 --- a/sexpdata.py +++ b/sexpdata.py @@ -730,6 +730,8 @@ def atom(self, token): return int(token) except ValueError: try: + if 'e' in token.lower() or 'inf' in token.lower(): + raise ValueError('Invalid s-exp float') return float(token) except ValueError: return Symbol(token) diff --git a/test_sexpdata.py b/test_sexpdata.py index 53bbca9..69c60d5 100644 --- a/test_sexpdata.py +++ b/test_sexpdata.py @@ -207,6 +207,12 @@ def test_tosexp_value_errors(): tosexp(Parens()) +def test_parse_float(): + assert parse("-1.012") == [-1.012] + assert parse("2E22") == [Symbol("2E22")] + assert parse("inf") == [Symbol("inf")] + + def test_too_many_brackets(): with pytest.raises(ExpectNothing): parse("(a b))")