code: def raise_for_execution_errors(nb, output_path):
      
      error = None
      for cell in nb.cells:
          if cell.get("outputs") is None:
              continue
  
          for output in cell.outputs:
              if output.output_type == "error":
                  error = PapermillExecutionError(
                      exec_count=cell.execution_count,
                      source=cell.source,
                      ename=output.ename,
                      evalue=output.evalue,
                      traceback=output.traceback,
                  )
                  break
  
      if error:
          # Write notebook back out with the Error Message at the top of the Notebook.
          error_msg = ERROR_MESSAGE_TEMPLATE % str(error.exec_count)
          error_msg_cell = nbformat.v4.new_code_cell(
              source="%%html\n" + error_msg,
              outputs=[
                  nbformat.v4.new_output(output_type="display_data", data={"text/html": error_msg})
              ],
              metadata={"inputHidden": True, "hide_input": True},
          )
          nb.cells = [error_msg_cell] + nb.cells
          write_ipynb(nb, output_path)
          raise error
docs: Assigned parameters into the appropriate place in the input notebook
  
      Parameters
      ----------
      nb : NotebookNode
         Executable notebook object
      output_path : str
         Path to write executed notebook