#[macro_export]
macro_rules! crate_version {
() => {
env!("CARGO_PKG_VERSION")
};
}
#[macro_export]
macro_rules! m {
($func:ident) => {
(file!(), line!(), $func, "")
};
($func:ident, $text:expr) => {
(file!(), line!(), $func, $text)
};
($func:ident, $text:expr, "more") => {
MoreError::new(file!(), line!(), $func, $text)
};
($func:ident, $text:expr, "result") => {
Err(MoreError::new(file!(), line!(), $func, $text))
};
}
#[macro_export]
macro_rules! raise_error {
( "raw", "py", $func:ident, $text:expr, "\n", $err:expr ) => { pyo3::PyErr::new::<pyo3::exceptions::PyException, _>(raise_error!(@base, $func, $text, "\n", $err )) };
( "raw", $func:ident, $text:expr, "\n", $err:expr ) => { anyhow::anyhow!( raise_error!(@base, $func, $text, "\n", $err )) };
( "py", $func:ident, $text:expr, "\n", $err:expr ) => { Err(pyo3::PyErr::new::<pyo3::exceptions::PyException, _>(raise_error!(@base, $func, $text, "\n", $err ))) };
( $func:ident, $text:expr, "\n", $err:expr ) => { Err(anyhow::anyhow!( raise_error!(@base, $func, $text, "\n", $err ))) };
( "raw", "py", $func:ident, $text:expr ) => { pyo3::PyErr::new::<pyo3::exceptions::PyException, _>(raise_error!(@base, $func, $text )) };
( "raw", $func:ident, $text:expr ) => { anyhow::anyhow!( raise_error!(@base, $func, $text )) };
( "py", $func:ident, $text:expr ) => { Err(pyo3::PyErr::new::<pyo3::exceptions::PyException, _>(raise_error!(@base, $func, $text ))) };
( $func:ident, $text:expr ) => { Err(anyhow::anyhow!( raise_error!(@base, $func, $text ))) };
( "raw", "py", $func:ident, "\n", $err:expr ) => { pyo3::PyErr::new::<pyo3::exceptions::PyException, _>(raise_error!(@base, $func, "\n", $err )) };
( "raw", $func:ident, "\n", $err:expr ) => { anyhow::anyhow!( raise_error!(@base, $func, "\n", $err )) };
( "py", $func:ident, "\n", $err:expr ) => { Err(pyo3::PyErr::new::<pyo3::exceptions::PyException, _>(raise_error!(@base, $func, "\n", $err ))) };
( $func:ident, "\n", $err:expr ) => { Err(anyhow::anyhow!( raise_error!(@base, $func, "\n", $err ))) };
(@base, $func:ident, $text:expr, "\n", $err:expr) => {
format!("Error: {}:{} {}() {}\n{:?}", file!(), line!(), $func, $text, $err)
};
(@base, $func:ident, "\n", $err:expr) => {
format!("Error: {}:{} {}()\n{:?}", file!(), line!(), $func, $err)
};
(@base, $func:ident, $text:expr) => {
format!("Error: {}:{} {}() {}", file!(), line!(), $func, $text)
};
}