author | Pierre-Yves David <pierre-yves.david@octobus.net> |
Thu, 02 Jan 2025 14:50:06 +0100 | |
changeset 52592 | 87ceb51d124c |
parent 52531 | 4c9e31984b3a |
child 52771 | 2fb13c3f4496 |
permissions | -rw-r--r-- |
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 |
} |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
16 |
} |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
17 |
} |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
18 |
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
|
19 |
match inner { |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
20 |
vcsgraph::graph::GraphReadError::InconsistentGraphData => { |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
21 |
GraphError::new_err("InconsistentGraphData") |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
22 |
} |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
23 |
vcsgraph::graph::GraphReadError::InvalidKey => { |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
24 |
GraphError::new_err("ParentOutOfRange") |
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::KeyedInvalidKey(r) => { |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
27 |
GraphError::new_err(("ParentOutOfRange", r)) |
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::WorkingDirectoryUnsupported => { |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
30 |
WdirUnsupported::new_err(()) |
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 |
} |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
33 |
} |
6e8ba52857df
rust-pyo3: conversions to GraphError Python exception
Georges Racinet <georges.racinet@octobus.net>
parents:
52408
diff
changeset
|
34 |
} |
52531
4c9e31984b3a
rust-pyo3: exposition of AncestorsIterator
Georges Racinet <georges.racinet@cloudcrane.io>
parents:
52412
diff
changeset
|
35 |
|
4c9e31984b3a
rust-pyo3: exposition of AncestorsIterator
Georges Racinet <georges.racinet@cloudcrane.io>
parents:
52412
diff
changeset
|
36 |
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
|
37 |
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
|
38 |
} |