use thiserror::Error;
#[derive(Error, Debug)]
pub enum ColbertError {
#[error("Candle Error: {0}")]
Candle(#[from] candle_core::Error),
#[error("Tokenizer Error: {0}")]
Tokenizer(String),
#[error("JSON Parsing Error: {0}")]
Json(#[from] serde_json::Error),
#[error("Operation Error: {0}")]
Operation(String),
#[error("Hugging Face Hub Error: {0}")]
Hub(#[from] hf_hub::api::sync::ApiError),
#[error("I/O Error: {0}")]
Io(#[from] std::io::Error),
}
impl From<Box<dyn std::error::Error + Send + Sync>> for ColbertError {
fn from(err: Box<dyn std::error::Error + Send + Sync>) -> Self {
ColbertError::Tokenizer(err.to_string())
}
}
impl From<ColbertError> for candle_core::Error {
fn from(err: ColbertError) -> Self {
match err {
ColbertError::Candle(e) => e,
_ => candle_core::Error::Msg(err.to_string()),
}
}
}