From cb663c1b869a0810ef41198cd3aca54d39c25864 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Thu, 16 Apr 2026 02:58:52 -0400 Subject: [PATCH] Re-order variants to prioritize narrower types As of https://github.com/pybind/pybind11/pull/5879, pybind11 will convert Python `int` to C `float`/`double`. For `std::variant`, pybind11 will attempt to convert arguments in the order of the type. So if `double` occurs earlier in the variant, then `int`/`long` will never be produced. By putting `int`/`long` before `double`, pybind11 will attempt that conversion first and we'll continue to produce our deprecation warning correctly. Fixes #31495 --- src/_backend_agg_wrapper.cpp | 4 ++-- src/ft2font_wrapper.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/_backend_agg_wrapper.cpp b/src/_backend_agg_wrapper.cpp index 11d45773d186..dda8d24ef80c 100644 --- a/src/_backend_agg_wrapper.cpp +++ b/src/_backend_agg_wrapper.cpp @@ -58,8 +58,8 @@ PyRendererAgg_draw_path(RendererAgg *self, static void PyRendererAgg_draw_text_image(RendererAgg *self, py::array_t image_obj, - std::variant vx, - std::variant vy, + std::variant vx, + std::variant vy, double angle, GCAgg &gc) { diff --git a/src/ft2font_wrapper.cpp b/src/ft2font_wrapper.cpp index bf345cd1d044..41f8e9ee3be8 100644 --- a/src/ft2font_wrapper.cpp +++ b/src/ft2font_wrapper.cpp @@ -14,7 +14,7 @@ namespace py = pybind11; using namespace pybind11::literals; template -using double_or_ = std::variant; +using double_or_ = std::variant; template static T