[pypy-commit] pypy PyBuffer-backport: fix micronumpy
rlamy
pypy.commits at gmail.com
Thu May 11 11:44:43 EDT 2017
Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: PyBuffer-backport
Changeset: r91253:2372a325f694
Date: 2017-05-11 16:43 +0100
http://bitbucket.org/pypy/pypy/changeset/2372a325f694/
Log: fix micronumpy
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
@@ -762,3 +762,6 @@
def getstrides(self):
return self.impl.strides
+
+ def get_raw_address(self):
+ return self.data.get_raw_address()
diff --git a/pypy/module/micronumpy/ctors.py b/pypy/module/micronumpy/ctors.py
--- a/pypy/module/micronumpy/ctors.py
+++ b/pypy/module/micronumpy/ctors.py
@@ -91,7 +91,7 @@
w_base = w_object
if read_only:
w_base = None
- return W_NDimArray.from_shape_and_storage(space, shape, w_data,
+ return W_NDimArray.from_shape_and_storage(space, shape, w_data,
dtype, w_base=w_base, strides=strides,
start=offset), read_only
if w_data is None:
@@ -104,11 +104,11 @@
#print 'create view from shape',shape,'dtype',dtype,'data',data
if strides is not None:
raise oefmt(space.w_NotImplementedError,
- "__array_interface__ strides not fully supported yet")
+ "__array_interface__ strides not fully supported yet")
arr = frombuffer(space, w_data, dtype, support.product(shape), offset)
new_impl = arr.implementation.reshape(arr, shape)
return W_NDimArray(new_impl), False
-
+
except OperationError as e:
if e.match(space, space.w_AttributeError):
return None, False
@@ -120,7 +120,7 @@
return descr
msg = "invalid PEP 3118 format string: '%s'" % c_format
space.warn(space.newtext(msg), space.w_RuntimeWarning)
- return None
+ return None
def _array_from_buffer_3118(space, w_object, dtype):
try:
@@ -139,12 +139,12 @@
raise oefmt(space.w_NotImplementedError,
"creating an array from a memoryview while specifying dtype "
"not supported")
- if descr.elsize != space.int_w(space.getattr(w_buf, space.newbytes('itemsize'))):
+ if descr.elsize != space.int_w(space.getattr(w_buf, space.newbytes('itemsize'))):
msg = ("Item size computed from the PEP 3118 buffer format "
"string does not match the actual item size.")
space.warn(space.newtext(msg), space.w_RuntimeWarning)
return w_object
- dtype = descr
+ dtype = descr
elif not dtype:
dtype = descriptor.get_dtype_cache(space).w_stringdtype
dtype.elsize = space.int_w(space.getattr(w_buf, space.newbytes('itemsize')))
@@ -181,7 +181,7 @@
raise e
writable = not space.bool_w(space.getattr(w_buf, space.newbytes('readonly')))
w_ret = W_NDimArray.from_shape_and_storage(space, shape, w_data,
- storage_bytes=buflen, dtype=dtype, w_base=w_object,
+ storage_bytes=buflen, dtype=dtype, w_base=w_object,
writable=writable, strides=strides)
if w_ret:
return w_ret
@@ -212,7 +212,7 @@
if not isinstance(w_object, W_NDimArray):
w_array = try_array_method(space, w_object, w_dtype)
if w_array is None:
- if ( not space.isinstance_w(w_object, space.w_bytes) and
+ if ( not space.isinstance_w(w_object, space.w_bytes) and
not space.isinstance_w(w_object, space.w_unicode) and
not isinstance(w_object, W_GenericBox)):
# use buffer interface
@@ -551,7 +551,7 @@
except OperationError as e:
if not e.match(space, space.w_TypeError):
raise
- w_buffer = space.call_method(w_buffer, '__buffer__',
+ w_buffer = space.call_method(w_buffer, '__buffer__',
space.newint(space.BUF_FULL_RO))
buf = _getbuffer(space, w_buffer)
diff --git a/pypy/module/micronumpy/ndarray.py b/pypy/module/micronumpy/ndarray.py
--- a/pypy/module/micronumpy/ndarray.py
+++ b/pypy/module/micronumpy/ndarray.py
@@ -807,6 +807,15 @@
def buffer_w(self, space, flags):
return self.implementation.get_buffer(space, flags)
+ def readbuf_w(self, space):
+ return self.implementation.get_buffer(space, space.BUF_FULL_RO).as_readbuf()
+
+ def writebuf_w(self, space):
+ return self.implementation.get_buffer(space, space.BUF_FULL).as_writebuf()
+
+ def charbuf_w(self, space):
+ return self.implementation.get_buffer(space, space.BUF_FULL_RO).as_str()
+
def descr_get_data(self, space):
return space.newbuffer(
self.implementation.get_buffer(space, space.BUF_FULL).as_writebuf())
diff --git a/pypy/module/micronumpy/types.py b/pypy/module/micronumpy/types.py
--- a/pypy/module/micronumpy/types.py
+++ b/pypy/module/micronumpy/types.py
@@ -454,8 +454,8 @@
return Float64(self.space).box(self.unbox(v))
# numpy 1.10 compatibility
raise oefmt(self.space.w_TypeError, "ufunc casting failure")
-
-
+
+
class Integer(Primitive):
_mixin_ = True
More information about the pypy-commit
mailing list