Author: mattip <[email protected]>
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
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit