[Numpy-svn] r5071 - in trunk/numpy/ma: . tests

numpy-svn at scipy.org numpy-svn at scipy.org
Wed Apr 23 10:46:36 EDT 2008


Author: pierregm
Date: 2008-04-23 09:46:29 -0500 (Wed, 23 Apr 2008)
New Revision: 5071

Modified:
   trunk/numpy/ma/core.py
   trunk/numpy/ma/tests/test_core.py
   trunk/numpy/ma/tests/test_old_ma.py
Log:
__float__ : raises a TypeError exception for arrays longer than 1
__int__   : raises a TypeError exception for arrays longer than 1

Modified: trunk/numpy/ma/core.py
===================================================================
--- trunk/numpy/ma/core.py	2008-04-23 09:58:58 UTC (rev 5070)
+++ trunk/numpy/ma/core.py	2008-04-23 14:46:29 UTC (rev 5071)
@@ -1740,14 +1740,20 @@
     #............................................
     def __float__(self):
         "Convert to float."
-        if self._mask is not nomask:
+        if self.size > 1:
+            raise TypeError,\
+                   "Only length-1 arrays can be converted to Python scalars"
+        elif self._mask:
             warnings.warn("Warning: converting a masked element to nan.")
             return numpy.nan
         return float(self.item())
 
     def __int__(self):
         "Convert to int."
-        if self._mask is not nomask:
+        if self.size > 1:
+            raise TypeError,\
+                   "Only length-1 arrays can be converted to Python scalars"
+        elif self._mask:
             raise MAError, 'Cannot convert masked element to a Python int.'
         return int(self.item())
     #............................................
@@ -3366,3 +3372,4 @@
 indices = numpy.indices
 
 ###############################################################################
+        
\ No newline at end of file

Modified: trunk/numpy/ma/tests/test_core.py
===================================================================
--- trunk/numpy/ma/tests/test_core.py	2008-04-23 09:58:58 UTC (rev 5070)
+++ trunk/numpy/ma/tests/test_core.py	2008-04-23 14:46:29 UTC (rev 5071)
@@ -702,16 +702,19 @@
         assert_equal(1.0, float(array(1)))
         assert_equal(1, int(array([[[1]]])))
         assert_equal(1.0, float(array([[1]])))
-        self.failUnlessRaises(ValueError, float, array([1,1]))
+        self.assertRaises(TypeError, float, array([1,1]))
 
         warnings.simplefilter('ignore',UserWarning)
         assert numpy.isnan(float(array([1],mask=[1])))
         warnings.simplefilter('default',UserWarning)
-#TODO: Check how bool works...
-#TODO:        self.failUnless(bool(array([0,1])))
-#TODO:        self.failUnless(bool(array([0,0],mask=[0,1])))
-#TODO:        self.failIf(bool(array([0,0])))
-#TODO:        self.failIf(bool(array([0,0],mask=[0,0])))
+        #
+        a = array([1,2,3],mask=[1,0,0])
+        self.assertRaises(TypeError, lambda:float(a))
+        assert_equal(float(a[-1]), 3.)
+        assert(numpy.isnan(float(a[0])))
+        self.assertRaises(TypeError, int, a)
+        assert_equal(int(a[-1]), 3)
+        self.assertRaises(MAError, lambda:int(a[0]))
     #........................
     def test_arraymethods(self):
         "Tests some MaskedArray methods."

Modified: trunk/numpy/ma/tests/test_old_ma.py
===================================================================
--- trunk/numpy/ma/tests/test_old_ma.py	2008-04-23 09:58:58 UTC (rev 5070)
+++ trunk/numpy/ma/tests/test_old_ma.py	2008-04-23 14:46:29 UTC (rev 5071)
@@ -577,7 +577,7 @@
         self.assertEqual(1.0, float(array(1)))
         self.assertEqual(1, int(array([[[1]]])))
         self.assertEqual(1.0, float(array([[1]])))
-        self.failUnlessRaises(ValueError, float, array([1,1]))
+        self.failUnlessRaises(TypeError, float, array([1,1]))
         self.failUnlessRaises(ValueError, bool, array([0,1]))
         self.failUnlessRaises(ValueError, bool, array([0,0],mask=[0,1]))
 




More information about the Numpy-svn mailing list