Mercurial > public > mercurial-scm > hg
view rust/hg-pyo3/src/exceptions.rs @ 52771:2fb13c3f4496
rust: add GraphError::ParentOutOfOrder
This will be used in a follow-up commit that creates a data structure optimized
for inserting revisions in descending order, since it will need to fail if a
revision number is greater than its descendant (meaning the graph is corrupted).
author | Mitchell Kember <mkember@janestreet.com> |
---|---|
date | Fri, 07 Feb 2025 16:07:35 -0500 |
parents | 4c9e31984b3a |
children | 32008b1e7104 |
line wrap: on
line source
use pyo3::exceptions::{PyRuntimeError, 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))) } hg::GraphError::ParentOutOfOrder(r) => { GraphError::new_err(("ParentOutOfOrder", 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(()) } } } } pub fn map_lock_error<T>(e: std::sync::PoisonError<T>) -> PyErr { PyRuntimeError::new_err(format!("In Rust PyO3 bindings: {e}")) }