1use thiserror::Error;
2
3pub type Result<T> = std::result::Result<T, Error>;
5
6#[derive(Debug, Error)]
8pub enum Error {
9 #[error("I/O error: {0}")]
10 Io(#[from] std::io::Error),
11
12 #[error("JSON parse error: {0}")]
13 Json(#[from] serde_json::Error),
14
15 #[error("Safetensors error: {0}")]
16 Safetensors(#[from] safetensors::SafeTensorError),
17
18 #[error("Tokenizer error: {0}")]
19 Tokenizer(String),
20
21 #[error("Audio decode error: {0}")]
22 AudioDecode(String),
23
24 #[error("WAV error: {0}")]
25 Wav(#[from] hound::Error),
26
27 #[error("Resampler error: {0}")]
28 Resampler(String),
29
30 #[error("Invalid config: {0}")]
31 InvalidConfig(String),
32
33 #[error("Missing weight tensor: {0}")]
34 MissingWeight(String),
35
36 #[error("Shape mismatch for `{name}`: expected {expected:?}, got {actual:?}")]
37 ShapeMismatch {
38 name: String,
39 expected: Vec<usize>,
40 actual: Vec<usize>,
41 },
42
43 #[error("File not found: {0}")]
44 NotFound(String),
45
46 #[error("Unsupported: {0}")]
47 Unsupported(String),
48
49 #[error("generation cancelled")]
51 Cancelled,
52
53 #[error("{0}")]
54 Other(String),
55}
56
57impl From<tokenizers::Error> for Error {
58 fn from(e: tokenizers::Error) -> Self {
59 Error::Tokenizer(e.to_string())
60 }
61}