#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace nb = nanobind; namespace std { template struct formatter> { constexpr auto parse(format_parse_context& ctx) { return ctx.begin(); } auto format(const optional& opt, format_context& ctx) const { if (opt) { return format_to(ctx.out(), "{}", opt.value()); } else { return format_to(ctx.out(), "None"); } } }; } // namespace std NB_MODULE(slopefit, m) { nb::class_(m, "Optimizer") .def(nb::init<>()) .def("import_file", &autoopt::optimizer::import_file) .def("set_lower_bound", &autoopt::optimizer::set_lower_bound) .def("set_upper_bound", &autoopt::optimizer::set_upper_bound) .def("set_curve_type", &autoopt::optimizer::set_curve_type) .def("set_initial", &autoopt::optimizer::set_initial) .def("set_delta", &autoopt::optimizer::set_delta) .def("flip_curve", &autoopt::optimizer::flip_curve) .def("calc_fit", &autoopt::optimizer::calc_fit) .def("set_plot_input_cb", &autoopt::optimizer::set_plot_input_cb) .def("set_init_bounds_cb", &autoopt::optimizer::set_init_bounds_cb) .def("set_plot_slope_cb", &autoopt::optimizer::set_plot_slope_cb) .def("set_update_table_cb", &autoopt::optimizer::set_update_table_cb) .def("set_plot_error_cb", &autoopt::optimizer::set_plot_error_cb); }