diff --git a/providers/papermill/src/airflow/providers/papermill/operators/papermill.py b/providers/papermill/src/airflow/providers/papermill/operators/papermill.py index f41240ab26387..22264c2d831d1 100644 --- a/providers/papermill/src/airflow/providers/papermill/operators/papermill.py +++ b/providers/papermill/src/airflow/providers/papermill/operators/papermill.py @@ -88,15 +88,8 @@ def __init__( ) -> None: super().__init__(**kwargs) self.parameters = parameters - - if not input_nb: - raise ValueError("Input notebook is not specified") self.input_nb = input_nb - - if not output_nb: - raise ValueError("Output notebook is not specified") self.output_nb = output_nb - self.kernel_name = kernel_name self.language_name = language_name self.kernel_conn_id = kernel_conn_id @@ -105,6 +98,10 @@ def __init__( self.nbconvert_args = nbconvert_args def execute(self, context: Context): + if not self.input_nb: + raise ValueError("Input notebook is not specified") + if not self.output_nb: + raise ValueError("Output notebook is not specified") if not isinstance(self.input_nb, NoteBook): self.input_nb = NoteBook(url=self.input_nb, parameters=self.parameters) if not isinstance(self.output_nb, NoteBook): diff --git a/providers/papermill/tests/unit/papermill/operators/test_papermill.py b/providers/papermill/tests/unit/papermill/operators/test_papermill.py index f911fb8365843..301e9e970209b 100644 --- a/providers/papermill/tests/unit/papermill/operators/test_papermill.py +++ b/providers/papermill/tests/unit/papermill/operators/test_papermill.py @@ -43,12 +43,12 @@ class TestPapermillOperator: """Test PapermillOperator.""" def test_mandatory_attributes(self): - """Test missing Input or Output notebooks.""" + """Test missing Input or Output notebooks are validated at execute time.""" with pytest.raises(ValueError, match="Input notebook is not specified"): - PapermillOperator(task_id="missing_input_nb", output_nb="foo-bar") + PapermillOperator(task_id="missing_input_nb", output_nb="foo-bar").execute(context={}) with pytest.raises(ValueError, match="Output notebook is not specified"): - PapermillOperator(task_id="missing_input_nb", input_nb="foo-bar") + PapermillOperator(task_id="missing_output_nb", input_nb="foo-bar").execute(context={}) @pytest.mark.parametrize( ("output_nb_url", "output_as_object"), diff --git a/scripts/ci/prek/validate_operators_init_exemptions.txt b/scripts/ci/prek/validate_operators_init_exemptions.txt index e27de0f6a8ba8..78485858b0067 100644 --- a/scripts/ci/prek/validate_operators_init_exemptions.txt +++ b/scripts/ci/prek/validate_operators_init_exemptions.txt @@ -53,7 +53,6 @@ providers/microsoft/azure/src/airflow/providers/microsoft/azure/transfers/gcs_to providers/microsoft/azure/src/airflow/providers/microsoft/azure/transfers/oracle_to_azure_data_lake.py::OracleToAzureDataLakeOperator providers/microsoft/psrp/src/airflow/providers/microsoft/psrp/operators/psrp.py::PsrpOperator providers/oracle/src/airflow/providers/oracle/transfers/oracle_to_oracle.py::OracleToOracleOperator -providers/papermill/src/airflow/providers/papermill/operators/papermill.py::PapermillOperator providers/standard/src/airflow/providers/standard/operators/bash.py::BashOperator providers/standard/src/airflow/providers/standard/operators/trigger_dagrun.py::TriggerDagRunOperator providers/standard/src/airflow/providers/standard/sensors/date_time.py::DateTimeSensor