code: def run_notebook(self, skip_exceptions=False, progress_callback=None):
          
          for i, cell in enumerate(self.iter_code_cells()):
              try:
                  self.run_cell(cell)
              except NotebookError:
                  if not skip_exceptions:
                      raise
              if progress_callback:
                  progress_callback(i)
docs: Run all the notebook cells in order and update the outputs in-place.
  
          If ``skip_exceptions`` is set, then if exceptions occur in a cell, the
          subsequent cells are run (by default, the notebook execution stops).