diff options
author | Matti Picus <matti.picus@gmail.com> | 2019-06-28 18:27:42 -0700 |
---|---|---|
committer | Sebastian Berg <sebastian@sipsolutions.net> | 2019-06-28 18:27:42 -0700 |
commit | 59ebfbbe32bcac4a278c39a9a24b80a42d47a8f6 (patch) | |
tree | abcdbeac29cc19a7bb839ab4578a08668e6eaef5 /numpy/lib/tests | |
parent | e7383b5d5dff636ed92667a28751ce18f7086097 (diff) | |
download | numpy-59ebfbbe32bcac4a278c39a9a24b80a42d47a8f6.tar.gz |
ENH: Deprecate writeable broadcast_array (#12609)
When the base is not an array (or generally when the flag of the base
array was toggled), it is OK to allow setting the writeable flag to
True, as long as any ancestor (especially the last one) is writeable.
This commit also slightly change the behaviour of the base attribute.
---
* ENH: Deprecate writeable broadcast_array
* ENH: Make writeable flag enabling more reliable for non-array bases
When the base is not an array (or generally when the flag of the base
array was toggled), it is OK to allow setting the writeable flag to
True, as long as any ancestor (especially the last one) is writeable.
* Update doc/release/1.17.0-notes.rst
Co-Authored-By: Sebastian Berg <sebastian@sipsolutions.net>
* Update doc/release/1.17.0-notes.rst
Co-Authored-By: Sebastian Berg <sebastian@sipsolutions.net>
* Update numpy/lib/tests/test_stride_tricks.py
Co-Authored-By: Sebastian Berg <sebastian@sipsolutions.net>
* Update numpy/core/tests/test_multiarray.py
Co-Authored-By: Sebastian Berg <sebastian@sipsolutions.net>
* DOC: improve warning (from review)
Diffstat (limited to 'numpy/lib/tests')
-rw-r--r-- | numpy/lib/tests/test_stride_tricks.py | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/numpy/lib/tests/test_stride_tricks.py b/numpy/lib/tests/test_stride_tricks.py index b2bd7da3e..955fb914c 100644 --- a/numpy/lib/tests/test_stride_tricks.py +++ b/numpy/lib/tests/test_stride_tricks.py @@ -4,7 +4,7 @@ import numpy as np from numpy.core._rational_tests import rational from numpy.testing import ( assert_equal, assert_array_equal, assert_raises, assert_, - assert_raises_regex + assert_raises_regex, assert_warns, ) from numpy.lib.stride_tricks import ( as_strided, broadcast_arrays, _broadcast_shape, broadcast_to @@ -415,12 +415,28 @@ def test_writeable(): assert_equal(result.flags.writeable, False) assert_raises(ValueError, result.__setitem__, slice(None), 0) - # but the result of broadcast_arrays needs to be writeable (for now), to + # but the result of broadcast_arrays needs to be writeable, to # preserve backwards compatibility for results in [broadcast_arrays(original), broadcast_arrays(0, original)]: for result in results: + # This will change to False in a future version + if any([s == 0 for s in result.strides]): + with assert_warns(FutureWarning): + assert_equal(result.flags.writeable, True) + with assert_warns(DeprecationWarning): + result[:] = 0 + # Warning not emitted, writing to the array resets it + assert_equal(result.flags.writeable, True) + for results in [broadcast_arrays(original), + broadcast_arrays(0, original)]: + for result in results: + # resets the warn_on_write DeprecationWarning + result.flags.writeable = True + # check: no warning emitted assert_equal(result.flags.writeable, True) + result[:] = 0 + # keep readonly input readonly original.flags.writeable = False _, result = broadcast_arrays(0, original) |