Skip to main content

pro_core/
error.rs

1//! Error types for pro-core
2
3use thiserror::Error;
4
5/// Result type for pro-core operations
6pub type Result<T> = std::result::Result<T, Error>;
7
8/// Core error type for pro-core
9#[derive(Error, Debug)]
10pub enum Error {
11    #[error("package '{package}' not found on index")]
12    PackageNotFound { package: String },
13
14    #[error("version '{version}' not found for package '{package}'")]
15    VersionNotFound { package: String, version: String },
16
17    #[error("dependency conflict: {package} requires {required}, but {found} is installed")]
18    DependencyConflict {
19        package: String,
20        required: String,
21        found: String,
22    },
23
24    #[error("invalid version specifier: {0}")]
25    InvalidVersion(String),
26
27    #[error("invalid version specifier: {0}")]
28    InvalidSpecifier(String),
29
30    #[error("invalid dependency specifier: {0}")]
31    InvalidDependency(String),
32
33    #[error("pyproject.toml not found")]
34    PyProjectNotFound,
35
36    #[error("invalid pyproject.toml: {0}")]
37    InvalidPyProject(String),
38
39    #[error("virtual environment error: {0}")]
40    VenvError(String),
41
42    #[error("build error: {0}")]
43    BuildError(String),
44
45    #[error("resolution error: {0}")]
46    Resolution(String),
47
48    #[error("index error: {0}")]
49    Index(String),
50
51    #[error("no compatible version found for {package}")]
52    NoCompatibleVersion { package: String },
53
54    #[error("network error: {0}")]
55    Network(#[from] reqwest::Error),
56
57    #[error("IO error: {0}")]
58    Io(#[from] std::io::Error),
59
60    #[error("JSON error: {0}")]
61    Json(#[from] serde_json::Error),
62
63    #[error("TOML parse error: {0}")]
64    TomlParse(#[from] toml::de::Error),
65
66    #[error("TOML serialize error: {0}")]
67    TomlSerialize(#[from] toml::ser::Error),
68
69    #[error("version error: {0}")]
70    Version(String),
71
72    #[error("zip error: {0}")]
73    Zip(String),
74
75    #[error("tar error: {0}")]
76    Tar(String),
77
78    #[error("missing project metadata in pyproject.toml")]
79    MissingProjectMetadata,
80
81    #[error("missing version in pyproject.toml")]
82    MissingVersion,
83
84    #[error("workspace not found")]
85    WorkspaceNotFound,
86
87    #[error("configuration error: {0}")]
88    Config(String),
89}