Author: Brian Kearns <bdkea...@gmail.com>
Branch: refactor-buffer-api
Changeset: r70905:a0c9719c5500
Date: 2014-04-23 19:41 -0400
http://bitbucket.org/pypy/pypy/changeset/a0c9719c5500/

Log:    move buffer to rpython

diff --git a/pypy/module/__pypy__/bytebuffer.py 
b/pypy/module/__pypy__/bytebuffer.py
--- a/pypy/module/__pypy__/bytebuffer.py
+++ b/pypy/module/__pypy__/bytebuffer.py
@@ -2,7 +2,7 @@
 # A convenient read-write buffer.  Located here for want of a better place.
 #
 
-from pypy.interpreter.buffer import Buffer
+from rpython.rlib.buffer import Buffer
 from pypy.interpreter.gateway import unwrap_spec
 
 
diff --git a/pypy/module/_cffi_backend/cbuffer.py 
b/pypy/module/_cffi_backend/cbuffer.py
--- a/pypy/module/_cffi_backend/cbuffer.py
+++ b/pypy/module/_cffi_backend/cbuffer.py
@@ -1,10 +1,10 @@
-from pypy.interpreter.buffer import Buffer
 from pypy.interpreter.error import oefmt
 from pypy.interpreter.gateway import unwrap_spec, interp2app
 from pypy.interpreter.typedef import TypeDef, make_weakref_descr
 from pypy.module._cffi_backend import cdataobj, ctypeptr, ctypearray
 from pypy.objspace.std.bufferobject import W_Buffer
 
+from rpython.rlib.buffer import Buffer
 from rpython.rtyper.annlowlevel import llstr
 from rpython.rtyper.lltypesystem import rffi
 from rpython.rtyper.lltypesystem.rstr import copy_string_to_raw
diff --git a/pypy/module/_io/interp_bufferedio.py 
b/pypy/module/_io/interp_bufferedio.py
--- a/pypy/module/_io/interp_bufferedio.py
+++ b/pypy/module/_io/interp_bufferedio.py
@@ -4,7 +4,7 @@
 from pypy.interpreter.typedef import (
     TypeDef, GetSetProperty, generic_new_descr, interp_attrproperty_w)
 from pypy.interpreter.gateway import interp2app, unwrap_spec, WrappedDefault
-from pypy.interpreter.buffer import Buffer
+from rpython.rlib.buffer import Buffer
 from rpython.rlib.rstring import StringBuilder
 from rpython.rlib.rarithmetic import r_longlong, intmask
 from rpython.rlib import rposix
diff --git a/pypy/module/_rawffi/buffer.py b/pypy/module/_rawffi/buffer.py
--- a/pypy/module/_rawffi/buffer.py
+++ b/pypy/module/_rawffi/buffer.py
@@ -1,4 +1,4 @@
-from pypy.interpreter.buffer import Buffer
+from rpython.rlib.buffer import Buffer
 
 # XXX not the most efficient implementation
 
diff --git a/pypy/module/array/interp_array.py 
b/pypy/module/array/interp_array.py
--- a/pypy/module/array/interp_array.py
+++ b/pypy/module/array/interp_array.py
@@ -1,6 +1,7 @@
 from __future__ import with_statement
 
 from rpython.rlib import jit
+from rpython.rlib.buffer import Buffer
 from rpython.rlib.objectmodel import keepalive_until_here
 from rpython.rlib.rarithmetic import ovfcheck, widen
 from rpython.rlib.unroll import unrolling_iterable
@@ -9,7 +10,6 @@
 from rpython.rtyper.lltypesystem.rstr import copy_string_to_raw
 
 from pypy.interpreter.baseobjspace import W_Root
-from pypy.interpreter.buffer import Buffer
 from pypy.interpreter.error import OperationError, oefmt
 from pypy.interpreter.gateway import (
     interp2app, interpindirect2app, unwrap_spec)
diff --git a/pypy/module/cpyext/bufferobject.py 
b/pypy/module/cpyext/bufferobject.py
--- a/pypy/module/cpyext/bufferobject.py
+++ b/pypy/module/cpyext/bufferobject.py
@@ -1,5 +1,5 @@
+from rpython.rlib.buffer import StringBuffer, SubBuffer
 from rpython.rtyper.lltypesystem import rffi, lltype
