Skip to content

Commit e660467

Browse files
committed
Fix parsing of scientific numbers (fixes #399).
1 parent 23d2993 commit e660467

File tree

3 files changed

+12
-5
lines changed

3 files changed

+12
-5
lines changed

CHANGELOG

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ Enhancements
99
Bug Fixes
1010

1111
* Fix parsing of backticks (issue588).
12+
* Fix parsing of scientific number (issue399).
1213

1314

1415
Release 0.4.1 (Oct 08, 2020)

sqlparse/keywords.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ def is_keyword(value):
6262
(r'(?<=\.)[A-ZÀ-Ü]\w*', tokens.Name), # .'Name'
6363
(r'[A-ZÀ-Ü]\w*(?=\()', tokens.Name), # side effect: change kw to func
6464
(r'-?0x[\dA-F]+', tokens.Number.Hexadecimal),
65-
(r'-?\d*(\.\d+)?E-?\d+', tokens.Number.Float),
65+
(r'-?\d+(\.\d+)?E-?\d+', tokens.Number.Float),
6666
(r'(?![_A-ZÀ-Ü])-?(\d+(\.\d*)|\.\d+)(?![_A-ZÀ-Ü])',
6767
tokens.Number.Float),
6868
(r'(?![_A-ZÀ-Ü])-?\d+(?![_A-ZÀ-Ü])', tokens.Number.Integer),

tests/test_parse.py

+10-4
Original file line numberDiff line numberDiff line change
@@ -188,11 +188,16 @@ def test_placeholder(ph):
188188
assert p[0].ttype is T.Name.Placeholder
189189

190190

191-
@pytest.mark.parametrize('num', ['6.67428E-8', '1.988e33', '1e-12'])
192-
def test_scientific_numbers(num):
191+
@pytest.mark.parametrize('num, expected', [
192+
('6.67428E-8', T.Number.Float),
193+
('1.988e33', T.Number.Float),
194+
('1e-12', T.Number.Float),
195+
('e1', None),
196+
])
197+
def test_scientific_numbers(num, expected):
193198
p = sqlparse.parse(num)[0].tokens
194199
assert len(p) == 1
195-
assert p[0].ttype is T.Number.Float
200+
assert p[0].ttype is expected
196201

197202

198203
def test_single_quotes_are_strings():
@@ -336,7 +341,8 @@ def test_pprint():
336341
"| | `- 0 Name 'd0'",
337342
"| |- 10 Punctuation ','",
338343
"| |- 11 Whitespace ' '",
339-
"| `- 12 Float 'e0'",
344+
"| `- 12 Identifier 'e0'",
345+
"| `- 0 Name 'e0'",
340346
"|- 3 Whitespace ' '",
341347
"|- 4 Keyword 'from'",
342348
"|- 5 Whitespace ' '",

0 commit comments

Comments
 (0)