diff --git a/pywt/_extensions/_dwt.pyx b/pywt/_extensions/_dwt.pyx index 0fba4291..d4177615 100644 --- a/pywt/_extensions/_dwt.pyx +++ b/pywt/_extensions/_dwt.pyx @@ -23,7 +23,7 @@ cpdef dwt_coeff_len(size_t data_len, size_t filter_len, MODE mode): return common.dwt_buffer_length(data_len, filter_len, mode) -cpdef dwt_single(cdata_t[::1] data, Wavelet wavelet, MODE mode): +cpdef dwt_single(const cdata_t[::1] data, Wavelet wavelet, MODE mode): cdef size_t output_len = dwt_coeff_len(data.size, wavelet.dec_len, mode) cdef np.ndarray cA, cD cdef int retval_a, retval_d diff --git a/pywt/tests/test_dwt_idwt.py b/pywt/tests/test_dwt_idwt.py index c4a068fd..5e1349b7 100644 --- a/pywt/tests/test_dwt_idwt.py +++ b/pywt/tests/test_dwt_idwt.py @@ -241,6 +241,12 @@ def test_dwt_zero_size_axes(): assert_raises(ValueError, pywt.dwt, x, 'db2', axis=0) +def test_dwt_readonly_array(): + data = np.random.randn(1000).astype(np.float64) + data.setflags(write=False) + pywt.dwt(data, "db4") + + def test_pad_1d(): x = [1, 2, 3] assert_array_equal(pywt.pad(x, (4, 6), 'periodization'), diff --git a/pywt/tests/test_multilevel.py b/pywt/tests/test_multilevel.py index ea85e88a..640a4775 100644 --- a/pywt/tests/test_multilevel.py +++ b/pywt/tests/test_multilevel.py @@ -76,6 +76,12 @@ def test_wavedec(): assert_(pywt.dwt_max_level(len(x), db1) == 3) +def test_wavedec_readonly_array(): + data = np.random.randn(1000).astype(np.float64) + data.setflags(write=False) + pywt.wavedec(data, "db4", level=2) + + def test_waverec_invalid_inputs(): # input must be list or tuple assert_raises(ValueError, pywt.waverec, np.ones(8), 'haar')