diff --git a/_constraints b/_constraints
new file mode 100644
index 0000000..d79511d
--- /dev/null
+++ b/_constraints
@@ -0,0 +1,7 @@
+
+
+
+ 12
+
+
+
diff --git a/librosa-0.10.1.tar.gz b/librosa-0.10.1.tar.gz
new file mode 100644
index 0000000..3bf7f9d
--- /dev/null
+++ b/librosa-0.10.1.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e25de58fc93497648ec665a900d3f206ad22e1f4579ca2a8a7d6f4dab5572eb8
+size 2210436
diff --git a/librosa-0.9.2.tar.gz b/librosa-0.9.2.tar.gz
deleted file mode 100644
index e757934..0000000
--- a/librosa-0.9.2.tar.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6bb5d527680c2ca733407dc69bfddfbe5cc8cc530b997c20aa288ede222d9d47
-size 1994373
diff --git a/librosa-pooch-cache.tar.gz b/librosa-pooch-cache.tar.gz
index cfbb99a..c176a08 100644
--- a/librosa-pooch-cache.tar.gz
+++ b/librosa-pooch-cache.tar.gz
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:2c5dd7908aadf03bd098046ffaffc58b1601669cd11e0d88bb6f0f9b9d19ede9
-size 12256429
+oid sha256:b1782f38133323301db9a074ffac2f99f61f62f0ecdc80676331bdf5514cf832
+size 15634820
diff --git a/librosa-static-test-data-0.10.1.tar.gz b/librosa-static-test-data-0.10.1.tar.gz
new file mode 100644
index 0000000..90d5191
--- /dev/null
+++ b/librosa-static-test-data-0.10.1.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:18abbb24b8c8d4ddfff26d55acecdc84e9149e183f8fcb8467a9cbd50d297fa6
+size 164603766
diff --git a/python-librosa.changes b/python-librosa.changes
index e6bd5fc..66cca5a 100644
--- a/python-librosa.changes
+++ b/python-librosa.changes
@@ -1,3 +1,123 @@
+-------------------------------------------------------------------
+Sun Aug 20 16:24:41 UTC 2023 - Ben Greiner
+
+- Update to 0.10.1
+ * VQT octave boundaries by @bmcfee in #1677
+ * redoing 0.10.0.post1 release by @bmcfee in #1684
+ * Pin pooch < 1.7 by @bmcfee in #1686
+ * Post-release 2 for 0.10.0, pin pooch by @bmcfee in #1687
+ * Stricter checks on yin/pyin parameters by @bmcfee in #1693
+ * bumping sphinx config, fixes #1671 by @bmcfee in #1699
+ * fixed bins_per_octave's docs type float to int by @kyaryunha in
+ #1703
+ * add volume adjustment(rms-mean) at pitch_shift by @kyaryunha in
+ #1704
+ * Several small documentation updates by @bmcfee in #1713
+ * pin numpy version to < 1.24 in doc environment by @bmcfee in
+ #1714
+ * fixed broken 'latest' link generator by @bmcfee in #1716
+ * README.md typo fix by @Zenitismus in #1706
+ * CI for documentation builds by @bmcfee in #1718
+ * reworked lazy loading of matplotlib by @bmcfee in #1722
+ * Advanced example for patch generation by @bmcfee in #1719
+ * support pooch >= 1.7 by @bmcfee in #1727
+ * Consistent conversion of time duration/offset to sample counts
+ by @bmcfee in #1726
+ * Update tests for scipy 1.11 by @bmcfee in #1731
+
+-------------------------------------------------------------------
+Mon May 29 15:19:42 UTC 2023 - Ben Greiner
+
+- Update to 0.10.0.post2
+ * This maintenance release updates the dependency specifications
+ to avoid an incompatibility with pooch >= 1.7.0. This
+ restriction only affects loading of specific example files, and
+ does not otherwise affect functionality of the library.
+- Releae 0.10.0
+ * This release provides many speedups and enhancements to core
+ operations, faster importing and loading, and full type
+ annotations.
+ ## New features
+ * #1485 Added support for “h” (hours) and “m” (minutes) in
+ librosa.display.TimeFormatter. Vincent Lostanlen
+ * #1495 Expanded options for bandwidth calculation in
+ librosa.segment.recurrence_matrix and
+ librosa.segment.cross_similarity. Tom Xi
+ * #1529 Accelerated utility functions for squared magnitude
+ librosa.util.abs2 and librosa.util.phasor. Brian McFee
+ * #1514 librosa.stft support for pre-allocated output arrays.
+ Brian McFee
+ * #1533 Accelerated librosa.util.localmax and
+ librosa.util.localmin. Brian McFee
+ * #1552 EXPERIMENTAL Support for just-intonation based variable-Q
+ transforms librosa.vqt and functional just system (FJS)
+ notation. Brian McFee, Vincent Lostanlen
+ * #1579 Imports are now done lazily, significantly reducing
+ startup time. It is not longer necessary to explicitly import
+ librosa.display. Brian McFee
+ * #1587, #1632, #1637 Type annotations. Matan Gover, Brian McFee,
+ Fabian Keller
+ * #1647 Harmonic spectrum interpolation librosa.f0_harmonics and
+ tempogram ratio features librosa.feature.tempogram_ratio. Brian
+ McFee
+ ## Bug fixes
+ * #1560 Corrected an error in bandwidth estimation for window
+ functions that take on negative sample values. Brian McFee
+ * #1571 Fixed rounding error in multirate filterbank calculation
+ of sampling rates. Brian McFee
+ * #1594 Fixed incorrect use of deprecated numpy numerical types.
+ Mattia Di Gangi
+ * #1596 Fixed harmonic interpolation for recent scipy releases.
+ Brian McFee
+ ## API changes
+ * #1561 librosa.resample now supports axis= for all sample rate
+ conversion backends. Brian McFee
+ * #1572 Notation conversion (e.g., librosa.midi_to_note) now
+ vectorizes operations, and produces numpy.ndarray outputs
+ rather than list when given iterable inputs. Brian McFee
+ * #1625 Deprecations now raise FutureWarning instead of
+ DeprecationWarning.
+ * #1625 librosa.get_duration parameter filename has been renamed
+ to path. Brian McFee
+ * #1643 Removed support for threshold=None in
+ librosa.zero_crossings. Brian McFee
+ * #1665 Fixed overflow bug in librosa.feature.rms on integer
+ inputs. Brian McFee
+ ## Deprecations
+ * #1521 Removed backward compatibility support for positional
+ arguments that are now keyword-only. Brian McFee
+ * #1577 Removed official support for python 3.6. Brian McFee
+ * #1625 The audioread backend is now deprecated and will be
+ removed in a future release. Brian McFee
+ ## Other changes
+ * #1501 Infer square / equal plot dimensions for compatible x/y
+ axes in librosa.display.specshow. Kian Eliasi
+ * #1535 Standardized integer type checks throughout the library.
+ Alexandre Chabot-Leclerc
+ * #1539 Refactored librosa.display.AdaptiveWaveplot to allow
+ callback disconnection. Brian McFee
+ * #1548 Removed deprecated ‘hanning’ window specification from
+ tests. Brian McFee
+ * #1551 Removed dependency on contextlib2. Steve Kowalik
+ * #1565 Efficiency improvements to librosa.autocorrelate. Brian
+ McFee
+ * #1566 Changed the default sample rate conversion method from
+ kaiser_best (resampy) to soxr_hq (soxr). Brian McFee
+ * #1581 Updated tests for numpy 1.23 compatibility. Brian McFee
+ * #1617 Accelerated librosa.yin implementation. Brian McFee
+ * #1640 Updated display module dependencies to require matplotlib
+ >= 3.3. Brian McFee
+ * #1643 Accelerated librosa.zero_crossings implementation. Brian
+ McFee
+ * #1646 Added support for transposed (vertical) display of
+ waveforms. Brian McFee
+- Drop patches
+ * remove-contextlib2.patch
+ * skip-test-data-missing-tests.patch
+ * update-tests-for-numpy-123.patch
+ * remove-hanning-from-tests.patch
+ * update-for-numpy-124.patch
+
-------------------------------------------------------------------
Mon May 29 13:45:26 UTC 2023 - Dirk Müller
diff --git a/python-librosa.spec b/python-librosa.spec
index 8be3029..4b2b229 100644
--- a/python-librosa.spec
+++ b/python-librosa.spec
@@ -16,8 +16,9 @@
#
+%define static_test_data_commit 72bd79e448829187f6336818b3f6bdc2c2ae8f5a
Name: python-librosa
-Version: 0.9.2
+Version: 0.10.1
Release: 0
Summary: Python module for audio and music processing
License: CC-BY-3.0 AND ISC
@@ -27,50 +28,48 @@ Source0: https://github.com/librosa/librosa/archive/%{version}.tar.gz#/li
Source1: librosa-create-pooch-cache.py
# Pooch test data. Use librosa-create-pooch-cache.py to create this file
Source2: librosa-pooch-cache.tar.gz
-# 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
-# PATCH-FIX-UPSTREAM update-tests-for-numpy-123.patch gh#librosa/librosa#1581
-Patch2: update-tests-for-numpy-123.patch
-# PATCH-FIX-UPSTREAM remove-hanning-from-tests.patch gh#librosa/librosa#1548
-Patch3: remove-hanning-from-tests.patch
-# PATCH-FIX-UPSTREAM update-for-numpy-124.patch, parts from gh#librosa/librosa#1587, gh#librosa/librosa#1632
-Patch4: update-for-numpy-124.patch
-BuildRequires: %{python_module SoundFile >= 0.10.2}
+# Static test data
+Source3: https://github.com/librosa/librosa-test-data/archive/%{static_test_data_commit}.tar.gz#/librosa-static-test-data-%{version}.tar.gz
+BuildRequires: %{python_module SoundFile >= 0.12.1}
BuildRequires: %{python_module audioread >= 2.1.9}
-BuildRequires: %{python_module base >= 3.6}
-BuildRequires: %{python_module decorator >= 4.0.10}
+BuildRequires: %{python_module base >= 3.7}
+BuildRequires: %{python_module decorator >= 4.3.0}
BuildRequires: %{python_module joblib >= 0.14}
-BuildRequires: %{python_module numba >= 0.45.1}
-BuildRequires: %{python_module numpy >= 1.17.0}
-BuildRequires: %{python_module packaging >= 20.0}
+BuildRequires: %{python_module lazy_loader >= 0.1}
+BuildRequires: %{python_module msgpack >= 1.0}
+BuildRequires: %{python_module numba >= 0.51.0}
+BuildRequires: %{python_module numpy >= 1.22.3}
BuildRequires: %{python_module pip}
-BuildRequires: %{python_module pooch >= 1.0}
-BuildRequires: %{python_module resampy >= 0.2.2}
-BuildRequires: %{python_module scikit-learn >= 0.19.1}
+BuildRequires: %{python_module pooch >= 1.0 with %python-pooch < 1.7}
+BuildRequires: %{python_module scikit-learn >= 0.20.0}
BuildRequires: %{python_module scipy >= 1.2.0}
BuildRequires: %{python_module setuptools}
+BuildRequires: %{python_module soxr >= 0.3.2}
+BuildRequires: %{python_module typing_extensions >= 4.1.1}
BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-Requires: python-SoundFile >= 0.10.2
+Requires: python-SoundFile >= 0.12.1
Requires: python-audioread >= 2.1.9
-Requires: python-decorator >= 4.0.10
+Requires: python-decorator >= 4.3.0
Requires: python-joblib >= 0.14
-Requires: python-numba >= 0.45.1
-Requires: python-numpy >= 1.17.0
-Requires: python-packaging >= 20.0
-Requires: python-pooch >= 1.0
-Requires: python-resampy >= 0.2.2
-Requires: python-scikit-learn >= 0.19.1
+Requires: python-lazy_loader >= 0.1
+Requires: python-msgpack >= 1.0
+Requires: python-numba >= 0.51.0
+Requires: python-numpy >= 1.22.3
+Requires: python-scikit-learn >= 0.20.0
Requires: python-scipy >= 1.2.0
+Requires: python-soxr >= 0.3.2
+Requires: python-typing_extensions >= 4.1.1
+Requires: (python-pooch >= 1.0 with python-pooch < 1.7)
BuildArch: noarch
# SECTION test requirements
BuildRequires: %{python_module matplotlib >= 3.3.0}
+BuildRequires: %{python_module packaging >= 20.0}
BuildRequires: %{python_module pytest-mpl}
BuildRequires: %{python_module pytest-xdist}
BuildRequires: %{python_module pytest}
+BuildRequires: %{python_module resampy >= 0.2.2}
BuildRequires: %{python_module samplerate}
BuildRequires: ffmpeg
# /SECTION
@@ -83,6 +82,9 @@ systems.
%prep
%autosetup -p1 -n librosa-%{version} -a 2
+pushd tests/data
+tar xf %{SOURCE3} --strip-components=1
+popd
# Remove unneeded shebangs
find librosa -name "*.py" -exec sed -i -e '/^#!\//, 1d' {} \;
# don't measure test coverage
@@ -97,23 +99,38 @@ sed -i '/addopts/ s/--cov-report.*--cov-report=xml//' setup.cfg
%check
export LIBROSA_DATA_DIR=$PWD/librosa-pooch-cache
-# test data files not packaged
-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"
-# soxr not in Tumbleweed
-donttest+=" or soxr"
+donttest="test_display"
# fails with current Tumbleweed
donttest+=" or test_pyin_multi_center"
-# Overflow on i586
+# Overflow on 32-bit
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"
+ donttest+=" or test_multichannel"
+ donttest+=" or test_time_stretch_multi"
+ donttest+=" or test_piptrack_properties"
+ donttest+=" or test_pitch_shift_multi"
+ donttest+=" or test_split_multi"
+ donttest+=" or test_hpss_multi"
+ donttest+=" or test_nn_filter_multi"
+ donttest+=" or (test_nnls_multiblock and 256)"
+ donttest+=" or (test_rms and (4096 or 4097))"
fi
-%pytest -k "not (${donttest:4})" -n auto
+# Flaky segfaults when run in parallel, upstream does not test with xdist
+notparallel="test_piptrack"
+notparallel+=" or (test_onset_strength_audio and chroma_stft)"
+notparallel+=" or test_localmax"
+notparallel+=" or test_localmin"
+notparallel+=" or test_yin"
+notparallel+=" or test_pyin"
+notparallel+=" or test_tonnetz"
+notparallel+=" or test_remix"
+notparallel+=" or test_chroma"
+notparallel+=" or test_estimate_tuning"
+notparallel+=" or test_zero_crossings"
+%pytest -k "not (${donttest} or ${notparallel})" -n auto
+%pytest -k "not (${donttest}) and (${notparallel})"
%files %{python_files}
%doc AUTHORS.md README.md
diff --git a/remove-contextlib2.patch b/remove-contextlib2.patch
deleted file mode 100644
index e9d6c19..0000000
--- a/remove-contextlib2.patch
+++ /dev/null
@@ -1,154 +0,0 @@
-From 1108bd9d23460c5e46744b873f6a7caf83089958 Mon Sep 17 00:00:00 2001
-From: Steve Kowalik
-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
- # 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
- # 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
diff --git a/remove-hanning-from-tests.patch b/remove-hanning-from-tests.patch
deleted file mode 100644
index 84f1a4d..0000000
--- a/remove-hanning-from-tests.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-From 2f4f68869b708e8e5dca3a4b64ac59fc86dcb2a1 Mon Sep 17 00:00:00 2001
-From: Brian McFee
-Date: Fri, 5 Aug 2022 12:10:28 -0400
-Subject: [PATCH] removed hanning from tests, fixes #1547
-
----
- tests/test_filters.py | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/tests/test_filters.py b/tests/test_filters.py
-index 14c2f1dea5..59e351d3e0 100644
---- a/tests/test_filters.py
-+++ b/tests/test_filters.py
-@@ -226,7 +226,6 @@ def test_chroma_issue1295(freq):
- "flattop",
- "hamming",
- "hann",
-- "hanning",
- "nuttall",
- "parzen",
- "triang",
diff --git a/skip-test-data-missing-tests.patch b/skip-test-data-missing-tests.patch
deleted file mode 100644
index fb33189..0000000
--- a/skip-test-data-missing-tests.patch
+++ /dev/null
@@ -1,410 +0,0 @@
-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)
diff --git a/update-for-numpy-124.patch b/update-for-numpy-124.patch
deleted file mode 100644
index aa46310..0000000
--- a/update-for-numpy-124.patch
+++ /dev/null
@@ -1,281 +0,0 @@
-Index: librosa-0.9.2/librosa/segment.py
-===================================================================
---- librosa-0.9.2.orig/librosa/segment.py
-+++ librosa-0.9.2/librosa/segment.py
-@@ -255,7 +255,7 @@ def cross_similarity(
- xsim.eliminate_zeros()
-
- if mode == "connectivity":
-- xsim = xsim.astype(np.bool)
-+ xsim = xsim.astype(bool)
- elif mode == "affinity":
- if bandwidth is None:
- bandwidth = np.nanmedian(xsim.max(axis=1).data)
-@@ -519,7 +519,7 @@ def recurrence_matrix(
- rec.eliminate_zeros()
-
- if mode == "connectivity":
-- rec = rec.astype(np.bool)
-+ rec = rec.astype(bool)
- elif mode == "affinity":
- if bandwidth is None:
- bandwidth = np.nanmedian(rec.max(axis=1).data)
-Index: librosa-0.9.2/tests/test_display.py
-===================================================================
---- librosa-0.9.2.orig/tests/test_display.py
-+++ librosa-0.9.2/tests/test_display.py
-@@ -630,7 +630,7 @@ def test_unknown_axis(S_abs, axis):
- np.arange(1, 10.0), # strictly positive
- -np.arange(1, 10.0), # strictly negative
- np.arange(-3, 4.0), # signed,
-- np.arange(2, dtype=np.bool),
-+ np.arange(2, dtype=bool),
- ],
- ) # binary
- def test_cmap_robust(data):
-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
-@@ -160,7 +160,7 @@ def test_nn_filter_mean():
- X_filtered = librosa.decompose.nn_filter(X)
-
- # Normalize the recurrence matrix so dotting computes an average
-- rec = librosa.util.normalize(rec.astype(np.float), axis=0, norm=1)
-+ rec = librosa.util.normalize(rec.astype(float), axis=0, norm=1)
-
- assert np.allclose(X_filtered, X.dot(rec))
-
-@@ -182,7 +182,7 @@ def test_nn_filter_mean_rec():
- assert np.allclose(X_filtered[:, i], X[:, i])
-
- # Normalize the recurrence matrix
-- rec = librosa.util.normalize(rec.astype(np.float), axis=0, norm=1)
-+ rec = librosa.util.normalize(rec.astype(float), axis=0, norm=1)
- assert np.allclose(X_filtered[:, 3:], (X.dot(rec))[:, 3:])
-
-
-@@ -197,7 +197,7 @@ def test_nn_filter_mean_rec_sparse():
- X_filtered = librosa.decompose.nn_filter(X, rec=rec)
-
- # Normalize the recurrence matrix
-- rec = librosa.util.normalize(rec.toarray().astype(np.float), axis=0, norm=1)
-+ rec = librosa.util.normalize(rec.toarray().astype(float), axis=0, norm=1)
- assert np.allclose(X_filtered, (X.dot(rec)))
-
-
-Index: librosa-0.9.2/tests/test_dtw.py
-===================================================================
---- librosa-0.9.2.orig/tests/test_dtw.py
-+++ librosa-0.9.2/tests/test_dtw.py
-@@ -272,7 +272,7 @@ def test_dtw_global_inf():
- # path-following to (0, 0)
-
- # Construct a cost matrix where full alignment is impossible
-- C = np.zeros((4, 4), dtype=np.float)
-+ C = np.zeros((4, 4), dtype=float)
- C[-1, -1] = np.inf
- with pytest.raises(librosa.ParameterError):
- librosa.sequence.dtw(C=C, subseq=False)
-@@ -280,7 +280,7 @@ def test_dtw_global_inf():
-
- def test_dtw_subseq_inf():
- # Construct a cost matrix where partial alignment is impossible
-- C = np.zeros((4, 4), dtype=np.float)
-+ C = np.zeros((4, 4), dtype=float)
- C[-1, :] = np.inf
-
- with pytest.raises(librosa.ParameterError):
-@@ -289,7 +289,7 @@ def test_dtw_subseq_inf():
-
- def test_dtw_subseq_pass():
- # Construct a cost matrix where partial alignment is possible
-- C = np.zeros((4, 4), dtype=np.float)
-+ C = np.zeros((4, 4), dtype=float)
- C[-1, 2:] = np.inf
- librosa.sequence.dtw(C=C, subseq=True)
-
-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
-@@ -122,8 +122,8 @@ def test_pitch_shift_multi(y_multi):
- def test_remix_mono(align_zeros):
-
- # without zc alignment
-- y = np.asarray([1, 1, -1, -1, 2, 2, -1, -1, 1, 1], dtype=np.float)
-- y_t = np.asarray([-1, -1, -1, -1, 1, 1, 1, 1, 2, 2], dtype=np.float)
-+ y = np.asarray([1, 1, -1, -1, 2, 2, -1, -1, 1, 1], dtype=float)
-+ y_t = np.asarray([-1, -1, -1, -1, 1, 1, 1, 1, 2, 2], dtype=float)
- intervals = np.asarray([[2, 4], [6, 8], [0, 2], [8, 10], [4, 6]])
-
- y_out = librosa.effects.remix(y, intervals, align_zeros=align_zeros)
-@@ -134,8 +134,8 @@ def test_remix_mono(align_zeros):
- def test_remix_stereo(align_zeros):
-
- # without zc alignment
-- y = np.asarray([1, 1, -1, -1, 2, 2, -1, -1, 1, 1], dtype=np.float)
-- y_t = np.asarray([-1, -1, -1, -1, 1, 1, 1, 1, 2, 2], dtype=np.float)
-+ y = np.asarray([1, 1, -1, -1, 2, 2, -1, -1, 1, 1], dtype=float)
-+ y_t = np.asarray([-1, -1, -1, -1, 1, 1, 1, 1, 2, 2], dtype=float)
- y = np.vstack([y, y])
- y_t = np.vstack([y_t, y_t])
-
-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
-@@ -49,7 +49,7 @@ def tfr_multi(y_multi):
- "ndim,axis", [(1, 0), (1, -1), (2, 0), (2, 1), (2, -1), (3, 0), (3, 2), (3, -1), (4, 0), (4, 3), (4, -1)]
- )
- def test_sync_multi(aggregate, ndim, axis):
-- data = np.ones([6] * ndim, dtype=np.float)
-+ data = np.ones([6] * ndim, dtype=float)
-
- # Make some slices that don't fill the entire dimension
- slices = [slice(1, 3), slice(3, 4)]
-Index: librosa-0.9.2/tests/test_util.py
-===================================================================
---- librosa-0.9.2.orig/tests/test_util.py
-+++ librosa-0.9.2/tests/test_util.py
-@@ -866,7 +866,7 @@ def test_index_to_slice(idx, idx_min, id
- "ndim,axis", [(1, 0), (1, -1), (2, 0), (2, 1), (2, -1), (3, 0), (3, 2), (3, -1)]
- )
- def test_sync(aggregate, ndim, axis):
-- data = np.ones([6] * ndim, dtype=np.float)
-+ data = np.ones([6] * ndim, dtype=float)
-
- # Make some slices that don't fill the entire dimension
- slices = [slice(1, 3), slice(3, 4)]
-Index: librosa-0.9.2/librosa/core/constantq.py
-===================================================================
---- librosa-0.9.2.orig/librosa/core/constantq.py
-+++ librosa-0.9.2/librosa/core/constantq.py
-@@ -287,7 +287,7 @@ def hybrid_cqt(
-
- Returns
- -------
-- CQT : np.ndarray [shape=(..., n_bins, t), dtype=np.float]
-+ CQT : np.ndarray [shape=(..., n_bins, t), dtype=float]
- Constant-Q energy for each frequency at each time.
-
- See Also
-@@ -468,7 +468,7 @@ def pseudo_cqt(
-
- Returns
- -------
-- CQT : np.ndarray [shape=(..., n_bins, t), dtype=np.float]
-+ CQT : np.ndarray [shape=(..., n_bins, t), dtype=float]
- Pseudo Constant-Q energy for each frequency at each time.
-
- Notes
-@@ -622,7 +622,7 @@ def icqt(
-
- Returns
- -------
-- y : np.ndarray, [shape=(..., n_samples), dtype=np.float]
-+ y : np.ndarray, [shape=(..., n_samples), dtype=float]
- Audio time-series reconstructed from the CQT representation.
-
- See Also
-@@ -889,7 +889,7 @@ def vqt(
-
- Returns
- -------
-- VQT : np.ndarray [shape=(..., n_bins, t), dtype=np.complex]
-+ VQT : np.ndarray [shape=(..., n_bins, t), dtype=complex]
- Variable-Q value each frequency at each time.
-
- See Also
-Index: librosa-0.9.2/librosa/core/spectrum.py
-===================================================================
---- librosa-0.9.2.orig/librosa/core/spectrum.py
-+++ librosa-0.9.2/librosa/core/spectrum.py
-@@ -2544,7 +2544,7 @@ def _spectrogram(
-
- Returns
- -------
-- S_out : np.ndarray [dtype=np.float]
-+ S_out : np.ndarray [dtype=float]
- - If ``S`` is provided as input, then ``S_out == S``
- - Else, ``S_out = |stft(y, ...)|**power``
- n_fft : int > 0
-Index: librosa-0.9.2/librosa/util/utils.py
-===================================================================
---- librosa-0.9.2.orig/librosa/util/utils.py
-+++ librosa-0.9.2/librosa/util/utils.py
-@@ -2181,7 +2181,7 @@ def dtype_c2r(d, *, default=np.float32):
- mapping = {
- np.dtype(np.complex64): np.float32,
- np.dtype(np.complex128): np.float64,
-- np.dtype(complex): np.dtype(np.float).type,
-+ np.dtype(complex): np.dtype(float).type,
- }
-
- # If we're given a real type already, return it
-Index: librosa-0.9.2/tests/test_convert.py
-===================================================================
---- librosa-0.9.2.orig/tests/test_convert.py
-+++ librosa-0.9.2/tests/test_convert.py
-@@ -531,7 +531,7 @@ def test_blocks_to_frames(blocks, block_
- assert np.allclose(frames, block_length * np.asanyarray(blocks))
-
- # Check dtype
-- assert np.issubdtype(frames.dtype, np.int)
-+ assert np.issubdtype(frames.dtype, int)
-
-
- @pytest.mark.parametrize("blocks", [0, 1, [10, 20]])
-@@ -548,7 +548,7 @@ def test_blocks_to_samples(blocks, block
- assert np.allclose(samples, np.asanyarray(blocks) * hop_length * block_length)
-
- # Check dtype
-- assert np.issubdtype(samples.dtype, np.int)
-+ assert np.issubdtype(samples.dtype, int)
-
-
- @pytest.mark.parametrize("blocks", [0, 1, [10, 20]])
-@@ -568,7 +568,7 @@ def test_blocks_to_time(blocks, block_le
- )
-
- # Check dtype
-- assert np.issubdtype(times.dtype, np.float)
-+ assert np.issubdtype(times.dtype, float)
-
-
- @pytest.mark.parametrize("abbr", [False, True])
-Index: librosa-0.9.2/tests/test_failures.py
-===================================================================
---- librosa-0.9.2.orig/tests/test_failures.py
-+++ librosa-0.9.2/tests/test_failures.py
-@@ -24,7 +24,7 @@ def test_mono_valid_stereo():
-
- @pytest.mark.xfail(raises=librosa.ParameterError)
- def test_valid_audio_int():
-- y = np.zeros(10, dtype=np.int)
-+ y = np.zeros(10, dtype=int)
- librosa.util.valid_audio(y)
-
-
-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
-@@ -1347,7 +1347,7 @@ def test_amplitude_to_db_complex():
- x = np.abs(np.random.randn(1000)) + NOISE_FLOOR
-
- with warnings.catch_warnings(record=True) as out:
-- db1 = librosa.amplitude_to_db(x.astype(np.complex), top_db=None)
-+ db1 = librosa.amplitude_to_db(x.astype(complex), top_db=None)
- assert len(out) > 0
- assert "complex" in str(out[0].message).lower()
-
-@@ -1883,7 +1883,7 @@ def test_pcen_drc(S_pcen, bias, power):
-
-
- def test_pcen_complex():
-- S = np.ones((9, 30), dtype=np.complex)
-+ S = np.ones((9, 30), dtype=complex)
- Pexp = np.ones((9, 30))
-
- with warnings.catch_warnings(record=True) as out:
diff --git a/update-tests-for-numpy-123.patch b/update-tests-for-numpy-123.patch
deleted file mode 100644
index 292508b..0000000
--- a/update-tests-for-numpy-123.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 5dd212036667a524cf29480d5351ee5e5eca5693 Mon Sep 17 00:00:00 2001
-From: Brian McFee
-Date: Mon, 26 Sep 2022 13:26:26 -0400
-Subject: [PATCH] updated tests for numpy 1.23 compatibility
-
----
- tests/test_core.py | 2 ++
- tests/test_multichannel.py | 6 +++---
- tests/test_util.py | 6 +++---
- 3 files changed, 8 insertions(+), 6 deletions(-)
-
-diff --git a/tests/test_core.py b/tests/test_core.py
-index 57c3458aee..d83f5b6e5a 100644
---- a/tests/test_core.py
-+++ b/tests/test_core.py
-@@ -2122,6 +2122,8 @@ def test_pcen_stream_multi(axis):
- slice2 = [slice(None)] * x.ndim
- slice2[axis] = slice(10, None)
-
-+ slice1 = tuple(slice1)
-+ slice2 = tuple(slice2)
- # Compute pcen piecewise
- p1, zf1 = librosa.pcen(x[slice1], return_zf=True, axis=axis)
- p2, zf2 = librosa.pcen(x[slice2], zi=zf1, return_zf=True, axis=axis)
-diff --git a/tests/test_multichannel.py b/tests/test_multichannel.py
-index 19531842fd..8a0490bd82 100644
---- a/tests/test_multichannel.py
-+++ b/tests/test_multichannel.py
-@@ -65,13 +65,13 @@ def test_sync_multi(aggregate, ndim, axis):
- idx = [slice(None)] * ndim
- idx[axis] = 0
- if aggregate is np.sum:
-- assert np.allclose(dsync[idx], 2)
-+ assert np.allclose(dsync[tuple(idx)], 2)
- else:
-- assert np.allclose(dsync[idx], 1)
-+ assert np.allclose(dsync[tuple(idx)], 1)
-
- # The second slice will sum to 1 and have mean 1
- idx[axis] = 1
-- assert np.allclose(dsync[idx], 1)
-+ assert np.allclose(dsync[tuple(idx)], 1)
-
-
- def test_stft_multi(y_multi):
-diff --git a/tests/test_util.py b/tests/test_util.py
-index 1b90087611..eebbf432c2 100644
---- a/tests/test_util.py
-+++ b/tests/test_util.py
-@@ -877,13 +877,13 @@ def test_sync(aggregate, ndim, axis):
- idx = [slice(None)] * ndim
- idx[axis] = 0
- if aggregate is np.sum:
-- assert np.allclose(dsync[idx], 2)
-+ assert np.allclose(dsync[tuple(idx)], 2)
- else:
-- assert np.allclose(dsync[idx], 1)
-+ assert np.allclose(dsync[tuple(idx)], 1)
-
- # The second slice will sum to 1 and have mean 1
- idx[axis] = 1
-- assert np.allclose(dsync[idx], 1)
-+ assert np.allclose(dsync[tuple(idx)], 1)
-
-
- @pytest.mark.parametrize("aggregate", [np.mean, np.max])