def _execute_parameterized_notebook(nb, kernel_name=None, progress_bar=True, log_output=False, start_timeout=60): """Performs the actual execution of the parameterized notebook locally. Args: nb (NotebookNode): Executable notebook object. kernel_name (str): Name of kernel to execute the notebook against. progress_bar (bool): Flag for whether or not to show the progress bar. log_output (bool): Flag for whether or not to write notebook output to stderr. start_timeout (int): Duration to wait for kernel start-up. """ t0 = datetime.datetime.utcnow() processor = ExecutePreprocessor( timeout=None, startup_timeout=start_timeout, kernel_name=kernel_name or nb.metadata.kernelspec.name, ) processor.progress_bar = progress_bar and not no_tqdm processor.log_output = log_output processor.preprocess(nb, {}) t1 = datetime.datetime.utcnow() nb.metadata.papermill['start_time'] = t0.isoformat() nb.metadata.papermill['end_time'] = t1.isoformat() nb.metadata.papermill['duration'] = (t1 - t0).total_seconds() nb.metadata.papermill['exception'] = any( [cell.metadata.papermill.get('exception') for cell in nb.cells])
def execute_notebook(notebook, output, parameters=None, kernel_name=None, progress_bar=True, log_output=False, start_timeout=60): """Executes a single notebook locally. Args: notebook (str): Path to input notebook. output (str): Path to save executed notebook. parameters (dict): Arbitrary keyword arguments to pass to the notebook parameters. kernel_name (str): Name of kernel to execute the notebook against. progress_bar (bool): Flag for whether or not to show the progress bar. log_output (bool): Flag for whether or not to write notebook output to stderr. Returns: nb (NotebookNode): executed notebook object """ print("Input Notebook: %s" % get_pretty_path(notebook), file=sys.stderr) print("Output Notebook: %s" % get_pretty_path(output), file=sys.stderr) nb = load_notebook_node(notebook) # Parameterize the Notebook. if parameters: _parameterize_notebook(nb, kernel_name, parameters) # Record specified environment variable values. nb.metadata.papermill['parameters'] = parameters nb.metadata.papermill[ 'environment_variables'] = _fetch_environment_variables() nb.metadata.papermill['output_path'] = output # Execute the Notebook. t0 = datetime.datetime.utcnow() processor = ExecutePreprocessor( timeout=None, startup_timeout=start_timeout, kernel_name=kernel_name or nb.metadata.kernelspec.name, ) processor.progress_bar = progress_bar and not no_tqdm processor.log_output = log_output processor.preprocess(nb, {}) t1 = datetime.datetime.utcnow() nb.metadata.papermill['start_time'] = t0.isoformat() nb.metadata.papermill['end_time'] = t1.isoformat() nb.metadata.papermill['duration'] = (t1 - t0).total_seconds() nb.metadata.papermill['exception'] = any( [cell.metadata.papermill.get('exception') for cell in nb.cells]) # Write final Notebook to disk. write_ipynb(nb, output) raise_for_execution_errors(nb, output) # always return notebook object return nb