depyler_knowledge/
error.rs

1//! Error types for the Sovereign Type Database.
2
3use thiserror::Error;
4
5/// Result type alias for knowledge operations.
6pub type Result<T> = std::result::Result<T, KnowledgeError>;
7
8/// Errors that can occur during type extraction and database operations.
9#[derive(Error, Debug)]
10pub enum KnowledgeError {
11    /// Failed to execute uv command
12    #[error("uv command failed: {0}")]
13    UvCommandFailed(String),
14
15    /// Package not found or installation failed
16    #[error("package not found: {0}")]
17    PackageNotFound(String),
18
19    /// Failed to parse Python stub file
20    #[error("stub parse error in {file}: {message}")]
21    StubParseError { file: String, message: String },
22
23    /// Failed to read/write Parquet database
24    #[error("database error: {0}")]
25    DatabaseError(String),
26
27    /// Invalid TypeFactKind string
28    #[error("invalid type fact kind: {0}")]
29    InvalidKind(String),
30
31    /// Query returned no results
32    #[error("symbol not found: {module}.{symbol}")]
33    SymbolNotFound { module: String, symbol: String },
34
35    /// IO error
36    #[error("IO error: {0}")]
37    Io(#[from] std::io::Error),
38
39    /// Arrow/Parquet error
40    #[error("arrow error: {0}")]
41    Arrow(#[from] arrow::error::ArrowError),
42
43    /// Parquet error
44    #[error("parquet error: {0}")]
45    Parquet(#[from] parquet::errors::ParquetError),
46}