From b8aa86061596484ad3beca2944cb660448a16657 Mon Sep 17 00:00:00 2001 From: Soundarya Dube Date: Mon, 24 Nov 2025 11:21:48 +0530 Subject: [PATCH 1/2] The current doctests only check a single valid output. You should add tests for the validation logic implemented, and also check "neutral" cases for filters with gain. --- audio_filters/butterworth_filter.py | 16 +++++++++++----- .../equal_loudness_filter.py.broken.txt | 2 +- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/audio_filters/butterworth_filter.py b/audio_filters/butterworth_filter.py index 4e6ea1b18fb4..bf7bfb1c13fc 100644 --- a/audio_filters/butterworth_filter.py +++ b/audio_filters/butterworth_filter.py @@ -17,12 +17,18 @@ def make_lowpass( ) -> IIRFilter: """ Creates a low-pass filter - - >>> filter = make_lowpass(1000, 48000) - >>> filter.a_coeffs + filter.b_coeffs # doctest: +NORMALIZE_WHITESPACE - [1.0922959556412573, -1.9828897227476208, 0.9077040443587427, 0.004277569313094809, - 0.008555138626189618, 0.004277569313094809] + ... (docstring content) """ + # --- Input Validation Start --- + if samplerate <= 0: + raise ValueError("Samplerate must be a positive value.") + if frequency <= 0: + raise ValueError("Frequency must be a positive value.") + if frequency >= samplerate / 2: + # Nyquist frequency limit check + raise ValueError(f"Frequency ({frequency} Hz) must be less than the Nyquist frequency ({samplerate / 2} Hz).") + # --- Input Validation End --- + w0 = tau * frequency / samplerate _sin = sin(w0) _cos = cos(w0) diff --git a/audio_filters/equal_loudness_filter.py.broken.txt b/audio_filters/equal_loudness_filter.py.broken.txt index 88cba8533cf7..45dfede220ec 100644 --- a/audio_filters/equal_loudness_filter.py.broken.txt +++ b/audio_filters/equal_loudness_filter.py.broken.txt @@ -34,7 +34,7 @@ class EqualLoudnessFilter: self.butterworth_filter = make_highpass(150, samplerate) # pad the data to nyquist - curve_freqs = np.array(data["frequencies"] + [max(20000.0, samplerate / 2)]) + curve_freqs = np.array(data["frequencies"] + [max(20000.0, samplerate/2)]) curve_gains = np.array(data["gains"] + [140]) # Convert to angular frequency From de5532524184aa01f637d29fa909be2397349200 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 24 Nov 2025 05:55:18 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- audio_filters/butterworth_filter.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/audio_filters/butterworth_filter.py b/audio_filters/butterworth_filter.py index bf7bfb1c13fc..505618e41996 100644 --- a/audio_filters/butterworth_filter.py +++ b/audio_filters/butterworth_filter.py @@ -26,7 +26,9 @@ def make_lowpass( raise ValueError("Frequency must be a positive value.") if frequency >= samplerate / 2: # Nyquist frequency limit check - raise ValueError(f"Frequency ({frequency} Hz) must be less than the Nyquist frequency ({samplerate / 2} Hz).") + raise ValueError( + f"Frequency ({frequency} Hz) must be less than the Nyquist frequency ({samplerate / 2} Hz)." + ) # --- Input Validation End --- w0 = tau * frequency / samplerate