44
55#include < reticula/temporal_hyperedges.hpp>
66
7- #include " type_str/scalars.hpp"
8- #include " type_str/edges.hpp"
97#include " type_utils.hpp"
108#include " common_edge_properties.hpp"
119
@@ -44,12 +42,16 @@ struct declare_temporal_hyperedges {
4442 new (edge) reticula::directed_temporal_hyperedge<VertT, TimeT>{
4543 std::get<0 >(t), std::get<1 >(t), std::get<2 >(t)};
4644 }, " tuple" _a, nb::call_guard<nb::gil_scoped_release>())
47- .def (" heads" ,
48- &reticula::directed_temporal_hyperedge<VertT, TimeT>::heads,
49- nb::call_guard<nb::gil_scoped_release>())
50- .def (" tails" ,
51- &reticula::directed_temporal_hyperedge<VertT, TimeT>::tails,
52- nb::call_guard<nb::gil_scoped_release>());
45+ .def (" heads" , [](
46+ const reticula::directed_temporal_hyperedge<VertT, TimeT>& self) {
47+ auto heads = self.heads ();
48+ return std::vector<VertT>(heads.begin (), heads.end ());
49+ }, nb::call_guard<nb::gil_scoped_release>())
50+ .def (" tails" , [](
51+ const reticula::directed_temporal_hyperedge<VertT, TimeT>& self) {
52+ auto tails = self.tails ();
53+ return std::vector<VertT>(tails.begin (), tails.end ());
54+ }, nb::call_guard<nb::gil_scoped_release>());
5355
5456 nb::implicitly_convertible<
5557 std::tuple<std::vector<VertT>, std::vector<VertT>, TimeT>,
@@ -67,12 +69,16 @@ struct declare_temporal_hyperedges {
6769 std::get<0 >(t), std::get<1 >(t),
6870 std::get<2 >(t), std::get<3 >(t)};
6971 }, " tuple" _a, nb::call_guard<nb::gil_scoped_release>())
70- .def (" heads" ,
71- &reticula::directed_delayed_temporal_hyperedge<VertT, TimeT>::heads,
72- nb::call_guard<nb::gil_scoped_release>())
73- .def (" tails" ,
74- &reticula::directed_delayed_temporal_hyperedge<VertT, TimeT>::tails,
75- nb::call_guard<nb::gil_scoped_release>());
72+ .def (" heads" , [](
73+ const reticula::directed_delayed_temporal_hyperedge<VertT, TimeT>& self) {
74+ auto heads = self.heads ();
75+ return std::vector<VertT>(heads.begin (), heads.end ());
76+ }, nb::call_guard<nb::gil_scoped_release>())
77+ .def (" tails" , [](
78+ const reticula::directed_delayed_temporal_hyperedge<VertT, TimeT>& self) {
79+ auto tails = self.tails ();
80+ return std::vector<VertT>(tails.begin (), tails.end ());
81+ }, nb::call_guard<nb::gil_scoped_release>());
7682
7783 nb::implicitly_convertible<
7884 std::tuple<std::vector<VertT>, std::vector<VertT>, TimeT, TimeT>,
0 commit comments