code: def __pair_repack(self, f, plist):
          
          ulist = f(u for p in plist for u in p)
          for u in ulist:
              v = next(ulist)
              yield u, v
docs: Flattens a sequence of pairs to pass through `f`, and then
          re-pairs the result.
  
          Parameters
          ----------
          f : callable
              A function that accepts a sequence and returns a sequence
          plist:
              A sequence of pairs
  
          Returns
          -------
          qlist : sequence
              Equivalent to (tuple(f(p)) for p in plist)