docs: def _extract_dqdv(cell_data, extract_func, last_cycle):
      """Simple wrapper around the cellpy.utils.ica.dqdv function."""
  
      from cellpy.utils.ica import dqdv
      list_of_cycles = cell_data.get_cycle_numbers()
      if last_cycle is not None:
          list_of_cycles = [c for c in list_of_cycles if c <= int(last_cycle)]
          logger.debug(f"only processing up to cycle {last_cycle}")
          logger.debug(f"you have {len(list_of_cycles)} cycles to process")
      out_data = []
      for cycle in list_of_cycles:
          try:
              c, v = extract_func(cycle)
              v, dq = dqdv(v, c)
              v = v.tolist()
              dq = dq.tolist()
          except NullData as e:
              v = list()
              dq = list()
              logger.info(" Ups! Could not process this (cycle %i)" % cycle)
              logger.info(" %s" % e)
  
          header_x = "dQ cycle_no %i" % cycle
          header_y = "voltage cycle_no %i" % cycle
          dq.insert(0, header_x)
          v.insert(0, header_y)
  
          out_data.append(v)
          out_data.append(dq)
      return out_data