code: def edges(self, nodes=None):
          
          # If a Node has been directly updated (__not__ recommended)
          # then the Graph will not know the added nodes and therefore will
          # miss half of their edges.
          edges = set()
          for node in (nodes or self.iterkeys()):
              ends = self[node].nodes()
              edges.update([(node, end) for end in ends])
          return tuple(edges)
docs: Returns a ``tuple`` of all edges in the ``DictGraph`` an edge is a pair
          of **node objects**.
          
          Arguments:
          
            - nodes(iterable) [default: ``None``] iterable of **node objects** if 
              specified the edges will be limited to those outgoing from one of 
              the specified nodes.