docstr: Execute a specific cell.  Since we always execute setup.py in the first
  cell we increment the index offset here
code: def execute_cells(
      self, cell_index=0, execution_count=None, store_history=True
  ):
      """Execute a specific cell.  Since we always execute setup.py in the first
      cell we increment the index offset here
      """
      if not isinstance(cell_index, list):
          cell_index = [cell_index]
      executed_cells = []
  
      for idx in cell_index:
          try:
              cell = self.nb["cells"][idx + 1]
              ecell = super().execute_cell(
                  cell,
                  idx + 1,
                  execution_count=execution_count,
                  store_history=store_history,
              )
          except CellExecutionError as e:
              print("Cell output before exception:")
              print("=============================")
              for output in cell["outputs"]:
                  if output["output_type"] == "stream":
                      print(output["text"])
              raise e
          for output in ecell["outputs"]:
              if output["output_type"] == "error":
                  print("Error in cell: %s" % idx + 1)
                  print("\n".join(output["traceback"]))
                  raise ValueError(output["evalue"])
          executed_cells.append(ecell)
  
      return executed_cells
  
file_path: wandb/tests/pytest_tests/unit_tests_old/utils/notebook_client.py
imports: from nbclient import NotebookClient
  from nbclient.client import CellExecutionError
label_desc: Use image node_id 1 for calling the WandbNotebookClient obj's underlying member method code with example usage: obj.execute_cells(cell_index, execution_count, store_history) and returns: executed_cells