1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #
- # Copyright 2018-2022 Elyra Authors
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- #
- """Papermill Engine that configures a KernelManager to hit a Gateway Server."""
- from papermill.clientwrap import PapermillNotebookClient
- from papermill.engines import NBClientEngine
- from papermill.log import logger
- from papermill.utils import merge_kwargs
- from papermill.utils import remove_args
- class ElyraEngine(NBClientEngine):
- """
- A notebook engine representing an nbclient process that runs local pipeline notebooks.
- This can execute a notebook document and update the `nb_man.nb` object with the results.
- """
- @classmethod
- def execute_managed_notebook(
- cls,
- nb_man,
- kernel_name,
- log_output=False,
- stdout_file=None,
- stderr_file=None,
- start_timeout=60,
- execution_timeout=None,
- **kwargs,
- ):
- """
- Performs the actual execution of the parameterized notebook. Note that kwargs may
- specify an alternate 'kernel_manager_class' for nbclient to use, and 'kernel_env'
- and 'kernel_cwd' to pass to the kernel process's environment.
- Args:
- nb (NotebookNode): Executable notebook object.
- kernel_name (str): Name of kernel to execute the notebook against.
- log_output (bool): Flag for whether or not to write notebook output to the
- configured logger.
- startup_timeout (int): Duration to wait for kernel start-up.
- execution_timeout (int): Duration to wait before failing execution (default: never).
- kernel_env (dict): Passed as the kernel 'env' parameter to the execute() method
- kernel_cwd (str): Passed as the kernel 'cwd' parameter to the execute() method
- kernel_manager_class: (str) If set, specifies the use of an alternate kernel manager.
- """
- # Exclude parameters that named differently downstream
- safe_kwargs = remove_args(["timeout", "startup_timeout", "kernel_env", "kernel_cwd"], **kwargs)
- # Nicely handle preprocessor arguments prioritizing values set by engine
- final_kwargs = merge_kwargs(
- safe_kwargs,
- timeout=execution_timeout or kwargs.get("timeout"),
- startup_timeout=start_timeout,
- kernel_name=kernel_name,
- log=logger,
- log_output=log_output,
- stdout_file=stdout_file,
- stderr_file=stderr_file,
- )
- kernel_kwargs = {"env": kwargs.get("kernel_env")}
- # Only include kernel_name and set path if GatewayKernelManager will be used
- kernel_manager_class = final_kwargs.get("kernel_manager_class")
- if kernel_manager_class == "jupyter_server.gateway.managers.GatewayKernelManager":
- kernel_kwargs["kernel_name"] = kernel_name
- kernel_kwargs["path"] = kwargs.get("kernel_cwd")
- return PapermillNotebookClient(nb_man, **final_kwargs).execute(**kernel_kwargs)
|