code: def unzip(seq, elem_len=None):
      
      ret = tuple(zip(*_gen_unzip(map(tuple, seq), elem_len)))
      if ret:
          return ret
  
      if elem_len is None:
          raise ValueError("cannot unzip empty sequence without 'elem_len'")
      return ((),) * elem_len
docs: Unzip a length n sequence of length m sequences into m seperate length
      n sequences.
      Parameters
      ----------
      seq : iterable[iterable]
          The sequence to unzip.
      elem_len : int, optional
          The expected length of each element of ``seq``. If not provided this
          will be infered from the length of the first element of ``seq``. This
          can be used to ensure that code like: ``a, b = unzip(seq)`` does not
          fail even when ``seq`` is empty.
      Returns
      -------
      seqs : iterable[iterable]
          The new sequences pulled out of the first iterable.
      Raises
      ------
      ValueError
          Raised when ``seq`` is empty and ``elem_len`` is not provided.
          Raised when elements of ``seq`` do not match the given ``elem_len`` or
          the length of the first element of ``seq``.
      Examples
      --------
      >>> seq = [('a', 1), ('b', 2), ('c', 3)]
      >>> cs, ns = unzip(seq)
      >>> cs
      ('a', 'b', 'c')
      >>> ns
      (1, 2, 3)
  
      # checks that the elements are the same length
      >>> seq = [('a', 1), ('b', 2), ('c', 3, 'extra')]
      >>> cs, ns = unzip(seq)
      Traceback (most recent call last):
         ...
      ValueError: element at index 2 was length 3, expected 2
  
      # allows an explicit element length instead of infering
      >>> seq = [('a', 1, 'extra'), ('b', 2), ('c', 3)]
      >>> cs, ns = unzip(seq, 2)
      Traceback (most recent call last):
        ...
      ValueError: element at index 0 was length 3, expected 2
  
      # handles empty sequences when a length is given
      >>> cs, ns = unzip([], elem_len=2)
      >>> cs == ns == ()
      True
  
      Notes
      -----
      This function will force ``seq`` to completion.