[pypy-commit] pypy refactor-str-types: Add stubs for shared string methods.

Manuel Jacob noreply at buildbot.pypy.org
Tue May 28 14:55:32 CEST 2013


Author: Manuel Jacob
Branch: refactor-str-types
Changeset: r64609:c80d5be3241d
Date: 2013-05-24 23:45 +0200
http://bitbucket.org/pypy/pypy/changeset/c80d5be3241d/

Log:	Add stubs for shared string methods.

diff --git a/pypy/objspace/std/bytearrayobject.py b/pypy/objspace/std/bytearrayobject.py
--- a/pypy/objspace/std/bytearrayobject.py
+++ b/pypy/objspace/std/bytearrayobject.py
@@ -23,13 +23,14 @@
 from pypy.objspace.std.register_all import register_all
 from pypy.objspace.std.sliceobject import W_SliceObject, normalize_simple_slice
 from pypy.objspace.std.stdtypedef import StdTypeDef, SMM
+from pypy.objspace.std.stringmethods import StringMethods
 from pypy.objspace.std.unicodeobject import W_UnicodeObject
 from pypy.objspace.std.util import get_positive_index
 from rpython.rlib.objectmodel import newlist_hint, resizelist_hint
 from rpython.rlib.rstring import StringBuilder
 
 
-class W_BytearrayObject(W_Object):
+class W_BytearrayObject(W_Object, StringMethods):
     def __init__(w_self, data):
         w_self.data = data
 
@@ -37,6 +38,12 @@
         """ representation for debugging purposes """
         return "%s(%s)" % (w_self.__class__.__name__, ''.join(w_self.data))
 
+    def new(self, value):
+        return W_BytearrayObject(value)
+
+    def get_value(self):
+        return self.data
+
 
 bytearray_append  = SMM('append', 2)
 bytearray_extend  = SMM('extend', 2)
@@ -128,7 +135,6 @@
     return data
 
 def descr_bytearray__reduce__(space, w_self):
-    from pypy.objspace.std.bytearrayobject import W_BytearrayObject
     assert isinstance(w_self, W_BytearrayObject)
     w_dict = w_self.getdict(space)
     if w_dict is None:
@@ -193,8 +199,65 @@
     __new__ = interp2app(descr__new__),
     __hash__ = None,
     __reduce__ = interp2app(descr_bytearray__reduce__),
-    fromhex = interp2app(descr_fromhex, as_classmethod=True)
-    )
+    fromhex = interp2app(descr_fromhex, as_classmethod=True),
+
+#    __repr__ = interp2app(W_BytearrayObject.descr_repr),
+#    __str__ = interp2app(W_BytearrayObject.descr_str),
+
+#    __eq__ = interp2app(W_BytearrayObject.descr_eq),
+#    __ne__ = interp2app(W_BytearrayObject.descr_ne),
+#    __lt__ = interp2app(W_BytearrayObject.descr_lt),
+#    __le__ = interp2app(W_BytearrayObject.descr_le),
+#    __gt__ = interp2app(W_BytearrayObject.descr_gt),
+#    __ge__ = interp2app(W_BytearrayObject.descr_ge),
+
+#    __len__ = interp2app(W_BytearrayObject.descr_len),
+#    __iter__ = interp2app(W_BytearrayObject.descr_iter),
+#    __contains__ = interp2app(W_BytearrayObject.descr_contains),
+
+#    __add__ = interp2app(W_BytearrayObject.descr_add),
+    __mul__ = interp2app(W_BytearrayObject.descr_mul),
+    __rmul__ = interp2app(W_BytearrayObject.descr_mul),
+
+#    __getitem__ = interp2app(W_BytearrayObject.descr_getitem),
+
+#    capitalize = interp2app(W_BytearrayObject.descr_capitalize),
+#    center = interp2app(W_BytearrayObject.descr_center),
+#    count = interp2app(W_BytearrayObject.descr_count),
+#    decode = interp2app(W_BytearrayObject.descr_decode),
+#    expandtabs = interp2app(W_BytearrayObject.descr_expandtabs),
+#    find = interp2app(W_BytearrayObject.descr_find),
+#    rfind = interp2app(W_BytearrayObject.descr_rfind),
+#    index = interp2app(W_BytearrayObject.descr_index),
+#    rindex = interp2app(W_BytearrayObject.descr_rindex),
+#    isalnum = interp2app(W_BytearrayObject.descr_isalnum),
+#    isalpha = interp2app(W_BytearrayObject.descr_isalpha),
+#    isdigit = interp2app(W_BytearrayObject.descr_isdigit),
+#    islower = interp2app(W_BytearrayObject.descr_islower),
+#    isspace = interp2app(W_BytearrayObject.descr_isspace),
+#    istitle = interp2app(W_BytearrayObject.descr_istitle),
+#    isupper = interp2app(W_BytearrayObject.descr_isupper),
+#    join = interp2app(W_BytearrayObject.descr_join),
+#    ljust = interp2app(W_BytearrayObject.descr_ljust),
+#    rjust = interp2app(W_BytearrayObject.descr_rjust),
+#    lower = interp2app(W_BytearrayObject.descr_lower),
+#    partition = interp2app(W_BytearrayObject.descr_partition),
+#    rpartition = interp2app(W_BytearrayObject.descr_rpartition),
+#    replace = interp2app(W_BytearrayObject.descr_replace),
+#    split = interp2app(W_BytearrayObject.descr_split),
+#    rsplit = interp2app(W_BytearrayObject.descr_rsplit),
+#    splitlines = interp2app(W_BytearrayObject.descr_splitlines),
+#    startswith = interp2app(W_BytearrayObject.descr_startswith),
+#    endswith = interp2app(W_BytearrayObject.descr_endswith),
+#    strip = interp2app(W_BytearrayObject.descr_strip),
+#    lstrip = interp2app(W_BytearrayObject.descr_lstrip),
+#    rstrip = interp2app(W_BytearrayObject.descr_rstrip),
+#    swapcase = interp2app(W_BytearrayObject.descr_swapcase),
+#    title = interp2app(W_BytearrayObject.descr_title),
+#    translate = interp2app(W_BytearrayObject.descr_translate),
+#    upper = interp2app(W_BytearrayObject.descr_upper),
+#    zfill = interp2app(W_BytearrayObject.descr_zfill),
+)
 bytearray_typedef.registermethods(globals())
 
 registerimplementation(W_BytearrayObject)
