docs: def union(graphs, use_tqdm: bool = False):
      """Take the union over a collection of graphs into a new graph.
  
      Assumes iterator is longer than 2, but not infinite.
  
      :param iter[BELGraph] graphs: An iterator over BEL graphs. Can't be infinite.
      :param use_tqdm: Should a progress bar be displayed?
      :return: A merged graph
      :rtype: BELGraph
  
      Example usage:
  
      >>> import pybel
      >>> g = pybel.from_path('...')
      >>> h = pybel.from_path('...')
      >>> k = pybel.from_path('...')
      >>> merged = union([g, h, k])
      """
      it = iter(graphs)
  
      if use_tqdm:
          it = tqdm(it, desc='taking union')
  
      try:
          target = next(it)
      except StopIteration as e:
          raise ValueError('no graphs given') from e
  
      try:
          graph = next(it)
      except StopIteration:
          return target
      else:
          target = target.copy()
          left_full_join(target, graph)
  
      for graph in it:
          left_full_join(target, graph)
  
      return target