Author: Armin Rigo <[email protected]>
Branch:
Changeset: r72923:f7a311fdf0ac
Date: 2014-08-20 09:50 +0200
http://bitbucket.org/pypy/pypy/changeset/f7a311fdf0ac/
Log: str.partition(), str.rpartition()
diff --git a/pypy/objspace/std/bytesobject.py b/pypy/objspace/std/bytesobject.py
--- a/pypy/objspace/std/bytesobject.py
+++ b/pypy/objspace/std/bytesobject.py
@@ -791,6 +791,20 @@
return self_as_uni.descr_rindex(space, w_sub, w_start, w_end)
return self._StringMethods_descr_rindex(space, w_sub, w_start, w_end)
+ _StringMethods_descr_partition = descr_partition
+ def descr_partition(self, space, w_sub):
+ if space.isinstance_w(w_sub, space.w_unicode):
+ self_as_uni = unicode_from_encoded_object(space, self, None, None)
+ return self_as_uni.descr_partition(space, w_sub)
+ return self._StringMethods_descr_partition(space, w_sub)
+
+ _StringMethods_descr_rpartition = descr_rpartition
+ def descr_rpartition(self, space, w_sub):
+ if space.isinstance_w(w_sub, space.w_unicode):
+ self_as_uni = unicode_from_encoded_object(space, self, None, None)
+ return self_as_uni.descr_rpartition(space, w_sub)
+ return self._StringMethods_descr_rpartition(space, w_sub)
+
def _join_return_one(self, space, w_obj):
return (space.is_w(space.type(w_obj), space.w_str) or
space.is_w(space.type(w_obj), space.w_unicode))
diff --git a/pypy/objspace/std/test/test_unicodeobject.py
b/pypy/objspace/std/test/test_unicodeobject.py
--- a/pypy/objspace/std/test/test_unicodeobject.py
+++ b/pypy/objspace/std/test/test_unicodeobject.py
@@ -628,6 +628,13 @@
raises(ValueError, S.rpartition, u'')
raises(TypeError, S.rpartition, None)
+ def test_partition_str_unicode(self):
+ x = 'abbbd'.rpartition(u'bb')
+ assert x == (u'ab', u'bb', u'd')
+ assert map(type, x) == [unicode, unicode, unicode]
+ raises(UnicodeDecodeError, '\x80'.partition, u'')
+ raises(UnicodeDecodeError, '\x80'.rpartition, u'')
+
def test_mul(self):
zero = 0
assert type(u'' * zero) == type(zero * u'') == unicode
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit