Another option: instead of simply having an either/or between the basic and advanced APIs, what if we created a template function to allow the user to select any class they want? Example: pybind11::options options; options.set_gil_scoped_acquire<basic_gil_scoped_acquire>(); ...