Mercurial > public > mercurial-scm > hg
annotate 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 |
rev | line source |
---|---|
52531
4c9e31984b3a
rust-pyo3: exposition of AncestorsIterator
Georges Racinet <georges.racinet@cloudcrane.io>
parents:
52412
diff
changeset
|
1 use pyo3::exceptions::{PyRuntimeError, PyValueError}; |
52412
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
2 use pyo3::import_exception; |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
3 use pyo3::{create_exception, PyErr}; |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
4 |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
5 use crate::revision::PyRevision; |
52408
20c0472b2ab7
rust-pyo3: defining GraphError
Georges Racinet <georges.racinet@cloudcrane.io>
parents:
diff
changeset
|
6 |
20c0472b2ab7
rust-pyo3: defining GraphError
Georges Racinet <georges.racinet@cloudcrane.io>
parents:
diff
changeset
|
7 create_exception!(pyo3_rustext, GraphError, PyValueError); |
52412
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
8 import_exception!(mercurial.error, WdirUnsupported); |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
9 |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
10 impl GraphError { |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
11 pub fn from_hg(inner: hg::GraphError) -> PyErr { |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
12 match inner { |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
13 hg::GraphError::ParentOutOfRange(r) => { |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
14 GraphError::new_err(("ParentOutOfRange", PyRevision(r.0))) |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
15 } |
52771
2fb13c3f4496
rust: add GraphError::ParentOutOfOrder
Mitchell Kember <mkember@janestreet.com>
parents:
52531
diff
changeset
|
16 hg::GraphError::ParentOutOfOrder(r) => { |
2fb13c3f4496
rust: add GraphError::ParentOutOfOrder
Mitchell Kember <mkember@janestreet.com>
parents:
52531
diff
changeset
|
17 GraphError::new_err(("ParentOutOfOrder", PyRevision(r.0))) |
2fb13c3f4496
rust: add GraphError::ParentOutOfOrder
Mitchell Kember <mkember@janestreet.com>
parents:
52531
diff
changeset
|
18 } |
52412
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
19 } |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
20 } |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
21 pub fn from_vcsgraph(inner: vcsgraph::graph::GraphReadError) -> PyErr { |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
22 match inner { |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
23 vcsgraph::graph::GraphReadError::InconsistentGraphData => { |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
24 GraphError::new_err("InconsistentGraphData") |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
25 } |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
26 vcsgraph::graph::GraphReadError::InvalidKey => { |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
27 GraphError::new_err("ParentOutOfRange") |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
28 } |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
29 vcsgraph::graph::GraphReadError::KeyedInvalidKey(r) => { |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
30 GraphError::new_err(("ParentOutOfRange", r)) |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
31 } |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
32 vcsgraph::graph::GraphReadError::WorkingDirectoryUnsupported => { |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
33 WdirUnsupported::new_err(()) |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
34 } |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
35 } |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
36 } |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
37 } |
52531
4c9e31984b3a
rust-pyo3: exposition of AncestorsIterator
Georges Racinet <georges.racinet@cloudcrane.io>
parents:
52412
diff
changeset
|
38 |
4c9e31984b3a
rust-pyo3: exposition of AncestorsIterator
Georges Racinet <georges.racinet@cloudcrane.io>
parents:
52412
diff
changeset
|
39 pub fn map_lock_error<T>(e: std::sync::PoisonError<T>) -> PyErr { |
4c9e31984b3a
rust-pyo3: exposition of AncestorsIterator
Georges Racinet <georges.racinet@cloudcrane.io>
parents:
52412
diff
changeset
|
40 PyRuntimeError::new_err(format!("In Rust PyO3 bindings: {e}")) |
4c9e31984b3a
rust-pyo3: exposition of AncestorsIterator
Georges Racinet <georges.racinet@cloudcrane.io>
parents:
52412
diff
changeset
|
41 } |