Author: Tyler Wade <way...@gmail.com> Branch: fix-bytearray-complexity Changeset: r72003:b2b630192e51 Date: 2014-06-09 09:25 -0500 http://bitbucket.org/pypy/pypy/changeset/b2b630192e51/
Log: Don't use buffers as the 2nd paramter to rstring.(r)split diff --git a/pypy/objspace/std/stringmethods.py b/pypy/objspace/std/stringmethods.py --- a/pypy/objspace/std/stringmethods.py +++ b/pypy/objspace/std/stringmethods.py @@ -561,16 +561,10 @@ res = split(value, maxsplit=maxsplit) return self._newlist_unwrapped(space, res) - if self._use_rstr_ops(space, w_sep): - by = self._op_val(space, w_sep) - if len(by) == 0: - raise oefmt(space.w_ValueError, "empty separator") - res = split(value, by, maxsplit) - else: - by = _get_buffer(space, w_sep) - if len(by) == 0: - raise oefmt(space.w_ValueError, "empty separator") - res = split(value, by, maxsplit) + by = self._op_val(space, w_sep) + if len(by) == 0: + raise oefmt(space.w_ValueError, "empty separator") + res = split(value, by, maxsplit) return self._newlist_unwrapped(space, res) @@ -582,16 +576,10 @@ res = rsplit(value, maxsplit=maxsplit) return self._newlist_unwrapped(space, res) - if self._use_rstr_ops(space, w_sep): - by = self._op_val(space, w_sep) - if len(by) == 0: - raise oefmt(space.w_ValueError, "empty separator") - res = rsplit(value, by, maxsplit) - else: - by = _get_buffer(space, w_sep) - if len(by) == 0: - raise oefmt(space.w_ValueError, "empty separator") - res = rsplit(value, by, maxsplit) + by = self._op_val(space, w_sep) + if len(by) == 0: + raise oefmt(space.w_ValueError, "empty separator") + res = rsplit(value, by, maxsplit) return self._newlist_unwrapped(space, res) @@ -629,10 +617,7 @@ end)) def _startswith(self, space, value, w_prefix, start, end): - if self._use_rstr_ops(space, w_prefix): - return startswith(value, self._op_val(space, w_prefix), start, end) - else: - return startswith(value, _get_buffer(space, w_prefix), start, end) + return startswith(value, self._op_val(space, w_prefix), start, end) def descr_endswith(self, space, w_suffix, w_start=None, w_end=None): (value, start, end) = self._convert_idx_params(space, w_start, w_end, @@ -646,10 +631,7 @@ end)) def _endswith(self, space, value, w_prefix, start, end): - if self._use_rstr_ops(space, w_prefix): - return endswith(value, self._op_val(space, w_prefix), start, end) - else: - return endswith(value, _get_buffer(space, w_prefix), start, end) + return endswith(value, self._op_val(space, w_prefix), start, end) def _strip(self, space, w_chars, left, right): "internal function called by str_xstrip methods" diff --git a/rpython/rlib/rstring.py b/rpython/rlib/rstring.py --- a/rpython/rlib/rstring.py +++ b/rpython/rlib/rstring.py @@ -56,6 +56,13 @@ i = j + 1 return res + if isinstance(value, unicode): + assert isinstance(by, unicode) + if isinstance(value, str): + assert isinstance(by, str) + if isinstance(value, list): + assert isinstance(by, str) + bylen = len(by) if bylen == 0: raise ValueError("empty separator") @@ -131,6 +138,13 @@ res.reverse() return res + if isinstance(value, unicode): + assert isinstance(by, unicode) + if isinstance(value, str): + assert isinstance(by, str) + if isinstance(value, list): + assert isinstance(by, str) + if maxsplit > 0: res = newlist_hint(min(maxsplit + 1, len(value))) else: diff --git a/rpython/rlib/test/test_rstring.py b/rpython/rlib/test/test_rstring.py --- a/rpython/rlib/test/test_rstring.py +++ b/rpython/rlib/test/test_rstring.py @@ -10,14 +10,11 @@ def check_split(value, sub, *args, **kwargs): result = kwargs['res'] assert split(value, sub, *args) == result - assert split(value, buffer(sub), *args) == result list_result = [list(i) for i in result] assert split(list(value), sub, *args) == list_result - assert split(list(value), buffer(sub), *args) == list_result assert split(buffer(value), sub, *args) == result - assert split(buffer(value), buffer(sub), *args) == result check_split("", 'x', res=['']) check_split("a", "a", 1, res=['', '']) @@ -50,14 +47,11 @@ def check_rsplit(value, sub, *args, **kwargs): result = kwargs['res'] assert rsplit(value, sub, *args) == result - assert rsplit(value, buffer(sub), *args) == result list_result = [list(i) for i in result] assert rsplit(list(value), sub, *args) == list_result - assert rsplit(list(value), buffer(sub), *args) == list_result assert rsplit(buffer(value), sub, *args) == result - assert rsplit(buffer(value), buffer(sub), *args) == result check_rsplit("a", "a", 1, res=['', '']) check_rsplit(" ", " ", 1, res=['', '']) @@ -87,10 +81,8 @@ def check_replace(value, sub, *args, **kwargs): result = kwargs['res'] assert replace(value, sub, *args) == result - assert replace(value, buffer(sub), *args) == result assert replace(list(value), sub, *args) == list(result) - assert replace(list(value), buffer(sub), *args) == list(result) check_replace('one!two!three!', '!', '@', 1, res='one@two!three!') check_replace('one!two!three!', '!', '', res='onetwothree') @@ -256,9 +248,6 @@ def test_buffer_parameter(self): def fn(): res = True - res = res and split('a//b//c//d', StringBuffer('//')) == ['a', 'b', 'c', 'd'] - res = res and split(u'a//b//c//d', StringBuffer('//')) == [u'a', u'b', u'c', u'd'] - res = res and rsplit('a//b//c//d', StringBuffer('//')) == ['a', 'b', 'c', 'd'] res = res and find('a//b//c//d', StringBuffer('//'), 0, 10) != -1 res = res and rfind('a//b//c//d', StringBuffer('//'), 0, 10) != -1 res = res and count('a//b//c//d', StringBuffer('//'), 0, 10) != 0 _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit