exceptions.rs
38 lines
| 1.2 KiB
| application/rls-services+xml
|
RustLexer
Georges Racinet
|
r41220 | // ancestors.rs | ||
// | ||||
// Copyright 2018 Georges Racinet <gracinet@anybox.fr> | ||||
// | ||||
// This software may be used and distributed according to the terms of the | ||||
// GNU General Public License version 2 or any later version. | ||||
//! Bindings for Rust errors | ||||
//! | ||||
//! [`GraphError`] exposes `hg::GraphError` as a subclass of `ValueError` | ||||
Georges Racinet
|
r41385 | //! but some variants of `hg::GraphError` can be converted directly to other | ||
//! existing Python exceptions if appropriate. | ||||
Georges Racinet
|
r41220 | //! | ||
//! [`GraphError`]: struct.GraphError.html | ||||
Georges Racinet
|
r41001 | use cpython::exc::ValueError; | ||
use cpython::{PyErr, Python}; | ||||
use hg; | ||||
py_exception!(rustext, GraphError, ValueError); | ||||
impl GraphError { | ||||
pub fn pynew(py: Python, inner: hg::GraphError) -> PyErr { | ||||
match inner { | ||||
hg::GraphError::ParentOutOfRange(r) => { | ||||
GraphError::new(py, ("ParentOutOfRange", r)) | ||||
} | ||||
Georges Racinet
|
r41385 | hg::GraphError::WorkingDirectoryUnsupported => { | ||
match py | ||||
.import("mercurial.error") | ||||
.and_then(|m| m.get(py, "WdirUnsupported")) | ||||
{ | ||||
Err(e) => e, | ||||
Ok(cls) => PyErr::from_instance(py, cls), | ||||
} | ||||
} | ||||
Georges Racinet
|
r41001 | } | ||
} | ||||
} | ||||