Skip to content

Commit d4b8e6e

Browse files
committed
Parse scientific numbers as floats (fixes andialbrecht#107).
1 parent 204b779 commit d4b8e6e

File tree

3 files changed

+9
-0
lines changed

3 files changed

+9
-0
lines changed

CHANGES

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ Development Version
33

44
Enhancements
55
* New option to truncate long string literals when formatting.
6+
* Scientific numbers are pares correctly (issue107).
67

78

89
Release 0.1.8 (Jun 29, 2013)

sqlparse/lexer.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@ class Lexer(object):
190190
(r'@[^\W\d_]\w+', tokens.Name),
191191
(r'[^\W\d_]\w*(?=[.(])', tokens.Name), # see issue39
192192
(r'[-]?0x[0-9a-fA-F]+', tokens.Number.Hexadecimal),
193+
(r'[-]?[0-9]*(\.[0-9]+)?[eE][-]?[0-9]+', tokens.Number.Float),
193194
(r'[-]?[0-9]*\.[0-9]+', tokens.Number.Float),
194195
(r'[-]?[0-9]+', tokens.Number.Integer),
195196
# TODO: Backslash escapes?

tests/test_parse.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,3 +150,10 @@ def test_placeholder(ph):
150150
p = sqlparse.parse(ph)[0].tokens
151151
assert len(p) == 1
152152
assert p[0].ttype is T.Name.Placeholder
153+
154+
155+
@pytest.mark.parametrize('num', ['6.67428E-8', '1.988e33', '1e-12'])
156+
def test_scientific_numbers(num):
157+
p = sqlparse.parse(num)[0].tokens
158+
assert len(p) == 1
159+
assert p[0].ttype is T.Number.Float

0 commit comments

Comments
 (0)