Author: Philip Jenvey <pjen...@underboss.org> Branch: py3k Changeset: r70080:415ae19bb4d1 Date: 2014-03-18 21:56 -0700 http://bitbucket.org/pypy/pypy/changeset/415ae19bb4d1/
Log: kill W_Buffer diff --git a/pypy/objspace/std/memoryview.py b/pypy/objspace/std/memoryview.py --- a/pypy/objspace/std/memoryview.py +++ b/pypy/objspace/std/memoryview.py @@ -31,141 +31,6 @@ " slicing with a step")) -class W_Buffer(W_Root): - """Implement the built-in 'buffer' type as a wrapper around - an interp-level buffer. - """ - - def __init__(self, buf): - assert isinstance(buf, buffer.Buffer) - self.buf = buf - - def buffer_w(self, space): - return self.buf - - @staticmethod - @unwrap_spec(offset=int, size=int) - def descr_new_buffer(space, w_subtype, w_object, offset=0, size=-1): - if space.isinstance_w(w_object, space.w_unicode): - # unicode objects support the old buffer interface - # but not the new buffer interface (change in python 2.7) - from rpython.rlib.rstruct.unichar import pack_unichar, UNICODE_SIZE - unistr = space.unicode_w(w_object) - builder = StringBuilder(len(unistr) * UNICODE_SIZE) - for unich in unistr: - pack_unichar(unich, builder) - from pypy.interpreter.buffer import StringBuffer - buf = StringBuffer(builder.build()) - else: - buf = space.buffer_w(w_object) - - if offset == 0 and size == -1: - return W_Buffer(buf) - # handle buffer slices - if offset < 0: - raise OperationError(space.w_ValueError, - space.wrap("offset must be zero or positive")) - if size < -1: - raise OperationError(space.w_ValueError, - space.wrap("size must be zero or positive")) - if isinstance(buf, buffer.RWBuffer): - buf = buffer.RWSubBuffer(buf, offset, size) - else: - buf = buffer.SubBuffer(buf, offset, size) - return W_Buffer(buf) - - def descr_len(self, space): - return space.wrap(self.buf.getlength()) - - def descr_getitem(self, space, w_index): - start, stop, step, size = space.decode_index4(w_index, self.buf.getlength()) - if step == 0: # index only - return space.wrapbytes(self.buf.getitem(start)) - res = self.buf.getslice(start, stop, step, size) - return space.wrapbytes(res) - - @unwrap_spec(newstring='bufferstr') - def descr_setitem(self, space, w_index, newstring): - if not isinstance(self.buf, buffer.RWBuffer): - raise OperationError(space.w_TypeError, - space.wrap("buffer is read-only")) - _buffer_setitem(space, self.buf, w_index, newstring) - - def descr_str(self, space): - return space.wrap(self.buf.as_str()) - - @unwrap_spec(other='bufferstr') - def descr_add(self, space, other): - return space.wrapbytes(self.buf.as_str() + other) - - def _make_descr__cmp(name): - def descr__cmp(self, space, w_other): - if not isinstance(w_other, W_Buffer): - return space.w_NotImplemented - # xxx not the most efficient implementation - str1 = self.buf.as_str() - str2 = w_other.buf.as_str() - return space.wrap(getattr(operator, name)(str1, str2)) - descr__cmp.func_name = name - return descr__cmp - - descr_eq = _make_descr__cmp('eq') - descr_ne = _make_descr__cmp('ne') - descr_lt = _make_descr__cmp('lt') - descr_le = _make_descr__cmp('le') - descr_gt = _make_descr__cmp('gt') - descr_ge = _make_descr__cmp('ge') - - def descr_hash(self, space): - return space.wrap(compute_hash(self.buf.as_str())) - - def descr_mul(self, space, w_times): - # xxx not the most efficient implementation - w_string = space.wrapbytes(self.buf.as_str()) - # use the __mul__ method instead of space.mul() so that we - # return NotImplemented instead of raising a TypeError - return space.call_method(w_string, '__mul__', w_times) - - def descr_repr(self, space): - if isinstance(self.buf, buffer.RWBuffer): - info = 'read-write buffer' - else: - info = 'read-only buffer' - addrstring = self.getaddrstring(space) - - return space.wrap("<%s for 0x%s, size %d>" % - (info, addrstring, self.buf.getlength())) - -W_Buffer.typedef = TypeDef( - "buffer", - __doc__ = """\ -buffer(object [, offset[, size]]) - -Create a new buffer object which references the given object. -The buffer will reference a slice of the target object from the -start of the object (or at the specified offset). The slice will -extend to the end of the target object (or with the specified size). -""", - __new__ = interp2app(W_Buffer.descr_new_buffer), - __len__ = interp2app(W_Buffer.descr_len), - __getitem__ = interp2app(W_Buffer.descr_getitem), - __setitem__ = interp2app(W_Buffer.descr_setitem), - __str__ = interp2app(W_Buffer.descr_str), - __add__ = interp2app(W_Buffer.descr_add), - __eq__ = interp2app(W_Buffer.descr_eq), - __ne__ = interp2app(W_Buffer.descr_ne), - __lt__ = interp2app(W_Buffer.descr_lt), - __le__ = interp2app(W_Buffer.descr_le), - __gt__ = interp2app(W_Buffer.descr_gt), - __ge__ = interp2app(W_Buffer.descr_ge), - __hash__ = interp2app(W_Buffer.descr_hash), - __mul__ = interp2app(W_Buffer.descr_mul), - __rmul__ = interp2app(W_Buffer.descr_mul), - __repr__ = interp2app(W_Buffer.descr_repr), -) -W_Buffer.typedef.acceptable_as_base_class = False - - class W_MemoryView(W_Root): """Implement the built-in 'memoryview' type as a wrapper around an interp-level buffer. diff --git a/pypy/objspace/std/objspace.py b/pypy/objspace/std/objspace.py --- a/pypy/objspace/std/objspace.py +++ b/pypy/objspace/std/objspace.py @@ -25,7 +25,7 @@ from pypy.objspace.std.iterobject import W_AbstractSeqIterObject from pypy.objspace.std.listobject import W_ListObject from pypy.objspace.std.longobject import W_LongObject, newlong -from pypy.objspace.std.memoryview import W_Buffer +from pypy.objspace.std.memoryview import W_MemoryView from pypy.objspace.std.noneobject import W_NoneObject from pypy.objspace.std.objectobject import W_ObjectObject from pypy.objspace.std.iterobject import W_SeqIterObject @@ -341,7 +341,7 @@ return W_SeqIterObject(w_obj) def newbuffer(self, w_obj): - return W_Buffer(w_obj) + return W_MemoryView(w_obj) def type(self, w_obj): jit.promote(w_obj.__class__) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit