use thiserror::Error;
pub type Result<T, E = Error> = std::result::Result<T, E>;
#[allow(clippy::enum_variant_names)]
#[derive(Error, Debug)]
pub enum Error {
#[error("EOS token should not be inserted into Vocabulary")]
EOSTokenDisallowed,
#[error("empty-byte token is not allowed")]
EmptyToken,
#[error("token has an empty id list")]
EmptyTokenIds,
#[cfg(feature = "tokenizer-processing")]
#[error(transparent)]
TokenizersError(#[from] tokenizers::Error),
#[cfg(feature = "tokenizer-processing")]
#[error("Unsupported tokenizer for {model}: {reason}")]
UnsupportedTokenizer { model: String, reason: String },
#[cfg(feature = "tokenizer-processing")]
#[error("Tokenizer is not supported by token processor")]
UnsupportedByTokenProcessor,
#[cfg(feature = "tokenizer-processing")]
#[error("Decoder unpacking failed for token processor")]
DecoderUnpackingFailed,
#[cfg(feature = "tokenizer-processing")]
#[error("Token processing failed for byte level processor")]
ByteProcessorFailed,
#[cfg(feature = "tokenizer-processing")]
#[error("Token processing failed for byte fallback level processor")]
ByteFallbackProcessorFailed,
#[cfg(feature = "tokenizer-processing")]
#[error("tokenizer JSON is {actual} bytes, over the {limit}-byte limit")]
TokenizerJsonTooLarge { actual: usize, limit: usize },
}