use super::voxel::IntermediateError;
use ndarray_npy::{ReadNpyError, WriteNpyError};
use netcdf::Error as ErrorNetCDF;
use pyo3::{exceptions::PyTypeError, prelude::*};
use std::{convert::From, io::Error as ErrorIO};
use vtkio::Error as ErrorVtk;
#[pymodule]
fn automesh(m: &Bound<'_, PyModule>) -> PyResult<()> {
super::fem::py::register_module(m)?;
super::voxel::py::register_module(m)?;
Ok(())
}
pub struct PyIntermediateError {
message: String,
}
impl From<ErrorIO> for PyIntermediateError {
fn from(error: ErrorIO) -> PyIntermediateError {
PyIntermediateError {
message: error.to_string(),
}
}
}
impl From<ErrorNetCDF> for PyIntermediateError {
fn from(error: ErrorNetCDF) -> PyIntermediateError {
PyIntermediateError {
message: error.to_string(),
}
}
}
impl From<ErrorVtk> for PyIntermediateError {
fn from(error: ErrorVtk) -> PyIntermediateError {
PyIntermediateError {
message: error.to_string(),
}
}
}
impl From<ReadNpyError> for PyIntermediateError {
fn from(error: ReadNpyError) -> PyIntermediateError {
PyIntermediateError {
message: error.to_string(),
}
}
}
impl From<String> for PyIntermediateError {
fn from(message: String) -> PyIntermediateError {
PyIntermediateError { message }
}
}
impl From<&str> for PyIntermediateError {
fn from(error: &str) -> PyIntermediateError {
PyIntermediateError {
message: error.to_string(),
}
}
}
impl From<WriteNpyError> for PyIntermediateError {
fn from(error: WriteNpyError) -> PyIntermediateError {
PyIntermediateError {
message: error.to_string(),
}
}
}
impl From<PyIntermediateError> for PyErr {
fn from(error: PyIntermediateError) -> PyErr {
PyTypeError::new_err(error.message)
}
}
impl From<IntermediateError> for PyIntermediateError {
fn from(error: IntermediateError) -> PyIntermediateError {
PyIntermediateError {
message: error.message,
}
}
}