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    #[error("Failed to create GeminiEmbeddingConfig: {0}")]
27    GeminiEmbeddingConfigError(String),
28}
29
30impl From<TypeError> for PyErr {
31    fn from(err: TypeError) -> PyErr {
32        let msg = err.to_string();
33        error!("{}", msg);
34        PyRuntimeError::new_err(msg)
35    }
36}
37
38impl From<PyErr> for TypeError {
39    fn from(err: PyErr) -> Self {
40        TypeError::Error(err.to_string())
41    }
42}