summaryrefslogtreecommitdiff
path: root/numpy/ma/tests/test_subclassing.py
diff options
context:
space:
mode:
authorMarten van Kerkwijk <mhvk@astro.utoronto.ca>2016-02-20 20:03:40 -0500
committerMarten van Kerkwijk <mhvk@astro.utoronto.ca>2016-02-20 20:13:05 -0500
commitc104112d27922208d980ff8afe6e5132731823c9 (patch)
tree6a7233327666c6ae913c3b3ee0904e0d61731a0a /numpy/ma/tests/test_subclassing.py
parent6d3b34fed6d5c1af6eb02cd47d31ee48a15b582d (diff)
downloadnumpy-c104112d27922208d980ff8afe6e5132731823c9.tar.gz
Revert part of #3907 which incorrectly propogated MaskedArray info.
Diffstat (limited to 'numpy/ma/tests/test_subclassing.py')
-rw-r--r--numpy/ma/tests/test_subclassing.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/numpy/ma/tests/test_subclassing.py b/numpy/ma/tests/test_subclassing.py
index 68734425c..814ed5977 100644
--- a/numpy/ma/tests/test_subclassing.py
+++ b/numpy/ma/tests/test_subclassing.py
@@ -47,6 +47,14 @@ class SubArray(np.ndarray):
subarray = SubArray
+class SubMaskedArray(MaskedArray):
+ """Pure subclass of MaskedArray, keeping some info on subclass."""
+ def __new__(cls, info=None, **kwargs):
+ obj = super(SubMaskedArray, cls).__new__(cls, **kwargs)
+ obj._optinfo['info'] = info
+ return obj
+
+
class MSubArray(SubArray, MaskedArray):
def __new__(cls, data, info={}, mask=nomask):
@@ -332,6 +340,18 @@ class TestSubclassing(TestCase):
mxcsub = masked_array(xcsub, mask=[True, False, True, False, False])
self.assertTrue(str(mxcsub) == 'myprefix [-- 1 -- 3 4] mypostfix')
+ def test_pure_subclass_info_preservation(self):
+ # Test that ufuncs and methods conserve extra information consistently;
+ # see gh-7122.
+ arr1 = SubMaskedArray('test', data=[1,2,3,4,5,6])
+ arr2 = SubMaskedArray(data=[0,1,2,3,4,5])
+ diff1 = np.subtract(arr1, arr2)
+ self.assertTrue('info' in diff1._optinfo)
+ self.assertTrue(diff1._optinfo['info'] == 'test')
+ diff2 = arr1 - arr2
+ self.assertTrue('info' in diff2._optinfo)
+ self.assertTrue(diff2._optinfo['info'] == 'test')
+
###############################################################################
if __name__ == '__main__':