diff --git a/CHANGELOG.txt b/CHANGELOG.txt index ce0408d24c557a3900ce27bf154b8f7c74527879..25b14b9b54ef1d886a110ff3844c2f6960968fe1 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,3 +1,9 @@ +Changes in Release 2.9.3 +-------------------------------------------------------------------------------- + * Bugfix release to enable OpenStructure in Python 3.13 + * tags in Docker/Singularity remain deliberately on 2.9.2 + + Changes in Release 2.9.2 -------------------------------------------------------------------------------- * Examples for comparing macromolecular complexes diff --git a/CMakeLists.txt b/CMakeLists.txt index 3f8063e86ff2619853b5d2b5691143e4aa9b3613..10371f7119900f6f65367545113e8b9b846e3243 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,7 +15,7 @@ project(OpenStructure CXX C) set (CMAKE_EXPORT_COMPILE_COMMANDS 1) set (OST_VERSION_MAJOR 2) set (OST_VERSION_MINOR 9) -set (OST_VERSION_PATCH 2) +set (OST_VERSION_PATCH 3) set (OST_VERSION_STRING ${OST_VERSION_MAJOR}.${OST_VERSION_MINOR}.${OST_VERSION_PATCH} ) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/cmake_support) include(OST) diff --git a/modules/seq/base/pymod/export_sequence.cc b/modules/seq/base/pymod/export_sequence.cc index 2b23ef15a11fed7b24075db37845cd3174c70dc7..5522b5c8c545544915202af73f07945bd22478b4 100644 --- a/modules/seq/base/pymod/export_sequence.cc +++ b/modules/seq/base/pymod/export_sequence.cc @@ -146,9 +146,12 @@ struct RevRegionRangeIter { } --e_; AlignedColumn col=*e_; - return col; } + + RevRegionRangeIter& iter() { + return *this; + } private: AlignedColumnIterator b_; AlignedColumnIterator e_; @@ -165,10 +168,15 @@ struct RegionRangeIter { if (b_==e_) { boost::python::objects::stop_iteration_error(); } + AlignedColumn col=*b_; ++b_; return col; } + + RegionRangeIter& iter() { + return *this; + } private: AlignedColumnIterator b_; AlignedColumnIterator e_; @@ -188,6 +196,11 @@ struct ConstSeqListIter { ++b_; return s; } + + ConstSeqListIter& iter() + { + return *this; + } private: ConstSequenceList l_; ConstSequenceList::iterator b_; @@ -208,6 +221,11 @@ struct SeqListIter { ++b_; return s; } + + SeqListIter& iter() + { + return *this; + } private: SequenceList l_; SequenceList::iterator b_; @@ -329,18 +347,26 @@ void export_sequence() class_<RegionRangeIter>("RegionRangeIter", no_init) .def("next", &RegionRangeIter::next) .def("__next__", &RegionRangeIter::next) + .def("iter", &RegionRangeIter::iter, return_value_policy<copy_non_const_reference>()) + .def("__iter__", &RegionRangeIter::iter, return_value_policy<copy_non_const_reference>()) ; - class_<RevRegionRangeIter>("RevRegionRangeIter", no_init) + class_<RevRegionRangeIter>("RevRegionRangeIter", no_init) .def("next", &RevRegionRangeIter::next) .def("__next__", &RevRegionRangeIter::next) + .def("iter", &RevRegionRangeIter::iter, return_value_policy<copy_non_const_reference>()) + .def("__iter__", &RevRegionRangeIter::iter, return_value_policy<copy_non_const_reference>()) ; class_<ConstSeqListIter>("ConstSeqListIter", no_init) .def("next", &ConstSeqListIter::next) .def("__next__", &ConstSeqListIter::next) + .def("iter", &ConstSeqListIter::iter, return_value_policy<copy_non_const_reference>()) + .def("__iter__", &ConstSeqListIter::iter, return_value_policy<copy_non_const_reference>()) ; class_<SeqListIter>("SeqListIter", no_init) .def("next", &SeqListIter::next) .def("__next__", &SeqListIter::next) + .def("iter", &SeqListIter::iter, return_value_policy<copy_non_const_reference>()) + .def("__iter__", &SeqListIter::iter, return_value_policy<copy_non_const_reference>()) ; class_<AlignmentHandle>("AlignmentHandle", init<>()) .def("GetCount", &AlignmentHandle::GetCount)