diff options
author | Marten van Kerkwijk <mhvk@astro.utoronto.ca> | 2016-02-20 20:03:40 -0500 |
---|---|---|
committer | Marten van Kerkwijk <mhvk@astro.utoronto.ca> | 2016-02-20 20:13:05 -0500 |
commit | c104112d27922208d980ff8afe6e5132731823c9 (patch) | |
tree | 6a7233327666c6ae913c3b3ee0904e0d61731a0a /numpy/ma/tests/test_subclassing.py | |
parent | 6d3b34fed6d5c1af6eb02cd47d31ee48a15b582d (diff) | |
download | numpy-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.py | 20 |
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__': |