@catch_nb_assignment<EOL><INDENT>def notebook_start(self, **kwargs):<DEDENT>
self.set_timer()<EOL>self.nb.metadata.papermill['<STR_LIT>'] = self.start_time.isoformat()<EOL>self.nb.metadata.papermill['<STR_LIT>'] = None<EOL>self.nb.metadata.papermill['<STR_LIT>'] = None<EOL>self.nb.metadata.papermill['<STR_LIT>'] = None<EOL>for cell in self.nb.cells:<EOL><INDENT>if cell.get("<STR_LIT>") is not None:<EOL><INDENT>cell.execution_count = None<EOL><DEDENT>cell.metadata.papermill = dict(<EOL>exception=None,<EOL>start_time=None,<EOL>end_time=None,<EOL>duration=None,<EOL>status=self.PENDING,  <EOL>)<EOL>if cell.get("<STR_LIT>") is not None:<EOL><INDENT>cell.outputs = []<EOL><DEDENT><DEDENT>self.save()<EOL>
Initialize a notebook, clearing its metadata, and save it.

When starting a notebook, this initializes and clears the metadata for
the notebook and its cells, and saves the notebook to the given
output path.

Called by Engine when execution begins.