potato_type/
error.rs

1use pyo3::exceptions::PyRuntimeError;
2use pyo3::PyErr;
3use thiserror::Error;
4use tracing::error;
5
6#[derive(Error, Debug)]
7pub enum TypeError {
8    #[error("Error: {0}")]
9    Error(String),
10
11    #[error("Unknown provider: {0}")]
12    UnknownProviderError(String),
13
14    #[error("Unknown model: {0}")]
15    UnknownModelError(String),
16
17    #[error("{0}")]
18    InvalidInput(String),
19
20    #[error(transparent)]
21    UtilError(#[from] potato_util::UtilError),
22
23    #[error(transparent)]
24    SerdeError(#[from] serde_json::Error),
25}
26
27impl From<TypeError> for PyErr {
28    fn from(err: TypeError) -> PyErr {
29        let msg = err.to_string();
30        error!("{}", msg);
31        PyRuntimeError::new_err(msg)
32    }
33}
34
35impl From<PyErr> for TypeError {
36    fn from(err: PyErr) -> Self {
37        TypeError::Error(err.to_string())
38    }
39}