diff -r c2480ac4c5e2 -r 6e8ba52857df rust/hg-pyo3/src/exceptions.rs --- a/rust/hg-pyo3/src/exceptions.rs Sat Nov 30 20:57:02 2024 +0100 +++ b/rust/hg-pyo3/src/exceptions.rs Thu Dec 05 14:36:40 2024 +0100 @@ -1,4 +1,34 @@ -use pyo3::create_exception; use pyo3::exceptions::PyValueError; +use pyo3::import_exception; +use pyo3::{create_exception, PyErr}; + +use crate::revision::PyRevision; create_exception!(pyo3_rustext, GraphError, PyValueError); +import_exception!(mercurial.error, WdirUnsupported); + +impl GraphError { + pub fn from_hg(inner: hg::GraphError) -> PyErr { + match inner { + hg::GraphError::ParentOutOfRange(r) => { + GraphError::new_err(("ParentOutOfRange", PyRevision(r.0))) + } + } + } + pub fn from_vcsgraph(inner: vcsgraph::graph::GraphReadError) -> PyErr { + match inner { + vcsgraph::graph::GraphReadError::InconsistentGraphData => { + GraphError::new_err("InconsistentGraphData") + } + vcsgraph::graph::GraphReadError::InvalidKey => { + GraphError::new_err("ParentOutOfRange") + } + vcsgraph::graph::GraphReadError::KeyedInvalidKey(r) => { + GraphError::new_err(("ParentOutOfRange", r)) + } + vcsgraph::graph::GraphReadError::WorkingDirectoryUnsupported => { + WdirUnsupported::new_err(()) + } + } + } +}