graphi.edge module

class graphi.edge.Edge(start, stop, step=None)

Bases: object

An edge in a graph as a pair of nodes

Parameters:
  • start – the start or tail of an edge
  • stop – the stop or head of an edge
  • step – currently unused

This is a verbose interface for creating edges between nodes for use in a graph. It allows using slice notation independent of a graph:

>>> atb = Edge[a:b]
>>> a2b = Edge(a, b)
>>> graph[a2b] = 1337
>>> graph[a:b] == graph[atb] == graph[a2b] == graph[Edge[a:b]] == graph[Edge(a, b)]
True

A Edge can also be used for explicit containment tests:

>>> Edge[a:b] in graph
True

In addition to their slice-like nature, Edge is iterable and indexable. This allows for easy unpacking:

>>> edge = Edge[a:b]
>>> tail, head = edge

Note

This class creates a representation of an edge as a connection between nodes. Edge values can be arbitrary objects.

Warning

Even though Edge behaves like a slice in graphs, builtin containers such as list cannot use a Edge.

start
stop
class graphi.edge.EdgeMeta

Bases: type

Metaclass for Edge to support Edge[a:b]