diff -r 2f54f31c41aa -r ee943a920606 rust/hg-cpython/src/exceptions.rs --- a/rust/hg-cpython/src/exceptions.rs Wed Jan 23 07:39:27 2019 -0500 +++ b/rust/hg-cpython/src/exceptions.rs Wed Jan 23 07:47:04 2019 -0500 @@ -8,6 +8,8 @@ //! Bindings for Rust errors //! //! [`GraphError`] exposes `hg::GraphError` as a subclass of `ValueError` +//! but some variants of `hg::GraphError` can be converted directly to other +//! existing Python exceptions if appropriate. //! //! [`GraphError`]: struct.GraphError.html use cpython::exc::ValueError; @@ -22,6 +24,15 @@ hg::GraphError::ParentOutOfRange(r) => { GraphError::new(py, ("ParentOutOfRange", r)) } + 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), + } + } } } }