mirror of https://github.com/astral-sh/ruff
[`airflow`] Argument `fail_stop` in DAG has been renamed as `fail_fast` (`AIR302`) (#15633)
## Summary argument `fail_stop` in DAG has been renamed as `fail_fast` (AIR302) ## Test Plan a test fixture has been updated
This commit is contained in:
parent
fbb06fe0ac
commit
1e053531b6
|
|
@ -26,6 +26,8 @@ def sla_callback(*arg, **kwargs):
|
||||||
|
|
||||||
DAG(dag_id="class_sla_callback", sla_miss_callback=sla_callback)
|
DAG(dag_id="class_sla_callback", sla_miss_callback=sla_callback)
|
||||||
|
|
||||||
|
DAG(dag_id="class_sla_callback", fail_stop=True)
|
||||||
|
|
||||||
|
|
||||||
@dag(schedule="0 * * * *")
|
@dag(schedule="0 * * * *")
|
||||||
def decorator_schedule():
|
def decorator_schedule():
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,11 @@ fn check_call_arguments(checker: &mut Checker, qualname: &QualifiedName, argumen
|
||||||
"sla_miss_callback",
|
"sla_miss_callback",
|
||||||
None,
|
None,
|
||||||
));
|
));
|
||||||
|
checker.diagnostics.extend(diagnostic_for_argument(
|
||||||
|
arguments,
|
||||||
|
"fail_stop",
|
||||||
|
Some("fail_fast"),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
_ => {
|
_ => {
|
||||||
if is_airflow_auth_manager(qualname.segments()) {
|
if is_airflow_auth_manager(qualname.segments()) {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/airflow/mod.rs
|
source: crates/ruff_linter/src/rules/airflow/mod.rs
|
||||||
|
snapshot_kind: text
|
||||||
---
|
---
|
||||||
AIR302_args.py:18:39: AIR302 [*] `schedule_interval` is removed in Airflow 3.0
|
AIR302_args.py:18:39: AIR302 [*] `schedule_interval` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
|
|
@ -45,207 +46,228 @@ AIR302_args.py:27:34: AIR302 `sla_miss_callback` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
27 | DAG(dag_id="class_sla_callback", sla_miss_callback=sla_callback)
|
27 | DAG(dag_id="class_sla_callback", sla_miss_callback=sla_callback)
|
||||||
| ^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^ AIR302
|
||||||
|
28 |
|
||||||
|
29 | DAG(dag_id="class_sla_callback", fail_stop=True)
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_args.py:35:6: AIR302 [*] `schedule_interval` is removed in Airflow 3.0
|
AIR302_args.py:29:34: AIR302 [*] `fail_stop` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
35 | @dag(schedule_interval="0 * * * *")
|
27 | DAG(dag_id="class_sla_callback", sla_miss_callback=sla_callback)
|
||||||
|
28 |
|
||||||
|
29 | DAG(dag_id="class_sla_callback", fail_stop=True)
|
||||||
|
| ^^^^^^^^^ AIR302
|
||||||
|
|
|
||||||
|
= help: Use `fail_fast` instead
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
26 26 |
|
||||||
|
27 27 | DAG(dag_id="class_sla_callback", sla_miss_callback=sla_callback)
|
||||||
|
28 28 |
|
||||||
|
29 |-DAG(dag_id="class_sla_callback", fail_stop=True)
|
||||||
|
29 |+DAG(dag_id="class_sla_callback", fail_fast=True)
|
||||||
|
30 30 |
|
||||||
|
31 31 |
|
||||||
|
32 32 | @dag(schedule="0 * * * *")
|
||||||
|
|
||||||
|
AIR302_args.py:37:6: AIR302 [*] `schedule_interval` is removed in Airflow 3.0
|
||||||
|
|
|
||||||
|
37 | @dag(schedule_interval="0 * * * *")
|
||||||
| ^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^ AIR302
|
||||||
36 | def decorator_schedule_interval():
|
38 | def decorator_schedule_interval():
|
||||||
37 | pass
|
39 | pass
|
||||||
|
|
|
|
||||||
= help: Use `schedule` instead
|
= help: Use `schedule` instead
|
||||||
|
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
32 32 | pass
|
34 34 | pass
|
||||||
33 33 |
|
35 35 |
|
||||||
34 34 |
|
36 36 |
|
||||||
35 |-@dag(schedule_interval="0 * * * *")
|
37 |-@dag(schedule_interval="0 * * * *")
|
||||||
35 |+@dag(schedule="0 * * * *")
|
37 |+@dag(schedule="0 * * * *")
|
||||||
36 36 | def decorator_schedule_interval():
|
38 38 | def decorator_schedule_interval():
|
||||||
37 37 | pass
|
39 39 | pass
|
||||||
38 38 |
|
40 40 |
|
||||||
|
|
||||||
AIR302_args.py:40:6: AIR302 [*] `timetable` is removed in Airflow 3.0
|
AIR302_args.py:42:6: AIR302 [*] `timetable` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
40 | @dag(timetable=NullTimetable())
|
42 | @dag(timetable=NullTimetable())
|
||||||
| ^^^^^^^^^ AIR302
|
| ^^^^^^^^^ AIR302
|
||||||
41 | def decorator_timetable():
|
43 | def decorator_timetable():
|
||||||
42 | pass
|
44 | pass
|
||||||
|
|
|
|
||||||
= help: Use `schedule` instead
|
= help: Use `schedule` instead
|
||||||
|
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
37 37 | pass
|
39 39 | pass
|
||||||
38 38 |
|
40 40 |
|
||||||
39 39 |
|
41 41 |
|
||||||
40 |-@dag(timetable=NullTimetable())
|
42 |-@dag(timetable=NullTimetable())
|
||||||
40 |+@dag(schedule=NullTimetable())
|
42 |+@dag(schedule=NullTimetable())
|
||||||
41 41 | def decorator_timetable():
|
43 43 | def decorator_timetable():
|
||||||
42 42 | pass
|
44 44 | pass
|
||||||
43 43 |
|
45 45 |
|
||||||
|
|
||||||
AIR302_args.py:45:6: AIR302 `sla_miss_callback` is removed in Airflow 3.0
|
AIR302_args.py:47:6: AIR302 `sla_miss_callback` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
45 | @dag(sla_miss_callback=sla_callback)
|
47 | @dag(sla_miss_callback=sla_callback)
|
||||||
| ^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^ AIR302
|
||||||
46 | def decorator_sla_callback():
|
48 | def decorator_sla_callback():
|
||||||
47 | pass
|
49 | pass
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_args.py:53:39: AIR302 [*] `execution_date` is removed in Airflow 3.0
|
AIR302_args.py:55:39: AIR302 [*] `execution_date` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
51 | def decorator_deprecated_operator_args():
|
53 | def decorator_deprecated_operator_args():
|
||||||
52 | trigger_dagrun_op = trigger_dagrun.TriggerDagRunOperator(
|
54 | trigger_dagrun_op = trigger_dagrun.TriggerDagRunOperator(
|
||||||
53 | task_id="trigger_dagrun_op1", execution_date="2024-12-04"
|
55 | task_id="trigger_dagrun_op1", execution_date="2024-12-04"
|
||||||
| ^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^ AIR302
|
||||||
54 | )
|
56 | )
|
||||||
55 | trigger_dagrun_op2 = TriggerDagRunOperator(
|
57 | trigger_dagrun_op2 = TriggerDagRunOperator(
|
||||||
|
|
|
|
||||||
= help: Use `logical_date` instead
|
= help: Use `logical_date` instead
|
||||||
|
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
50 50 | @dag()
|
52 52 | @dag()
|
||||||
51 51 | def decorator_deprecated_operator_args():
|
53 53 | def decorator_deprecated_operator_args():
|
||||||
52 52 | trigger_dagrun_op = trigger_dagrun.TriggerDagRunOperator(
|
54 54 | trigger_dagrun_op = trigger_dagrun.TriggerDagRunOperator(
|
||||||
53 |- task_id="trigger_dagrun_op1", execution_date="2024-12-04"
|
55 |- task_id="trigger_dagrun_op1", execution_date="2024-12-04"
|
||||||
53 |+ task_id="trigger_dagrun_op1", logical_date="2024-12-04"
|
55 |+ task_id="trigger_dagrun_op1", logical_date="2024-12-04"
|
||||||
54 54 | )
|
56 56 | )
|
||||||
55 55 | trigger_dagrun_op2 = TriggerDagRunOperator(
|
57 57 | trigger_dagrun_op2 = TriggerDagRunOperator(
|
||||||
56 56 | task_id="trigger_dagrun_op2", execution_date="2024-12-04"
|
58 58 | task_id="trigger_dagrun_op2", execution_date="2024-12-04"
|
||||||
|
|
||||||
AIR302_args.py:56:39: AIR302 [*] `execution_date` is removed in Airflow 3.0
|
AIR302_args.py:58:39: AIR302 [*] `execution_date` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
54 | )
|
56 | )
|
||||||
55 | trigger_dagrun_op2 = TriggerDagRunOperator(
|
57 | trigger_dagrun_op2 = TriggerDagRunOperator(
|
||||||
56 | task_id="trigger_dagrun_op2", execution_date="2024-12-04"
|
58 | task_id="trigger_dagrun_op2", execution_date="2024-12-04"
|
||||||
| ^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^ AIR302
|
||||||
57 | )
|
59 | )
|
||||||
|
|
|
|
||||||
= help: Use `logical_date` instead
|
= help: Use `logical_date` instead
|
||||||
|
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
53 53 | task_id="trigger_dagrun_op1", execution_date="2024-12-04"
|
55 55 | task_id="trigger_dagrun_op1", execution_date="2024-12-04"
|
||||||
54 54 | )
|
56 56 | )
|
||||||
55 55 | trigger_dagrun_op2 = TriggerDagRunOperator(
|
57 57 | trigger_dagrun_op2 = TriggerDagRunOperator(
|
||||||
56 |- task_id="trigger_dagrun_op2", execution_date="2024-12-04"
|
58 |- task_id="trigger_dagrun_op2", execution_date="2024-12-04"
|
||||||
56 |+ task_id="trigger_dagrun_op2", logical_date="2024-12-04"
|
58 |+ task_id="trigger_dagrun_op2", logical_date="2024-12-04"
|
||||||
57 57 | )
|
59 59 | )
|
||||||
58 58 |
|
60 60 |
|
||||||
59 59 | branch_dt_op = datetime.BranchDateTimeOperator(
|
61 61 | branch_dt_op = datetime.BranchDateTimeOperator(
|
||||||
|
|
||||||
AIR302_args.py:60:33: AIR302 [*] `use_task_execution_day` is removed in Airflow 3.0
|
AIR302_args.py:62:33: AIR302 [*] `use_task_execution_day` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
59 | branch_dt_op = datetime.BranchDateTimeOperator(
|
61 | branch_dt_op = datetime.BranchDateTimeOperator(
|
||||||
60 | task_id="branch_dt_op", use_task_execution_day=True, task_concurrency=5
|
62 | task_id="branch_dt_op", use_task_execution_day=True, task_concurrency=5
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^^^^^ AIR302
|
||||||
61 | )
|
63 | )
|
||||||
62 | branch_dt_op2 = BranchDateTimeOperator(
|
64 | branch_dt_op2 = BranchDateTimeOperator(
|
||||||
|
|
|
|
||||||
= help: Use `use_task_logical_date` instead
|
= help: Use `use_task_logical_date` instead
|
||||||
|
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
57 57 | )
|
59 59 | )
|
||||||
58 58 |
|
60 60 |
|
||||||
59 59 | branch_dt_op = datetime.BranchDateTimeOperator(
|
61 61 | branch_dt_op = datetime.BranchDateTimeOperator(
|
||||||
60 |- task_id="branch_dt_op", use_task_execution_day=True, task_concurrency=5
|
62 |- task_id="branch_dt_op", use_task_execution_day=True, task_concurrency=5
|
||||||
60 |+ task_id="branch_dt_op", use_task_logical_date=True, task_concurrency=5
|
62 |+ task_id="branch_dt_op", use_task_logical_date=True, task_concurrency=5
|
||||||
61 61 | )
|
63 63 | )
|
||||||
62 62 | branch_dt_op2 = BranchDateTimeOperator(
|
64 64 | branch_dt_op2 = BranchDateTimeOperator(
|
||||||
63 63 | task_id="branch_dt_op2",
|
65 65 | task_id="branch_dt_op2",
|
||||||
|
|
||||||
AIR302_args.py:60:62: AIR302 [*] `task_concurrency` is removed in Airflow 3.0
|
AIR302_args.py:62:62: AIR302 [*] `task_concurrency` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
59 | branch_dt_op = datetime.BranchDateTimeOperator(
|
61 | branch_dt_op = datetime.BranchDateTimeOperator(
|
||||||
60 | task_id="branch_dt_op", use_task_execution_day=True, task_concurrency=5
|
62 | task_id="branch_dt_op", use_task_execution_day=True, task_concurrency=5
|
||||||
| ^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^ AIR302
|
||||||
61 | )
|
63 | )
|
||||||
62 | branch_dt_op2 = BranchDateTimeOperator(
|
64 | branch_dt_op2 = BranchDateTimeOperator(
|
||||||
|
|
|
|
||||||
= help: Use `max_active_tis_per_dag` instead
|
= help: Use `max_active_tis_per_dag` instead
|
||||||
|
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
57 57 | )
|
59 59 | )
|
||||||
58 58 |
|
60 60 |
|
||||||
59 59 | branch_dt_op = datetime.BranchDateTimeOperator(
|
61 61 | branch_dt_op = datetime.BranchDateTimeOperator(
|
||||||
60 |- task_id="branch_dt_op", use_task_execution_day=True, task_concurrency=5
|
62 |- task_id="branch_dt_op", use_task_execution_day=True, task_concurrency=5
|
||||||
60 |+ task_id="branch_dt_op", use_task_execution_day=True, max_active_tis_per_dag=5
|
62 |+ task_id="branch_dt_op", use_task_execution_day=True, max_active_tis_per_dag=5
|
||||||
61 61 | )
|
63 63 | )
|
||||||
62 62 | branch_dt_op2 = BranchDateTimeOperator(
|
64 64 | branch_dt_op2 = BranchDateTimeOperator(
|
||||||
63 63 | task_id="branch_dt_op2",
|
65 65 | task_id="branch_dt_op2",
|
||||||
|
|
||||||
AIR302_args.py:64:9: AIR302 [*] `use_task_execution_day` is removed in Airflow 3.0
|
AIR302_args.py:66:9: AIR302 [*] `use_task_execution_day` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
62 | branch_dt_op2 = BranchDateTimeOperator(
|
64 | branch_dt_op2 = BranchDateTimeOperator(
|
||||||
63 | task_id="branch_dt_op2",
|
65 | task_id="branch_dt_op2",
|
||||||
64 | use_task_execution_day=True,
|
66 | use_task_execution_day=True,
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^^^^^ AIR302
|
||||||
65 | sla=timedelta(seconds=10),
|
67 | sla=timedelta(seconds=10),
|
||||||
66 | )
|
68 | )
|
||||||
|
|
|
|
||||||
= help: Use `use_task_logical_date` instead
|
= help: Use `use_task_logical_date` instead
|
||||||
|
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
61 61 | )
|
63 63 | )
|
||||||
62 62 | branch_dt_op2 = BranchDateTimeOperator(
|
64 64 | branch_dt_op2 = BranchDateTimeOperator(
|
||||||
63 63 | task_id="branch_dt_op2",
|
65 65 | task_id="branch_dt_op2",
|
||||||
64 |- use_task_execution_day=True,
|
66 |- use_task_execution_day=True,
|
||||||
64 |+ use_task_logical_date=True,
|
66 |+ use_task_logical_date=True,
|
||||||
65 65 | sla=timedelta(seconds=10),
|
67 67 | sla=timedelta(seconds=10),
|
||||||
66 66 | )
|
68 68 | )
|
||||||
67 67 |
|
69 69 |
|
||||||
|
|
||||||
AIR302_args.py:65:9: AIR302 `sla` is removed in Airflow 3.0
|
AIR302_args.py:67:9: AIR302 `sla` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
63 | task_id="branch_dt_op2",
|
65 | task_id="branch_dt_op2",
|
||||||
64 | use_task_execution_day=True,
|
66 | use_task_execution_day=True,
|
||||||
65 | sla=timedelta(seconds=10),
|
67 | sla=timedelta(seconds=10),
|
||||||
| ^^^ AIR302
|
| ^^^ AIR302
|
||||||
66 | )
|
68 | )
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_args.py:87:15: AIR302 `filename_template` is removed in Airflow 3.0
|
AIR302_args.py:89:15: AIR302 `filename_template` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
86 | # deprecated filename_template arugment in FileTaskHandler
|
88 | # deprecated filename_template arugment in FileTaskHandler
|
||||||
87 | S3TaskHandler(filename_template="/tmp/test")
|
89 | S3TaskHandler(filename_template="/tmp/test")
|
||||||
| ^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^ AIR302
|
||||||
88 | HdfsTaskHandler(filename_template="/tmp/test")
|
90 | HdfsTaskHandler(filename_template="/tmp/test")
|
||||||
89 | ElasticsearchTaskHandler(filename_template="/tmp/test")
|
91 | ElasticsearchTaskHandler(filename_template="/tmp/test")
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_args.py:88:17: AIR302 `filename_template` is removed in Airflow 3.0
|
AIR302_args.py:90:17: AIR302 `filename_template` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
86 | # deprecated filename_template arugment in FileTaskHandler
|
88 | # deprecated filename_template arugment in FileTaskHandler
|
||||||
87 | S3TaskHandler(filename_template="/tmp/test")
|
89 | S3TaskHandler(filename_template="/tmp/test")
|
||||||
88 | HdfsTaskHandler(filename_template="/tmp/test")
|
90 | HdfsTaskHandler(filename_template="/tmp/test")
|
||||||
| ^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^ AIR302
|
||||||
89 | ElasticsearchTaskHandler(filename_template="/tmp/test")
|
91 | ElasticsearchTaskHandler(filename_template="/tmp/test")
|
||||||
90 | GCSTaskHandler(filename_template="/tmp/test")
|
92 | GCSTaskHandler(filename_template="/tmp/test")
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_args.py:89:26: AIR302 `filename_template` is removed in Airflow 3.0
|
AIR302_args.py:91:26: AIR302 `filename_template` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
87 | S3TaskHandler(filename_template="/tmp/test")
|
89 | S3TaskHandler(filename_template="/tmp/test")
|
||||||
88 | HdfsTaskHandler(filename_template="/tmp/test")
|
90 | HdfsTaskHandler(filename_template="/tmp/test")
|
||||||
89 | ElasticsearchTaskHandler(filename_template="/tmp/test")
|
91 | ElasticsearchTaskHandler(filename_template="/tmp/test")
|
||||||
| ^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^ AIR302
|
||||||
90 | GCSTaskHandler(filename_template="/tmp/test")
|
92 | GCSTaskHandler(filename_template="/tmp/test")
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_args.py:90:16: AIR302 `filename_template` is removed in Airflow 3.0
|
AIR302_args.py:92:16: AIR302 `filename_template` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
88 | HdfsTaskHandler(filename_template="/tmp/test")
|
90 | HdfsTaskHandler(filename_template="/tmp/test")
|
||||||
89 | ElasticsearchTaskHandler(filename_template="/tmp/test")
|
91 | ElasticsearchTaskHandler(filename_template="/tmp/test")
|
||||||
90 | GCSTaskHandler(filename_template="/tmp/test")
|
92 | GCSTaskHandler(filename_template="/tmp/test")
|
||||||
| ^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^ AIR302
|
||||||
91 |
|
93 |
|
||||||
92 | FabAuthManager(None)
|
94 | FabAuthManager(None)
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_args.py:92:15: AIR302 `appbuilder` is removed in Airflow 3.0; The constructor takes no parameter now
|
AIR302_args.py:94:15: AIR302 `appbuilder` is removed in Airflow 3.0; The constructor takes no parameter now
|
||||||
|
|
|
|
||||||
90 | GCSTaskHandler(filename_template="/tmp/test")
|
92 | GCSTaskHandler(filename_template="/tmp/test")
|
||||||
91 |
|
93 |
|
||||||
92 | FabAuthManager(None)
|
94 | FabAuthManager(None)
|
||||||
| ^^^^^^ AIR302
|
| ^^^^^^ AIR302
|
||||||
|
|
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue