Author: mattip <matti.pi...@gmail.com>
Branch: numpy-1.10
Changeset: r80687:37a1526c81b5
Date: 2015-11-15 17:16 +0200
http://bitbucket.org/pypy/pypy/changeset/37a1526c81b5/

Log:    start to add numpy-specific warnings

diff --git a/pypy/module/micronumpy/__init__.py 
b/pypy/module/micronumpy/__init__.py
--- a/pypy/module/micronumpy/__init__.py
+++ b/pypy/module/micronumpy/__init__.py
@@ -34,6 +34,7 @@
         'nditer': 'nditer.W_NDIter',
 
         'set_docstring': 'support.descr_set_docstring',
+        'VisibleDeprecationWarning': 'support.W_VisibleDeprecationWarning',
     }
     for c in ['MAXDIMS', 'CLIP', 'WRAP', 'RAISE']:
         interpleveldefs[c] = 'space.wrap(constants.%s)' % c
diff --git a/pypy/module/micronumpy/support.py 
b/pypy/module/micronumpy/support.py
--- a/pypy/module/micronumpy/support.py
+++ b/pypy/module/micronumpy/support.py
@@ -8,6 +8,17 @@
 from pypy.objspace.std.typeobject import W_TypeObject
 from pypy.objspace.std.objspace import StdObjSpace
 from pypy.module.micronumpy import constants as NPY
+from pypy.module.exceptions.interp_exceptions import _new_exception, 
W_UserWarning
+
+W_VisibleDeprecationWarning = _new_exception('VisibleDeprecationWarning', 
W_UserWarning,
+    """Visible deprecation warning.
+
+    By default, python will not show deprecation warnings, so this class
+    can be used when a very visible warning is helpful, for example because
+    the usage is most likely a user bug.
+
+    """)
+
 
 def issequence_w(space, w_obj):
     from pypy.module.micronumpy.base import W_NDimArray
diff --git a/pypy/module/micronumpy/test/test_deprecations.py 
b/pypy/module/micronumpy/test/test_deprecations.py
new file mode 100644
--- /dev/null
+++ b/pypy/module/micronumpy/test/test_deprecations.py
@@ -0,0 +1,31 @@
+import py
+import sys
+
+from pypy.module.micronumpy.test.test_base import BaseNumpyAppTest
+
+
+class AppTestDeprecations(BaseNumpyAppTest):
+    spaceconfig = dict(usemodules=["micronumpy", "struct", "binascii"])
+
+    def test_getitem(self):
+        import numpy as np
+        import warnings
+        warnings.simplefilter('error', np.VisibleDeprecationWarning)
+        try:
+            arr = np.ones((5, 4, 3))
+            index = np.array([True])
+            #self.assert_deprecated(arr.__getitem__, args=(index,))
+            raises(np.VisibleDeprecationWarning, arr.__getitem__, index)
+
+            index = np.array([False] * 6)
+            #self.assert_deprecated(arr.__getitem__, args=(index,))
+            raises(np.VisibleDeprecationWarning, arr.__getitem__, index)
+
+            index = np.zeros((4, 4), dtype=bool)
+            #self.assert_deprecated(arr.__getitem__, args=(index,))
+            raises(np.VisibleDeprecationWarning, arr.__getitem__, index)
+            #self.assert_deprecated(arr.__getitem__, args=((slice(None), 
index),))
+            raises(np.VisibleDeprecationWarning, arr.__getitem__, 
(slice(None), index))
+        finally:
+            warnings.simplefilter('default', np.VisibleDeprecationWarning)
+
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to