mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-28 21:05:08 +00:00
[airflow
] Move AIR302
to AIR301
and AIR303
to AIR302
(#17151)
## Summary Following up the discussion in https://github.com/astral-sh/ruff/issues/14626#issuecomment-2766548545, we're to reorganize airflow rules. Before this discussion happens, we combine required changes and suggested changes in to one single error code. This PR first rename the original error code to the new error code as we discussed. We will gradually extract suggested changes out of AIR301 and AIR302 to AIR311 and AIR312 in the following PRs ## Test Plan Except for file, error code rename, the test case should work as it used to be.
This commit is contained in:
parent
adeba3dca7
commit
8833484b10
20 changed files with 750 additions and 754 deletions
|
@ -1069,8 +1069,8 @@ pub fn code_to_rule(linter: Linter, code: &str) -> Option<(RuleGroup, Rule)> {
|
||||||
// airflow
|
// airflow
|
||||||
(Airflow, "001") => (RuleGroup::Stable, rules::airflow::rules::AirflowVariableNameTaskIdMismatch),
|
(Airflow, "001") => (RuleGroup::Stable, rules::airflow::rules::AirflowVariableNameTaskIdMismatch),
|
||||||
(Airflow, "002") => (RuleGroup::Preview, rules::airflow::rules::AirflowDagNoScheduleArgument),
|
(Airflow, "002") => (RuleGroup::Preview, rules::airflow::rules::AirflowDagNoScheduleArgument),
|
||||||
(Airflow, "302") => (RuleGroup::Preview, rules::airflow::rules::Airflow3Removal),
|
(Airflow, "301") => (RuleGroup::Preview, rules::airflow::rules::Airflow3Removal),
|
||||||
(Airflow, "303") => (RuleGroup::Preview, rules::airflow::rules::Airflow3MovedToProvider),
|
(Airflow, "302") => (RuleGroup::Preview, rules::airflow::rules::Airflow3MovedToProvider),
|
||||||
|
|
||||||
// perflint
|
// perflint
|
||||||
(Perflint, "101") => (RuleGroup::Stable, rules::perflint::rules::UnnecessaryListCast),
|
(Perflint, "101") => (RuleGroup::Stable, rules::perflint::rules::UnnecessaryListCast),
|
||||||
|
|
|
@ -15,13 +15,13 @@ mod tests {
|
||||||
|
|
||||||
#[test_case(Rule::AirflowVariableNameTaskIdMismatch, Path::new("AIR001.py"))]
|
#[test_case(Rule::AirflowVariableNameTaskIdMismatch, Path::new("AIR001.py"))]
|
||||||
#[test_case(Rule::AirflowDagNoScheduleArgument, Path::new("AIR002.py"))]
|
#[test_case(Rule::AirflowDagNoScheduleArgument, Path::new("AIR002.py"))]
|
||||||
#[test_case(Rule::Airflow3Removal, Path::new("AIR302_args.py"))]
|
#[test_case(Rule::Airflow3Removal, Path::new("AIR301_args.py"))]
|
||||||
#[test_case(Rule::Airflow3Removal, Path::new("AIR302_names.py"))]
|
#[test_case(Rule::Airflow3Removal, Path::new("AIR301_names.py"))]
|
||||||
#[test_case(Rule::Airflow3Removal, Path::new("AIR302_names_try.py"))]
|
#[test_case(Rule::Airflow3Removal, Path::new("AIR301_names_try.py"))]
|
||||||
#[test_case(Rule::Airflow3Removal, Path::new("AIR302_class_attribute.py"))]
|
#[test_case(Rule::Airflow3Removal, Path::new("AIR301_class_attribute.py"))]
|
||||||
#[test_case(Rule::Airflow3Removal, Path::new("AIR302_airflow_plugin.py"))]
|
#[test_case(Rule::Airflow3Removal, Path::new("AIR301_airflow_plugin.py"))]
|
||||||
#[test_case(Rule::Airflow3Removal, Path::new("AIR302_context.py"))]
|
#[test_case(Rule::Airflow3Removal, Path::new("AIR301_context.py"))]
|
||||||
#[test_case(Rule::Airflow3MovedToProvider, Path::new("AIR303.py"))]
|
#[test_case(Rule::Airflow3MovedToProvider, Path::new("AIR302.py"))]
|
||||||
fn rules(rule_code: Rule, path: &Path) -> Result<()> {
|
fn rules(rule_code: Rule, path: &Path) -> Result<()> {
|
||||||
let snapshot = format!("{}_{}", rule_code.noqa_code(), path.to_string_lossy());
|
let snapshot = format!("{}_{}", rule_code.noqa_code(), path.to_string_lossy());
|
||||||
let diagnostics = test_path(
|
let diagnostics = test_path(
|
||||||
|
|
|
@ -77,7 +77,7 @@ pub(crate) fn dag_no_schedule_argument(checker: &Checker, expr: &Expr) {
|
||||||
// If there's a schedule keyword argument, we are good.
|
// If there's a schedule keyword argument, we are good.
|
||||||
// This includes the canonical 'schedule', and the deprecated 'timetable'
|
// This includes the canonical 'schedule', and the deprecated 'timetable'
|
||||||
// and 'schedule_interval'. Usages of deprecated schedule arguments are
|
// and 'schedule_interval'. Usages of deprecated schedule arguments are
|
||||||
// covered by AIR302.
|
// covered by AIR301.
|
||||||
if ["schedule", "schedule_interval", "timetable"]
|
if ["schedule", "schedule_interval", "timetable"]
|
||||||
.iter()
|
.iter()
|
||||||
.any(|a| arguments.find_keyword(a).is_some())
|
.any(|a| arguments.find_keyword(a).is_some())
|
||||||
|
|
|
@ -82,7 +82,7 @@ impl Violation for Airflow3MovedToProvider {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// AIR303
|
/// AIR302
|
||||||
pub(crate) fn moved_to_provider_in_3(checker: &Checker, expr: &Expr) {
|
pub(crate) fn moved_to_provider_in_3(checker: &Checker, expr: &Expr) {
|
||||||
if !checker.semantic().seen_module(Modules::AIRFLOW) {
|
if !checker.semantic().seen_module(Modules::AIRFLOW) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -77,7 +77,7 @@ impl Violation for Airflow3Removal {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// AIR302
|
/// AIR301
|
||||||
pub(crate) fn airflow_3_removal_expr(checker: &Checker, expr: &Expr) {
|
pub(crate) fn airflow_3_removal_expr(checker: &Checker, expr: &Expr) {
|
||||||
if !checker.semantic().seen_module(Modules::AIRFLOW) {
|
if !checker.semantic().seen_module(Modules::AIRFLOW) {
|
||||||
return;
|
return;
|
||||||
|
@ -114,7 +114,7 @@ pub(crate) fn airflow_3_removal_expr(checker: &Checker, expr: &Expr) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// AIR302
|
/// AIR301
|
||||||
pub(crate) fn airflow_3_removal_function_def(checker: &Checker, function_def: &StmtFunctionDef) {
|
pub(crate) fn airflow_3_removal_function_def(checker: &Checker, function_def: &StmtFunctionDef) {
|
||||||
if !checker.semantic().seen_module(Modules::AIRFLOW) {
|
if !checker.semantic().seen_module(Modules::AIRFLOW) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1,43 +1,42 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/airflow/mod.rs
|
source: crates/ruff_linter/src/rules/airflow/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
AIR302_airflow_plugin.py:7:5: AIR302 `operators` is removed in Airflow 3.0; This extension should just be imported as a regular python module.
|
AIR301_airflow_plugin.py:7:5: AIR301 `operators` is removed in Airflow 3.0; This extension should just be imported as a regular python module.
|
||||||
|
|
|
|
||||||
5 | name = "test_plugin"
|
5 | name = "test_plugin"
|
||||||
6 | # --- Invalid extensions start
|
6 | # --- Invalid extensions start
|
||||||
7 | operators = [PluginOperator]
|
7 | operators = [PluginOperator]
|
||||||
| ^^^^^^^^^ AIR302
|
| ^^^^^^^^^ AIR301
|
||||||
8 | sensors = [PluginSensorOperator]
|
8 | sensors = [PluginSensorOperator]
|
||||||
9 | hooks = [PluginHook]
|
9 | hooks = [PluginHook]
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_airflow_plugin.py:8:5: AIR302 `sensors` is removed in Airflow 3.0; This extension should just be imported as a regular python module.
|
AIR301_airflow_plugin.py:8:5: AIR301 `sensors` is removed in Airflow 3.0; This extension should just be imported as a regular python module.
|
||||||
|
|
|
|
||||||
6 | # --- Invalid extensions start
|
6 | # --- Invalid extensions start
|
||||||
7 | operators = [PluginOperator]
|
7 | operators = [PluginOperator]
|
||||||
8 | sensors = [PluginSensorOperator]
|
8 | sensors = [PluginSensorOperator]
|
||||||
| ^^^^^^^ AIR302
|
| ^^^^^^^ AIR301
|
||||||
9 | hooks = [PluginHook]
|
9 | hooks = [PluginHook]
|
||||||
10 | executors = [PluginExecutor]
|
10 | executors = [PluginExecutor]
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_airflow_plugin.py:9:5: AIR302 `hooks` is removed in Airflow 3.0; This extension should just be imported as a regular python module.
|
AIR301_airflow_plugin.py:9:5: AIR301 `hooks` is removed in Airflow 3.0; This extension should just be imported as a regular python module.
|
||||||
|
|
|
|
||||||
7 | operators = [PluginOperator]
|
7 | operators = [PluginOperator]
|
||||||
8 | sensors = [PluginSensorOperator]
|
8 | sensors = [PluginSensorOperator]
|
||||||
9 | hooks = [PluginHook]
|
9 | hooks = [PluginHook]
|
||||||
| ^^^^^ AIR302
|
| ^^^^^ AIR301
|
||||||
10 | executors = [PluginExecutor]
|
10 | executors = [PluginExecutor]
|
||||||
11 | # --- Invalid extensions end
|
11 | # --- Invalid extensions end
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_airflow_plugin.py:10:5: AIR302 `executors` is removed in Airflow 3.0; This extension should just be imported as a regular python module.
|
AIR301_airflow_plugin.py:10:5: AIR301 `executors` is removed in Airflow 3.0; This extension should just be imported as a regular python module.
|
||||||
|
|
|
|
||||||
8 | sensors = [PluginSensorOperator]
|
8 | sensors = [PluginSensorOperator]
|
||||||
9 | hooks = [PluginHook]
|
9 | hooks = [PluginHook]
|
||||||
10 | executors = [PluginExecutor]
|
10 | executors = [PluginExecutor]
|
||||||
| ^^^^^^^^^ AIR302
|
| ^^^^^^^^^ AIR301
|
||||||
11 | # --- Invalid extensions end
|
11 | # --- Invalid extensions end
|
||||||
12 | macros = [plugin_macro]
|
12 | macros = [plugin_macro]
|
||||||
|
|
|
|
|
@ -1,12 +1,12 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/airflow/mod.rs
|
source: crates/ruff_linter/src/rules/airflow/mod.rs
|
||||||
---
|
---
|
||||||
AIR302_args.py:20:39: AIR302 [*] `schedule_interval` is removed in Airflow 3.0
|
AIR301_args.py:20:39: AIR301 [*] `schedule_interval` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
18 | DAG(dag_id="class_schedule", schedule="@hourly")
|
18 | DAG(dag_id="class_schedule", schedule="@hourly")
|
||||||
19 |
|
19 |
|
||||||
20 | DAG(dag_id="class_schedule_interval", schedule_interval="@hourly")
|
20 | DAG(dag_id="class_schedule_interval", schedule_interval="@hourly")
|
||||||
| ^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^ AIR301
|
||||||
21 |
|
21 |
|
||||||
22 | DAG(dag_id="class_timetable", timetable=NullTimetable())
|
22 | DAG(dag_id="class_timetable", timetable=NullTimetable())
|
||||||
|
|
|
|
||||||
|
@ -22,12 +22,12 @@ AIR302_args.py:20:39: AIR302 [*] `schedule_interval` is removed in Airflow 3.0
|
||||||
22 22 | DAG(dag_id="class_timetable", timetable=NullTimetable())
|
22 22 | DAG(dag_id="class_timetable", timetable=NullTimetable())
|
||||||
23 23 |
|
23 23 |
|
||||||
|
|
||||||
AIR302_args.py:22:31: AIR302 [*] `timetable` is removed in Airflow 3.0
|
AIR301_args.py:22:31: AIR301 [*] `timetable` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
20 | DAG(dag_id="class_schedule_interval", schedule_interval="@hourly")
|
20 | DAG(dag_id="class_schedule_interval", schedule_interval="@hourly")
|
||||||
21 |
|
21 |
|
||||||
22 | DAG(dag_id="class_timetable", timetable=NullTimetable())
|
22 | DAG(dag_id="class_timetable", timetable=NullTimetable())
|
||||||
| ^^^^^^^^^ AIR302
|
| ^^^^^^^^^ AIR301
|
||||||
|
|
|
|
||||||
= help: Use `schedule` instead
|
= help: Use `schedule` instead
|
||||||
|
|
||||||
|
@ -41,20 +41,20 @@ AIR302_args.py:22:31: AIR302 [*] `timetable` is removed in Airflow 3.0
|
||||||
24 24 |
|
24 24 |
|
||||||
25 25 | def sla_callback(*arg, **kwargs):
|
25 25 | def sla_callback(*arg, **kwargs):
|
||||||
|
|
||||||
AIR302_args.py:29:34: AIR302 `sla_miss_callback` is removed in Airflow 3.0
|
AIR301_args.py:29:34: AIR301 `sla_miss_callback` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
29 | DAG(dag_id="class_sla_callback", sla_miss_callback=sla_callback)
|
29 | DAG(dag_id="class_sla_callback", sla_miss_callback=sla_callback)
|
||||||
| ^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^ AIR301
|
||||||
30 |
|
30 |
|
||||||
31 | DAG(dag_id="class_fail_stop", fail_stop=True)
|
31 | DAG(dag_id="class_fail_stop", fail_stop=True)
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_args.py:31:31: AIR302 [*] `fail_stop` is removed in Airflow 3.0
|
AIR301_args.py:31:31: AIR301 [*] `fail_stop` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
29 | DAG(dag_id="class_sla_callback", sla_miss_callback=sla_callback)
|
29 | DAG(dag_id="class_sla_callback", sla_miss_callback=sla_callback)
|
||||||
30 |
|
30 |
|
||||||
31 | DAG(dag_id="class_fail_stop", fail_stop=True)
|
31 | DAG(dag_id="class_fail_stop", fail_stop=True)
|
||||||
| ^^^^^^^^^ AIR302
|
| ^^^^^^^^^ AIR301
|
||||||
32 |
|
32 |
|
||||||
33 | DAG(dag_id="class_default_view", default_view="dag_default_view")
|
33 | DAG(dag_id="class_default_view", default_view="dag_default_view")
|
||||||
|
|
|
|
||||||
|
@ -70,30 +70,30 @@ AIR302_args.py:31:31: AIR302 [*] `fail_stop` is removed in Airflow 3.0
|
||||||
33 33 | DAG(dag_id="class_default_view", default_view="dag_default_view")
|
33 33 | DAG(dag_id="class_default_view", default_view="dag_default_view")
|
||||||
34 34 |
|
34 34 |
|
||||||
|
|
||||||
AIR302_args.py:33:34: AIR302 `default_view` is removed in Airflow 3.0
|
AIR301_args.py:33:34: AIR301 `default_view` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
31 | DAG(dag_id="class_fail_stop", fail_stop=True)
|
31 | DAG(dag_id="class_fail_stop", fail_stop=True)
|
||||||
32 |
|
32 |
|
||||||
33 | DAG(dag_id="class_default_view", default_view="dag_default_view")
|
33 | DAG(dag_id="class_default_view", default_view="dag_default_view")
|
||||||
| ^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^ AIR301
|
||||||
34 |
|
34 |
|
||||||
35 | DAG(dag_id="class_orientation", orientation="BT")
|
35 | DAG(dag_id="class_orientation", orientation="BT")
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_args.py:35:33: AIR302 `orientation` is removed in Airflow 3.0
|
AIR301_args.py:35:33: AIR301 `orientation` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
33 | DAG(dag_id="class_default_view", default_view="dag_default_view")
|
33 | DAG(dag_id="class_default_view", default_view="dag_default_view")
|
||||||
34 |
|
34 |
|
||||||
35 | DAG(dag_id="class_orientation", orientation="BT")
|
35 | DAG(dag_id="class_orientation", orientation="BT")
|
||||||
| ^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^ AIR301
|
||||||
36 |
|
36 |
|
||||||
37 | allow_future_exec_dates_dag = DAG(dag_id="class_allow_future_exec_dates")
|
37 | allow_future_exec_dates_dag = DAG(dag_id="class_allow_future_exec_dates")
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_args.py:46:6: AIR302 [*] `schedule_interval` is removed in Airflow 3.0
|
AIR301_args.py:46:6: AIR301 [*] `schedule_interval` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
46 | @dag(schedule_interval="0 * * * *")
|
46 | @dag(schedule_interval="0 * * * *")
|
||||||
| ^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^ AIR301
|
||||||
47 | def decorator_schedule_interval():
|
47 | def decorator_schedule_interval():
|
||||||
48 | pass
|
48 | pass
|
||||||
|
|
|
|
||||||
|
@ -109,10 +109,10 @@ AIR302_args.py:46:6: AIR302 [*] `schedule_interval` is removed in Airflow 3.0
|
||||||
48 48 | pass
|
48 48 | pass
|
||||||
49 49 |
|
49 49 |
|
||||||
|
|
||||||
AIR302_args.py:51:6: AIR302 [*] `timetable` is removed in Airflow 3.0
|
AIR301_args.py:51:6: AIR301 [*] `timetable` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
51 | @dag(timetable=NullTimetable())
|
51 | @dag(timetable=NullTimetable())
|
||||||
| ^^^^^^^^^ AIR302
|
| ^^^^^^^^^ AIR301
|
||||||
52 | def decorator_timetable():
|
52 | def decorator_timetable():
|
||||||
53 | pass
|
53 | pass
|
||||||
|
|
|
|
||||||
|
@ -128,20 +128,20 @@ AIR302_args.py:51:6: AIR302 [*] `timetable` is removed in Airflow 3.0
|
||||||
53 53 | pass
|
53 53 | pass
|
||||||
54 54 |
|
54 54 |
|
||||||
|
|
||||||
AIR302_args.py:56:6: AIR302 `sla_miss_callback` is removed in Airflow 3.0
|
AIR301_args.py:56:6: AIR301 `sla_miss_callback` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
56 | @dag(sla_miss_callback=sla_callback)
|
56 | @dag(sla_miss_callback=sla_callback)
|
||||||
| ^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^ AIR301
|
||||||
57 | def decorator_sla_callback():
|
57 | def decorator_sla_callback():
|
||||||
58 | pass
|
58 | pass
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_args.py:64:39: AIR302 [*] `execution_date` is removed in Airflow 3.0
|
AIR301_args.py:64:39: AIR301 [*] `execution_date` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
62 | def decorator_deprecated_operator_args():
|
62 | def decorator_deprecated_operator_args():
|
||||||
63 | trigger_dagrun_op = trigger_dagrun.TriggerDagRunOperator(
|
63 | trigger_dagrun_op = trigger_dagrun.TriggerDagRunOperator(
|
||||||
64 | task_id="trigger_dagrun_op1", execution_date="2024-12-04"
|
64 | task_id="trigger_dagrun_op1", execution_date="2024-12-04"
|
||||||
| ^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^ AIR301
|
||||||
65 | )
|
65 | )
|
||||||
66 | trigger_dagrun_op2 = TriggerDagRunOperator(
|
66 | trigger_dagrun_op2 = TriggerDagRunOperator(
|
||||||
|
|
|
|
||||||
|
@ -157,12 +157,12 @@ AIR302_args.py:64:39: AIR302 [*] `execution_date` is removed in Airflow 3.0
|
||||||
66 66 | trigger_dagrun_op2 = TriggerDagRunOperator(
|
66 66 | trigger_dagrun_op2 = TriggerDagRunOperator(
|
||||||
67 67 | task_id="trigger_dagrun_op2", execution_date="2024-12-04"
|
67 67 | task_id="trigger_dagrun_op2", execution_date="2024-12-04"
|
||||||
|
|
||||||
AIR302_args.py:67:39: AIR302 [*] `execution_date` is removed in Airflow 3.0
|
AIR301_args.py:67:39: AIR301 [*] `execution_date` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
65 | )
|
65 | )
|
||||||
66 | trigger_dagrun_op2 = TriggerDagRunOperator(
|
66 | trigger_dagrun_op2 = TriggerDagRunOperator(
|
||||||
67 | task_id="trigger_dagrun_op2", execution_date="2024-12-04"
|
67 | task_id="trigger_dagrun_op2", execution_date="2024-12-04"
|
||||||
| ^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^ AIR301
|
||||||
68 | )
|
68 | )
|
||||||
|
|
|
|
||||||
= help: Use `logical_date` instead
|
= help: Use `logical_date` instead
|
||||||
|
@ -177,11 +177,11 @@ AIR302_args.py:67:39: AIR302 [*] `execution_date` is removed in Airflow 3.0
|
||||||
69 69 |
|
69 69 |
|
||||||
70 70 | branch_dt_op = datetime.BranchDateTimeOperator(
|
70 70 | branch_dt_op = datetime.BranchDateTimeOperator(
|
||||||
|
|
||||||
AIR302_args.py:71:33: AIR302 [*] `use_task_execution_day` is removed in Airflow 3.0
|
AIR301_args.py:71:33: AIR301 [*] `use_task_execution_day` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
70 | branch_dt_op = datetime.BranchDateTimeOperator(
|
70 | branch_dt_op = datetime.BranchDateTimeOperator(
|
||||||
71 | task_id="branch_dt_op", use_task_execution_day=True, task_concurrency=5
|
71 | task_id="branch_dt_op", use_task_execution_day=True, task_concurrency=5
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^^^^^ AIR301
|
||||||
72 | )
|
72 | )
|
||||||
73 | branch_dt_op2 = BranchDateTimeOperator(
|
73 | branch_dt_op2 = BranchDateTimeOperator(
|
||||||
|
|
|
|
||||||
|
@ -197,11 +197,11 @@ AIR302_args.py:71:33: AIR302 [*] `use_task_execution_day` is removed in Airflow
|
||||||
73 73 | branch_dt_op2 = BranchDateTimeOperator(
|
73 73 | branch_dt_op2 = BranchDateTimeOperator(
|
||||||
74 74 | task_id="branch_dt_op2",
|
74 74 | task_id="branch_dt_op2",
|
||||||
|
|
||||||
AIR302_args.py:71:62: AIR302 [*] `task_concurrency` is removed in Airflow 3.0
|
AIR301_args.py:71:62: AIR301 [*] `task_concurrency` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
70 | branch_dt_op = datetime.BranchDateTimeOperator(
|
70 | branch_dt_op = datetime.BranchDateTimeOperator(
|
||||||
71 | task_id="branch_dt_op", use_task_execution_day=True, task_concurrency=5
|
71 | task_id="branch_dt_op", use_task_execution_day=True, task_concurrency=5
|
||||||
| ^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^ AIR301
|
||||||
72 | )
|
72 | )
|
||||||
73 | branch_dt_op2 = BranchDateTimeOperator(
|
73 | branch_dt_op2 = BranchDateTimeOperator(
|
||||||
|
|
|
|
||||||
|
@ -217,12 +217,12 @@ AIR302_args.py:71:62: AIR302 [*] `task_concurrency` is removed in Airflow 3.0
|
||||||
73 73 | branch_dt_op2 = BranchDateTimeOperator(
|
73 73 | branch_dt_op2 = BranchDateTimeOperator(
|
||||||
74 74 | task_id="branch_dt_op2",
|
74 74 | task_id="branch_dt_op2",
|
||||||
|
|
||||||
AIR302_args.py:75:9: AIR302 [*] `use_task_execution_day` is removed in Airflow 3.0
|
AIR301_args.py:75:9: AIR301 [*] `use_task_execution_day` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
73 | branch_dt_op2 = BranchDateTimeOperator(
|
73 | branch_dt_op2 = BranchDateTimeOperator(
|
||||||
74 | task_id="branch_dt_op2",
|
74 | task_id="branch_dt_op2",
|
||||||
75 | use_task_execution_day=True,
|
75 | use_task_execution_day=True,
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^^^^^ AIR301
|
||||||
76 | sla=timedelta(seconds=10),
|
76 | sla=timedelta(seconds=10),
|
||||||
77 | )
|
77 | )
|
||||||
|
|
|
|
||||||
|
@ -238,57 +238,57 @@ AIR302_args.py:75:9: AIR302 [*] `use_task_execution_day` is removed in Airflow 3
|
||||||
77 77 | )
|
77 77 | )
|
||||||
78 78 |
|
78 78 |
|
||||||
|
|
||||||
AIR302_args.py:76:9: AIR302 `sla` is removed in Airflow 3.0
|
AIR301_args.py:76:9: AIR301 `sla` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
74 | task_id="branch_dt_op2",
|
74 | task_id="branch_dt_op2",
|
||||||
75 | use_task_execution_day=True,
|
75 | use_task_execution_day=True,
|
||||||
76 | sla=timedelta(seconds=10),
|
76 | sla=timedelta(seconds=10),
|
||||||
| ^^^ AIR302
|
| ^^^ AIR301
|
||||||
77 | )
|
77 | )
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_args.py:98:15: AIR302 `filename_template` is removed in Airflow 3.0
|
AIR301_args.py:98:15: AIR301 `filename_template` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
97 | # deprecated filename_template argument in FileTaskHandler
|
97 | # deprecated filename_template argument in FileTaskHandler
|
||||||
98 | S3TaskHandler(filename_template="/tmp/test")
|
98 | S3TaskHandler(filename_template="/tmp/test")
|
||||||
| ^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^ AIR301
|
||||||
99 | HdfsTaskHandler(filename_template="/tmp/test")
|
99 | HdfsTaskHandler(filename_template="/tmp/test")
|
||||||
100 | ElasticsearchTaskHandler(filename_template="/tmp/test")
|
100 | ElasticsearchTaskHandler(filename_template="/tmp/test")
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_args.py:99:17: AIR302 `filename_template` is removed in Airflow 3.0
|
AIR301_args.py:99:17: AIR301 `filename_template` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
97 | # deprecated filename_template argument in FileTaskHandler
|
97 | # deprecated filename_template argument in FileTaskHandler
|
||||||
98 | S3TaskHandler(filename_template="/tmp/test")
|
98 | S3TaskHandler(filename_template="/tmp/test")
|
||||||
99 | HdfsTaskHandler(filename_template="/tmp/test")
|
99 | HdfsTaskHandler(filename_template="/tmp/test")
|
||||||
| ^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^ AIR301
|
||||||
100 | ElasticsearchTaskHandler(filename_template="/tmp/test")
|
100 | ElasticsearchTaskHandler(filename_template="/tmp/test")
|
||||||
101 | GCSTaskHandler(filename_template="/tmp/test")
|
101 | GCSTaskHandler(filename_template="/tmp/test")
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_args.py:100:26: AIR302 `filename_template` is removed in Airflow 3.0
|
AIR301_args.py:100:26: AIR301 `filename_template` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
98 | S3TaskHandler(filename_template="/tmp/test")
|
98 | S3TaskHandler(filename_template="/tmp/test")
|
||||||
99 | HdfsTaskHandler(filename_template="/tmp/test")
|
99 | HdfsTaskHandler(filename_template="/tmp/test")
|
||||||
100 | ElasticsearchTaskHandler(filename_template="/tmp/test")
|
100 | ElasticsearchTaskHandler(filename_template="/tmp/test")
|
||||||
| ^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^ AIR301
|
||||||
101 | GCSTaskHandler(filename_template="/tmp/test")
|
101 | GCSTaskHandler(filename_template="/tmp/test")
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_args.py:101:16: AIR302 `filename_template` is removed in Airflow 3.0
|
AIR301_args.py:101:16: AIR301 `filename_template` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
99 | HdfsTaskHandler(filename_template="/tmp/test")
|
99 | HdfsTaskHandler(filename_template="/tmp/test")
|
||||||
100 | ElasticsearchTaskHandler(filename_template="/tmp/test")
|
100 | ElasticsearchTaskHandler(filename_template="/tmp/test")
|
||||||
101 | GCSTaskHandler(filename_template="/tmp/test")
|
101 | GCSTaskHandler(filename_template="/tmp/test")
|
||||||
| ^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^ AIR301
|
||||||
102 |
|
102 |
|
||||||
103 | FabAuthManager(None)
|
103 | FabAuthManager(None)
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_args.py:103:15: AIR302 `appbuilder` is removed in Airflow 3.0; The constructor takes no parameter now
|
AIR301_args.py:103:15: AIR301 `appbuilder` is removed in Airflow 3.0; The constructor takes no parameter now
|
||||||
|
|
|
|
||||||
101 | GCSTaskHandler(filename_template="/tmp/test")
|
101 | GCSTaskHandler(filename_template="/tmp/test")
|
||||||
102 |
|
102 |
|
||||||
103 | FabAuthManager(None)
|
103 | FabAuthManager(None)
|
||||||
| ^^^^^^ AIR302
|
| ^^^^^^ AIR301
|
||||||
|
|
|
|
|
@ -1,11 +1,11 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/airflow/mod.rs
|
source: crates/ruff_linter/src/rules/airflow/mod.rs
|
||||||
---
|
---
|
||||||
AIR302_class_attribute.py:24:21: AIR302 [*] `airflow.Dataset` is removed in Airflow 3.0
|
AIR301_class_attribute.py:24:21: AIR301 [*] `airflow.Dataset` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
23 | # airflow.Dataset
|
23 | # airflow.Dataset
|
||||||
24 | dataset_from_root = DatasetFromRoot()
|
24 | dataset_from_root = DatasetFromRoot()
|
||||||
| ^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^ AIR301
|
||||||
25 | dataset_from_root.iter_datasets()
|
25 | dataset_from_root.iter_datasets()
|
||||||
26 | dataset_from_root.iter_dataset_aliases()
|
26 | dataset_from_root.iter_dataset_aliases()
|
||||||
|
|
|
|
||||||
|
@ -24,12 +24,12 @@ AIR302_class_attribute.py:24:21: AIR302 [*] `airflow.Dataset` is removed in Airf
|
||||||
26 27 | dataset_from_root.iter_dataset_aliases()
|
26 27 | dataset_from_root.iter_dataset_aliases()
|
||||||
27 28 |
|
27 28 |
|
||||||
|
|
||||||
AIR302_class_attribute.py:25:19: AIR302 [*] `iter_datasets` is removed in Airflow 3.0
|
AIR301_class_attribute.py:25:19: AIR301 [*] `iter_datasets` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
23 | # airflow.Dataset
|
23 | # airflow.Dataset
|
||||||
24 | dataset_from_root = DatasetFromRoot()
|
24 | dataset_from_root = DatasetFromRoot()
|
||||||
25 | dataset_from_root.iter_datasets()
|
25 | dataset_from_root.iter_datasets()
|
||||||
| ^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^ AIR301
|
||||||
26 | dataset_from_root.iter_dataset_aliases()
|
26 | dataset_from_root.iter_dataset_aliases()
|
||||||
|
|
|
|
||||||
= help: Use `iter_assets` instead
|
= help: Use `iter_assets` instead
|
||||||
|
@ -44,12 +44,12 @@ AIR302_class_attribute.py:25:19: AIR302 [*] `iter_datasets` is removed in Airflo
|
||||||
27 27 |
|
27 27 |
|
||||||
28 28 | # airflow.datasets
|
28 28 | # airflow.datasets
|
||||||
|
|
||||||
AIR302_class_attribute.py:26:19: AIR302 [*] `iter_dataset_aliases` is removed in Airflow 3.0
|
AIR301_class_attribute.py:26:19: AIR301 [*] `iter_dataset_aliases` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
24 | dataset_from_root = DatasetFromRoot()
|
24 | dataset_from_root = DatasetFromRoot()
|
||||||
25 | dataset_from_root.iter_datasets()
|
25 | dataset_from_root.iter_datasets()
|
||||||
26 | dataset_from_root.iter_dataset_aliases()
|
26 | dataset_from_root.iter_dataset_aliases()
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^^^ AIR301
|
||||||
27 |
|
27 |
|
||||||
28 | # airflow.datasets
|
28 | # airflow.datasets
|
||||||
|
|
|
|
||||||
|
@ -65,11 +65,11 @@ AIR302_class_attribute.py:26:19: AIR302 [*] `iter_dataset_aliases` is removed in
|
||||||
28 28 | # airflow.datasets
|
28 28 | # airflow.datasets
|
||||||
29 29 | dataset_to_test_method_call = Dataset()
|
29 29 | dataset_to_test_method_call = Dataset()
|
||||||
|
|
||||||
AIR302_class_attribute.py:29:31: AIR302 [*] `airflow.datasets.Dataset` is removed in Airflow 3.0
|
AIR301_class_attribute.py:29:31: AIR301 [*] `airflow.datasets.Dataset` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
28 | # airflow.datasets
|
28 | # airflow.datasets
|
||||||
29 | dataset_to_test_method_call = Dataset()
|
29 | dataset_to_test_method_call = Dataset()
|
||||||
| ^^^^^^^ AIR302
|
| ^^^^^^^ AIR301
|
||||||
30 | dataset_to_test_method_call.iter_datasets()
|
30 | dataset_to_test_method_call.iter_datasets()
|
||||||
31 | dataset_to_test_method_call.iter_dataset_aliases()
|
31 | dataset_to_test_method_call.iter_dataset_aliases()
|
||||||
|
|
|
|
||||||
|
@ -93,12 +93,12 @@ AIR302_class_attribute.py:29:31: AIR302 [*] `airflow.datasets.Dataset` is remove
|
||||||
31 32 | dataset_to_test_method_call.iter_dataset_aliases()
|
31 32 | dataset_to_test_method_call.iter_dataset_aliases()
|
||||||
32 33 |
|
32 33 |
|
||||||
|
|
||||||
AIR302_class_attribute.py:30:29: AIR302 [*] `iter_datasets` is removed in Airflow 3.0
|
AIR301_class_attribute.py:30:29: AIR301 [*] `iter_datasets` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
28 | # airflow.datasets
|
28 | # airflow.datasets
|
||||||
29 | dataset_to_test_method_call = Dataset()
|
29 | dataset_to_test_method_call = Dataset()
|
||||||
30 | dataset_to_test_method_call.iter_datasets()
|
30 | dataset_to_test_method_call.iter_datasets()
|
||||||
| ^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^ AIR301
|
||||||
31 | dataset_to_test_method_call.iter_dataset_aliases()
|
31 | dataset_to_test_method_call.iter_dataset_aliases()
|
||||||
|
|
|
|
||||||
= help: Use `iter_assets` instead
|
= help: Use `iter_assets` instead
|
||||||
|
@ -113,12 +113,12 @@ AIR302_class_attribute.py:30:29: AIR302 [*] `iter_datasets` is removed in Airflo
|
||||||
32 32 |
|
32 32 |
|
||||||
33 33 | alias_to_test_method_call = DatasetAlias()
|
33 33 | alias_to_test_method_call = DatasetAlias()
|
||||||
|
|
||||||
AIR302_class_attribute.py:31:29: AIR302 [*] `iter_dataset_aliases` is removed in Airflow 3.0
|
AIR301_class_attribute.py:31:29: AIR301 [*] `iter_dataset_aliases` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
29 | dataset_to_test_method_call = Dataset()
|
29 | dataset_to_test_method_call = Dataset()
|
||||||
30 | dataset_to_test_method_call.iter_datasets()
|
30 | dataset_to_test_method_call.iter_datasets()
|
||||||
31 | dataset_to_test_method_call.iter_dataset_aliases()
|
31 | dataset_to_test_method_call.iter_dataset_aliases()
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^^^ AIR301
|
||||||
32 |
|
32 |
|
||||||
33 | alias_to_test_method_call = DatasetAlias()
|
33 | alias_to_test_method_call = DatasetAlias()
|
||||||
|
|
|
|
||||||
|
@ -134,22 +134,22 @@ AIR302_class_attribute.py:31:29: AIR302 [*] `iter_dataset_aliases` is removed in
|
||||||
33 33 | alias_to_test_method_call = DatasetAlias()
|
33 33 | alias_to_test_method_call = DatasetAlias()
|
||||||
34 34 | alias_to_test_method_call.iter_datasets()
|
34 34 | alias_to_test_method_call.iter_datasets()
|
||||||
|
|
||||||
AIR302_class_attribute.py:33:29: AIR302 `airflow.datasets.DatasetAlias` is removed in Airflow 3.0
|
AIR301_class_attribute.py:33:29: AIR301 `airflow.datasets.DatasetAlias` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
31 | dataset_to_test_method_call.iter_dataset_aliases()
|
31 | dataset_to_test_method_call.iter_dataset_aliases()
|
||||||
32 |
|
32 |
|
||||||
33 | alias_to_test_method_call = DatasetAlias()
|
33 | alias_to_test_method_call = DatasetAlias()
|
||||||
| ^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^ AIR301
|
||||||
34 | alias_to_test_method_call.iter_datasets()
|
34 | alias_to_test_method_call.iter_datasets()
|
||||||
35 | alias_to_test_method_call.iter_dataset_aliases()
|
35 | alias_to_test_method_call.iter_dataset_aliases()
|
||||||
|
|
|
|
||||||
= help: Use `airflow.sdk.AssetAlias` instead
|
= help: Use `airflow.sdk.AssetAlias` instead
|
||||||
|
|
||||||
AIR302_class_attribute.py:34:27: AIR302 [*] `iter_datasets` is removed in Airflow 3.0
|
AIR301_class_attribute.py:34:27: AIR301 [*] `iter_datasets` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
33 | alias_to_test_method_call = DatasetAlias()
|
33 | alias_to_test_method_call = DatasetAlias()
|
||||||
34 | alias_to_test_method_call.iter_datasets()
|
34 | alias_to_test_method_call.iter_datasets()
|
||||||
| ^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^ AIR301
|
||||||
35 | alias_to_test_method_call.iter_dataset_aliases()
|
35 | alias_to_test_method_call.iter_dataset_aliases()
|
||||||
|
|
|
|
||||||
= help: Use `iter_assets` instead
|
= help: Use `iter_assets` instead
|
||||||
|
@ -164,12 +164,12 @@ AIR302_class_attribute.py:34:27: AIR302 [*] `iter_datasets` is removed in Airflo
|
||||||
36 36 |
|
36 36 |
|
||||||
37 37 | any_to_test_method_call = DatasetAny()
|
37 37 | any_to_test_method_call = DatasetAny()
|
||||||
|
|
||||||
AIR302_class_attribute.py:35:27: AIR302 [*] `iter_dataset_aliases` is removed in Airflow 3.0
|
AIR301_class_attribute.py:35:27: AIR301 [*] `iter_dataset_aliases` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
33 | alias_to_test_method_call = DatasetAlias()
|
33 | alias_to_test_method_call = DatasetAlias()
|
||||||
34 | alias_to_test_method_call.iter_datasets()
|
34 | alias_to_test_method_call.iter_datasets()
|
||||||
35 | alias_to_test_method_call.iter_dataset_aliases()
|
35 | alias_to_test_method_call.iter_dataset_aliases()
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^^^ AIR301
|
||||||
36 |
|
36 |
|
||||||
37 | any_to_test_method_call = DatasetAny()
|
37 | any_to_test_method_call = DatasetAny()
|
||||||
|
|
|
|
||||||
|
@ -185,22 +185,22 @@ AIR302_class_attribute.py:35:27: AIR302 [*] `iter_dataset_aliases` is removed in
|
||||||
37 37 | any_to_test_method_call = DatasetAny()
|
37 37 | any_to_test_method_call = DatasetAny()
|
||||||
38 38 | any_to_test_method_call.iter_datasets()
|
38 38 | any_to_test_method_call.iter_datasets()
|
||||||
|
|
||||||
AIR302_class_attribute.py:37:27: AIR302 `airflow.datasets.DatasetAny` is removed in Airflow 3.0
|
AIR301_class_attribute.py:37:27: AIR301 `airflow.datasets.DatasetAny` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
35 | alias_to_test_method_call.iter_dataset_aliases()
|
35 | alias_to_test_method_call.iter_dataset_aliases()
|
||||||
36 |
|
36 |
|
||||||
37 | any_to_test_method_call = DatasetAny()
|
37 | any_to_test_method_call = DatasetAny()
|
||||||
| ^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^ AIR301
|
||||||
38 | any_to_test_method_call.iter_datasets()
|
38 | any_to_test_method_call.iter_datasets()
|
||||||
39 | any_to_test_method_call.iter_dataset_aliases()
|
39 | any_to_test_method_call.iter_dataset_aliases()
|
||||||
|
|
|
|
||||||
= help: Use `airflow.sdk.AssetAny` instead
|
= help: Use `airflow.sdk.AssetAny` instead
|
||||||
|
|
||||||
AIR302_class_attribute.py:38:25: AIR302 [*] `iter_datasets` is removed in Airflow 3.0
|
AIR301_class_attribute.py:38:25: AIR301 [*] `iter_datasets` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
37 | any_to_test_method_call = DatasetAny()
|
37 | any_to_test_method_call = DatasetAny()
|
||||||
38 | any_to_test_method_call.iter_datasets()
|
38 | any_to_test_method_call.iter_datasets()
|
||||||
| ^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^ AIR301
|
||||||
39 | any_to_test_method_call.iter_dataset_aliases()
|
39 | any_to_test_method_call.iter_dataset_aliases()
|
||||||
|
|
|
|
||||||
= help: Use `iter_assets` instead
|
= help: Use `iter_assets` instead
|
||||||
|
@ -215,12 +215,12 @@ AIR302_class_attribute.py:38:25: AIR302 [*] `iter_datasets` is removed in Airflo
|
||||||
40 40 |
|
40 40 |
|
||||||
41 41 | # airflow.datasets.manager
|
41 41 | # airflow.datasets.manager
|
||||||
|
|
||||||
AIR302_class_attribute.py:39:25: AIR302 [*] `iter_dataset_aliases` is removed in Airflow 3.0
|
AIR301_class_attribute.py:39:25: AIR301 [*] `iter_dataset_aliases` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
37 | any_to_test_method_call = DatasetAny()
|
37 | any_to_test_method_call = DatasetAny()
|
||||||
38 | any_to_test_method_call.iter_datasets()
|
38 | any_to_test_method_call.iter_datasets()
|
||||||
39 | any_to_test_method_call.iter_dataset_aliases()
|
39 | any_to_test_method_call.iter_dataset_aliases()
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^^^ AIR301
|
||||||
40 |
|
40 |
|
||||||
41 | # airflow.datasets.manager
|
41 | # airflow.datasets.manager
|
||||||
|
|
|
|
||||||
|
@ -236,22 +236,22 @@ AIR302_class_attribute.py:39:25: AIR302 [*] `iter_dataset_aliases` is removed in
|
||||||
41 41 | # airflow.datasets.manager
|
41 41 | # airflow.datasets.manager
|
||||||
42 42 | dm = DatasetManager()
|
42 42 | dm = DatasetManager()
|
||||||
|
|
||||||
AIR302_class_attribute.py:42:6: AIR302 `airflow.datasets.manager.DatasetManager` is removed in Airflow 3.0
|
AIR301_class_attribute.py:42:6: AIR301 `airflow.datasets.manager.DatasetManager` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
41 | # airflow.datasets.manager
|
41 | # airflow.datasets.manager
|
||||||
42 | dm = DatasetManager()
|
42 | dm = DatasetManager()
|
||||||
| ^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^ AIR301
|
||||||
43 | dm.register_dataset_change()
|
43 | dm.register_dataset_change()
|
||||||
44 | dm.create_datasets()
|
44 | dm.create_datasets()
|
||||||
|
|
|
|
||||||
= help: Use `airflow.assets.AssetManager` instead
|
= help: Use `airflow.assets.AssetManager` instead
|
||||||
|
|
||||||
AIR302_class_attribute.py:43:4: AIR302 [*] `register_dataset_change` is removed in Airflow 3.0
|
AIR301_class_attribute.py:43:4: AIR301 [*] `register_dataset_change` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
41 | # airflow.datasets.manager
|
41 | # airflow.datasets.manager
|
||||||
42 | dm = DatasetManager()
|
42 | dm = DatasetManager()
|
||||||
43 | dm.register_dataset_change()
|
43 | dm.register_dataset_change()
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^^^^^^ AIR301
|
||||||
44 | dm.create_datasets()
|
44 | dm.create_datasets()
|
||||||
45 | dm.notify_dataset_created()
|
45 | dm.notify_dataset_created()
|
||||||
|
|
|
|
||||||
|
@ -267,12 +267,12 @@ AIR302_class_attribute.py:43:4: AIR302 [*] `register_dataset_change` is removed
|
||||||
45 45 | dm.notify_dataset_created()
|
45 45 | dm.notify_dataset_created()
|
||||||
46 46 | dm.notify_dataset_changed()
|
46 46 | dm.notify_dataset_changed()
|
||||||
|
|
||||||
AIR302_class_attribute.py:44:4: AIR302 [*] `create_datasets` is removed in Airflow 3.0
|
AIR301_class_attribute.py:44:4: AIR301 [*] `create_datasets` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
42 | dm = DatasetManager()
|
42 | dm = DatasetManager()
|
||||||
43 | dm.register_dataset_change()
|
43 | dm.register_dataset_change()
|
||||||
44 | dm.create_datasets()
|
44 | dm.create_datasets()
|
||||||
| ^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^ AIR301
|
||||||
45 | dm.notify_dataset_created()
|
45 | dm.notify_dataset_created()
|
||||||
46 | dm.notify_dataset_changed()
|
46 | dm.notify_dataset_changed()
|
||||||
|
|
|
|
||||||
|
@ -288,12 +288,12 @@ AIR302_class_attribute.py:44:4: AIR302 [*] `create_datasets` is removed in Airfl
|
||||||
46 46 | dm.notify_dataset_changed()
|
46 46 | dm.notify_dataset_changed()
|
||||||
47 47 | dm.notify_dataset_alias_created()
|
47 47 | dm.notify_dataset_alias_created()
|
||||||
|
|
||||||
AIR302_class_attribute.py:45:4: AIR302 [*] `notify_dataset_created` is removed in Airflow 3.0
|
AIR301_class_attribute.py:45:4: AIR301 [*] `notify_dataset_created` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
43 | dm.register_dataset_change()
|
43 | dm.register_dataset_change()
|
||||||
44 | dm.create_datasets()
|
44 | dm.create_datasets()
|
||||||
45 | dm.notify_dataset_created()
|
45 | dm.notify_dataset_created()
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^^^^^ AIR301
|
||||||
46 | dm.notify_dataset_changed()
|
46 | dm.notify_dataset_changed()
|
||||||
47 | dm.notify_dataset_alias_created()
|
47 | dm.notify_dataset_alias_created()
|
||||||
|
|
|
|
||||||
|
@ -309,12 +309,12 @@ AIR302_class_attribute.py:45:4: AIR302 [*] `notify_dataset_created` is removed i
|
||||||
47 47 | dm.notify_dataset_alias_created()
|
47 47 | dm.notify_dataset_alias_created()
|
||||||
48 48 |
|
48 48 |
|
||||||
|
|
||||||
AIR302_class_attribute.py:46:4: AIR302 [*] `notify_dataset_changed` is removed in Airflow 3.0
|
AIR301_class_attribute.py:46:4: AIR301 [*] `notify_dataset_changed` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
44 | dm.create_datasets()
|
44 | dm.create_datasets()
|
||||||
45 | dm.notify_dataset_created()
|
45 | dm.notify_dataset_created()
|
||||||
46 | dm.notify_dataset_changed()
|
46 | dm.notify_dataset_changed()
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^^^^^ AIR301
|
||||||
47 | dm.notify_dataset_alias_created()
|
47 | dm.notify_dataset_alias_created()
|
||||||
|
|
|
|
||||||
= help: Use `notify_asset_changed` instead
|
= help: Use `notify_asset_changed` instead
|
||||||
|
@ -329,12 +329,12 @@ AIR302_class_attribute.py:46:4: AIR302 [*] `notify_dataset_changed` is removed i
|
||||||
48 48 |
|
48 48 |
|
||||||
49 49 | # airflow.lineage.hook
|
49 49 | # airflow.lineage.hook
|
||||||
|
|
||||||
AIR302_class_attribute.py:47:4: AIR302 [*] `notify_dataset_alias_created` is removed in Airflow 3.0
|
AIR301_class_attribute.py:47:4: AIR301 [*] `notify_dataset_alias_created` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
45 | dm.notify_dataset_created()
|
45 | dm.notify_dataset_created()
|
||||||
46 | dm.notify_dataset_changed()
|
46 | dm.notify_dataset_changed()
|
||||||
47 | dm.notify_dataset_alias_created()
|
47 | dm.notify_dataset_alias_created()
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR301
|
||||||
48 |
|
48 |
|
||||||
49 | # airflow.lineage.hook
|
49 | # airflow.lineage.hook
|
||||||
|
|
|
|
||||||
|
@ -350,21 +350,21 @@ AIR302_class_attribute.py:47:4: AIR302 [*] `notify_dataset_alias_created` is rem
|
||||||
49 49 | # airflow.lineage.hook
|
49 49 | # airflow.lineage.hook
|
||||||
50 50 | dl_info = DatasetLineageInfo()
|
50 50 | dl_info = DatasetLineageInfo()
|
||||||
|
|
||||||
AIR302_class_attribute.py:50:11: AIR302 `airflow.lineage.hook.DatasetLineageInfo` is removed in Airflow 3.0
|
AIR301_class_attribute.py:50:11: AIR301 `airflow.lineage.hook.DatasetLineageInfo` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
49 | # airflow.lineage.hook
|
49 | # airflow.lineage.hook
|
||||||
50 | dl_info = DatasetLineageInfo()
|
50 | dl_info = DatasetLineageInfo()
|
||||||
| ^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^ AIR301
|
||||||
51 | dl_info.dataset
|
51 | dl_info.dataset
|
||||||
|
|
|
|
||||||
= help: Use `airflow.lineage.hook.AssetLineageInfo` instead
|
= help: Use `airflow.lineage.hook.AssetLineageInfo` instead
|
||||||
|
|
||||||
AIR302_class_attribute.py:51:9: AIR302 [*] `dataset` is removed in Airflow 3.0
|
AIR301_class_attribute.py:51:9: AIR301 [*] `dataset` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
49 | # airflow.lineage.hook
|
49 | # airflow.lineage.hook
|
||||||
50 | dl_info = DatasetLineageInfo()
|
50 | dl_info = DatasetLineageInfo()
|
||||||
51 | dl_info.dataset
|
51 | dl_info.dataset
|
||||||
| ^^^^^^^ AIR302
|
| ^^^^^^^ AIR301
|
||||||
52 |
|
52 |
|
||||||
53 | hlc = HookLineageCollector()
|
53 | hlc = HookLineageCollector()
|
||||||
|
|
|
|
||||||
|
@ -380,11 +380,11 @@ AIR302_class_attribute.py:51:9: AIR302 [*] `dataset` is removed in Airflow 3.0
|
||||||
53 53 | hlc = HookLineageCollector()
|
53 53 | hlc = HookLineageCollector()
|
||||||
54 54 | hlc.create_dataset()
|
54 54 | hlc.create_dataset()
|
||||||
|
|
||||||
AIR302_class_attribute.py:54:5: AIR302 [*] `create_dataset` is removed in Airflow 3.0
|
AIR301_class_attribute.py:54:5: AIR301 [*] `create_dataset` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
53 | hlc = HookLineageCollector()
|
53 | hlc = HookLineageCollector()
|
||||||
54 | hlc.create_dataset()
|
54 | hlc.create_dataset()
|
||||||
| ^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^ AIR301
|
||||||
55 | hlc.add_input_dataset()
|
55 | hlc.add_input_dataset()
|
||||||
56 | hlc.add_output_dataset()
|
56 | hlc.add_output_dataset()
|
||||||
|
|
|
|
||||||
|
@ -400,12 +400,12 @@ AIR302_class_attribute.py:54:5: AIR302 [*] `create_dataset` is removed in Airflo
|
||||||
56 56 | hlc.add_output_dataset()
|
56 56 | hlc.add_output_dataset()
|
||||||
57 57 | hlc.collected_datasets()
|
57 57 | hlc.collected_datasets()
|
||||||
|
|
||||||
AIR302_class_attribute.py:55:5: AIR302 [*] `add_input_dataset` is removed in Airflow 3.0
|
AIR301_class_attribute.py:55:5: AIR301 [*] `add_input_dataset` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
53 | hlc = HookLineageCollector()
|
53 | hlc = HookLineageCollector()
|
||||||
54 | hlc.create_dataset()
|
54 | hlc.create_dataset()
|
||||||
55 | hlc.add_input_dataset()
|
55 | hlc.add_input_dataset()
|
||||||
| ^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^ AIR301
|
||||||
56 | hlc.add_output_dataset()
|
56 | hlc.add_output_dataset()
|
||||||
57 | hlc.collected_datasets()
|
57 | hlc.collected_datasets()
|
||||||
|
|
|
|
||||||
|
@ -421,12 +421,12 @@ AIR302_class_attribute.py:55:5: AIR302 [*] `add_input_dataset` is removed in Air
|
||||||
57 57 | hlc.collected_datasets()
|
57 57 | hlc.collected_datasets()
|
||||||
58 58 |
|
58 58 |
|
||||||
|
|
||||||
AIR302_class_attribute.py:56:5: AIR302 [*] `add_output_dataset` is removed in Airflow 3.0
|
AIR301_class_attribute.py:56:5: AIR301 [*] `add_output_dataset` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
54 | hlc.create_dataset()
|
54 | hlc.create_dataset()
|
||||||
55 | hlc.add_input_dataset()
|
55 | hlc.add_input_dataset()
|
||||||
56 | hlc.add_output_dataset()
|
56 | hlc.add_output_dataset()
|
||||||
| ^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^ AIR301
|
||||||
57 | hlc.collected_datasets()
|
57 | hlc.collected_datasets()
|
||||||
|
|
|
|
||||||
= help: Use `add_output_asset` instead
|
= help: Use `add_output_asset` instead
|
||||||
|
@ -441,12 +441,12 @@ AIR302_class_attribute.py:56:5: AIR302 [*] `add_output_dataset` is removed in Ai
|
||||||
58 58 |
|
58 58 |
|
||||||
59 59 | # airflow.providers.amazon.auth_manager.aws_auth_manager
|
59 59 | # airflow.providers.amazon.auth_manager.aws_auth_manager
|
||||||
|
|
||||||
AIR302_class_attribute.py:57:5: AIR302 [*] `collected_datasets` is removed in Airflow 3.0
|
AIR301_class_attribute.py:57:5: AIR301 [*] `collected_datasets` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
55 | hlc.add_input_dataset()
|
55 | hlc.add_input_dataset()
|
||||||
56 | hlc.add_output_dataset()
|
56 | hlc.add_output_dataset()
|
||||||
57 | hlc.collected_datasets()
|
57 | hlc.collected_datasets()
|
||||||
| ^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^ AIR301
|
||||||
58 |
|
58 |
|
||||||
59 | # airflow.providers.amazon.auth_manager.aws_auth_manager
|
59 | # airflow.providers.amazon.auth_manager.aws_auth_manager
|
||||||
|
|
|
|
||||||
|
@ -462,12 +462,12 @@ AIR302_class_attribute.py:57:5: AIR302 [*] `collected_datasets` is removed in Ai
|
||||||
59 59 | # airflow.providers.amazon.auth_manager.aws_auth_manager
|
59 59 | # airflow.providers.amazon.auth_manager.aws_auth_manager
|
||||||
60 60 | aam = AwsAuthManager()
|
60 60 | aam = AwsAuthManager()
|
||||||
|
|
||||||
AIR302_class_attribute.py:61:5: AIR302 [*] `is_authorized_dataset` is removed in Airflow 3.0
|
AIR301_class_attribute.py:61:5: AIR301 [*] `is_authorized_dataset` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
59 | # airflow.providers.amazon.auth_manager.aws_auth_manager
|
59 | # airflow.providers.amazon.auth_manager.aws_auth_manager
|
||||||
60 | aam = AwsAuthManager()
|
60 | aam = AwsAuthManager()
|
||||||
61 | aam.is_authorized_dataset()
|
61 | aam.is_authorized_dataset()
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^^^^ AIR301
|
||||||
62 |
|
62 |
|
||||||
63 | # airflow.providers.apache.beam.hooks
|
63 | # airflow.providers.apache.beam.hooks
|
||||||
|
|
|
|
||||||
|
@ -483,12 +483,12 @@ AIR302_class_attribute.py:61:5: AIR302 [*] `is_authorized_dataset` is removed in
|
||||||
63 63 | # airflow.providers.apache.beam.hooks
|
63 63 | # airflow.providers.apache.beam.hooks
|
||||||
64 64 | # check get_conn_uri is caught if the class inherits from an airflow hook
|
64 64 | # check get_conn_uri is caught if the class inherits from an airflow hook
|
||||||
|
|
||||||
AIR302_class_attribute.py:73:13: AIR302 [*] `get_conn_uri` is removed in Airflow 3.0
|
AIR301_class_attribute.py:73:13: AIR301 [*] `get_conn_uri` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
71 | # airflow.providers.google.cloud.secrets.secret_manager
|
71 | # airflow.providers.google.cloud.secrets.secret_manager
|
||||||
72 | csm_backend = CloudSecretManagerBackend()
|
72 | csm_backend = CloudSecretManagerBackend()
|
||||||
73 | csm_backend.get_conn_uri()
|
73 | csm_backend.get_conn_uri()
|
||||||
| ^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^ AIR301
|
||||||
74 | csm_backend.get_connections()
|
74 | csm_backend.get_connections()
|
||||||
|
|
|
|
||||||
= help: Use `get_conn_value` instead
|
= help: Use `get_conn_value` instead
|
||||||
|
@ -503,12 +503,12 @@ AIR302_class_attribute.py:73:13: AIR302 [*] `get_conn_uri` is removed in Airflow
|
||||||
75 75 |
|
75 75 |
|
||||||
76 76 | # airflow.providers.hashicorp.secrets.vault
|
76 76 | # airflow.providers.hashicorp.secrets.vault
|
||||||
|
|
||||||
AIR302_class_attribute.py:74:13: AIR302 [*] `get_connections` is removed in Airflow 3.0
|
AIR301_class_attribute.py:74:13: AIR301 [*] `get_connections` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
72 | csm_backend = CloudSecretManagerBackend()
|
72 | csm_backend = CloudSecretManagerBackend()
|
||||||
73 | csm_backend.get_conn_uri()
|
73 | csm_backend.get_conn_uri()
|
||||||
74 | csm_backend.get_connections()
|
74 | csm_backend.get_connections()
|
||||||
| ^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^ AIR301
|
||||||
75 |
|
75 |
|
||||||
76 | # airflow.providers.hashicorp.secrets.vault
|
76 | # airflow.providers.hashicorp.secrets.vault
|
||||||
|
|
|
|
||||||
|
@ -524,12 +524,12 @@ AIR302_class_attribute.py:74:13: AIR302 [*] `get_connections` is removed in Airf
|
||||||
76 76 | # airflow.providers.hashicorp.secrets.vault
|
76 76 | # airflow.providers.hashicorp.secrets.vault
|
||||||
77 77 | vault_backend = VaultBackend()
|
77 77 | vault_backend = VaultBackend()
|
||||||
|
|
||||||
AIR302_class_attribute.py:78:15: AIR302 [*] `get_conn_uri` is removed in Airflow 3.0
|
AIR301_class_attribute.py:78:15: AIR301 [*] `get_conn_uri` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
76 | # airflow.providers.hashicorp.secrets.vault
|
76 | # airflow.providers.hashicorp.secrets.vault
|
||||||
77 | vault_backend = VaultBackend()
|
77 | vault_backend = VaultBackend()
|
||||||
78 | vault_backend.get_conn_uri()
|
78 | vault_backend.get_conn_uri()
|
||||||
| ^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^ AIR301
|
||||||
79 | vault_backend.get_connections()
|
79 | vault_backend.get_connections()
|
||||||
|
|
|
|
||||||
= help: Use `get_conn_value` instead
|
= help: Use `get_conn_value` instead
|
||||||
|
@ -544,12 +544,12 @@ AIR302_class_attribute.py:78:15: AIR302 [*] `get_conn_uri` is removed in Airflow
|
||||||
80 80 |
|
80 80 |
|
||||||
81 81 | not_an_error = NotAir302SecretError()
|
81 81 | not_an_error = NotAir302SecretError()
|
||||||
|
|
||||||
AIR302_class_attribute.py:79:15: AIR302 [*] `get_connections` is removed in Airflow 3.0
|
AIR301_class_attribute.py:79:15: AIR301 [*] `get_connections` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
77 | vault_backend = VaultBackend()
|
77 | vault_backend = VaultBackend()
|
||||||
78 | vault_backend.get_conn_uri()
|
78 | vault_backend.get_conn_uri()
|
||||||
79 | vault_backend.get_connections()
|
79 | vault_backend.get_connections()
|
||||||
| ^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^ AIR301
|
||||||
80 |
|
80 |
|
||||||
81 | not_an_error = NotAir302SecretError()
|
81 | not_an_error = NotAir302SecretError()
|
||||||
|
|
|
|
||||||
|
@ -565,12 +565,12 @@ AIR302_class_attribute.py:79:15: AIR302 [*] `get_connections` is removed in Airf
|
||||||
81 81 | not_an_error = NotAir302SecretError()
|
81 81 | not_an_error = NotAir302SecretError()
|
||||||
82 82 | not_an_error.get_conn_uri()
|
82 82 | not_an_error.get_conn_uri()
|
||||||
|
|
||||||
AIR302_class_attribute.py:87:4: AIR302 [*] `dataset_factories` is removed in Airflow 3.0
|
AIR301_class_attribute.py:87:4: AIR301 [*] `dataset_factories` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
85 | pm = ProvidersManager()
|
85 | pm = ProvidersManager()
|
||||||
86 | pm.initialize_providers_asset_uri_resources()
|
86 | pm.initialize_providers_asset_uri_resources()
|
||||||
87 | pm.dataset_factories
|
87 | pm.dataset_factories
|
||||||
| ^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^ AIR301
|
||||||
88 | pm.dataset_factories
|
88 | pm.dataset_factories
|
||||||
89 | pm.dataset_uri_handlers
|
89 | pm.dataset_uri_handlers
|
||||||
|
|
|
|
||||||
|
@ -586,12 +586,12 @@ AIR302_class_attribute.py:87:4: AIR302 [*] `dataset_factories` is removed in Air
|
||||||
89 89 | pm.dataset_uri_handlers
|
89 89 | pm.dataset_uri_handlers
|
||||||
90 90 | pm.dataset_to_openlineage_converters
|
90 90 | pm.dataset_to_openlineage_converters
|
||||||
|
|
||||||
AIR302_class_attribute.py:88:4: AIR302 [*] `dataset_factories` is removed in Airflow 3.0
|
AIR301_class_attribute.py:88:4: AIR301 [*] `dataset_factories` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
86 | pm.initialize_providers_asset_uri_resources()
|
86 | pm.initialize_providers_asset_uri_resources()
|
||||||
87 | pm.dataset_factories
|
87 | pm.dataset_factories
|
||||||
88 | pm.dataset_factories
|
88 | pm.dataset_factories
|
||||||
| ^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^ AIR301
|
||||||
89 | pm.dataset_uri_handlers
|
89 | pm.dataset_uri_handlers
|
||||||
90 | pm.dataset_to_openlineage_converters
|
90 | pm.dataset_to_openlineage_converters
|
||||||
|
|
|
|
||||||
|
@ -607,12 +607,12 @@ AIR302_class_attribute.py:88:4: AIR302 [*] `dataset_factories` is removed in Air
|
||||||
90 90 | pm.dataset_to_openlineage_converters
|
90 90 | pm.dataset_to_openlineage_converters
|
||||||
91 91 |
|
91 91 |
|
||||||
|
|
||||||
AIR302_class_attribute.py:89:4: AIR302 [*] `dataset_uri_handlers` is removed in Airflow 3.0
|
AIR301_class_attribute.py:89:4: AIR301 [*] `dataset_uri_handlers` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
87 | pm.dataset_factories
|
87 | pm.dataset_factories
|
||||||
88 | pm.dataset_factories
|
88 | pm.dataset_factories
|
||||||
89 | pm.dataset_uri_handlers
|
89 | pm.dataset_uri_handlers
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^^^ AIR301
|
||||||
90 | pm.dataset_to_openlineage_converters
|
90 | pm.dataset_to_openlineage_converters
|
||||||
|
|
|
|
||||||
= help: Use `asset_uri_handlers` instead
|
= help: Use `asset_uri_handlers` instead
|
||||||
|
@ -627,12 +627,12 @@ AIR302_class_attribute.py:89:4: AIR302 [*] `dataset_uri_handlers` is removed in
|
||||||
91 91 |
|
91 91 |
|
||||||
92 92 | # airflow.secrets.base_secrets
|
92 92 | # airflow.secrets.base_secrets
|
||||||
|
|
||||||
AIR302_class_attribute.py:90:4: AIR302 [*] `dataset_to_openlineage_converters` is removed in Airflow 3.0
|
AIR301_class_attribute.py:90:4: AIR301 [*] `dataset_to_openlineage_converters` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
88 | pm.dataset_factories
|
88 | pm.dataset_factories
|
||||||
89 | pm.dataset_uri_handlers
|
89 | pm.dataset_uri_handlers
|
||||||
90 | pm.dataset_to_openlineage_converters
|
90 | pm.dataset_to_openlineage_converters
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR301
|
||||||
91 |
|
91 |
|
||||||
92 | # airflow.secrets.base_secrets
|
92 | # airflow.secrets.base_secrets
|
||||||
|
|
|
|
||||||
|
@ -648,12 +648,12 @@ AIR302_class_attribute.py:90:4: AIR302 [*] `dataset_to_openlineage_converters` i
|
||||||
92 92 | # airflow.secrets.base_secrets
|
92 92 | # airflow.secrets.base_secrets
|
||||||
93 93 | base_secret_backend = BaseSecretsBackend()
|
93 93 | base_secret_backend = BaseSecretsBackend()
|
||||||
|
|
||||||
AIR302_class_attribute.py:94:21: AIR302 [*] `get_conn_uri` is removed in Airflow 3.0
|
AIR301_class_attribute.py:94:21: AIR301 [*] `get_conn_uri` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
92 | # airflow.secrets.base_secrets
|
92 | # airflow.secrets.base_secrets
|
||||||
93 | base_secret_backend = BaseSecretsBackend()
|
93 | base_secret_backend = BaseSecretsBackend()
|
||||||
94 | base_secret_backend.get_conn_uri()
|
94 | base_secret_backend.get_conn_uri()
|
||||||
| ^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^ AIR301
|
||||||
95 | base_secret_backend.get_connections()
|
95 | base_secret_backend.get_connections()
|
||||||
|
|
|
|
||||||
= help: Use `get_conn_value` instead
|
= help: Use `get_conn_value` instead
|
||||||
|
@ -668,12 +668,12 @@ AIR302_class_attribute.py:94:21: AIR302 [*] `get_conn_uri` is removed in Airflow
|
||||||
96 96 |
|
96 96 |
|
||||||
97 97 | # airflow.secrets.local_filesystem
|
97 97 | # airflow.secrets.local_filesystem
|
||||||
|
|
||||||
AIR302_class_attribute.py:95:21: AIR302 [*] `get_connections` is removed in Airflow 3.0
|
AIR301_class_attribute.py:95:21: AIR301 [*] `get_connections` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
93 | base_secret_backend = BaseSecretsBackend()
|
93 | base_secret_backend = BaseSecretsBackend()
|
||||||
94 | base_secret_backend.get_conn_uri()
|
94 | base_secret_backend.get_conn_uri()
|
||||||
95 | base_secret_backend.get_connections()
|
95 | base_secret_backend.get_connections()
|
||||||
| ^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^ AIR301
|
||||||
96 |
|
96 |
|
||||||
97 | # airflow.secrets.local_filesystem
|
97 | # airflow.secrets.local_filesystem
|
||||||
|
|
|
|
||||||
|
@ -689,12 +689,12 @@ AIR302_class_attribute.py:95:21: AIR302 [*] `get_connections` is removed in Airf
|
||||||
97 97 | # airflow.secrets.local_filesystem
|
97 97 | # airflow.secrets.local_filesystem
|
||||||
98 98 | lfb = LocalFilesystemBackend()
|
98 98 | lfb = LocalFilesystemBackend()
|
||||||
|
|
||||||
AIR302_class_attribute.py:99:5: AIR302 [*] `get_connections` is removed in Airflow 3.0
|
AIR301_class_attribute.py:99:5: AIR301 [*] `get_connections` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
97 | # airflow.secrets.local_filesystem
|
97 | # airflow.secrets.local_filesystem
|
||||||
98 | lfb = LocalFilesystemBackend()
|
98 | lfb = LocalFilesystemBackend()
|
||||||
99 | lfb.get_connections()
|
99 | lfb.get_connections()
|
||||||
| ^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^ AIR301
|
||||||
|
|
|
|
||||||
= help: Use `get_connection` instead
|
= help: Use `get_connection` instead
|
||||||
|
|
|
@ -1,307 +1,306 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/airflow/mod.rs
|
source: crates/ruff_linter/src/rules/airflow/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
AIR302_context.py:22:41: AIR302 `conf` is removed in Airflow 3.0
|
AIR301_context.py:22:41: AIR301 `conf` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
20 | @task
|
20 | @task
|
||||||
21 | def access_invalid_key_task_out_of_dag(**context):
|
21 | def access_invalid_key_task_out_of_dag(**context):
|
||||||
22 | print("access invalid key", context["conf"])
|
22 | print("access invalid key", context["conf"])
|
||||||
| ^^^^^^ AIR302
|
| ^^^^^^ AIR301
|
||||||
23 | print("access invalid key", context.get("conf"))
|
23 | print("access invalid key", context.get("conf"))
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:23:45: AIR302 `conf` is removed in Airflow 3.0
|
AIR301_context.py:23:45: AIR301 `conf` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
21 | def access_invalid_key_task_out_of_dag(**context):
|
21 | def access_invalid_key_task_out_of_dag(**context):
|
||||||
22 | print("access invalid key", context["conf"])
|
22 | print("access invalid key", context["conf"])
|
||||||
23 | print("access invalid key", context.get("conf"))
|
23 | print("access invalid key", context.get("conf"))
|
||||||
| ^^^^^^ AIR302
|
| ^^^^^^ AIR301
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:28:5: AIR302 `execution_date` is removed in Airflow 3.0
|
AIR301_context.py:28:5: AIR301 `execution_date` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
26 | @task
|
26 | @task
|
||||||
27 | def access_invalid_argument_task_out_of_dag(
|
27 | def access_invalid_argument_task_out_of_dag(
|
||||||
28 | execution_date, tomorrow_ds, logical_date, **context
|
28 | execution_date, tomorrow_ds, logical_date, **context
|
||||||
| ^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^ AIR301
|
||||||
29 | ):
|
29 | ):
|
||||||
30 | print("execution date", execution_date)
|
30 | print("execution date", execution_date)
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:28:21: AIR302 `tomorrow_ds` is removed in Airflow 3.0
|
AIR301_context.py:28:21: AIR301 `tomorrow_ds` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
26 | @task
|
26 | @task
|
||||||
27 | def access_invalid_argument_task_out_of_dag(
|
27 | def access_invalid_argument_task_out_of_dag(
|
||||||
28 | execution_date, tomorrow_ds, logical_date, **context
|
28 | execution_date, tomorrow_ds, logical_date, **context
|
||||||
| ^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^ AIR301
|
||||||
29 | ):
|
29 | ):
|
||||||
30 | print("execution date", execution_date)
|
30 | print("execution date", execution_date)
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:31:45: AIR302 `conf` is removed in Airflow 3.0
|
AIR301_context.py:31:45: AIR301 `conf` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
29 | ):
|
29 | ):
|
||||||
30 | print("execution date", execution_date)
|
30 | print("execution date", execution_date)
|
||||||
31 | print("access invalid key", context.get("conf"))
|
31 | print("access invalid key", context.get("conf"))
|
||||||
| ^^^^^^ AIR302
|
| ^^^^^^ AIR301
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:40:30: AIR302 `execution_date` is removed in Airflow 3.0
|
AIR301_context.py:40:30: AIR301 `execution_date` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
39 | # Removed usage - should trigger violations
|
39 | # Removed usage - should trigger violations
|
||||||
40 | execution_date = context["execution_date"]
|
40 | execution_date = context["execution_date"]
|
||||||
| ^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^ AIR301
|
||||||
41 | next_ds = context["next_ds"]
|
41 | next_ds = context["next_ds"]
|
||||||
42 | next_ds_nodash = context["next_ds_nodash"]
|
42 | next_ds_nodash = context["next_ds_nodash"]
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:41:23: AIR302 `next_ds` is removed in Airflow 3.0
|
AIR301_context.py:41:23: AIR301 `next_ds` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
39 | # Removed usage - should trigger violations
|
39 | # Removed usage - should trigger violations
|
||||||
40 | execution_date = context["execution_date"]
|
40 | execution_date = context["execution_date"]
|
||||||
41 | next_ds = context["next_ds"]
|
41 | next_ds = context["next_ds"]
|
||||||
| ^^^^^^^^^ AIR302
|
| ^^^^^^^^^ AIR301
|
||||||
42 | next_ds_nodash = context["next_ds_nodash"]
|
42 | next_ds_nodash = context["next_ds_nodash"]
|
||||||
43 | next_execution_date = context["next_execution_date"]
|
43 | next_execution_date = context["next_execution_date"]
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:42:30: AIR302 `next_ds_nodash` is removed in Airflow 3.0
|
AIR301_context.py:42:30: AIR301 `next_ds_nodash` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
40 | execution_date = context["execution_date"]
|
40 | execution_date = context["execution_date"]
|
||||||
41 | next_ds = context["next_ds"]
|
41 | next_ds = context["next_ds"]
|
||||||
42 | next_ds_nodash = context["next_ds_nodash"]
|
42 | next_ds_nodash = context["next_ds_nodash"]
|
||||||
| ^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^ AIR301
|
||||||
43 | next_execution_date = context["next_execution_date"]
|
43 | next_execution_date = context["next_execution_date"]
|
||||||
44 | prev_ds = context["prev_ds"]
|
44 | prev_ds = context["prev_ds"]
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:43:35: AIR302 `next_execution_date` is removed in Airflow 3.0
|
AIR301_context.py:43:35: AIR301 `next_execution_date` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
41 | next_ds = context["next_ds"]
|
41 | next_ds = context["next_ds"]
|
||||||
42 | next_ds_nodash = context["next_ds_nodash"]
|
42 | next_ds_nodash = context["next_ds_nodash"]
|
||||||
43 | next_execution_date = context["next_execution_date"]
|
43 | next_execution_date = context["next_execution_date"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^^^^ AIR301
|
||||||
44 | prev_ds = context["prev_ds"]
|
44 | prev_ds = context["prev_ds"]
|
||||||
45 | prev_ds_nodash = context["prev_ds_nodash"]
|
45 | prev_ds_nodash = context["prev_ds_nodash"]
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:44:23: AIR302 `prev_ds` is removed in Airflow 3.0
|
AIR301_context.py:44:23: AIR301 `prev_ds` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
42 | next_ds_nodash = context["next_ds_nodash"]
|
42 | next_ds_nodash = context["next_ds_nodash"]
|
||||||
43 | next_execution_date = context["next_execution_date"]
|
43 | next_execution_date = context["next_execution_date"]
|
||||||
44 | prev_ds = context["prev_ds"]
|
44 | prev_ds = context["prev_ds"]
|
||||||
| ^^^^^^^^^ AIR302
|
| ^^^^^^^^^ AIR301
|
||||||
45 | prev_ds_nodash = context["prev_ds_nodash"]
|
45 | prev_ds_nodash = context["prev_ds_nodash"]
|
||||||
46 | prev_execution_date = context["prev_execution_date"]
|
46 | prev_execution_date = context["prev_execution_date"]
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:45:30: AIR302 `prev_ds_nodash` is removed in Airflow 3.0
|
AIR301_context.py:45:30: AIR301 `prev_ds_nodash` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
43 | next_execution_date = context["next_execution_date"]
|
43 | next_execution_date = context["next_execution_date"]
|
||||||
44 | prev_ds = context["prev_ds"]
|
44 | prev_ds = context["prev_ds"]
|
||||||
45 | prev_ds_nodash = context["prev_ds_nodash"]
|
45 | prev_ds_nodash = context["prev_ds_nodash"]
|
||||||
| ^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^ AIR301
|
||||||
46 | prev_execution_date = context["prev_execution_date"]
|
46 | prev_execution_date = context["prev_execution_date"]
|
||||||
47 | prev_execution_date_success = context["prev_execution_date_success"]
|
47 | prev_execution_date_success = context["prev_execution_date_success"]
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:46:35: AIR302 `prev_execution_date` is removed in Airflow 3.0
|
AIR301_context.py:46:35: AIR301 `prev_execution_date` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
44 | prev_ds = context["prev_ds"]
|
44 | prev_ds = context["prev_ds"]
|
||||||
45 | prev_ds_nodash = context["prev_ds_nodash"]
|
45 | prev_ds_nodash = context["prev_ds_nodash"]
|
||||||
46 | prev_execution_date = context["prev_execution_date"]
|
46 | prev_execution_date = context["prev_execution_date"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^^^^ AIR301
|
||||||
47 | prev_execution_date_success = context["prev_execution_date_success"]
|
47 | prev_execution_date_success = context["prev_execution_date_success"]
|
||||||
48 | tomorrow_ds = context["tomorrow_ds"]
|
48 | tomorrow_ds = context["tomorrow_ds"]
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:47:43: AIR302 `prev_execution_date_success` is removed in Airflow 3.0
|
AIR301_context.py:47:43: AIR301 `prev_execution_date_success` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
45 | prev_ds_nodash = context["prev_ds_nodash"]
|
45 | prev_ds_nodash = context["prev_ds_nodash"]
|
||||||
46 | prev_execution_date = context["prev_execution_date"]
|
46 | prev_execution_date = context["prev_execution_date"]
|
||||||
47 | prev_execution_date_success = context["prev_execution_date_success"]
|
47 | prev_execution_date_success = context["prev_execution_date_success"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR301
|
||||||
48 | tomorrow_ds = context["tomorrow_ds"]
|
48 | tomorrow_ds = context["tomorrow_ds"]
|
||||||
49 | yesterday_ds = context["yesterday_ds"]
|
49 | yesterday_ds = context["yesterday_ds"]
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:48:27: AIR302 `tomorrow_ds` is removed in Airflow 3.0
|
AIR301_context.py:48:27: AIR301 `tomorrow_ds` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
46 | prev_execution_date = context["prev_execution_date"]
|
46 | prev_execution_date = context["prev_execution_date"]
|
||||||
47 | prev_execution_date_success = context["prev_execution_date_success"]
|
47 | prev_execution_date_success = context["prev_execution_date_success"]
|
||||||
48 | tomorrow_ds = context["tomorrow_ds"]
|
48 | tomorrow_ds = context["tomorrow_ds"]
|
||||||
| ^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^ AIR301
|
||||||
49 | yesterday_ds = context["yesterday_ds"]
|
49 | yesterday_ds = context["yesterday_ds"]
|
||||||
50 | yesterday_ds_nodash = context["yesterday_ds_nodash"]
|
50 | yesterday_ds_nodash = context["yesterday_ds_nodash"]
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:49:28: AIR302 `yesterday_ds` is removed in Airflow 3.0
|
AIR301_context.py:49:28: AIR301 `yesterday_ds` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
47 | prev_execution_date_success = context["prev_execution_date_success"]
|
47 | prev_execution_date_success = context["prev_execution_date_success"]
|
||||||
48 | tomorrow_ds = context["tomorrow_ds"]
|
48 | tomorrow_ds = context["tomorrow_ds"]
|
||||||
49 | yesterday_ds = context["yesterday_ds"]
|
49 | yesterday_ds = context["yesterday_ds"]
|
||||||
| ^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^ AIR301
|
||||||
50 | yesterday_ds_nodash = context["yesterday_ds_nodash"]
|
50 | yesterday_ds_nodash = context["yesterday_ds_nodash"]
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:50:35: AIR302 `yesterday_ds_nodash` is removed in Airflow 3.0
|
AIR301_context.py:50:35: AIR301 `yesterday_ds_nodash` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
48 | tomorrow_ds = context["tomorrow_ds"]
|
48 | tomorrow_ds = context["tomorrow_ds"]
|
||||||
49 | yesterday_ds = context["yesterday_ds"]
|
49 | yesterday_ds = context["yesterday_ds"]
|
||||||
50 | yesterday_ds_nodash = context["yesterday_ds_nodash"]
|
50 | yesterday_ds_nodash = context["yesterday_ds_nodash"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^^^^ AIR301
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:56:30: AIR302 `execution_date` is removed in Airflow 3.0
|
AIR301_context.py:56:30: AIR301 `execution_date` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
54 | def print_config_with_get_current_context():
|
54 | def print_config_with_get_current_context():
|
||||||
55 | context = get_current_context()
|
55 | context = get_current_context()
|
||||||
56 | execution_date = context["execution_date"]
|
56 | execution_date = context["execution_date"]
|
||||||
| ^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^ AIR301
|
||||||
57 | next_ds = context["next_ds"]
|
57 | next_ds = context["next_ds"]
|
||||||
58 | next_ds_nodash = context["next_ds_nodash"]
|
58 | next_ds_nodash = context["next_ds_nodash"]
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:57:23: AIR302 `next_ds` is removed in Airflow 3.0
|
AIR301_context.py:57:23: AIR301 `next_ds` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
55 | context = get_current_context()
|
55 | context = get_current_context()
|
||||||
56 | execution_date = context["execution_date"]
|
56 | execution_date = context["execution_date"]
|
||||||
57 | next_ds = context["next_ds"]
|
57 | next_ds = context["next_ds"]
|
||||||
| ^^^^^^^^^ AIR302
|
| ^^^^^^^^^ AIR301
|
||||||
58 | next_ds_nodash = context["next_ds_nodash"]
|
58 | next_ds_nodash = context["next_ds_nodash"]
|
||||||
59 | next_execution_date = context["next_execution_date"]
|
59 | next_execution_date = context["next_execution_date"]
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:58:30: AIR302 `next_ds_nodash` is removed in Airflow 3.0
|
AIR301_context.py:58:30: AIR301 `next_ds_nodash` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
56 | execution_date = context["execution_date"]
|
56 | execution_date = context["execution_date"]
|
||||||
57 | next_ds = context["next_ds"]
|
57 | next_ds = context["next_ds"]
|
||||||
58 | next_ds_nodash = context["next_ds_nodash"]
|
58 | next_ds_nodash = context["next_ds_nodash"]
|
||||||
| ^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^ AIR301
|
||||||
59 | next_execution_date = context["next_execution_date"]
|
59 | next_execution_date = context["next_execution_date"]
|
||||||
60 | prev_ds = context["prev_ds"]
|
60 | prev_ds = context["prev_ds"]
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:59:35: AIR302 `next_execution_date` is removed in Airflow 3.0
|
AIR301_context.py:59:35: AIR301 `next_execution_date` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
57 | next_ds = context["next_ds"]
|
57 | next_ds = context["next_ds"]
|
||||||
58 | next_ds_nodash = context["next_ds_nodash"]
|
58 | next_ds_nodash = context["next_ds_nodash"]
|
||||||
59 | next_execution_date = context["next_execution_date"]
|
59 | next_execution_date = context["next_execution_date"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^^^^ AIR301
|
||||||
60 | prev_ds = context["prev_ds"]
|
60 | prev_ds = context["prev_ds"]
|
||||||
61 | prev_ds_nodash = context["prev_ds_nodash"]
|
61 | prev_ds_nodash = context["prev_ds_nodash"]
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:60:23: AIR302 `prev_ds` is removed in Airflow 3.0
|
AIR301_context.py:60:23: AIR301 `prev_ds` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
58 | next_ds_nodash = context["next_ds_nodash"]
|
58 | next_ds_nodash = context["next_ds_nodash"]
|
||||||
59 | next_execution_date = context["next_execution_date"]
|
59 | next_execution_date = context["next_execution_date"]
|
||||||
60 | prev_ds = context["prev_ds"]
|
60 | prev_ds = context["prev_ds"]
|
||||||
| ^^^^^^^^^ AIR302
|
| ^^^^^^^^^ AIR301
|
||||||
61 | prev_ds_nodash = context["prev_ds_nodash"]
|
61 | prev_ds_nodash = context["prev_ds_nodash"]
|
||||||
62 | prev_execution_date = context["prev_execution_date"]
|
62 | prev_execution_date = context["prev_execution_date"]
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:61:30: AIR302 `prev_ds_nodash` is removed in Airflow 3.0
|
AIR301_context.py:61:30: AIR301 `prev_ds_nodash` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
59 | next_execution_date = context["next_execution_date"]
|
59 | next_execution_date = context["next_execution_date"]
|
||||||
60 | prev_ds = context["prev_ds"]
|
60 | prev_ds = context["prev_ds"]
|
||||||
61 | prev_ds_nodash = context["prev_ds_nodash"]
|
61 | prev_ds_nodash = context["prev_ds_nodash"]
|
||||||
| ^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^ AIR301
|
||||||
62 | prev_execution_date = context["prev_execution_date"]
|
62 | prev_execution_date = context["prev_execution_date"]
|
||||||
63 | prev_execution_date_success = context["prev_execution_date_success"]
|
63 | prev_execution_date_success = context["prev_execution_date_success"]
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:62:35: AIR302 `prev_execution_date` is removed in Airflow 3.0
|
AIR301_context.py:62:35: AIR301 `prev_execution_date` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
60 | prev_ds = context["prev_ds"]
|
60 | prev_ds = context["prev_ds"]
|
||||||
61 | prev_ds_nodash = context["prev_ds_nodash"]
|
61 | prev_ds_nodash = context["prev_ds_nodash"]
|
||||||
62 | prev_execution_date = context["prev_execution_date"]
|
62 | prev_execution_date = context["prev_execution_date"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^^^^ AIR301
|
||||||
63 | prev_execution_date_success = context["prev_execution_date_success"]
|
63 | prev_execution_date_success = context["prev_execution_date_success"]
|
||||||
64 | tomorrow_ds = context["tomorrow_ds"]
|
64 | tomorrow_ds = context["tomorrow_ds"]
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:63:43: AIR302 `prev_execution_date_success` is removed in Airflow 3.0
|
AIR301_context.py:63:43: AIR301 `prev_execution_date_success` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
61 | prev_ds_nodash = context["prev_ds_nodash"]
|
61 | prev_ds_nodash = context["prev_ds_nodash"]
|
||||||
62 | prev_execution_date = context["prev_execution_date"]
|
62 | prev_execution_date = context["prev_execution_date"]
|
||||||
63 | prev_execution_date_success = context["prev_execution_date_success"]
|
63 | prev_execution_date_success = context["prev_execution_date_success"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR301
|
||||||
64 | tomorrow_ds = context["tomorrow_ds"]
|
64 | tomorrow_ds = context["tomorrow_ds"]
|
||||||
65 | yesterday_ds = context["yesterday_ds"]
|
65 | yesterday_ds = context["yesterday_ds"]
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:64:27: AIR302 `tomorrow_ds` is removed in Airflow 3.0
|
AIR301_context.py:64:27: AIR301 `tomorrow_ds` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
62 | prev_execution_date = context["prev_execution_date"]
|
62 | prev_execution_date = context["prev_execution_date"]
|
||||||
63 | prev_execution_date_success = context["prev_execution_date_success"]
|
63 | prev_execution_date_success = context["prev_execution_date_success"]
|
||||||
64 | tomorrow_ds = context["tomorrow_ds"]
|
64 | tomorrow_ds = context["tomorrow_ds"]
|
||||||
| ^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^ AIR301
|
||||||
65 | yesterday_ds = context["yesterday_ds"]
|
65 | yesterday_ds = context["yesterday_ds"]
|
||||||
66 | yesterday_ds_nodash = context["yesterday_ds_nodash"]
|
66 | yesterday_ds_nodash = context["yesterday_ds_nodash"]
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:65:28: AIR302 `yesterday_ds` is removed in Airflow 3.0
|
AIR301_context.py:65:28: AIR301 `yesterday_ds` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
63 | prev_execution_date_success = context["prev_execution_date_success"]
|
63 | prev_execution_date_success = context["prev_execution_date_success"]
|
||||||
64 | tomorrow_ds = context["tomorrow_ds"]
|
64 | tomorrow_ds = context["tomorrow_ds"]
|
||||||
65 | yesterday_ds = context["yesterday_ds"]
|
65 | yesterday_ds = context["yesterday_ds"]
|
||||||
| ^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^ AIR301
|
||||||
66 | yesterday_ds_nodash = context["yesterday_ds_nodash"]
|
66 | yesterday_ds_nodash = context["yesterday_ds_nodash"]
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:66:35: AIR302 `yesterday_ds_nodash` is removed in Airflow 3.0
|
AIR301_context.py:66:35: AIR301 `yesterday_ds_nodash` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
64 | tomorrow_ds = context["tomorrow_ds"]
|
64 | tomorrow_ds = context["tomorrow_ds"]
|
||||||
65 | yesterday_ds = context["yesterday_ds"]
|
65 | yesterday_ds = context["yesterday_ds"]
|
||||||
66 | yesterday_ds_nodash = context["yesterday_ds_nodash"]
|
66 | yesterday_ds_nodash = context["yesterday_ds_nodash"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^^^^^ AIR301
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:73:22: AIR302 `tomorrow_ds` is removed in Airflow 3.0
|
AIR301_context.py:73:22: AIR301 `tomorrow_ds` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
71 | """Print the Airflow context and ds variable from the context."""
|
71 | """Print the Airflow context and ds variable from the context."""
|
||||||
72 | print(ds)
|
72 | print(ds)
|
||||||
73 | print(kwargs.get("tomorrow_ds"))
|
73 | print(kwargs.get("tomorrow_ds"))
|
||||||
| ^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^ AIR301
|
||||||
74 | c = get_current_context()
|
74 | c = get_current_context()
|
||||||
75 | c.get("execution_date")
|
75 | c.get("execution_date")
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:75:11: AIR302 `execution_date` is removed in Airflow 3.0
|
AIR301_context.py:75:11: AIR301 `execution_date` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
73 | print(kwargs.get("tomorrow_ds"))
|
73 | print(kwargs.get("tomorrow_ds"))
|
||||||
74 | c = get_current_context()
|
74 | c = get_current_context()
|
||||||
75 | c.get("execution_date")
|
75 | c.get("execution_date")
|
||||||
| ^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^ AIR301
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:87:49: AIR302 `conf` is removed in Airflow 3.0
|
AIR301_context.py:87:49: AIR301 `conf` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
85 | @task()
|
85 | @task()
|
||||||
86 | def access_invalid_key_task(**context):
|
86 | def access_invalid_key_task(**context):
|
||||||
87 | print("access invalid key", context.get("conf"))
|
87 | print("access invalid key", context.get("conf"))
|
||||||
| ^^^^^^ AIR302
|
| ^^^^^^ AIR301
|
||||||
88 |
|
88 |
|
||||||
89 | @task()
|
89 | @task()
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:90:42: AIR302 `execution_date` is removed in Airflow 3.0
|
AIR301_context.py:90:42: AIR301 `execution_date` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
89 | @task()
|
89 | @task()
|
||||||
90 | def access_invalid_key_explicit_task(execution_date):
|
90 | def access_invalid_key_explicit_task(execution_date):
|
||||||
| ^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^ AIR301
|
||||||
91 | print(execution_date)
|
91 | print(execution_date)
|
||||||
|
|
|
|
||||||
|
|
||||||
AIR302_context.py:111:5: AIR302 [*] `schedule_interval` is removed in Airflow 3.0
|
AIR301_context.py:111:5: AIR301 [*] `schedule_interval` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
109 | with DAG(
|
109 | with DAG(
|
||||||
110 | dag_id="example_dag",
|
110 | dag_id="example_dag",
|
||||||
111 | schedule_interval="@daily",
|
111 | schedule_interval="@daily",
|
||||||
| ^^^^^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^^^^^ AIR301
|
||||||
112 | start_date=datetime(2023, 1, 1),
|
112 | start_date=datetime(2023, 1, 1),
|
||||||
113 | template_searchpath=["/templates"],
|
113 | template_searchpath=["/templates"],
|
||||||
|
|
|
|
||||||
|
@ -317,22 +316,22 @@ AIR302_context.py:111:5: AIR302 [*] `schedule_interval` is removed in Airflow 3.
|
||||||
113 113 | template_searchpath=["/templates"],
|
113 113 | template_searchpath=["/templates"],
|
||||||
114 114 | ) as dag:
|
114 114 | ) as dag:
|
||||||
|
|
||||||
AIR302_context.py:115:13: AIR302 `airflow.operators.dummy.DummyOperator` is removed in Airflow 3.0
|
AIR301_context.py:115:13: AIR301 `airflow.operators.dummy.DummyOperator` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
113 | template_searchpath=["/templates"],
|
113 | template_searchpath=["/templates"],
|
||||||
114 | ) as dag:
|
114 | ) as dag:
|
||||||
115 | task1 = DummyOperator(
|
115 | task1 = DummyOperator(
|
||||||
| ^^^^^^^^^^^^^ AIR302
|
| ^^^^^^^^^^^^^ AIR301
|
||||||
116 | task_id="task1",
|
116 | task_id="task1",
|
||||||
117 | params={
|
117 | params={
|
||||||
|
|
|
|
||||||
= help: Use `airflow.operators.empty.EmptyOperator` instead
|
= help: Use `airflow.operators.empty.EmptyOperator` instead
|
||||||
|
|
||||||
AIR302_context.py:135:23: AIR302 `next_ds` is removed in Airflow 3.0
|
AIR301_context.py:135:23: AIR301 `next_ds` is removed in Airflow 3.0
|
||||||
|
|
|
|
||||||
134 | class CustomOperator(BaseOperator):
|
134 | class CustomOperator(BaseOperator):
|
||||||
135 | def execute(self, next_ds, context):
|
135 | def execute(self, next_ds, context):
|
||||||
| ^^^^^^^ AIR302
|
| ^^^^^^^ AIR301
|
||||||
136 | execution_date = context["execution_date"]
|
136 | execution_date = context["execution_date"]
|
||||||
137 | next_ds = context["next_ds"]
|
137 | next_ds = context["next_ds"]
|
||||||
|
|
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,5 +1,4 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/airflow/mod.rs
|
source: crates/ruff_linter/src/rules/airflow/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
|
|
File diff suppressed because it is too large
Load diff
2
ruff.schema.json
generated
2
ruff.schema.json
generated
|
@ -2946,8 +2946,8 @@
|
||||||
"AIR002",
|
"AIR002",
|
||||||
"AIR3",
|
"AIR3",
|
||||||
"AIR30",
|
"AIR30",
|
||||||
|
"AIR301",
|
||||||
"AIR302",
|
"AIR302",
|
||||||
"AIR303",
|
|
||||||
"ALL",
|
"ALL",
|
||||||
"ANN",
|
"ANN",
|
||||||
"ANN0",
|
"ANN0",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue