code: def unpack_tarballs(xs, data, use_subdir=True):
      
      if isinstance(xs, dict):
          for k, v in xs.items():
              xs[k] = unpack_tarballs(v, data, use_subdir)
      elif isinstance(xs, (list, tuple)):
          xs = [unpack_tarballs(x, data, use_subdir) for x in xs]
      elif isinstance(xs, six.string_types):
          if os.path.isfile(xs.encode("utf-8", "ignore")) and xs.endswith("-wf.tar.gz"):
              if use_subdir:
                  tarball_dir = utils.safe_makedir(os.path.join(dd.get_work_dir(data), "wf-inputs"))
              else:
                  tarball_dir = dd.get_work_dir(data)
              out_dir = os.path.join(tarball_dir,
                                     os.path.basename(xs).replace("-wf.tar.gz", "").replace("--", os.path.sep))
              if not os.path.exists(out_dir):
                  with utils.chdir(tarball_dir):
                      with tarfile.open(xs, "r:gz") as tar:
                          tar.extractall()
              assert os.path.exists(out_dir), out_dir
              # Default to representing output directory
              xs = out_dir
              # Look for aligner indices
              for fname in os.listdir(out_dir):
                  if fname.endswith(DIR_TARGETS):
                      xs = os.path.join(out_dir, fname)
                      break
                  elif fname.endswith(BASENAME_TARGETS):
                      base = os.path.join(out_dir, utils.splitext_plus(os.path.basename(fname))[0])
                      xs = glob.glob("%s*" % base)
                      break
      return xs
docs: Unpack workflow tarballs into ready to use directories.