diff --git a/CHANGELOG.md b/CHANGELOG.md index ff5c41beeb..b266f34b23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Default visualizer can be changed with `PINOCCHIO_VIEWER` environment variable ([#2419](https://github.com/stack-of-tasks/pinocchio/pull/2419)) - Add more Python and C++ examples related to inverse kinematics with 3d tasks ([#2428](https://github.com/stack-of-tasks/pinocchio/pull/2428)) - Add parsing of equality/connect tag for closed-loop chains for MJCF format ([#2413](https://github.com/stack-of-tasks/pinocchio/pull/2413)) +- Add compatibility with NumPy 2 `__array__` API ([#2436](https://github.com/stack-of-tasks/pinocchio/pull/2436)) ### Fixed - Fix linkage of Boost.Serialization on Windows ([#2400](https://github.com/stack-of-tasks/pinocchio/pull/2400)) diff --git a/include/pinocchio/bindings/python/spatial/force.hpp b/include/pinocchio/bindings/python/spatial/force.hpp index 999277a3c9..4ccb66506c 100644 --- a/include/pinocchio/bindings/python/spatial/force.hpp +++ b/include/pinocchio/bindings/python/spatial/force.hpp @@ -161,7 +161,10 @@ namespace pinocchio "__array__", bp::make_function( (typename Force::ToVectorReturnType(Force::*)()) & Force::toVector, bp::return_internal_reference<>())) - .def("__array__", &__array__, bp::return_internal_reference<>()) + .def( + "__array__", &__array__, + (bp::arg("self"), bp::arg("dtype") = bp::object(), bp::arg("copy") = bp::object()), + bp::return_internal_reference<>()) #ifndef PINOCCHIO_PYTHON_NO_SERIALIZATION .def_pickle(Pickle()) #endif @@ -197,7 +200,8 @@ namespace pinocchio } private: - static typename Force::ToVectorConstReturnType __array__(const Force & self, bp::object) + static typename Force::ToVectorConstReturnType + __array__(const Force & self, bp::object, bp::object) { return self.toVector(); } diff --git a/include/pinocchio/bindings/python/spatial/inertia.hpp b/include/pinocchio/bindings/python/spatial/inertia.hpp index 31b617923e..ec829e5619 100644 --- a/include/pinocchio/bindings/python/spatial/inertia.hpp +++ b/include/pinocchio/bindings/python/spatial/inertia.hpp @@ -193,7 +193,9 @@ namespace pinocchio .staticmethod("FromCapsule") .def("__array__", (Matrix6(Inertia::*)() const) & Inertia::matrix) - .def("__array__", &__array__) + .def( + "__array__", &__array__, + (bp::arg("self"), bp::arg("dtype") = bp::object(), bp::arg("copy") = bp::object())) #ifndef PINOCCHIO_PYTHON_NO_SERIALIZATION .def_pickle(Pickle()) #endif @@ -273,7 +275,7 @@ namespace pinocchio } private: - static Matrix6 __array__(const Inertia & self, bp::object) + static Matrix6 __array__(const Inertia & self, bp::object, bp::object) { return self.matrix(); } diff --git a/include/pinocchio/bindings/python/spatial/motion.hpp b/include/pinocchio/bindings/python/spatial/motion.hpp index 0a33bb22fe..5606682b1e 100644 --- a/include/pinocchio/bindings/python/spatial/motion.hpp +++ b/include/pinocchio/bindings/python/spatial/motion.hpp @@ -184,7 +184,10 @@ namespace pinocchio "__array__", bp::make_function( (typename Motion::ToVectorReturnType(Motion::*)()) & Motion::toVector, bp::return_internal_reference<>())) - .def("__array__", &__array__, bp::return_internal_reference<>()) + .def( + "__array__", &__array__, + (bp::arg("self"), bp::arg("dtype") = bp::object(), bp::arg("copy") = bp::object()), + bp::return_internal_reference<>()) #ifndef PINOCCHIO_PYTHON_NO_SERIALIZATION .def_pickle(Pickle()) #endif @@ -220,7 +223,8 @@ namespace pinocchio } private: - static typename Motion::ToVectorConstReturnType __array__(const Motion & self, bp::object) + static typename Motion::ToVectorConstReturnType + __array__(const Motion & self, bp::object, bp::object) { return self.toVector(); } diff --git a/include/pinocchio/bindings/python/spatial/se3.hpp b/include/pinocchio/bindings/python/spatial/se3.hpp index 55e11bc99d..7fe855a9e5 100644 --- a/include/pinocchio/bindings/python/spatial/se3.hpp +++ b/include/pinocchio/bindings/python/spatial/se3.hpp @@ -197,7 +197,9 @@ namespace pinocchio .staticmethod("Interpolate") .def("__array__", &SE3::toHomogeneousMatrix) - .def("__array__", &__array__) + .def( + "__array__", &__array__, + (bp::arg("self"), bp::arg("dtype") = bp::object(), bp::arg("copy") = bp::object())) #ifndef PINOCCHIO_PYTHON_NO_SERIALIZATION .def_pickle(Pickle()) @@ -230,7 +232,7 @@ namespace pinocchio } private: - static Matrix4 __array__(const SE3 & self, bp::object) + static Matrix4 __array__(const SE3 & self, bp::object, bp::object) { return self.toHomogeneousMatrix(); }