docs: def bipartition(seq):
      """Return a list of bipartitions for a sequence.
  
      Args:
          a (Iterable): The sequence to partition.
  
      Returns:
          list[tuple[tuple]]: A list of tuples containing each of the two
          partitions.
  
      Example:
          >>> bipartition((1,2,3))
          [((), (1, 2, 3)), ((1,), (2, 3)), ((2,), (1, 3)), ((1, 2), (3,))]
      """
      return [(tuple(seq[i] for i in part0_idx),
               tuple(seq[j] for j in part1_idx))
              for part0_idx, part1_idx in bipartition_indices(len(seq))]