potato_workflow/workflow/
error.rs

1use 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}