deprecating assignment to ndarray.data

So it turns out that ndarray.data supports assignment at the Python level, and what it does is just assign to the ->data field of the ndarray object: https://github.com/numpy/numpy/blob/master/numpy/core/src/multiarray/getset.... This kind of assignment been deprecated at the C level since 1.7, and is totally unsafe -- if there are any views pointing to the array when this happens, then they'll be left pointing off into unallocated memory. E.g.: a = np.arange(10) b = np.linspace(0, 1, 10) c = a.view() a.data = b.data # Now c points into free'd memory Can we deprecate or just remove this? (Also filed issue: https://github.com/numpy/numpy/issues/7093) -n -- Nathaniel J. Smith -- https://vorpus.org

Does this apply in any way to the .data attribute in scipy.sparse matrices? I fiddle with that quite often! On Fri, Jan 22, 2016 at 11:21 AM, Nathaniel Smith <njs@pobox.com> wrote:
So it turns out that ndarray.data supports assignment at the Python level, and what it does is just assign to the ->data field of the ndarray object:
https://github.com/numpy/numpy/blob/master/numpy/core/src/multiarray/getset....
This kind of assignment been deprecated at the C level since 1.7, and is totally unsafe -- if there are any views pointing to the array when this happens, then they'll be left pointing off into unallocated memory.
E.g.:
a = np.arange(10) b = np.linspace(0, 1, 10) c = a.view() a.data = b.data # Now c points into free'd memory
Can we deprecate or just remove this?
(Also filed issue: https://github.com/numpy/numpy/issues/7093)
-n
-- Nathaniel J. Smith -- https://vorpus.org _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org https://mail.scipy.org/mailman/listinfo/numpy-discussion

On 1/21/2016 8:32 PM, Nathaniel Smith wrote:
Does this apply in any way to the .data attribute in scipy.sparse matrices?
Nope!
-n
How about the .data attribute of masked arrays? I'm guessing there may be a decent amount of code that uses array.data to try to duck-type ndarrays and MaskedArrays even though there are better ways to do this, for example np.ma.getdata. Cheers, - Jonathan Helmus

On Thu, Jan 21, 2016 at 10:24 PM, Jonathan J. Helmus <jjhelmus@gmail.com> wrote:
On 1/21/2016 8:32 PM, Nathaniel Smith wrote:
Does this apply in any way to the .data attribute in scipy.sparse matrices?
Nope!
-n
How about the .data attribute of masked arrays? I'm guessing there may be a decent amount of code that uses array.data to try to duck-type ndarrays and MaskedArrays even though there are better ways to do this, for example np.ma.getdata.
It turns out the .data attribute on MaskedArrays has nothing whatsoever to do with the .data attribute on ndarrays, so yeah, this is also unaffected. -n -- Nathaniel J. Smith -- https://vorpus.org
participants (3)
-
Jonathan J. Helmus
-
Juan Nunez-Iglesias
-
Nathaniel Smith