Author: Brian Kearns <bdkea...@gmail.com> Branch: Changeset: r71422:0cecb9c518a9 Date: 2014-05-08 17:36 -0400 http://bitbucket.org/pypy/pypy/changeset/0cecb9c518a9/
Log: more cleanups for complex parsing str diff --git a/pypy/objspace/std/complextype.py b/pypy/objspace/std/complextype.py --- a/pypy/objspace/std/complextype.py +++ b/pypy/objspace/std/complextype.py @@ -38,12 +38,14 @@ # ignore whitespace after bracket while i < slen and s[i] == ' ': i += 1 + while slen > 0 and s[slen-1] == ' ': + slen -= 1 # extract first number realstart = i pc = s[i] while i < slen and s[i] != ' ': - if s[i] in ('+','-') and pc not in ('e','E') and i != realstart: + if s[i] in ('+', '-') and pc not in ('e', 'E') and i != realstart: break pc = s[i] i += 1 @@ -71,10 +73,10 @@ # find sign for imaginary part if s[i] == '-' or s[i] == '+': imagsign = s[i] - if imagsign == ' ': + else: raise ValueError - i+=1 + i += 1 # whitespace while i < slen and s[i] == ' ': i += 1 @@ -84,7 +86,7 @@ imagstart = i pc = s[i] while i < slen and s[i] != ' ': - if s[i] in ('+','-') and pc not in ('e','E'): + if s[i] in ('+', '-') and pc not in ('e', 'E'): break pc = s[i] i += 1 @@ -92,14 +94,12 @@ imagstop = i - 1 if imagstop < 0: raise ValueError - if s[imagstop] not in ('j','J'): + if s[imagstop] not in ('j', 'J'): raise ValueError if imagstop < imagstart: raise ValueError - while i<slen and s[i] == ' ': - i += 1 - if i < slen: + if i < slen: raise ValueError realpart = s[realstart:realstop] diff --git a/pypy/objspace/std/test/test_complexobject.py b/pypy/objspace/std/test/test_complexobject.py --- a/pypy/objspace/std/test/test_complexobject.py +++ b/pypy/objspace/std/test/test_complexobject.py @@ -38,6 +38,7 @@ test_cparse('(1+2j)', '1', '2') test_cparse('(1-6j)', '1', '-6') test_cparse(' ( +3.14-6J )', '+3.14', '-6') + test_cparse(' ( +3.14- 6J ) ', '+3.14', '-6') test_cparse(' +J', '0.0', '1.0') test_cparse(' -J', '0.0', '-1.0') _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit