Skip to content

Compatibility with nanobind 3 #220

Description

@francesco-ballarin

Hi,
nanobind 3.0.0 was released a few hours ago, and seems to have compatibility issues with islpy.

I attach below the compilation errors I get from my CI, they all seem to be related to the The None wrapper type announced in nanobind's changelog

Trimmed version of the compilation errors, post-processed by ChatGPT 5.6 Sol to avoid repetitions and highlight the relevant bits

[108/112] Building CXX object CMakeFiles/_isl.dir/src/wrapper/wrap_isl_part3.cpp.o
FAILED: [code=1] CMakeFiles/_isl.dir/src/wrapper/wrap_isl_part3.cpp.o

In file included from /tmp/islpy-src/src/wrapper/wrap_isl_part3.cpp:34:
/tmp/tmp3d0d7uzc/build/generated/gen-expose-part3.inc:
In function ‘void islpy_expose_part3(nanobind::module_&)’:

/tmp/tmp3d0d7uzc/build/generated/gen-expose-part3.inc:104:629:
error: no matching function for call to ‘nanobind::arg_t<>::none(bool)’

  wrap_pw_qpolynomial.def(
      "__init__",
      ...,
      py::arg("s"),
      py::arg("context").none(true)=py::none());
                         ~~~~^~~~~~

In file included from
/usr/local/lib/python3.13/dist-packages/nanobind/include/nanobind/nanobind.h:60:

/usr/local/lib/python3.13/dist-packages/nanobind/include/nanobind/nb_attr.h:50:30:
note: candidate:
‘constexpr auto nanobind::arg_t<Flags, Locked>::none() const’

  NB_INLINE constexpr auto none() const {
                           ^~~~

note: candidate expects 0 arguments, 1 provided

The same error is repeated for:
  wrap_pw_qpolynomial_fold
  wrap_union_pw_qpolynomial
  wrap_schedule
  wrap_schedule_constraints


[109/112] Building CXX object CMakeFiles/_isl.dir/src/wrapper/wrap_isl_part2.cpp.o
FAILED: [code=1] CMakeFiles/_isl.dir/src/wrapper/wrap_isl_part2.cpp.o

/tmp/tmp3d0d7uzc/build/generated/gen-wrap-part2.inc:12929:37:
warning: ‘isl_set* isl_set_align_divs(isl_set*)’ is deprecated

/tmp/tmp3d0d7uzc/build/generated/gen-wrap-part2.inc:22395:37:
warning: ‘isl_map* isl_map_align_divs(isl_map*)’ is deprecated

/tmp/tmp3d0d7uzc/build/generated/gen-expose-part2.inc:
In function ‘void islpy_expose_part2(nanobind::module_&)’:

/tmp/tmp3d0d7uzc/build/generated/gen-expose-part2.inc:32:594:
error: no matching function for call to ‘nanobind::arg_t<>::none(bool)’

  wrap_basic_set.def(
      "__init__",
      ...,
      py::arg("s"),
      py::arg("context").none(true)=py::none());
                         ~~~~^~~~~~

/usr/local/lib/python3.13/dist-packages/nanobind/include/nanobind/nb_attr.h:50:30:
note: candidate:
‘constexpr auto nanobind::arg_t<Flags, Locked>::none() const’

note: candidate expects 0 arguments, 1 provided

The same error is repeated for:
  wrap_basic_map
  wrap_set
  wrap_map
  wrap_union_map
  wrap_union_set


[110/112] Building CXX object CMakeFiles/_isl.dir/src/wrapper/wrap_isl_part1.cpp.o
FAILED: [code=1] CMakeFiles/_isl.dir/src/wrapper/wrap_isl_part1.cpp.o

Warnings unrelated to the build failure:

  warning: ‘isl_space* isl_space_extend(...)’ is deprecated
  warning: ‘isl_space* isl_space_drop_inputs(...)’ is deprecated
  warning: ‘isl_space* isl_space_drop_outputs(...)’ is deprecated
  warning: ‘isl_bool isl_space_match(...)’ is deprecated

/tmp/islpy-src/src/wrapper/wrap_isl_part1.cpp:
In function ‘void islpy_expose_part1(nanobind::module_&)’:

/tmp/islpy-src/src/wrapper/wrap_isl_part1.cpp:104:47:
error: no matching function for call to ‘nanobind::arg_t<>::none(bool)’

  }, py::arg("i"), py::arg("context").none(true)=py::none()
                                            ^

/usr/local/lib/python3.13/dist-packages/nanobind/include/nanobind/nb_attr.h:50:30:
note: candidate:
‘constexpr auto nanobind::arg_t<Flags, Locked>::none() const’

note: candidate expects 0 arguments, 1 provided

/tmp/islpy-src/src/wrapper/wrap_isl_part1.cpp:154:27:
error: no matching function for call to ‘nanobind::arg_t<>::none(bool)’

  py::arg("user").none(true)=py::none(),
                  ~~~~^~~~~~

/tmp/islpy-src/src/wrapper/wrap_isl_part1.cpp:155:30:
error: no matching function for call to ‘nanobind::arg_t<>::none(bool)’

  py::arg("context").none(true)=py::none()
                     ~~~~^~~~~~

The same error is repeated in generated bindings for:
  wrap_id_list
  wrap_val_list
  wrap_set_list
  wrap_map_list
  wrap_aff_list
  wrap_pw_aff_list
  wrap_pw_multi_aff_list
  wrap_union_pw_aff_list
  wrap_union_set_list
  wrap_val
  wrap_multi_val
  wrap_aff
  wrap_pw_aff
  wrap_union_pw_aff
  wrap_multi_aff
  wrap_multi_pw_aff
  wrap_pw_multi_aff
  wrap_union_pw_multi_aff
  wrap_multi_union_pw_aff
  wrap_id
  wrap_multi_id
  wrap_space

All report:

  error: no matching function for call to
  ‘nanobind::arg_t<>::none(bool)’

with nanobind providing only:

  constexpr auto none() const

and therefore:

  candidate expects 0 arguments, 1 provided


ninja: build stopped: subcommand failed.

*** CMake build failed
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for islpy
Failed to build islpy

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions