Loading src/graph/graph_python_interface.cc +0 −4 Original line number Diff line number Diff line Loading @@ -306,8 +306,6 @@ struct export_python_interface "Return whether the edge is valid.") .def("get_graph", &PythonEdge<Graph>::GetGraph, "Return the graph to which the edge belongs.") .def(python::self == python::self) .def(python::self != python::self) .def("__str__", &PythonEdge<Graph>::GetString) .def("__hash__", &PythonEdge<Graph>::GetHash); Loading Loading @@ -457,8 +455,6 @@ void export_python_interface() "Return whether the vertex is valid.") .def("get_graph", &PythonVertex::GetGraph, "Return the graph to which the vertex belongs.") .def(boost::python::self == boost::python::self) .def(boost::python::self != boost::python::self) .def("__str__", &PythonVertex::GetString) .def("__int__", &PythonVertex::GetIndex) .def("__hash__", &PythonVertex::GetHash); Loading src/graph/graph_python_interface.hh +0 −20 Original line number Diff line number Diff line Loading @@ -272,16 +272,6 @@ public: return _v; } bool operator==(const PythonVertex& other) const { return other._v == _v; } bool operator!=(const PythonVertex& other) const { return other._v != _v; } private: boost::python::object _g; GraphInterface::vertex_t _v; Loading Loading @@ -403,16 +393,6 @@ public: return std::hash<size_t>()(gi._edge_index[_e]); } bool operator==(const PythonEdge& other) const { return other._e == _e; } bool operator!=(const PythonEdge& other) const { return other._e != _e; } private: boost::python::object _g; edge_descriptor _e; Loading src/graph_tool/__init__.py +29 −0 Original line number Diff line number Diff line Loading @@ -2388,6 +2388,13 @@ def _vertex_repr(self): return "<Vertex object with index '%d' at 0x%x>" % (int(self), id(self)) Vertex.__repr__ = _vertex_repr Vertex.__eq__ = lambda v1, v2 : int(v1) == int(v2) Vertex.__ne__ = lambda v1, v2 : int(v1) != int(v2) Vertex.__lt__ = lambda v1, v2 : int(v1) < int(v2) Vertex.__gt__ = lambda v1, v2 : int(v1) > int(v2) Vertex.__le__ = lambda v1, v2 : int(v1) <= int(v2) Vertex.__ge__ = lambda v1, v2 : int(v1) >= int(v2) _edge_doc = """Edge descriptor. This class represents an edge in a :class:`~graph_tool.Graph`. Loading @@ -2396,6 +2403,21 @@ This class represents an edge in a :class:`~graph_tool.Graph`. tuple, which contains the source and target vertices. """ def _edge_cmp(e1, e2): te1, te2 = tuple(e1), tuple(e2) g1 = e1.get_graph() g2 = e2.get_graph() if not g1.is_directed(): te1 = sorted(te1) if not g2.is_directed(): te2 = sorted(te2) te1 = (te1, g1.edge_index[e1]) te2 = (te2, g2.edge_index[e2]) if te1 < te2: return -1 if te1 > te2: return 1 return 0 def _edge_iter(self): """Iterate over the source and target""" Loading Loading @@ -2436,6 +2458,13 @@ def init_edge_classes(): e.__class__.__iter__ = _edge_iter e.__class__.__doc__ = _edge_doc e.__class__.__eq__ = lambda e1, e2 : _edge_cmp(e1, e2) == 0 e.__class__.__ne__ = lambda e1, e2 : _edge_cmp(e1, e2) != 0 e.__class__.__lt__ = lambda e1, e2 : _edge_cmp(e1, e2) < 0 e.__class__.__gt__ = lambda e1, e2 : _edge_cmp(e1, e2) > 0 e.__class__.__le__ = lambda e1, e2 : _edge_cmp(e1, e2) <= 0 e.__class__.__ge__ = lambda e1, e2 : _edge_cmp(e1, e2) >= 0 init_edge_classes() # some shenanigans to make it seem there is only a single edge class Loading Loading
src/graph/graph_python_interface.cc +0 −4 Original line number Diff line number Diff line Loading @@ -306,8 +306,6 @@ struct export_python_interface "Return whether the edge is valid.") .def("get_graph", &PythonEdge<Graph>::GetGraph, "Return the graph to which the edge belongs.") .def(python::self == python::self) .def(python::self != python::self) .def("__str__", &PythonEdge<Graph>::GetString) .def("__hash__", &PythonEdge<Graph>::GetHash); Loading Loading @@ -457,8 +455,6 @@ void export_python_interface() "Return whether the vertex is valid.") .def("get_graph", &PythonVertex::GetGraph, "Return the graph to which the vertex belongs.") .def(boost::python::self == boost::python::self) .def(boost::python::self != boost::python::self) .def("__str__", &PythonVertex::GetString) .def("__int__", &PythonVertex::GetIndex) .def("__hash__", &PythonVertex::GetHash); Loading
src/graph/graph_python_interface.hh +0 −20 Original line number Diff line number Diff line Loading @@ -272,16 +272,6 @@ public: return _v; } bool operator==(const PythonVertex& other) const { return other._v == _v; } bool operator!=(const PythonVertex& other) const { return other._v != _v; } private: boost::python::object _g; GraphInterface::vertex_t _v; Loading Loading @@ -403,16 +393,6 @@ public: return std::hash<size_t>()(gi._edge_index[_e]); } bool operator==(const PythonEdge& other) const { return other._e == _e; } bool operator!=(const PythonEdge& other) const { return other._e != _e; } private: boost::python::object _g; edge_descriptor _e; Loading
src/graph_tool/__init__.py +29 −0 Original line number Diff line number Diff line Loading @@ -2388,6 +2388,13 @@ def _vertex_repr(self): return "<Vertex object with index '%d' at 0x%x>" % (int(self), id(self)) Vertex.__repr__ = _vertex_repr Vertex.__eq__ = lambda v1, v2 : int(v1) == int(v2) Vertex.__ne__ = lambda v1, v2 : int(v1) != int(v2) Vertex.__lt__ = lambda v1, v2 : int(v1) < int(v2) Vertex.__gt__ = lambda v1, v2 : int(v1) > int(v2) Vertex.__le__ = lambda v1, v2 : int(v1) <= int(v2) Vertex.__ge__ = lambda v1, v2 : int(v1) >= int(v2) _edge_doc = """Edge descriptor. This class represents an edge in a :class:`~graph_tool.Graph`. Loading @@ -2396,6 +2403,21 @@ This class represents an edge in a :class:`~graph_tool.Graph`. tuple, which contains the source and target vertices. """ def _edge_cmp(e1, e2): te1, te2 = tuple(e1), tuple(e2) g1 = e1.get_graph() g2 = e2.get_graph() if not g1.is_directed(): te1 = sorted(te1) if not g2.is_directed(): te2 = sorted(te2) te1 = (te1, g1.edge_index[e1]) te2 = (te2, g2.edge_index[e2]) if te1 < te2: return -1 if te1 > te2: return 1 return 0 def _edge_iter(self): """Iterate over the source and target""" Loading Loading @@ -2436,6 +2458,13 @@ def init_edge_classes(): e.__class__.__iter__ = _edge_iter e.__class__.__doc__ = _edge_doc e.__class__.__eq__ = lambda e1, e2 : _edge_cmp(e1, e2) == 0 e.__class__.__ne__ = lambda e1, e2 : _edge_cmp(e1, e2) != 0 e.__class__.__lt__ = lambda e1, e2 : _edge_cmp(e1, e2) < 0 e.__class__.__gt__ = lambda e1, e2 : _edge_cmp(e1, e2) > 0 e.__class__.__le__ = lambda e1, e2 : _edge_cmp(e1, e2) <= 0 e.__class__.__ge__ = lambda e1, e2 : _edge_cmp(e1, e2) >= 0 init_edge_classes() # some shenanigans to make it seem there is only a single edge class Loading