[med-svn] [Git][med-team/odil][master] Fix building with new pybind API
Julien Lamy (@lamy-guest)
gitlab at salsa.debian.org
Wed Dec 22 08:13:12 GMT 2021
Julien Lamy pushed to branch master at Debian Med / odil
Commits:
24d4cd41 by Julien Lamy at 2021-12-22T09:12:11+01:00
Fix building with new pybind API
- - - - -
3 changed files:
- debian/changelog
- + debian/patches/new-pybind-api.patch
- debian/patches/series
Changes:
=====================================
debian/changelog
=====================================
@@ -1,3 +1,10 @@
+odil (0.12.1-4) UNRELEASED; urgency=medium
+
+ * Backport code from upstream to adapt to new pybind API
+ (Closes: #1002134)
+
+ -- Julien Lamy <lamy at unistra.fr> Wed, 22 Dec 2021 09:11:01 +0100
+
odil (0.12.1-3) unstable; urgency=medium
* Remove network-related unit tests (Closes: #1001614)
=====================================
debian/patches/new-pybind-api.patch
=====================================
@@ -0,0 +1,72 @@
+Description: Use new Pybind API (backport from upstream)
+Author: Julien Lamy <lamy at unistra.fr>
+Forwarded: not-needed
+--- a/wrappers/python/ElementsDictionary.cpp
++++ b/wrappers/python/ElementsDictionary.cpp
+@@ -54,8 +54,8 @@ void wrap_ElementsDictionary(pybind11::module & m)
+ .def_readwrite("vr", &ElementsDictionaryEntry::vr)
+ .def_readwrite("vm", &ElementsDictionaryEntry::vm)
+ ;
+-
+- bind_map<ElementsDictionary>(m, "ElementsDictionary")
++
++ auto ElementsDictionary_cl = bind_map<ElementsDictionary>(m, "ElementsDictionary")
+ .def("__getitem__",
+ [](ElementsDictionary & container, Tag const & key)
+ {
+@@ -77,10 +77,26 @@ void wrap_ElementsDictionary(pybind11::module & m)
+ }
+ return iterator->second;
+ }
++ );
++#if PYBIND11_VERSION_HEX >= 0x02080000
++ // WARNING: pybind11 2.8.0 adds a fallback to __contains__ when the type
++ // of the searched item does not match the key type of the dictionary.
++ // Remove *all* __contains__ overloads and rewrap
++ delattr(ElementsDictionary_cl, "__contains__");
++ ElementsDictionary_cl
++ .def(
++ "__contains__",
++ [](ElementsDictionary & container, ElementsDictionaryKey const & key)
++ {
++ return container.find(key) != container.end();
++ }
+ )
++#else
++ ElementsDictionary_cl
++#endif
+ .def(
+ "__contains__",
+- [](ElementsDictionary const & container, Tag const & key)
++ [](ElementsDictionary & container, Tag const & key)
+ {
+ return container.find(key) != container.end();
+ }
+--- a/wrappers/python/Value.cpp
++++ b/wrappers/python/Value.cpp
+@@ -250,6 +250,7 @@ void wrap_Value(pybind11::module & m)
+ detail::vector_modifiers<Vector, Class_>(cl);
+
+ // vector_accessor
++ using T = typename Vector::value_type;
+ using SizeType = long; //typename Vector::size_type;
+ using ItType = typename Vector::iterator;
+
+@@ -265,9 +266,14 @@ void wrap_Value(pybind11::module & m)
+ cl.def(
+ "__iter__",
+ [](Vector &v) {
+- typedef detail::iterator_state<
+- ItType, ItType, false, return_value_policy::copy> state;
+-
++#if PYBIND11_VERSION_HEX < 0x02080000
++ using state = detail::iterator_state<
++ ItType, ItType, false, return_value_policy::copy>;
++#else
++ using state = detail::iterator_state<
++ detail::iterator_access<ItType>,
++ return_value_policy::copy, ItType, ItType, T>;
++#endif
+ if (!detail::get_type_info(typeid(state), false))
+ {
+ class_<state>(handle(), "iterator", pybind11::module_local())
=====================================
debian/patches/series
=====================================
@@ -3,3 +3,4 @@ remove_boost_exception.patch
fix-interpreter-path.patch
upgrade_cxx_standard.patch
remove-network-unit-tests.patch
+new-pybind-api.patch
View it on GitLab: https://salsa.debian.org/med-team/odil/-/commit/24d4cd41fbdf07c6a97de5499d890dedeac7a8dc
--
View it on GitLab: https://salsa.debian.org/med-team/odil/-/commit/24d4cd41fbdf07c6a97de5499d890dedeac7a8dc
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20211222/b4cbd33b/attachment-0001.htm>
More information about the debian-med-commit
mailing list