Author: Ronan Lamy <[email protected]>
Branch: can_cast
Changeset: r76909:6048923edd3e
Date: 2015-04-23 14:37 +0100
http://bitbucket.org/pypy/pypy/changeset/6048923edd3e/
Log: extract as_dtype() from result_type() so it can be used in
can_cast() as well
diff --git a/pypy/module/micronumpy/arrayops.py
b/pypy/module/micronumpy/arrayops.py
--- a/pypy/module/micronumpy/arrayops.py
+++ b/pypy/module/micronumpy/arrayops.py
@@ -296,21 +296,25 @@
raise oefmt(space.w_ValueError, "at least one array or dtype is
required")
result = None
for w_arg in args_w:
- if isinstance(w_arg, W_NDimArray):
- dtype = w_arg.get_dtype()
- elif isinstance(w_arg, W_GenericBox) or (
- space.isinstance_w(w_arg, space.w_int) or
- space.isinstance_w(w_arg, space.w_float) or
- space.isinstance_w(w_arg, space.w_complex) or
- space.isinstance_w(w_arg, space.w_long) or
- space.isinstance_w(w_arg, space.w_bool)):
- dtype = ufuncs.find_dtype_for_scalar(space, w_arg)
- else:
- dtype = space.interp_w(descriptor.W_Dtype,
- space.call_function(space.gettypefor(descriptor.W_Dtype),
w_arg))
+ dtype = as_dtype(space, w_arg)
result = ufuncs.find_binop_result_dtype(space, result, dtype)
return result
@unwrap_spec(casting=str)
def can_cast(space, w_from, w_totype, casting='safe'):
return space.w_True
+
+def as_dtype(space, w_arg):
+ # roughly equivalent to CNumPy's PyArray_DescrConverter2
+ if isinstance(w_arg, W_NDimArray):
+ return w_arg.get_dtype()
+ elif isinstance(w_arg, W_GenericBox) or (
+ space.isinstance_w(w_arg, space.w_int) or
+ space.isinstance_w(w_arg, space.w_float) or
+ space.isinstance_w(w_arg, space.w_complex) or
+ space.isinstance_w(w_arg, space.w_long) or
+ space.isinstance_w(w_arg, space.w_bool)):
+ return ufuncs.find_dtype_for_scalar(space, w_arg)
+ else:
+ return space.interp_w(descriptor.W_Dtype,
+ space.call_function(space.gettypefor(descriptor.W_Dtype), w_arg))
diff --git a/pypy/module/micronumpy/test/test_ndarray.py
b/pypy/module/micronumpy/test/test_ndarray.py
--- a/pypy/module/micronumpy/test/test_ndarray.py
+++ b/pypy/module/micronumpy/test/test_ndarray.py
@@ -4049,4 +4049,3 @@
raises(TypeError, np.can_cast, 'i4', None)
raises(TypeError, np.can_cast, None, 'i4')
-
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit