Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-librosa for openSUSE:Factory checked in at 2022-09-26 18:48:04 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-librosa (Old) and /work/SRC/openSUSE:Factory/.python-librosa.new.2275 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-librosa" Mon Sep 26 18:48:04 2022 rev:9 rq:1005935 version:0.9.2 Changes: -------- --- /work/SRC/openSUSE:Factory/python-librosa/python-librosa.changes 2021-03-30 20:56:15.000442472 +0200 +++ /work/SRC/openSUSE:Factory/.python-librosa.new.2275/python-librosa.changes 2022-09-26 18:48:06.228042918 +0200 @@ -1,0 +2,37 @@ +Mon Sep 26 02:21:59 UTC 2022 - Steve Kowalik <[email protected]> + +- Update to 0.9.2: + * Fixed librosa.show_versions to match package dependencies. + * Fixed a bug in librosa.effects.split when applied to multichannel data. + * Removed test data from main repository and reduced the git attic. + * Accept pre-constructed audioread objects in librosa.load. + * Accelerate librosa.magphase. + * Nearly full support for multi-channel processing. + * Option to disable unicode characters in display functions. + * Significantly expanded the library of example audio clips. + * The default padding mode for most functions (including STFT) is now + zero-padding. + * librosa.load and librosa.stream can now operate directly on open + soundfile objects. + * librosa.display.specshow now uses centered coordinate grids. + * librosa.iirt now exposes API control over resampling modes. + * Maximum frequency is now correctly inferred as Nyquist in onset strength + calculation. + * librosa.effects.deemphasis no longer modifies the input signal in-place. + * librosa.util.frame now correctly works for arbitrary memory layouts and + numbers of axes. + * Corrected a normalization error in inverse CQT. + * ibrosa.cqt now supports arbitrary hop lengths. + * Added a run-time check for minimally supported matplotlib versions. + * Enhanced continuous integration testing for oldest and newest environments. + * librosa.effects.deemphasis, inverse operation of + librosa.effects.preemphasis. + * librosa.display.waveshow, adaptively visualize waveforms by amplitude + envelope when zoomed out, or raw sample values when zoomed in. +- Add patch remove-contextlib2.patch: + * No longer require contextlib2. +- Add patch skip-test-data-missing-tests.patch: + * Due to removing the test data from the main repo, skip tests that require + it, since it's quite large. + +------------------------------------------------------------------- Old: ---- librosa-0.8.0.tar.gz New: ---- librosa-0.9.2.tar.gz remove-contextlib2.patch skip-test-data-missing-tests.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-librosa.spec ++++++ --- /var/tmp/diff_new_pack.0WrjcR/_old 2022-09-26 18:48:07.096044558 +0200 +++ /var/tmp/diff_new_pack.0WrjcR/_new 2022-09-26 18:48:07.100044566 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-librosa # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,49 +18,51 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} %define skip_python2 1 -# SciPy 1.6.0 dropped support for Python 3.6, many packages from the NumPy family follow. (NEP 29) -%define skip_python36 1 Name: python-librosa -Version: 0.8.0 +Version: 0.9.2 Release: 0 Summary: Python module for audio and music processing -License: ISC AND CC-BY-3.0 +License: CC-BY-3.0 AND ISC URL: https://github.com/librosa/librosa # The github archive has the tests Source0: https://github.com/librosa/librosa/archive/%{version}.tar.gz#/librosa-%{version}.tar.gz Source1: librosa-create-pooch-cache.py -# Test data. Use create librosa-create-pooch-cache.py to create this file +# Pooch test data. Use librosa-create-pooch-cache.py to create this file Source2: librosa-pooch-cache.tar.gz -BuildRequires: %{python_module SoundFile >= 0.9.0} -BuildRequires: %{python_module audioread >= 2.0.0} -BuildRequires: %{python_module decorator >= 3.0.0} -BuildRequires: %{python_module joblib >= 0.12} -BuildRequires: %{python_module numba >= 0.43.0} -BuildRequires: %{python_module numpy >= 1.15.0} +# PATCH-FIX-UPSTREAM gh#librosa/librosa#1551 +Patch0: remove-contextlib2.patch +# PATCH-FIX-OPENSUSE Skip tests that require further test data that is ~180MiB +Patch1: skip-test-data-missing-tests.patch +BuildRequires: %{python_module SoundFile >= 0.10.2} +BuildRequires: %{python_module audioread >= 2.1.9} +BuildRequires: %{python_module decorator >= 4.0.0} +BuildRequires: %{python_module joblib >= 0.14} +BuildRequires: %{python_module numba >= 0.45.0} +BuildRequires: %{python_module numpy >= 1.17.0} +BuildRequires: %{python_module packaging >= 20.0} BuildRequires: %{python_module pooch >= 1.0} BuildRequires: %{python_module resampy >= 0.2.0} -BuildRequires: %{python_module scikit-learn >= 0.14.0} -BuildRequires: %{python_module scipy >= 1.0.0} +BuildRequires: %{python_module scikit-learn >= 0.19.1} +BuildRequires: %{python_module scipy >= 1.2.0} BuildRequires: %{python_module setuptools} BuildRequires: fdupes BuildRequires: python-rpm-macros -Requires: python-SoundFile >= 0.9.0 -Requires: python-audioread >= 2.0.0 -Requires: python-decorator >= 3.0.0 -Requires: python-joblib >= 0.12 -Requires: python-numba >= 0.43.0 -Requires: python-numpy >= 1.15.0 +Requires: python-SoundFile >= 0.10.2 +Requires: python-audioread >= 2.1.9 +Requires: python-decorator >= 4.0.0 +Requires: python-joblib >= 0.14 +Requires: python-numba >= 0.45.0 +Requires: python-numpy >= 1.17.0 +Requires: python-packaging >= 20.0 Requires: python-pooch >= 1.0 Requires: python-resampy >= 0.2.0 -Requires: python-scikit-learn >= 0.14.0 -Requires: python-scipy >= 1.0.0 +Requires: python-scikit-learn >= 0.19.1 +Requires: python-scipy >= 1.2.0 BuildArch: noarch # SECTION test requirements -BuildRequires: %{python_module contextlib2} BuildRequires: %{python_module matplotlib >= 2.0} +BuildRequires: %{python_module pytest-cov} BuildRequires: %{python_module pytest-mpl} -# xdist not specified upstream but it uses resources more efficiently -BuildRequires: %{python_module pytest-xdist} BuildRequires: %{python_module pytest} BuildRequires: %{python_module samplerate} BuildRequires: ffmpeg @@ -73,7 +75,7 @@ systems. %prep -%setup -q -n librosa-%{version} -a 2 +%autosetup -p1 -n librosa-%{version} -a 2 # Remove unneeded shebangs find librosa -name "*.py" -exec sed -i -e '/^#!\//, 1d' {} \; # don't measure test coverage @@ -89,12 +91,22 @@ %check export LIBROSA_DATA_DIR=$PWD/librosa-pooch-cache # test data files not packaged -donttest+=" or (test_core and test_iirt)" +donttest+=" or (test_core and test_iirt) or test_find_files" donttest+=" or (test_features and test_cens)" donttest+=" or (test_filters and test_semitone_filterbank)" # image files do not match without exact mpl version donttest+=" or test_display" -%pytest -n auto -k "not (${donttest:4})" +# soxr not in Tumbleweed +donttest+=" or soxr" +# fails with current Tumbleweed +donttest+=" or test_pyin_multi_center" +# Overflow on i586 +if [ $(getconf LONG_BIT) -eq 32 ]; then + donttest+=" or test_tempo or test_hybrid_cqt or test_stft_winsizes" + donttest+=" or test_istft_reconstruction or test_trim" + donttest+=" or test_nnls_multiblock" +fi +%pytest -k "not (${donttest:4})" %files %{python_files} %doc AUTHORS.md README.md ++++++ librosa-0.8.0.tar.gz -> librosa-0.9.2.tar.gz ++++++ ++++ 22735 lines of diff (skipped) ++++++ librosa-pooch-cache.tar.gz ++++++ /work/SRC/openSUSE:Factory/python-librosa/librosa-pooch-cache.tar.gz /work/SRC/openSUSE:Factory/.python-librosa.new.2275/librosa-pooch-cache.tar.gz differ: char 13, line 1 ++++++ remove-contextlib2.patch ++++++ >From 1108bd9d23460c5e46744b873f6a7caf83089958 Mon Sep 17 00:00:00 2001 From: Steve Kowalik <[email protected]> Date: Thu, 11 Aug 2022 16:53:46 +1000 Subject: [PATCH] Drop use of contextlib2 As of Python 3.7, contextlib in the standard library now supports all functionality that this library requires. As a consequence, remove the external requirement, and switch to it. Drive by removing some now unneeded __future__ imports. --- .github/environment-ci.yml | 1 - .github/environment-minimal.yml | 1 - librosa/version.py | 1 - setup.cfg | 1 - tests/test_beat.py | 4 +--- tests/test_effects.py | 2 +- tests/test_filters.py | 2 +- tests/test_multichannel.py | 4 +--- tests/test_onset.py | 3 +-- 9 files changed, 5 insertions(+), 14 deletions(-) diff --git a/.github/environment-ci.yml b/.github/environment-ci.yml index 444898d1d3..5018ab6dde 100644 --- a/.github/environment-ci.yml +++ b/.github/environment-ci.yml @@ -22,7 +22,6 @@ dependencies: - pytest-mpl - pytest-cov - pytest - - contextlib2 - coverage - ffmpeg - pip: diff --git a/.github/environment-minimal.yml b/.github/environment-minimal.yml index 98ddc7b99c..12d24d36af 100644 --- a/.github/environment-minimal.yml +++ b/.github/environment-minimal.yml @@ -22,7 +22,6 @@ dependencies: - pytest-mpl - pytest-cov - pytest - - contextlib2 - coverage - ffmpeg - tomli<2.0 diff --git a/librosa/version.py b/librosa/version.py index 14b00bf7de..4b979c2f11 100644 --- a/librosa/version.py +++ b/librosa/version.py @@ -57,7 +57,6 @@ def show_versions(): "matplotlib", "samplerate", "soxr", - "contextlib2", "presets", ] diff --git a/setup.cfg b/setup.cfg index ab848a79a2..f6b4ad2b3c 100644 --- a/setup.cfg +++ b/setup.cfg @@ -77,7 +77,6 @@ tests = pytest-mpl pytest-cov pytest - contextlib2 samplerate soxr display = diff --git a/tests/test_beat.py b/tests/test_beat.py index 0aad1bb1c0..4d38e71683 100644 --- a/tests/test_beat.py +++ b/tests/test_beat.py @@ -2,8 +2,6 @@ # CREATED:2013-03-11 18:14:30 by Brian McFee <[email protected]> # unit tests for librosa.beat -from __future__ import print_function - # Disable cache import os @@ -13,7 +11,7 @@ pass import pytest -from contextlib2 import nullcontext as dnr +from contextlib import nullcontext as dnr import numpy as np import scipy.stats diff --git a/tests/test_effects.py b/tests/test_effects.py index f7d24130e7..2cdc65b08b 100644 --- a/tests/test_effects.py +++ b/tests/test_effects.py @@ -11,7 +11,7 @@ except KeyError: pass -from contextlib2 import nullcontext as dnr +from contextlib import nullcontext as dnr import numpy as np import pytest diff --git a/tests/test_filters.py b/tests/test_filters.py index 59e351d3e0..f2c1a344bd 100644 --- a/tests/test_filters.py +++ b/tests/test_filters.py @@ -19,7 +19,7 @@ except KeyError: pass -from contextlib2 import nullcontext as dnr +from contextlib import nullcontext as dnr import glob import numpy as np import scipy.io diff --git a/tests/test_multichannel.py b/tests/test_multichannel.py index d927233321..94a5c72a99 100644 --- a/tests/test_multichannel.py +++ b/tests/test_multichannel.py @@ -3,8 +3,6 @@ # unit tests for multi-channel functionality # -from __future__ import print_function - # Disable cache import os @@ -21,7 +19,7 @@ import warnings from unittest import mock -from contextlib2 import nullcontext as dnr +from contextlib import nullcontext as dnr from test_core import srand diff --git a/tests/test_onset.py b/tests/test_onset.py index f74fe9e22d..91c97dc734 100644 --- a/tests/test_onset.py +++ b/tests/test_onset.py @@ -2,9 +2,8 @@ # CREATED:2013-03-11 18:14:30 by Brian McFee <[email protected]> # unit tests for librosa.onset -from __future__ import print_function import pytest -from contextlib2 import nullcontext as dnr +from contextlib import nullcontext as dnr # Disable cache import os ++++++ skip-test-data-missing-tests.patch ++++++ Index: librosa-0.9.2/tests/test_core.py =================================================================== --- librosa-0.9.2.orig/tests/test_core.py +++ librosa-0.9.2/tests/test_core.py @@ -21,7 +21,7 @@ import numpy as np import scipy.io import pytest import warnings -from unittest import mock +from unittest import mock, SkipTest # -- utilities --# @@ -39,6 +39,11 @@ def srand(seed=628318530): def load(infile): return scipy.io.loadmat(infile, chars_as_strings=True) +def _safe_load(fname, **kwargs): + if not os.path.exists(fname): + raise SkipTest() + return librosa.load(fname, **kwargs) + @pytest.mark.parametrize( "infile", files(os.path.join("tests", "data", "core-load-*.mat")) @@ -58,6 +63,8 @@ def test_load(infile): def test_load_soundfile(): fname = os.path.join("tests", "data", "test1_44100.wav") + if not os.path.exists(fname): + raise SkipTest() # Load from filename y, sr = librosa.load(fname, sr=None, mono=False) @@ -72,7 +79,9 @@ def test_load_soundfile(): def test_load_audioread(): fname = os.path.join("tests", "data", "test1_44100.wav") - + if not os.path.exists(fname): + raise SkipTest() + # Load using an existing audioread object reader = audioread.rawread.RawAudioFile(fname) y, sr = librosa.load(reader, sr=None) @@ -104,7 +113,7 @@ def test_segment_load(): sample_len = 2003 fs = 44100 test_file = os.path.join("tests", "data", "test1_44100.wav") - y, sr = librosa.load( + y, sr = _safe_load( test_file, sr=None, mono=False, offset=0.0, duration=sample_len / float(fs) ) @@ -129,9 +138,10 @@ def test_segment_load(): ) def resample_audio(request): infile = request.param - y, sr_in = librosa.load( - os.path.join("tests", "data", infile), sr=None, duration=5, mono=False - ) + file_ = os.path.join("tests", "data", infile) + if not os.path.exists(file_): + raise SkipTest() + y, sr_in = librosa.load(file_, sr=None, duration=5, mono=False) return (y, sr_in) @@ -599,7 +609,7 @@ def test_reassigned_spectrogram_paramete def test_salience_basecase(): - (y, sr) = librosa.load(os.path.join("tests", "data", "test1_22050.wav")) + (y, sr) = _safe_load(os.path.join("tests", "data", "test1_22050.wav")) S = np.abs(librosa.stft(y)) freqs = librosa.core.fft_frequencies(sr=sr) harms = [1] @@ -611,7 +621,8 @@ def test_salience_basecase(): def test_salience_basecase2(): - (y, sr) = librosa.load(os.path.join("tests", "data", "test1_22050.wav")) + filename = os.path.join("tests", "data", "test1_22050.wav") + (y, sr) = _safe_load(filename) S = np.abs(librosa.stft(y)) freqs = librosa.core.fft_frequencies(sr=sr) harms = [1, 0.5, 2.0] @@ -684,13 +695,13 @@ def test_salience_aggregate(): @pytest.fixture(scope="module") def y_22050(): - y, sr = librosa.load(os.path.join("tests", "data", "test1_22050.wav")) + y, sr = _safe_load(os.path.join("tests", "data", "test1_22050.wav")) return y @pytest.fixture(scope="module") def y_44100(): - y, sr = librosa.load(os.path.join("tests", "data", "test1_44100.wav"), sr=None) + y, sr = _safe_load(os.path.join("tests", "data", "test1_44100.wav"), sr=None) return y @@ -777,7 +788,7 @@ def test_istft_reconstruction(y_chirp_is "filename", files(os.path.join("tests", "data", "test1_22050.*")) ) def test_load_options(filename, offset, duration, mono, dtype): - y, sr = librosa.load( + y, sr = _safe_load( filename, mono=mono, offset=offset, duration=duration, dtype=dtype ) @@ -827,6 +838,8 @@ def test_get_duration_specgram(sr, dur, def test_get_duration_filename(): filename = os.path.join("tests", "data", "test2_8000.wav") + if not os.path.exists(filename): + raise SkipTest true_duration = 30.197625 duration_fn = librosa.get_duration(filename=filename) @@ -839,6 +852,8 @@ def test_get_duration_filename(): def test_get_duration_mp3(): filename = os.path.join("tests", "data", "test1_22050.mp3") + if not os.path.exists(filename): + raise SkipTest() true_duration = 4.587528344671202 duration_fn = librosa.get_duration(filename=filename) @@ -999,13 +1014,11 @@ def pip_hop(request, pip_nfft): def pip_spec(y_22050, pip_nfft, pip_hop): return np.abs(librosa.stft(y_22050, n_fft=pip_nfft, hop_length=pip_hop)) - @pytest.mark.parametrize("fmin", [0, 100]) @pytest.mark.parametrize("fmax", [4000, 8000, 11025]) @pytest.mark.parametrize("threshold", [0.1, 0.2, 0.5]) @pytest.mark.parametrize("ref", [None, 1.0, np.max]) def test_piptrack_properties(pip_spec, pip_nfft, pip_hop, fmin, fmax, threshold, ref): - n_fft = pip_nfft hop_length = pip_hop S = pip_spec @@ -1061,7 +1074,10 @@ def test_yin_tone(freq): def test_yin_chirp(): y = librosa.chirp(fmin=220, fmax=640, duration=1.0) f0 = librosa.yin(y, fmin=110, fmax=880, center=False) - target_f0 = np.load(os.path.join("tests", "data", "pitch-yin.npy")) + filename = os.path.join("tests", "data", "pitch-yin.npy") + if not os.path.exists(filename): + raise SkipTest() + target_f0 = np.load(filename) assert np.allclose(np.log2(f0), np.log2(target_f0), rtol=0, atol=1e-2) @@ -1138,7 +1154,10 @@ def test_pyin_chirp(): y = librosa.chirp(fmin=220, fmax=640, duration=1.0) y = np.pad(y, (22050,)) f0, voiced_flag, _ = librosa.pyin(y, fmin=110, fmax=880, center=False) - target_f0 = np.load(os.path.join("tests", "data", "pitch-pyin.npy")) + filename = os.path.join("tests", "data", "pitch-pyin.npy") + if not os.path.exists(filename): + raise SkipTest + target_f0 = np.load(filename) # test if correct frames are voiced assert np.array_equal(voiced_flag, target_f0 > 0) # test voiced frames are within one cent of the target @@ -1718,7 +1737,7 @@ def test_iirt(): )["f_cqt"] # There shouldn't be a load here, but test1_44100 was resampled for this fixture :\ - y, sr = librosa.load(os.path.join("tests", "data", "test1_44100.wav")) + y, sr = _safe_load(os.path.join("tests", "data", "test1_44100.wav")) mut1 = librosa.iirt(y, sr=sr, hop_length=2205, win_length=4410, flayout="ba") @@ -2137,6 +2156,8 @@ def test_griffinlim_momentum_warn(): def test_get_samplerate(ext): path = os.path.join("tests", "data", os.path.extsep.join(["test1_22050", ext])) + if not os.path.exists(path): + raise SkipTest() sr = librosa.get_samplerate(path) assert sr == 22050 @@ -2145,6 +2166,8 @@ def test_get_samplerate(ext): def test_get_samplerate_soundfile(): path = os.path.join("tests", "data", os.path.extsep.join(["test1_22050", "wav"])) + if not os.path.exists(path): + raise SkipTest() sfo = soundfile.SoundFile(path) @@ -2162,9 +2185,13 @@ def path(request): if request.param == "as_string": yield path elif request.param == "as_file": + if not os.path.exists(path): + raise SkipTest() with open(path, "rb") as f: yield f elif request.param == "as_sfo": + if not os.path.exists(path): + raise SkipTest() with soundfile.SoundFile(path) as f: yield f @@ -2204,7 +2231,8 @@ def test_stream( fill_value, dtype, ): - + if not os.path.exists(path): + raise SkipTest() stream = librosa.stream( path, block_length=block_length, Index: librosa-0.9.2/tests/test_beat.py =================================================================== --- librosa-0.9.2.orig/tests/test_beat.py +++ librosa-0.9.2/tests/test_beat.py @@ -11,6 +11,7 @@ except: pass import pytest +import unittest from contextlib import nullcontext as dnr import numpy as np @@ -24,6 +25,8 @@ __EXAMPLE_FILE = os.path.join("tests", " @pytest.fixture(scope="module", params=[22050, 44100]) def ysr(request): + if not os.path.exists(__EXAMPLE_FILE): + raise unittest.SkipTest() return librosa.load(__EXAMPLE_FILE, sr=request.param) Index: librosa-0.9.2/tests/test_segment.py =================================================================== --- librosa-0.9.2.orig/tests/test_segment.py +++ librosa-0.9.2/tests/test_segment.py @@ -15,6 +15,7 @@ import numpy as np import scipy from scipy.spatial.distance import cdist, pdist, squareform import pytest +import unittest from test_core import srand @@ -404,6 +405,8 @@ def test_timelag_filter_pos1(): @pytest.fixture(scope="module") def ysr(): + if not os.path.exists(__EXAMPLE_FILE): + raise unittest.SkipTest() return librosa.load(__EXAMPLE_FILE) Index: librosa-0.9.2/tests/test_onset.py =================================================================== --- librosa-0.9.2.orig/tests/test_onset.py +++ librosa-0.9.2/tests/test_onset.py @@ -3,6 +3,7 @@ # unit tests for librosa.onset import pytest +from unittest import SkipTest from contextlib import nullcontext as dnr # Disable cache @@ -26,6 +27,8 @@ __EXAMPLE_FILE = os.path.join("tests", " @pytest.fixture(scope="module") def ysr(): + if not os.path.exists(__EXAMPLE_FILE): + raise SkipTest() return librosa.load(__EXAMPLE_FILE) Index: librosa-0.9.2/tests/test_effects.py =================================================================== --- librosa-0.9.2.orig/tests/test_effects.py +++ librosa-0.9.2/tests/test_effects.py @@ -3,6 +3,7 @@ """Unit tests for the effects module""" import warnings +from unittest import SkipTest # Disable cache import os @@ -22,11 +23,15 @@ __EXAMPLE_FILE = os.path.join("tests", " @pytest.fixture(scope="module", params=["test1_44100.wav"]) def y_multi(request): infile = request.param + if not os.path.exists(__EXAMPLE_FILE): + raise SkipTest() return librosa.load(os.path.join("tests", "data", infile), sr=None, mono=False) @pytest.fixture(scope="module", params=[22050, 44100]) def ysr(request): + if not os.path.exists(__EXAMPLE_FILE): + raise SkipTest() return librosa.load(__EXAMPLE_FILE, sr=request.param) Index: librosa-0.9.2/tests/test_decompose.py =================================================================== --- librosa-0.9.2.orig/tests/test_decompose.py +++ librosa-0.9.2/tests/test_decompose.py @@ -4,6 +4,7 @@ # Disable cache import os +from unittest import SkipTest try: os.environ.pop("LIBROSA_CACHE_DIR") @@ -100,7 +101,10 @@ def test_sorted_decompose(): @pytest.fixture def y22050(): - y, _ = librosa.load(os.path.join("tests", "data", "test1_22050.wav")) + filename = os.path.join("tests", "data", "test1_22050.wav") + if not os.path.exists(filename): + raise SkipTest() + y, _ = librosa.load(filename) return y @@ -199,8 +203,10 @@ def test_nn_filter_mean_rec_sparse(): @pytest.fixture(scope="module") def s_multi(): - y, sr = librosa.load(os.path.join("tests", "data", "test1_44100.wav"), - sr=None, mono=False) + filename = os.path.join("tests", "data", "test1_44100.wav") + if not os.path.exists(filename): + raise SkipTest() + y, sr = librosa.load(filename, sr=None, mono=False) return np.abs(librosa.stft(y)) @pytest.mark.parametrize('useR,sparse', [(False, False), (True, False), (True, True)]) Index: librosa-0.9.2/tests/test_multichannel.py =================================================================== --- librosa-0.9.2.orig/tests/test_multichannel.py +++ librosa-0.9.2/tests/test_multichannel.py @@ -17,7 +17,7 @@ import numpy as np import scipy.io import pytest import warnings -from unittest import mock +from unittest import mock, SkipTest from contextlib import nullcontext as dnr from test_core import srand @@ -26,7 +26,10 @@ from test_core import srand @pytest.fixture(scope="module", params=["test1_44100.wav"]) def y_multi(request): infile = request.param - return librosa.load(os.path.join("tests", "data", infile), sr=None, mono=False) + filename = os.path.join("tests", "data", infile) + if not os.path.exists(filename): + raise SkipTest() + return librosa.load(filename, sr=None, mono=False) @pytest.fixture(scope="module") Index: librosa-0.9.2/tests/test_features.py =================================================================== --- librosa-0.9.2.orig/tests/test_features.py +++ librosa-0.9.2/tests/test_features.py @@ -4,6 +4,7 @@ from __future__ import print_function import warnings import numpy as np +from unittest import SkipTest import pytest @@ -256,7 +257,10 @@ def test_spectral_rolloff_errors(S, pct) @pytest.fixture(scope="module") def y_ex(): - return librosa.load(os.path.join("tests", "data", "test1_22050.wav")) + filename = os.path.join("tests", "data", "test1_22050.wav") + if not os.path.exists(filename): + raise SkipTest() + return librosa.load(filename) def test_spectral_contrast_log(y_ex): @@ -487,9 +491,10 @@ def test_tonnetz_cqt(y_ex): def test_tonnetz_msaf(): # Use pre-computed chroma - tonnetz_chroma = np.load( - os.path.join("tests", "data", "feature-tonnetz-chroma.npy") - ) + filename = os.path.join("tests", "data", "feature-tonnetz-chroma.npy") + if not os.path.exists(filename): + raise SkipTest() + tonnetz_chroma = np.load(filename) tonnetz_msaf = np.load(os.path.join("tests", "data", "feature-tonnetz-msaf.npy")) tonnetz = librosa.feature.tonnetz(chroma=tonnetz_chroma)