@@ -317,22 +380,6 @@
     data1 = [c for c in space.str_w(w_str)]
     return W_BytearrayObject(data1 + data2)
 
-def mul_bytearray_times(space, w_bytearray, w_times):
-    try:
-        times = space.getindex_w(w_times, space.w_OverflowError)
-    except OperationError, e:
-        if e.match(space, space.w_TypeError):
-            raise FailedToImplement
-        raise
-    data = w_bytearray.data
-    return W_BytearrayObject(data * times)
-
-def mul__Bytearray_ANY(space, w_bytearray, w_times):
-    return mul_bytearray_times(space, w_bytearray, w_times)
-
-def mul__ANY_Bytearray(space, w_times, w_bytearray):
-    return mul_bytearray_times(space, w_bytearray, w_times)
-
 def inplace_mul__Bytearray_ANY(space, w_bytearray, w_times):
     try:
         times = space.getindex_w(w_times, space.w_OverflowError)
diff --git a/pypy/objspace/std/stringmethods.py b/pypy/objspace/std/stringmethods.py
new file mode 100644
--- /dev/null
+++ b/pypy/objspace/std/stringmethods.py
@@ -0,0 +1,153 @@
+class StringMethods(object):
+    _mixin_ = True
+
+    def descr_eq(self, space):
+        pass
+
+    def descr_ne(self, space):
+        pass
+
+    def descr_lt(self, space):
+        pass
+
+    def descr_le(self, space):
+        pass
+
+    def descr_gt(self, space):
+        pass
+
+    def descr_ge(self, space):
+        pass
+
+    def descr_len(self, space):
+        pass
+
+    def descr_iter(self, space):
+        pass
+
+    def descr_contains(self, space):
+        pass
+
+    def descr_add(self, space):
+        pass
+
+    def descr_mul(self, space, w_times):
+        try:
+            times = space.getindex_w(w_times, space.w_OverflowError)
+        except OperationError, e:
+            if e.match(space, space.w_TypeError):
+                return NotImplemented
+            raise
+        data = self.get_value()
+        return self.new(data * times)
+
+    def descr_getitem(self, space):
+        pass
+
+    def descr_capitalize(self, space):
+        pass
+
+    def descr_center(self, space):
+        pass
+
+    def descr_count(self, space):
+        pass
+
+    def descr_decode(self, space):
+        pass
+
+    def descr_expandtabs(self, space):
+        pass
+
+    def descr_find(self, space):
+        pass
+
+    def descr_rfind(self, space):
+        pass
+
+    def descr_index(self, space):
+        pass
+
+    def descr_rindex(self, space):
+        pass
+
+    def descr_isalnum(self, space):
+        pass
+
+    def descr_isalpha(self, space):
+        pass
+
+    def descr_isdigit(self, space):
+        pass
+
+    def descr_islower(self, space):
+        pass
+
+    def descr_isspace(self, space):
+        pass
+
+    def descr_istitle(self, space):
+        pass
+
+    def descr_isupper(self, space):
+        pass
+
+    def descr_join(self, space):
+        pass
+
+    def descr_ljust(self, space):
+        pass
+
+    def descr_rjust(self, space):
+        pass
+
+    def descr_lower(self, space):
+        pass
+
+    def descr_partition(self, space):
+        pass
+
+    def descr_rpartition(self, space):
+        pass
+
+    def descr_replace(self, space):
+        pass
+
+    def descr_split(self, space):
+        pass
+
+    def descr_rsplit(self, space):
+        pass
+
+    def descr_splitlines(self, space):
+        pass
+
+    def descr_startswith(self, space):
+        pass
+
+    def descr_endswith(self, space):
+        pass
+
+    def descr_strip(self, space):
+        pass
+
+    def descr_lstrip(self, space):
+        pass
+
+    def descr_rstrip(self, space):
+        pass
+
+    def descr_swapcase(self, space):
+        pass
+
+    def descr_title(self, space):
+        pass
+
+    def descr_translate(self, space):
+        pass
+
+    def descr_upper(self, space):
+        pass
+
+    def descr_zfill(self, space):
+        pass


More information about the pypy-commit mailing list