#include #include // Needed for vectors, maps, sets, strings #include // Needed for binding std::vector, std::map etc if needed directly #include #include "bindings.h" namespace py = pybind11; #include "gridfire/exceptions/exceptions.h" void register_exception_bindings(py::module &m) { py::register_exception(m, "GridFireEngineError"); // TODO: Make it so that we can grab the stale state in python // m.attr("StaleEngineTrigger") = py::register_exception(m, "StaleEngineTrigger", m.attr("GridFireEngineError")); m.attr("StaleEngineError") = py::register_exception(m, "StaleEngineError", m.attr("GridFireEngineError")); m.attr("FailedToPartitionEngineError") = py::register_exception(m, "FailedToPartitionEngineError", m.attr("GridFireEngineError")); m.attr("NetworkResizedError") = py::register_exception(m, "NetworkResizedError", m.attr("GridFireEngineError")); m.attr("UnableToSetNetworkReactionsError") = py::register_exception(m, "UnableToSetNetworkReactionsError", m.attr("GridFireEngineError")); py::class_(m, "StaleEngineState") .def(py::init<>()) .def_readwrite("T9", &gridfire::exceptions::StaleEngineTrigger::state::m_T9) .def_readwrite("rho", &gridfire::exceptions::StaleEngineTrigger::state::m_rho) .def_readwrite("Y", &gridfire::exceptions::StaleEngineTrigger::state::m_Y) .def_readwrite("t", &gridfire::exceptions::StaleEngineTrigger::state::m_t) .def_readwrite("total_steps", &gridfire::exceptions::StaleEngineTrigger::state::m_total_steps) .def_readwrite("eps_nuc", &gridfire::exceptions::StaleEngineTrigger::state::m_eps_nuc); py::class_(m, "StaleEngineTrigger") .def(py::init()) .def("getState", &gridfire::exceptions::StaleEngineTrigger::getState) .def("numSpecies", &gridfire::exceptions::StaleEngineTrigger::numSpecies) .def("totalSteps", &gridfire::exceptions::StaleEngineTrigger::totalSteps) .def("energy", &gridfire::exceptions::StaleEngineTrigger::energy) .def("getMolarAbundance", &gridfire::exceptions::StaleEngineTrigger::getMolarAbundance) .def("temperature", &gridfire::exceptions::StaleEngineTrigger::temperature) .def("density", &gridfire::exceptions::StaleEngineTrigger::density) .def("__repr__", [&](const gridfire::exceptions::StaleEngineTrigger& self) { return self.what(); }); }