1use thiserror::Error;
4
5pub type Result<T> = std::result::Result<T, Error>;
7
8#[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
90 #[error("Python version '{version}' not found")]
92 PythonVersionNotFound { version: String },
93
94 #[error("Python version '{version}' already installed")]
95 PythonAlreadyInstalled { version: String },
96
97 #[error("unsupported platform: {0}")]
98 UnsupportedPlatform(String),
99
100 #[error("download failed: {0}")]
101 DownloadFailed(String),
102
103 #[error("extraction failed: {0}")]
104 ExtractionFailed(String),
105
106 #[error("tool '{tool}' not found")]
108 ToolNotFound { tool: String },
109
110 #[error("tool execution failed: {0}")]
111 ToolExecutionFailed(String),
112
113 #[error("invalid script metadata: {0}")]
115 ScriptMetadataError(String),
116
117 #[error("script execution failed: {0}")]
118 ScriptExecutionFailed(String),
119}