[pypy-commit] pypy default: support dtype from commastring
bdkearns
noreply at buildbot.pypy.org
Sun Feb 23 20:02:30 CET 2014
Author: Brian Kearns <bdkearns at gmail.com>
Branch:
Changeset: r69286:b744291da355
Date: 2014-02-23 02:39 -0500
http://bitbucket.org/pypy/pypy/changeset/b744291da355/
Log: support dtype from commastring
diff --git a/pypy/module/micronumpy/appbridge.py b/pypy/module/micronumpy/appbridge.py
--- a/pypy/module/micronumpy/appbridge.py
+++ b/pypy/module/micronumpy/appbridge.py
@@ -4,6 +4,7 @@
w__mean = None
w__var = None
w__std = None
+ w__commastring = None
w_array_repr = None
w_array_str = None
diff --git a/pypy/module/micronumpy/interp_dtype.py b/pypy/module/micronumpy/interp_dtype.py
--- a/pypy/module/micronumpy/interp_dtype.py
+++ b/pypy/module/micronumpy/interp_dtype.py
@@ -1,3 +1,4 @@
+from pypy.interpreter.argument import Arguments
from pypy.interpreter.baseobjspace import W_Root
from pypy.interpreter.error import OperationError, oefmt
from pypy.interpreter.gateway import interp2app, unwrap_spec
@@ -8,6 +9,7 @@
from rpython.rlib.rarithmetic import LONG_BIT, r_longlong, r_ulonglong
from rpython.rtyper.lltypesystem import rffi
from rpython.rlib import jit
+from pypy.module.micronumpy.appbridge import get_appbridge_cache
from pypy.module.micronumpy.conversion_utils import byteorder_converter
from pypy.module.micronumpy.constants import *
@@ -391,9 +393,17 @@
"dtype from dict"))
-def dtype_from_spec(space, name):
- raise OperationError(space.w_NotImplementedError, space.wrap(
- "dtype from spec"))
+def dtype_from_spec(space, w_spec):
+ w_lst = get_appbridge_cache(space).call_method(space,
+ 'numpy.core._internal', '_commastring', Arguments(space, [w_spec]))
+ if not space.isinstance_w(w_lst, space.w_list) or space.len_w(w_lst) < 1:
+ raise oefmt(space.w_RuntimeError,
+ "_commastring is not returning a list with len >= 1")
+ if space.len_w(w_lst) == 1:
+ return descr__new__(space, space.gettypefor(W_Dtype),
+ space.getitem(w_lst, space.wrap(0)))
+ else:
+ return dtype_from_list(space, w_lst)
def descr__new__(space, w_subtype, w_dtype, w_align=None, w_copy=None, w_shape=None):
@@ -427,7 +437,7 @@
elif space.isinstance_w(w_dtype, space.w_str):
name = space.str_w(w_dtype)
if ',' in name:
- return dtype_from_spec(space, name)
+ return dtype_from_spec(space, w_dtype)
try:
return cache.dtypes_by_name[name]
except KeyError:
diff --git a/pypy/module/micronumpy/test/test_appbridge.py b/pypy/module/micronumpy/test/test_appbridge.py
--- a/pypy/module/micronumpy/test/test_appbridge.py
+++ b/pypy/module/micronumpy/test/test_appbridge.py
@@ -9,3 +9,10 @@
op()
except ImportError as e:
assert str(e) == 'No module named numpy.core'
+
+ def test_dtype_commastring(self):
+ import numpy as np
+ try:
+ d = np.dtype('u4,u4,u4')
+ except ImportError as e:
+ assert str(e) == 'No module named numpy.core'
More information about the pypy-commit
mailing list