// SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors use pyo3::CastError; use pyo3::PyErr; use pyo3::exceptions::PyRuntimeError; use vortex::error::VortexError; /// Error type to merge [`VortexError`] and [`PyErr`]. pub enum PyVortexError { Py(PyErr), Vortex(VortexError), } /// A [`Result`] alias where the error is [`PyVortexError`]. pub type PyVortexResult = Result; impl From for PyVortexError { fn from(value: PyErr) -> Self { Self::Py(value) } } impl From for PyVortexError { fn from(value: VortexError) -> Self { Self::Vortex(value) } } impl<'py, 'a> From> for PyVortexError { fn from(value: CastError<'py, 'a>) -> Self { Self::Py(value.into()) } } impl From for PyErr { fn from(value: PyVortexError) -> Self { match value { PyVortexError::Py(py) => py, PyVortexError::Vortex(vx) => PyRuntimeError::new_err(vx.to_string()), } } }