@classmethod<EOL><INDENT>def execute_notebook(<EOL>cls, nb, kernel_name, output_path=None, progress_bar=True, log_output=False, **kwargs<EOL>):<DEDENT>
nb_man = NotebookExecutionManager(<EOL>nb, output_path=output_path, progress_bar=progress_bar, log_output=log_output<EOL>)<EOL>nb_man.notebook_start()<EOL>try:<EOL><INDENT>nb = cls.execute_managed_notebook(nb_man, kernel_name, log_output=log_output, **kwargs)<EOL>if nb:<EOL><INDENT>nb_man.nb = nb<EOL><DEDENT><DEDENT>finally:<EOL><INDENT>nb_man.cleanup_pbar()<EOL>nb_man.notebook_complete()<EOL><DEDENT>return nb_man.nb<EOL>
A wrapper to handle notebook execution tasks.

Wraps the notebook object in a `NotebookExecutionManager` in order to track
execution state in a uniform manner. This is meant to help simplify
engine implementations. This allows a developer to just focus on
iterating and executing the cell contents.