-from pypy.interpreter.buffer import StringBuffer, SubBuffer
 from pypy.interpreter.error import OperationError
 from pypy.module.cpyext.api import (
     cpython_api, Py_ssize_t, cpython_struct, bootstrap_function,
diff --git a/pypy/module/cpyext/slotdefs.py b/pypy/module/cpyext/slotdefs.py
--- a/pypy/module/cpyext/slotdefs.py
+++ b/pypy/module/cpyext/slotdefs.py
@@ -15,8 +15,8 @@
 from pypy.module.cpyext.pyerrors import PyErr_Occurred
 from pypy.module.cpyext.state import State
 from pypy.interpreter.error import OperationError, oefmt
-from pypy.interpreter.buffer import Buffer
 from pypy.interpreter.argument import Arguments
+from rpython.rlib.buffer import Buffer
 from rpython.rlib.unroll import unrolling_iterable
 from rpython.rlib.objectmodel import specialize
 from rpython.tool.sourcetools import func_renamer
diff --git a/pypy/module/micronumpy/concrete.py 
b/pypy/module/micronumpy/concrete.py
--- a/pypy/module/micronumpy/concrete.py
+++ b/pypy/module/micronumpy/concrete.py
@@ -1,6 +1,6 @@
-from pypy.interpreter.buffer import Buffer
 from pypy.interpreter.error import OperationError, oefmt
 from rpython.rlib import jit
+from rpython.rlib.buffer import Buffer
 from rpython.rlib.debug import make_sure_not_resized
 from rpython.rlib.rawstorage import alloc_raw_storage, free_raw_storage, \
     raw_storage_getitem, raw_storage_setitem, RAW_STORAGE
diff --git a/pypy/module/mmap/interp_mmap.py b/pypy/module/mmap/interp_mmap.py
--- a/pypy/module/mmap/interp_mmap.py
+++ b/pypy/module/mmap/interp_mmap.py
@@ -2,8 +2,8 @@
 from pypy.interpreter.baseobjspace import W_Root
 from pypy.interpreter.typedef import TypeDef
 from pypy.interpreter.gateway import interp2app, unwrap_spec
-from pypy.interpreter.buffer import Buffer
 from rpython.rlib import rmmap, rarithmetic
+from rpython.rlib.buffer import Buffer
 from rpython.rlib.rmmap import RValueError, RTypeError, RMMapError
 
 if rmmap.HAVE_LARGEFILE_SUPPORT:
diff --git a/pypy/objspace/fake/objspace.py b/pypy/objspace/fake/objspace.py
--- a/pypy/objspace/fake/objspace.py
+++ b/pypy/objspace/fake/objspace.py
@@ -1,10 +1,10 @@
 from rpython.annotator.model import SomeInstance, s_None
 from pypy.interpreter import argument, gateway
 from pypy.interpreter.baseobjspace import W_Root, ObjSpace, SpaceCache
-from pypy.interpreter.buffer import Buffer
 from pypy.interpreter.typedef import TypeDef, GetSetProperty
 from pypy.objspace.std.stdtypedef import StdTypeDef
 from pypy.objspace.std.sliceobject import W_SliceObject
+from rpython.rlib.buffer import Buffer
 from rpython.rlib.objectmodel import instantiate, we_are_translated, specialize
 from rpython.rlib.nonconst import NonConstant
 from rpython.rlib.rarithmetic import r_uint, r_singlefloat
diff --git a/pypy/objspace/std/bufferobject.py 
b/pypy/objspace/std/bufferobject.py
--- a/pypy/objspace/std/bufferobject.py
+++ b/pypy/objspace/std/bufferobject.py
@@ -3,7 +3,7 @@
 """
 import operator
 
-from pypy.interpreter import buffer
+from rpython.rlib.buffer import Buffer, StringBuffer, SubBuffer
 from pypy.interpreter.baseobjspace import W_Root
 from pypy.interpreter.error import OperationError
 from pypy.interpreter.gateway import interp2app, unwrap_spec
@@ -19,7 +19,7 @@
     """
 
     def __init__(self, buf):
-        assert isinstance(buf, buffer.Buffer)
+        assert isinstance(buf, Buffer)
         self.buf = buf
 
     def buffer_w(self, space, flags):
@@ -45,7 +45,6 @@
             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.readbuf_w(w_object)
@@ -59,7 +58,7 @@
         if size < -1:
             raise OperationError(space.w_ValueError,
                                  space.wrap("size must be zero or positive"))
-        buf = buffer.SubBuffer(buf, offset, size)
+        buf = SubBuffer(buf, offset, size)
         return W_Buffer(buf)
 
     def descr_len(self, space):
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
@@ -2,10 +2,10 @@
 
 from rpython.rlib.objectmodel import (
     import_from_mixin, newlist_hint, resizelist_hint)
+from rpython.rlib.buffer import Buffer
 from rpython.rlib.rstring import StringBuilder
 
 from pypy.interpreter.baseobjspace import W_Root
-from pypy.interpreter.buffer import Buffer
 from pypy.interpreter.error import OperationError, oefmt
 from pypy.interpreter.gateway import WrappedDefault, interp2app, unwrap_spec
 from pypy.interpreter.signature import Signature
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
@@ -3,10 +3,10 @@
 from rpython.rlib.jit import we_are_jitted
 from rpython.rlib.objectmodel import (
     compute_hash, compute_unique_id, import_from_mixin)
+from rpython.rlib.buffer import StringBuffer
 from rpython.rlib.rstring import StringBuilder, replace
 
 from pypy.interpreter.baseobjspace import W_Root
-from pypy.interpreter.buffer import StringBuffer
 from pypy.interpreter.error import OperationError, oefmt
 from pypy.interpreter.gateway import (
     WrappedDefault, interp2app, interpindirect2app, unwrap_spec)
diff --git a/pypy/objspace/std/memoryobject.py 
b/pypy/objspace/std/memoryobject.py
--- a/pypy/objspace/std/memoryobject.py
+++ b/pypy/objspace/std/memoryobject.py
@@ -3,7 +3,7 @@
 """
 import operator
 
-from pypy.interpreter import buffer
+from rpython.rlib.buffer import Buffer, SubBuffer
 from pypy.interpreter.baseobjspace import W_Root
 from pypy.interpreter.error import OperationError
 from pypy.interpreter.gateway import interp2app, unwrap_spec
@@ -35,7 +35,7 @@
     """
 
     def __init__(self, buf):
-        assert isinstance(buf, buffer.Buffer)
+        assert isinstance(buf, Buffer)
         self.buf = buf
 
     def buffer_w(self, space, flags):
@@ -85,7 +85,7 @@
         size = stop - start
         if size < 0:
             size = 0
-        buf = buffer.SubBuffer(self.buf, start, size)
+        buf = SubBuffer(self.buf, start, size)
         return W_MemoryView(buf)
 
     def descr_tobytes(self, space):
diff --git a/pypy/interpreter/buffer.py b/rpython/rlib/buffer.py
rename from pypy/interpreter/buffer.py
rename to rpython/rlib/buffer.py
diff --git a/pypy/interpreter/test/test_buffer.py 
b/rpython/rlib/test/test_buffer.py
rename from pypy/interpreter/test/test_buffer.py
rename to rpython/rlib/test/test_buffer.py
--- a/pypy/interpreter/test/test_buffer.py
+++ b/rpython/rlib/test/test_buffer.py
@@ -1,43 +1,9 @@
-import py
-from rpython.tool.udir import udir
+from rpython.rlib.buffer import *
 
-testdir = udir.ensure('test_buffer', dir=1)
 
-
-class TestBuffer:
-    def test_buffer_w(self):
-        space = self.space
-        w_hello = space.wrap('hello world')
-        buf = space.buffer_w(w_hello, space.BUF_SIMPLE)
-        assert buf.getlength() == 11
-        assert buf.as_str() == 'hello world'
-        assert buf.getslice(1, 6, 1, 5) == 'ello '
-        assert space.buffer_w(space.newbuffer(buf), space.BUF_SIMPLE) is buf
-        assert space.bufferstr_w(w_hello) == 'hello world'
-        assert space.bufferstr_w(space.newbuffer(space.buffer_w(w_hello, 
space.BUF_SIMPLE))) == 'hello world'
-        space.raises_w(space.w_TypeError, space.buffer_w, space.wrap(5), 
space.BUF_SIMPLE)
-
-    def test_file_write(self):
-        space = self.space
-        w_buffer = space.newbuffer(space.buffer_w(space.wrap('hello world'), 
space.BUF_SIMPLE))
-        filename = str(testdir.join('test_file_write'))
-        space.appexec([w_buffer, space.wrap(filename)], """(buffer, filename):
-            f = open(filename, 'wb')
-            f.write(buffer)
-            f.close()
-        """)
-        f = open(filename, 'rb')
-        data = f.read()
-        f.close()
-        assert data == 'hello world'
-
-    def test_unicode(self):
-        space = self.space
-        s = space.bufferstr_w(space.wrap(u'hello'))
-        assert type(s) is str
-        assert s == 'hello'
-        space.raises_w(space.w_UnicodeEncodeError,
-                       space.bufferstr_w, space.wrap(u'\xe9'))
-
-
-# Note: some app-level tests for buffer are in 
objspace/std/test/test_memoryview.py.
+def test_string_buffer():
+    buf = StringBuffer('hello world')
+    assert buf.getitem(4) == 'o'
+    assert buf.getlength() == 11
+    assert buf.getslice(1, 6, 1, 5) == 'ello '
+    assert buf.as_str() == 'hello world'
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to