Skip to content

Commit 2c855eb

Browse files
committed
fix: const-qualify data input in dwt
Closes #839
1 parent 587b8f0 commit 2c855eb

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

pywt/_extensions/_dwt.pyx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ cpdef dwt_coeff_len(size_t data_len, size_t filter_len, MODE mode):
2323

2424
return common.dwt_buffer_length(data_len, filter_len, mode)
2525

26-
cpdef dwt_single(cdata_t[::1] data, Wavelet wavelet, MODE mode):
26+
cpdef dwt_single(const cdata_t[::1] data, Wavelet wavelet, MODE mode):
2727
cdef size_t output_len = dwt_coeff_len(data.size, wavelet.dec_len, mode)
2828
cdef np.ndarray cA, cD
2929
cdef int retval_a, retval_d

pywt/tests/test_dwt_idwt.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,12 @@ def test_dwt_zero_size_axes():
241241
assert_raises(ValueError, pywt.dwt, x, 'db2', axis=0)
242242

243243

244+
def test_dwt_readonly_array():
245+
data = np.random.randn(1000).astype(np.float64)
246+
data.setflags(write=False)
247+
pywt.dwt(data, "db4")
248+
249+
244250
def test_pad_1d():
245251
x = [1, 2, 3]
246252
assert_array_equal(pywt.pad(x, (4, 6), 'periodization'),

pywt/tests/test_multilevel.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,12 @@ def test_wavedec():
7676
assert_(pywt.dwt_max_level(len(x), db1) == 3)
7777

7878

79+
def test_wavedec_readonly_array():
80+
data = np.random.randn(1000).astype(np.float64)
81+
data.setflags(write=False)
82+
pywt.wavedec(data, "db4", level=2)
83+
84+
7985
def test_waverec_invalid_inputs():
8086
# input must be list or tuple
8187
assert_raises(ValueError, pywt.waverec, np.ones(8), 'haar')

0 commit comments

Comments
 (0)