parameters: (self, edge)
return_statement: return (head, tail)
docstring: Returns the edge that connects the head_id and tail_id nodes
docstring_summary: Returns the edge that connects the head_id and tail_id nodes
docstring_tokens: Returns the edge that connects the head_id and tail_id nodes
function: def edge_by_id(self, edge):
          """
          Returns the edge that connects the head_id and tail_id nodes
          """
          try:
              head, tail, data =  self.edges[edge]
          except KeyError:
              head, tail = None, None
              raise GraphError('Invalid edge %s' % edge)
  
          return (head, tail)
function_tokens: def edge_by_id ( self , edge ) : try : head , tail , data = self . edges [ edge ] except KeyError : head , tail = None , None raise GraphError ( 'Invalid edge %s' % edge ) return ( head , tail )