use thiserror::Error;
pub type PopsamResult<T> = Result<T, PopsamError>;
#[derive(Debug, Error)]
pub enum PopsamError {
#[error("input data is empty")]
EmptyInput,
#[error("report_last_k must be at least 1")]
InvalidReportK,
#[error("elimination_fraction must be in the interval (0, 1]")]
InvalidEliminationFraction,
#[error("embedding vector for id '{id}' is empty")]
EmptyEmbedding {
id: String,
},
#[error("embedding vector lengths differ: expected {expected}, got {actual} for id '{id}'")]
DimensionMismatch {
id: String,
expected: usize,
actual: usize,
},
#[error("embedding vector for id '{id}' has zero norm")]
ZeroNorm {
id: String,
},
#[error("embedding provider error: {0}")]
Provider(String),
#[error("model load error: {0}")]
ModelLoad(String),
#[error("io error: {0}")]
Io(#[from] std::io::Error),
#[error("json error: {0}")]
Json(#[from] serde_json::Error),
#[error("csv error: {0}")]
Csv(#[from] csv::Error),
}