This is an automated email from the ASF dual-hosted git repository. jedcunningham pushed a commit to branch v2-9-test in repository https://gitbox.apache.org/repos/asf/airflow.git
commit 70d31c09776849554195b939af1f707a24d58037 Author: Andrey Anshin <[email protected]> AuthorDate: Tue Apr 2 23:30:39 2024 +0400 Raise deprecated warning in `airflow dags backfill` only if `-I`/`--ignore-first-depends-on-past` provided (#38676) (cherry picked from commit e58cd4b519a867a06cf4898d8481bececddb9b88) --- airflow/cli/commands/dag_command.py | 13 ++++++------- tests/cli/commands/test_dag_command.py | 35 ++++++++++++++++++++++++---------- 2 files changed, 31 insertions(+), 17 deletions(-) diff --git a/airflow/cli/commands/dag_command.py b/airflow/cli/commands/dag_command.py index 2a8031cf90..7f64f9006d 100644 --- a/airflow/cli/commands/dag_command.py +++ b/airflow/cli/commands/dag_command.py @@ -133,10 +133,12 @@ def dag_backfill(args, dag: list[DAG] | DAG | None = None) -> None: """Create backfill job or dry run for a DAG or list of DAGs using regex.""" logging.basicConfig(level=settings.LOGGING_LEVEL, format=settings.SIMPLE_LOG_FORMAT) signal.signal(signal.SIGTERM, sigint_handler) - warnings.warn( - "--ignore-first-depends-on-past is deprecated as the value is always set to True", - category=RemovedInAirflow3Warning, - ) + if args.ignore_first_depends_on_past: + warnings.warn( + "--ignore-first-depends-on-past is deprecated as the value is always set to True", + category=RemovedInAirflow3Warning, + ) + args.ignore_first_depends_on_past = True if not args.treat_dag_id_as_regex and args.treat_dag_as_regex: warnings.warn( @@ -145,9 +147,6 @@ def dag_backfill(args, dag: list[DAG] | DAG | None = None) -> None: ) args.treat_dag_id_as_regex = args.treat_dag_as_regex - if args.ignore_first_depends_on_past is False: - args.ignore_first_depends_on_past = True - if not args.start_date and not args.end_date: raise AirflowException("Provide a start_date and/or end_date") diff --git a/tests/cli/commands/test_dag_command.py b/tests/cli/commands/test_dag_command.py index cac538139b..fb472fbdb0 100644 --- a/tests/cli/commands/test_dag_command.py +++ b/tests/cli/commands/test_dag_command.py @@ -17,6 +17,7 @@ # under the License. from __future__ import annotations +import argparse import contextlib import json import os @@ -34,7 +35,7 @@ from airflow.api_connexion.schemas.dag_schema import DAGSchema, dag_schema from airflow.cli import cli_parser from airflow.cli.commands import dag_command from airflow.decorators import task -from airflow.exceptions import AirflowException +from airflow.exceptions import AirflowException, RemovedInAirflow3Warning from airflow.models import DagBag, DagModel, DagRun from airflow.models.baseoperator import BaseOperator from airflow.models.dag import _run_inline_trigger @@ -61,6 +62,8 @@ pytestmark = pytest.mark.db_test class TestCliDags: + parser: argparse.ArgumentParser + @classmethod def setup_class(cls): cls.dagbag = DagBag(include_examples=True) @@ -328,8 +331,15 @@ class TestCliDags: assert "OUT" in out assert "ERR" in out + @pytest.mark.parametrize( + "cli_arg", + [ + pytest.param("-I", id="short"), + pytest.param("--ignore-first-depends-on-past", id="full"), + ], + ) @mock.patch("airflow.cli.commands.dag_command.DAG.run") - def test_cli_backfill_depends_on_past(self, mock_run): + def test_cli_backfill_deprecated_ignore_first_depends_on_past(self, mock_run, cli_arg: str): """ Test that CLI respects -I argument @@ -345,11 +355,12 @@ class TestCliDags: "--local", "--start-date", run_date.isoformat(), - "--ignore-first-depends-on-past", + cli_arg, ] dag = self.dagbag.get_dag(dag_id) - dag_command.dag_backfill(self.parser.parse_args(args), dag=dag) + with pytest.warns(RemovedInAirflow3Warning, match="ignore-first-depends-on-past is deprecated"): + dag_command.dag_backfill(self.parser.parse_args(args), dag=dag) mock_run.assert_called_once_with( start_date=run_date, @@ -369,11 +380,16 @@ class TestCliDags: disable_retry=False, ) + @pytest.mark.parametrize( + "cli_arg", + [ + pytest.param("-B", id="short"), + pytest.param("--run-backwards", id="full"), + ], + ) @mock.patch("airflow.cli.commands.dag_command.DAG.run") - def test_cli_backfill_depends_on_past_backwards(self, mock_run): - """ - Test that CLI respects -B argument and raises on interaction with depends_on_past - """ + def test_cli_backfill_depends_on_past_run_backwards(self, mock_run, cli_arg: str): + """Test that CLI respects -B argument.""" dag_id = "test_depends_on_past" start_date = DEFAULT_DATE + timedelta(days=1) end_date = start_date + timedelta(days=1) @@ -386,8 +402,7 @@ class TestCliDags: start_date.isoformat(), "--end-date", end_date.isoformat(), - "--ignore-first-depends-on-past", - "--run-backwards", + cli_arg, ] dag = self.dagbag.get_dag(dag_id)
