diff --git a/pyproject.toml b/pyproject.toml index 4cf3c55c..56026e6e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [build-system] -requires = ["scikit-build-core", "pybind11>=2.13"] +requires = ["scikit-build-core", "pybind11>=3.0.0"] build-backend = "scikit_build_core.build" [project] @@ -20,9 +20,12 @@ authors = [ dependencies = [ "jinja2", "numpy>=1.7", + "numpy>=2.1.0; python_version >= '3.14'", "scipy>=0.13.2", + "scipy>=1.15.2; python_version >= '3.14'", "setuptools", "joblib", + "joblib>=1.4.2; python_version >= '3.14'", ] [project.urls] diff --git a/src/bindings.cpp.in b/src/bindings.cpp.in index 1add93f6..b7589bc5 100644 --- a/src/bindings.cpp.in +++ b/src/bindings.cpp.in @@ -313,7 +313,7 @@ OSQPInt PyOSQPSolver::codegen(const char *output_dir, const char *file_prefix, O return osqp_codegen(this->_solver, output_dir, file_prefix, &defines); } -PYBIND11_MODULE(@OSQP_EXT_MODULE_NAME@, m) { +PYBIND11_MODULE(@OSQP_EXT_MODULE_NAME@, m, py::mod_gil_not_used()) { #ifdef OSQP_USE_FLOAT m.attr("OSQP_USE_FLOAT") = 1; diff --git a/src/osqp/codegen/pywrapper/bindings.cpp.jinja b/src/osqp/codegen/pywrapper/bindings.cpp.jinja index 99aa21e3..dfdc7bca 100644 --- a/src/osqp/codegen/pywrapper/bindings.cpp.jinja +++ b/src/osqp/codegen/pywrapper/bindings.cpp.jinja @@ -90,7 +90,7 @@ OSQPInt update_data_mat(py::object P_x, py::object P_i, py::object A_x, py::obje } #endif -PYBIND11_MODULE({{extension_name}}, m) { +PYBIND11_MODULE({{extension_name}}, m, py::mod_gil_not_used()) { m.def("solve", &solve); m.def("update_data_vec", &update_data_vec, "Update q/l/u", py::arg("q") = py::none(), py::arg("l") = py::none(), py::arg("u") = py::none()); #if OSQP_EMBEDDED_MODE == 2