--- 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(())
+ }
+ }
+ }
+}