Skip to content

Commit 8f2a620

Browse files
committed
Fix mlab fallback for 32-bit systems
Unfortunately, I applied the change from matplotlib#29115 (comment) directly without noticing the typo, or running full tests. So fix the swapped condition, and add a test (for `csd` only, which should be enough since everything goes though `_spectral_helper`.)
1 parent 4c345b4 commit 8f2a620

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

lib/matplotlib/mlab.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -215,12 +215,9 @@ def _stride_windows(x, n, noverlap=0):
215215
x = np.asarray(x)
216216

217217
_api.check_isinstance(Integral, n=n, noverlap=noverlap)
218-
if not (1 <= n <= x.size and n < noverlap):
218+
if not (1 <= n <= x.size and noverlap < n):
219219
raise ValueError(f'n ({n}) and noverlap ({noverlap}) must be positive integers '
220-
f'with n < noverlap and n <= x.size ({x.size})')
221-
222-
if n == 1 and noverlap == 0:
223-
return x[np.newaxis]
220+
f'with noverlap < n and n <= x.size ({x.size})')
224221

225222
step = n - noverlap
226223
shape = (n, (x.shape[-1]-noverlap)//step)

lib/matplotlib/tests/test_mlab.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import sys
2+
13
from numpy.testing import (assert_allclose, assert_almost_equal,
24
assert_array_equal, assert_array_almost_equal_nulp)
35
import numpy as np
@@ -429,7 +431,16 @@ def test_spectral_helper_psd(self, mode, case):
429431
assert spec.shape[0] == freqs.shape[0]
430432
assert spec.shape[1] == getattr(self, f"t_{case}").shape[0]
431433

432-
def test_csd(self):
434+
@pytest.mark.parametrize('bitsize', [
435+
pytest.param(None, id='default'),
436+
pytest.param(32,
437+
marks=pytest.mark.skipif(sys.maxsize <= 2**32,
438+
reason='System is already 32-bit'),
439+
id='32-bit')
440+
])
441+
def test_csd(self, bitsize, monkeypatch):
442+
if bitsize is not None:
443+
monkeypatch.setattr(sys, 'maxsize', 2**bitsize)
433444
freqs = self.freqs_density
434445
spec, fsp = mlab.csd(x=self.y, y=self.y+1,
435446
NFFT=self.NFFT_density,

0 commit comments

Comments
 (0)