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}