Merge 9977d00baf12229ba04e90b9b2de494f0002cef5 into e59d819d091efdb30e385f4ecfe9ab5d36c3be71

This commit is contained in:
Anan 2025-02-06 05:20:21 +05:30 committed by GitHub
commit 8b14fcd2fc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -10,6 +10,23 @@ Alternatively you can use scipy.signal.butter, which should yield the same resul
""" """
# All calls to filter creators must have keyword arguments
def safe_checks(filter_creator):
def safe_filter_creator(**kwargs):
if not isinstance(kwargs["frequency"], int) or kwargs["frequency"] <= 0:
raise ValueError("Frequency must be a positive integer.")
if not isinstance(kwargs["samplerate"], int) or kwargs["samplerate"] <= 0:
raise ValueError("Samplerate must be a positive integer.")
if not (0 < kwargs["frequency"] < kwargs["samplerate"] / 2):
raise ValueError("Frequency must be less than half of the samplerate.")
if kwargs["q_factor"] <= 0:
raise ValueError("Q factor must be positive.")
return filter_creator(**kwargs)
return safe_filter_creator
@safe_checks
def make_lowpass( def make_lowpass(
frequency: int, frequency: int,
samplerate: int, samplerate: int,
@ -40,6 +57,7 @@ def make_lowpass(
return filt return filt
@safe_checks
def make_highpass( def make_highpass(
frequency: int, frequency: int,
samplerate: int, samplerate: int,
@ -70,6 +88,7 @@ def make_highpass(
return filt return filt
@safe_checks
def make_bandpass( def make_bandpass(
frequency: int, frequency: int,
samplerate: int, samplerate: int,
@ -101,6 +120,7 @@ def make_bandpass(
return filt return filt
@safe_checks
def make_allpass( def make_allpass(
frequency: int, frequency: int,
samplerate: int, samplerate: int,
@ -128,6 +148,7 @@ def make_allpass(
return filt return filt
@safe_checks
def make_peak( def make_peak(
frequency: int, frequency: int,
samplerate: int, samplerate: int,
@ -160,6 +181,7 @@ def make_peak(
return filt return filt
@safe_checks
def make_lowshelf( def make_lowshelf(
frequency: int, frequency: int,
samplerate: int, samplerate: int,
@ -197,6 +219,7 @@ def make_lowshelf(
return filt return filt
@safe_checks
def make_highshelf( def make_highshelf(
frequency: int, frequency: int,
samplerate: int, samplerate: int,