Author: Maciej Fijalkowski <[email protected]>
Branch: kill-someobject
Changeset: r57972:d3d2090571dd
Date: 2012-10-10 15:21 +0200
http://bitbucket.org/pypy/pypy/changeset/d3d2090571dd/
Log: in-progress
diff --git a/pypy/module/_rawffi/array.py b/pypy/module/_rawffi/array.py
--- a/pypy/module/_rawffi/array.py
+++ b/pypy/module/_rawffi/array.py
@@ -3,7 +3,7 @@
to app-level with apropriate interface
"""
-from pypy.interpreter.gateway import interp2app, unwrap_spec
+from pypy.interpreter.gateway import interp2app, unwrap_spec, is_none
from pypy.interpreter.typedef import TypeDef, GetSetProperty,
interp_attrproperty
from pypy.rpython.lltypesystem import lltype, rffi
from pypy.interpreter.error import OperationError
@@ -48,7 +48,7 @@
@unwrap_spec(length=int, autofree=bool)
def descr_call(self, space, length, w_items=None, autofree=False):
result = self.allocate(space, length, autofree)
- if not space.is_w(w_items, space.w_None):
+ if is_none(space, w_items):
items_w = space.unpackiterable(w_items)
iterlength = len(items_w)
if iterlength > length:
diff --git a/pypy/module/micronumpy/interp_arrayops.py
b/pypy/module/micronumpy/interp_arrayops.py
--- a/pypy/module/micronumpy/interp_arrayops.py
+++ b/pypy/module/micronumpy/interp_arrayops.py
@@ -4,9 +4,10 @@
from pypy.module.micronumpy.iter import Chunk, Chunks
from pypy.module.micronumpy.strides import shape_agreement
from pypy.interpreter.error import OperationError, operationerrfmt
-from pypy.interpreter.gateway import unwrap_spec, is_none
+from pypy.interpreter.gateway import unwrap_spec, is_none, W_Root
-def where(space, w_arr, w_x=None, w_y=None):
+@unwrap_spec(w_x = (W_Root, 'space.w_None'), w_y = (W_Root, 'space.w_None'))
+def where(space, w_arr, w_x, w_y):
"""where(condition, [x, y])
Return elements, either from `x` or `y`, depending on `condition`.
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
@@ -2,7 +2,7 @@
import sys
from pypy.interpreter.baseobjspace import Wrappable
from pypy.interpreter.error import OperationError
-from pypy.interpreter.gateway import interp2app, unwrap_spec
+from pypy.interpreter.gateway import interp2app, unwrap_spec, is_none
from pypy.interpreter.typedef import (TypeDef, GetSetProperty,
interp_attrproperty, interp_attrproperty_w)
from pypy.module.micronumpy import types, interp_boxes
@@ -19,7 +19,7 @@
UNICODELTR = 'U'
def decode_w_dtype(space, w_dtype):
- if w_dtype is None or space.is_w(w_dtype, space.w_None):
+ if is_none(space, w_dtype):
return None
return space.interp_w(W_Dtype,
space.call_function(space.gettypefor(W_Dtype), w_dtype))
@@ -208,7 +208,7 @@
def descr__new__(space, w_subtype, w_dtype):
cache = get_dtype_cache(space)
- if space.is_w(w_dtype, space.w_None):
+ if is_none(space, w_dtype):
return cache.w_float64dtype
elif space.isinstance_w(w_dtype, w_subtype):
return w_dtype
diff --git a/pypy/module/micronumpy/interp_numarray.py
b/pypy/module/micronumpy/interp_numarray.py
--- a/pypy/module/micronumpy/interp_numarray.py
+++ b/pypy/module/micronumpy/interp_numarray.py
@@ -1,7 +1,8 @@
from pypy.interpreter.error import operationerrfmt, OperationError
from pypy.interpreter.typedef import TypeDef, GetSetProperty
-from pypy.interpreter.gateway import interp2app, unwrap_spec, is_none
+from pypy.interpreter.gateway import interp2app, unwrap_spec, is_none,\
+ W_Root
from pypy.module.micronumpy.base import W_NDimArray, convert_to_array,\
ArrayArgumentException
from pypy.module.micronumpy import interp_dtype, interp_ufuncs, interp_boxes
@@ -18,6 +19,8 @@
from pypy.rlib.rstring import StringBuilder
def _find_shape(space, w_size):
+ if is_none(space, w_size):
+ return []
if space.isinstance_w(w_size, space.w_int):
return [space.int_w(w_size)]
shape = []
@@ -476,11 +479,13 @@
return loop.multidim_dot(space, self, other, result, dtype,
other_critical_dim)
- def descr_var(self, space, w_axis=None):
+ @unwrap_spec(w_axis = (W_Root, 'space.w_None'))
+ def descr_var(self, space, w_axis):
return get_appbridge_cache(space).call_method(space, '_var', self,
w_axis)
- def descr_std(self, space, w_axis=None):
+ @unwrap_spec(w_axis = (W_Root, 'space.w_None'))
+ def descr_std(self, space, w_axis):
return get_appbridge_cache(space).call_method(space, '_std', self,
w_axis)
@@ -488,7 +493,7 @@
def _reduce_ufunc_impl(ufunc_name, promote_to_largest=False):
def impl(self, space, w_axis=None, w_out=None, w_dtype=None):
- if space.is_w(w_out, space.w_None) or not w_out:
+ if is_none(space, w_out):
out = None
elif not isinstance(w_out, W_NDimArray):
raise OperationError(space.w_TypeError, space.wrap(
@@ -509,7 +514,7 @@
descr_any = _reduce_ufunc_impl('logical_or')
def descr_mean(self, space, w_axis=None, w_out=None):
- if space.is_w(w_axis, space.w_None):
+ if is_none(space, w_axis):
w_denom = space.wrap(self.get_size())
else:
axis = unwrap_axis_arg(space, len(self.get_shape()), w_axis)
@@ -531,9 +536,9 @@
@unwrap_spec(offset=int)
def descr_new_array(space, w_subtype, w_shape, w_dtype=None, w_buffer=None,
offset=0, w_strides=None, w_order=None):
- if (offset != 0 or not space.is_w(w_strides, space.w_None) or
- not space.is_w(w_order, space.w_None) or
- not space.is_w(w_buffer, space.w_None)):
+ if (offset != 0 or is_none(space, w_strides) or
+ not is_none(space, w_order) or
+ not is_none(space, w_buffer)):
raise OperationError(space.w_NotImplementedError,
space.wrap("unsupported param"))
dtype = space.interp_w(interp_dtype.W_Dtype,
@@ -644,12 +649,12 @@
def array(space, w_object, w_dtype=None, copy=True, w_order=None, subok=False,
ndmin=0):
if not space.issequence_w(w_object):
- if w_dtype is None or space.is_w(w_dtype, space.w_None):
+ if is_none(space, w_dtype):
w_dtype = interp_ufuncs.find_dtype_for_scalar(space, w_object)
dtype = space.interp_w(interp_dtype.W_Dtype,
space.call_function(space.gettypefor(interp_dtype.W_Dtype), w_dtype))
return W_NDimArray.new_scalar(space, dtype, w_object)
- if w_order is None or space.is_w(w_order, space.w_None):
+ if is_none(space, w_order):
order = 'C'
else:
order = space.str_w(w_order)
diff --git a/pypy/module/micronumpy/interp_support.py
b/pypy/module/micronumpy/interp_support.py
--- a/pypy/module/micronumpy/interp_support.py
+++ b/pypy/module/micronumpy/interp_support.py
@@ -1,5 +1,5 @@
from pypy.interpreter.error import OperationError, operationerrfmt
-from pypy.interpreter.gateway import unwrap_spec
+from pypy.interpreter.gateway import unwrap_spec, is_none, W_Root
from pypy.rpython.lltypesystem import lltype, rffi
from pypy.module.micronumpy import interp_dtype, loop
from pypy.objspace.std.strutil import strip_spaces
@@ -75,7 +75,7 @@
loop.fromstring_loop(a, dtype, itemsize, s)
return space.wrap(a)
-@unwrap_spec(s=str, count=int, sep=str)
+@unwrap_spec(s=str, count=int, sep=str, w_dtype=(W_Root, 'space.w_None'))
def fromstring(space, s, w_dtype=None, count=-1, sep=''):
dtype = space.interp_w(interp_dtype.W_Dtype,
space.call_function(space.gettypefor(interp_dtype.W_Dtype), w_dtype)
@@ -87,7 +87,7 @@
return _fromstring_text(space, s, count, sep, length, dtype)
def unwrap_axis_arg(space, shapelen, w_axis):
- if space.is_w(w_axis, space.w_None) or not w_axis:
+ if is_none(space, w_axis):
axis = maxint
else:
axis = space.int_w(w_axis)
diff --git a/pypy/module/micronumpy/interp_ufuncs.py
b/pypy/module/micronumpy/interp_ufuncs.py
--- a/pypy/module/micronumpy/interp_ufuncs.py
+++ b/pypy/module/micronumpy/interp_ufuncs.py
@@ -1,6 +1,7 @@
from pypy.interpreter.baseobjspace import Wrappable
from pypy.interpreter.error import OperationError, operationerrfmt
-from pypy.interpreter.gateway import interp2app, unwrap_spec, NoneNotWrapped
+from pypy.interpreter.gateway import interp2app, unwrap_spec,\
+ is_none
from pypy.interpreter.typedef import TypeDef, GetSetProperty,
interp_attrproperty
from pypy.module.micronumpy import interp_boxes, interp_dtype, loop
from pypy.rlib import jit
@@ -73,7 +74,7 @@
return self.call(space, args_w)
@unwrap_spec(skipna=bool, keepdims=bool)
- def descr_reduce(self, space, w_obj, w_axis=NoneNotWrapped, w_dtype=None,
+ def descr_reduce(self, space, w_obj, w_axis=None, w_dtype=None,
skipna=False, keepdims=False, w_out=None):
"""reduce(...)
reduce(a, axis=0)
@@ -130,7 +131,7 @@
from pypy.module.micronumpy.interp_numarray import W_NDimArray
if w_axis is None:
w_axis = space.wrap(0)
- if space.is_w(w_out, space.w_None):
+ if is_none(space, w_out):
out = None
elif not isinstance(w_out, W_NDimArray):
raise OperationError(space.w_TypeError, space.wrap(
@@ -298,7 +299,7 @@
promote_bools=self.promote_bools,
allow_complex=self.allow_complex,
)
- if space.is_w(w_out, space.w_None) or w_out is None:
+ if is_none(space, w_out):
out = None
elif not isinstance(w_out, W_NDimArray):
raise OperationError(space.w_TypeError, space.wrap(
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit