You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by ja...@apache.org on 2026/04/19 13:41:18 UTC
(airflow) branch main updated: Support log_output for PapermillOperator (#65170)
This is an automated email from the ASF dual-hosted git repository.
jason810496 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 418af2bb7ea Support log_output for PapermillOperator (#65170)
418af2bb7ea is described below
commit 418af2bb7ea365a453c322c3f3c25256587c2b19
Author: Aaron Chen <na...@gmail.com>
AuthorDate: Sun Apr 19 06:41:10 2026 -0700
Support log_output for PapermillOperator (#65170)
---
.../airflow/providers/papermill/operators/papermill.py | 5 +++++
.../tests/unit/papermill/operators/test_papermill.py | 16 ++++++++++++++++
2 files changed, 21 insertions(+)
diff --git a/providers/papermill/src/airflow/providers/papermill/operators/papermill.py b/providers/papermill/src/airflow/providers/papermill/operators/papermill.py
index 9043c593291..f41240ab263 100644
--- a/providers/papermill/src/airflow/providers/papermill/operators/papermill.py
+++ b/providers/papermill/src/airflow/providers/papermill/operators/papermill.py
@@ -54,6 +54,8 @@ class PapermillOperator(BaseOperator):
:param parameters: the notebook parameters to set
:param kernel_name: (optional) name of kernel to execute the notebook against
(ignores kernel name in the notebook document metadata)
+ :param log_output: (optional) Log the notebook cell output to the task log.
+ When True, the stdout/stderr of each cell execution is visible in the Airflow task log.
"""
# TODO: Remove this when provider drops 2.x support.
@@ -79,6 +81,7 @@ class PapermillOperator(BaseOperator):
kernel_name: str | None = None,
language_name: str | None = None,
kernel_conn_id: str | None = None,
+ log_output: bool = False,
nbconvert: bool = False,
nbconvert_args: list[str] | None = None,
**kwargs,
@@ -97,6 +100,7 @@ class PapermillOperator(BaseOperator):
self.kernel_name = kernel_name
self.language_name = language_name
self.kernel_conn_id = kernel_conn_id
+ self.log_output = log_output
self.nbconvert = nbconvert
self.nbconvert_args = nbconvert_args
@@ -131,6 +135,7 @@ class PapermillOperator(BaseOperator):
parameters=self.input_nb.parameters,
progress_bar=False,
report_mode=True,
+ log_output=self.log_output,
kernel_name=self.kernel_name,
language=self.language_name,
engine_name=engine_name,
diff --git a/providers/papermill/tests/unit/papermill/operators/test_papermill.py b/providers/papermill/tests/unit/papermill/operators/test_papermill.py
index 4b467723dc0..f911fb83658 100644
--- a/providers/papermill/tests/unit/papermill/operators/test_papermill.py
+++ b/providers/papermill/tests/unit/papermill/operators/test_papermill.py
@@ -118,6 +118,7 @@ class TestPapermillOperator:
language=language_name,
progress_bar=False,
report_mode=True,
+ log_output=False,
engine_name=None,
)
@@ -166,6 +167,7 @@ class TestPapermillOperator:
language=language_name,
progress_bar=False,
report_mode=True,
+ log_output=False,
engine_name=REMOTE_KERNEL_ENGINE,
kernel_session_key="notebooks",
kernel_shell_port=JUPYTER_KERNEL_SHELL_PORT,
@@ -176,6 +178,20 @@ class TestPapermillOperator:
kernel_ip="127.0.0.1",
)
+ @patch("airflow.providers.papermill.operators.papermill.pm")
+ def test_execute_with_log_output(self, mock_papermill):
+ from airflow.providers.papermill.operators.papermill import PapermillOperator
+
+ op = PapermillOperator(
+ input_nb="/tmp/in.ipynb",
+ output_nb="/tmp/out.ipynb",
+ task_id="test_log_output",
+ log_output=True,
+ )
+ op.execute(context={})
+ call_kwargs = mock_papermill.execute_notebook.call_args
+ assert call_kwargs.kwargs["log_output"] is True
+
@pytest.mark.db_test
def test_render_template(self, create_task_instance_of_operator):
"""Test rendering fields."""