use crate::*;
use snafu::prelude::*;
use std::fmt::{Display, Formatter};
#[allow(missing_docs)]
#[derive(Debug, Snafu, Clone, PartialEq)]
#[snafu(visibility(pub(crate)))]
#[cfg_attr(
feature = "python-bindings",
gen_stub_pyclass_complex_enum,
pyclass(from_py_object)
)]
pub enum FilterError {
SamplingFrequencyTooLow {},
ChannelIndexOutOfBounds {},
InvalidFilterOrder {},
InvalidBiquadInitialization { msg: String },
}
cfg_select! {
feature = "python-bindings" => {
use pyo3::exceptions::PyException;
#[gen_stub_pyclass]
#[pyclass(extends = PyException, str, from_py_object)] #[derive(Debug, Clone)]
pub struct PyFilterError {
#[pyo3(get)]
pub inner: FilterError,
}
impl Display for PyFilterError {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.inner)
}
}
#[gen_stub_pymethods]
#[pymethods]
impl PyFilterError {
#[new]
fn new(inner: FilterError) -> Self {
PyFilterError { inner }
}
}
impl From<FilterError> for PyErr {
fn from(value: FilterError) -> Self {
PyErr::new::<PyFilterError, _>(value)
}
}
},
_ => {}
}