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

Reply via email to