potato_workflow/workflow/
error.rs1use pyo3::exceptions::PyRuntimeError;
2use pyo3::PyErr;
3use thiserror::Error;
4use tracing::error;
5
6#[derive(Error, Debug)]
7pub enum WorkflowError {
8 #[error("Error: {0}")]
9 Error(String),
10
11 #[error("Max retries exceeded for task: {0}")]
12 MaxRetriesExceeded(String),
13
14 #[error("Task id already exists: {0}")]
15 TaskAlreadyExists(String),
16
17 #[error("Task dependency not found in registered tasks: {0}")]
18 DependencyNotFound(String),
19
20 #[error("Task not cannot depend on itself: {0}")]
21 TaskDependsOnItself(String),
22}
23
24impl From<WorkflowError> for PyErr {
25 fn from(err: WorkflowError) -> PyErr {
26 let msg = err.to_string();
27 error!("{}", msg);
28 PyRuntimeError::new_err(msg)
29 }
30}
31
32impl From<PyErr> for WorkflowError {
33 fn from(err: PyErr) -> Self {
34 WorkflowError::Error(err.to_string())
35 }
36}