From 8833484b1005f5891b8e593a1af09d72dc0ac24f Mon Sep 17 00:00:00 2001 From: Wei Lee Date: Thu, 3 Apr 2025 01:31:31 +0800 Subject: [PATCH] [`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. --- ...low_plugin.py => AIR301_airflow_plugin.py} | 0 .../{AIR302_args.py => AIR301_args.py} | 0 ...attribute.py => AIR301_class_attribute.py} | 0 .../{AIR302_context.py => AIR301_context.py} | 0 .../{AIR302_names.py => AIR301_names.py} | 0 ...IR302_names_try.py => AIR301_names_try.py} | 0 .../fixtures/airflow/{AIR303.py => AIR302.py} | 0 crates/ruff_linter/src/codes.rs | 4 +- crates/ruff_linter/src/rules/airflow/mod.rs | 14 +- .../airflow/rules/dag_schedule_argument.rs | 2 +- .../airflow/rules/moved_to_provider_in_3.rs | 2 +- .../src/rules/airflow/rules/removal_in_3.rs | 4 +- ...sts__AIR301_AIR301_airflow_plugin.py.snap} | 17 +- ...irflow__tests__AIR301_AIR301_args.py.snap} | 80 +-- ...ts__AIR301_AIR301_class_attribute.py.snap} | 144 ++-- ...low__tests__AIR301_AIR301_context.py.snap} | 137 ++-- ...rflow__tests__AIR301_AIR301_names.py.snap} | 444 ++++++------ ...w__tests__AIR301_AIR301_names_try.py.snap} | 1 - ...es__airflow__tests__AIR302_AIR302.py.snap} | 653 +++++++++--------- ruff.schema.json | 2 +- 20 files changed, 750 insertions(+), 754 deletions(-) rename crates/ruff_linter/resources/test/fixtures/airflow/{AIR302_airflow_plugin.py => AIR301_airflow_plugin.py} (100%) rename crates/ruff_linter/resources/test/fixtures/airflow/{AIR302_args.py => AIR301_args.py} (100%) rename crates/ruff_linter/resources/test/fixtures/airflow/{AIR302_class_attribute.py => AIR301_class_attribute.py} (100%) rename crates/ruff_linter/resources/test/fixtures/airflow/{AIR302_context.py => AIR301_context.py} (100%) rename crates/ruff_linter/resources/test/fixtures/airflow/{AIR302_names.py => AIR301_names.py} (100%) rename crates/ruff_linter/resources/test/fixtures/airflow/{AIR302_names_try.py => AIR301_names_try.py} (100%) rename crates/ruff_linter/resources/test/fixtures/airflow/{AIR303.py => AIR302.py} (100%) rename crates/ruff_linter/src/rules/airflow/snapshots/{ruff_linter__rules__airflow__tests__AIR302_AIR302_airflow_plugin.py.snap => ruff_linter__rules__airflow__tests__AIR301_AIR301_airflow_plugin.py.snap} (75%) rename crates/ruff_linter/src/rules/airflow/snapshots/{ruff_linter__rules__airflow__tests__AIR302_AIR302_args.py.snap => ruff_linter__rules__airflow__tests__AIR301_AIR301_args.py.snap} (78%) rename crates/ruff_linter/src/rules/airflow/snapshots/{ruff_linter__rules__airflow__tests__AIR302_AIR302_class_attribute.py.snap => ruff_linter__rules__airflow__tests__AIR301_AIR301_class_attribute.py.snap} (82%) rename crates/ruff_linter/src/rules/airflow/snapshots/{ruff_linter__rules__airflow__tests__AIR302_AIR302_context.py.snap => ruff_linter__rules__airflow__tests__AIR301_AIR301_context.py.snap} (72%) rename crates/ruff_linter/src/rules/airflow/snapshots/{ruff_linter__rules__airflow__tests__AIR302_AIR302_names.py.snap => ruff_linter__rules__airflow__tests__AIR301_AIR301_names.py.snap} (71%) rename crates/ruff_linter/src/rules/airflow/snapshots/{ruff_linter__rules__airflow__tests__AIR302_AIR302_names_try.py.snap => ruff_linter__rules__airflow__tests__AIR301_AIR301_names_try.py.snap} (75%) rename crates/ruff_linter/src/rules/airflow/snapshots/{ruff_linter__rules__airflow__tests__AIR303_AIR303.py.snap => ruff_linter__rules__airflow__tests__AIR302_AIR302.py.snap} (78%) diff --git a/crates/ruff_linter/resources/test/fixtures/airflow/AIR302_airflow_plugin.py b/crates/ruff_linter/resources/test/fixtures/airflow/AIR301_airflow_plugin.py similarity index 100% rename from crates/ruff_linter/resources/test/fixtures/airflow/AIR302_airflow_plugin.py rename to crates/ruff_linter/resources/test/fixtures/airflow/AIR301_airflow_plugin.py diff --git a/crates/ruff_linter/resources/test/fixtures/airflow/AIR302_args.py b/crates/ruff_linter/resources/test/fixtures/airflow/AIR301_args.py similarity index 100% rename from crates/ruff_linter/resources/test/fixtures/airflow/AIR302_args.py rename to crates/ruff_linter/resources/test/fixtures/airflow/AIR301_args.py diff --git a/crates/ruff_linter/resources/test/fixtures/airflow/AIR302_class_attribute.py b/crates/ruff_linter/resources/test/fixtures/airflow/AIR301_class_attribute.py similarity index 100% rename from crates/ruff_linter/resources/test/fixtures/airflow/AIR302_class_attribute.py rename to crates/ruff_linter/resources/test/fixtures/airflow/AIR301_class_attribute.py diff --git a/crates/ruff_linter/resources/test/fixtures/airflow/AIR302_context.py b/crates/ruff_linter/resources/test/fixtures/airflow/AIR301_context.py similarity index 100% rename from crates/ruff_linter/resources/test/fixtures/airflow/AIR302_context.py rename to crates/ruff_linter/resources/test/fixtures/airflow/AIR301_context.py diff --git a/crates/ruff_linter/resources/test/fixtures/airflow/AIR302_names.py b/crates/ruff_linter/resources/test/fixtures/airflow/AIR301_names.py similarity index 100% rename from crates/ruff_linter/resources/test/fixtures/airflow/AIR302_names.py rename to crates/ruff_linter/resources/test/fixtures/airflow/AIR301_names.py diff --git a/crates/ruff_linter/resources/test/fixtures/airflow/AIR302_names_try.py b/crates/ruff_linter/resources/test/fixtures/airflow/AIR301_names_try.py similarity index 100% rename from crates/ruff_linter/resources/test/fixtures/airflow/AIR302_names_try.py rename to crates/ruff_linter/resources/test/fixtures/airflow/AIR301_names_try.py diff --git a/crates/ruff_linter/resources/test/fixtures/airflow/AIR303.py b/crates/ruff_linter/resources/test/fixtures/airflow/AIR302.py similarity index 100% rename from crates/ruff_linter/resources/test/fixtures/airflow/AIR303.py rename to crates/ruff_linter/resources/test/fixtures/airflow/AIR302.py diff --git a/crates/ruff_linter/src/codes.rs b/crates/ruff_linter/src/codes.rs index 762152bae5..1d31cb69f0 100644 --- a/crates/ruff_linter/src/codes.rs +++ b/crates/ruff_linter/src/codes.rs @@ -1069,8 +1069,8 @@ pub fn code_to_rule(linter: Linter, code: &str) -> Option<(RuleGroup, Rule)> { // airflow (Airflow, "001") => (RuleGroup::Stable, rules::airflow::rules::AirflowVariableNameTaskIdMismatch), (Airflow, "002") => (RuleGroup::Preview, rules::airflow::rules::AirflowDagNoScheduleArgument), - (Airflow, "302") => (RuleGroup::Preview, rules::airflow::rules::Airflow3Removal), - (Airflow, "303") => (RuleGroup::Preview, rules::airflow::rules::Airflow3MovedToProvider), + (Airflow, "301") => (RuleGroup::Preview, rules::airflow::rules::Airflow3Removal), + (Airflow, "302") => (RuleGroup::Preview, rules::airflow::rules::Airflow3MovedToProvider), // perflint (Perflint, "101") => (RuleGroup::Stable, rules::perflint::rules::UnnecessaryListCast), diff --git a/crates/ruff_linter/src/rules/airflow/mod.rs b/crates/ruff_linter/src/rules/airflow/mod.rs index deec05bae5..466a189996 100644 --- a/crates/ruff_linter/src/rules/airflow/mod.rs +++ b/crates/ruff_linter/src/rules/airflow/mod.rs @@ -15,13 +15,13 @@ mod tests { #[test_case(Rule::AirflowVariableNameTaskIdMismatch, Path::new("AIR001.py"))] #[test_case(Rule::AirflowDagNoScheduleArgument, Path::new("AIR002.py"))] - #[test_case(Rule::Airflow3Removal, Path::new("AIR302_args.py"))] - #[test_case(Rule::Airflow3Removal, Path::new("AIR302_names.py"))] - #[test_case(Rule::Airflow3Removal, Path::new("AIR302_names_try.py"))] - #[test_case(Rule::Airflow3Removal, Path::new("AIR302_class_attribute.py"))] - #[test_case(Rule::Airflow3Removal, Path::new("AIR302_airflow_plugin.py"))] - #[test_case(Rule::Airflow3Removal, Path::new("AIR302_context.py"))] - #[test_case(Rule::Airflow3MovedToProvider, Path::new("AIR303.py"))] + #[test_case(Rule::Airflow3Removal, Path::new("AIR301_args.py"))] + #[test_case(Rule::Airflow3Removal, Path::new("AIR301_names.py"))] + #[test_case(Rule::Airflow3Removal, Path::new("AIR301_names_try.py"))] + #[test_case(Rule::Airflow3Removal, Path::new("AIR301_class_attribute.py"))] + #[test_case(Rule::Airflow3Removal, Path::new("AIR301_airflow_plugin.py"))] + #[test_case(Rule::Airflow3Removal, Path::new("AIR301_context.py"))] + #[test_case(Rule::Airflow3MovedToProvider, Path::new("AIR302.py"))] fn rules(rule_code: Rule, path: &Path) -> Result<()> { let snapshot = format!("{}_{}", rule_code.noqa_code(), path.to_string_lossy()); let diagnostics = test_path( diff --git a/crates/ruff_linter/src/rules/airflow/rules/dag_schedule_argument.rs b/crates/ruff_linter/src/rules/airflow/rules/dag_schedule_argument.rs index 73f48cfc3e..79abcf278b 100644 --- a/crates/ruff_linter/src/rules/airflow/rules/dag_schedule_argument.rs +++ b/crates/ruff_linter/src/rules/airflow/rules/dag_schedule_argument.rs @@ -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. // This includes the canonical 'schedule', and the deprecated 'timetable' // and 'schedule_interval'. Usages of deprecated schedule arguments are - // covered by AIR302. + // covered by AIR301. if ["schedule", "schedule_interval", "timetable"] .iter() .any(|a| arguments.find_keyword(a).is_some()) diff --git a/crates/ruff_linter/src/rules/airflow/rules/moved_to_provider_in_3.rs b/crates/ruff_linter/src/rules/airflow/rules/moved_to_provider_in_3.rs index 805e507237..3db518dff2 100644 --- a/crates/ruff_linter/src/rules/airflow/rules/moved_to_provider_in_3.rs +++ b/crates/ruff_linter/src/rules/airflow/rules/moved_to_provider_in_3.rs @@ -82,7 +82,7 @@ impl Violation for Airflow3MovedToProvider { } } -/// AIR303 +/// AIR302 pub(crate) fn moved_to_provider_in_3(checker: &Checker, expr: &Expr) { if !checker.semantic().seen_module(Modules::AIRFLOW) { return; diff --git a/crates/ruff_linter/src/rules/airflow/rules/removal_in_3.rs b/crates/ruff_linter/src/rules/airflow/rules/removal_in_3.rs index 3e7a9f0608..991573d228 100644 --- a/crates/ruff_linter/src/rules/airflow/rules/removal_in_3.rs +++ b/crates/ruff_linter/src/rules/airflow/rules/removal_in_3.rs @@ -77,7 +77,7 @@ impl Violation for Airflow3Removal { } } -/// AIR302 +/// AIR301 pub(crate) fn airflow_3_removal_expr(checker: &Checker, expr: &Expr) { if !checker.semantic().seen_module(Modules::AIRFLOW) { 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) { if !checker.semantic().seen_module(Modules::AIRFLOW) { return; diff --git a/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302_airflow_plugin.py.snap b/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR301_AIR301_airflow_plugin.py.snap similarity index 75% rename from crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302_airflow_plugin.py.snap rename to crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR301_AIR301_airflow_plugin.py.snap index e94bafe216..dc16e1812b 100644 --- a/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302_airflow_plugin.py.snap +++ b/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR301_AIR301_airflow_plugin.py.snap @@ -1,43 +1,42 @@ --- 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" 6 | # --- Invalid extensions start 7 | operators = [PluginOperator] - | ^^^^^^^^^ AIR302 + | ^^^^^^^^^ AIR301 8 | sensors = [PluginSensorOperator] 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 7 | operators = [PluginOperator] 8 | sensors = [PluginSensorOperator] - | ^^^^^^^ AIR302 + | ^^^^^^^ AIR301 9 | hooks = [PluginHook] 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] 8 | sensors = [PluginSensorOperator] 9 | hooks = [PluginHook] - | ^^^^^ AIR302 + | ^^^^^ AIR301 10 | executors = [PluginExecutor] 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] 9 | hooks = [PluginHook] 10 | executors = [PluginExecutor] - | ^^^^^^^^^ AIR302 + | ^^^^^^^^^ AIR301 11 | # --- Invalid extensions end 12 | macros = [plugin_macro] | diff --git a/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302_args.py.snap b/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR301_AIR301_args.py.snap similarity index 78% rename from crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302_args.py.snap rename to crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR301_AIR301_args.py.snap index f3367a2563..e3978f3c14 100644 --- a/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302_args.py.snap +++ b/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR301_AIR301_args.py.snap @@ -1,12 +1,12 @@ --- 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") 19 | 20 | DAG(dag_id="class_schedule_interval", schedule_interval="@hourly") - | ^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^ AIR301 21 | 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()) 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") 21 | 22 | DAG(dag_id="class_timetable", timetable=NullTimetable()) - | ^^^^^^^^^ AIR302 + | ^^^^^^^^^ AIR301 | = help: Use `schedule` instead @@ -41,20 +41,20 @@ AIR302_args.py:22:31: AIR302 [*] `timetable` is removed in Airflow 3.0 24 24 | 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) - | ^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^ AIR301 30 | 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) 30 | 31 | DAG(dag_id="class_fail_stop", fail_stop=True) - | ^^^^^^^^^ AIR302 + | ^^^^^^^^^ AIR301 32 | 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") 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) 32 | 33 | DAG(dag_id="class_default_view", default_view="dag_default_view") - | ^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^ AIR301 34 | 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") 34 | 35 | DAG(dag_id="class_orientation", orientation="BT") - | ^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^ AIR301 36 | 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 * * * *") - | ^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^ AIR301 47 | def decorator_schedule_interval(): 48 | pass | @@ -109,10 +109,10 @@ AIR302_args.py:46:6: AIR302 [*] `schedule_interval` is removed in Airflow 3.0 48 48 | pass 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()) - | ^^^^^^^^^ AIR302 + | ^^^^^^^^^ AIR301 52 | def decorator_timetable(): 53 | pass | @@ -128,20 +128,20 @@ AIR302_args.py:51:6: AIR302 [*] `timetable` is removed in Airflow 3.0 53 53 | pass 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) - | ^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^ AIR301 57 | def decorator_sla_callback(): 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(): 63 | trigger_dagrun_op = trigger_dagrun.TriggerDagRunOperator( 64 | task_id="trigger_dagrun_op1", execution_date="2024-12-04" - | ^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^ AIR301 65 | ) 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( 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 | ) 66 | trigger_dagrun_op2 = TriggerDagRunOperator( 67 | task_id="trigger_dagrun_op2", execution_date="2024-12-04" - | ^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^ AIR301 68 | ) | = 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 | 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( 71 | task_id="branch_dt_op", use_task_execution_day=True, task_concurrency=5 - | ^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^ AIR301 72 | ) 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( 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( 71 | task_id="branch_dt_op", use_task_execution_day=True, task_concurrency=5 - | ^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^ AIR301 72 | ) 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( 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( 74 | task_id="branch_dt_op2", 75 | use_task_execution_day=True, - | ^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^ AIR301 76 | sla=timedelta(seconds=10), 77 | ) | @@ -238,57 +238,57 @@ AIR302_args.py:75:9: AIR302 [*] `use_task_execution_day` is removed in Airflow 3 77 77 | ) 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", 75 | use_task_execution_day=True, 76 | sla=timedelta(seconds=10), - | ^^^ AIR302 + | ^^^ AIR301 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 98 | S3TaskHandler(filename_template="/tmp/test") - | ^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^ AIR301 99 | HdfsTaskHandler(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 98 | S3TaskHandler(filename_template="/tmp/test") 99 | HdfsTaskHandler(filename_template="/tmp/test") - | ^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^ AIR301 100 | ElasticsearchTaskHandler(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") 99 | HdfsTaskHandler(filename_template="/tmp/test") 100 | ElasticsearchTaskHandler(filename_template="/tmp/test") - | ^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^ AIR301 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") 100 | ElasticsearchTaskHandler(filename_template="/tmp/test") 101 | GCSTaskHandler(filename_template="/tmp/test") - | ^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^ AIR301 102 | 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") 102 | 103 | FabAuthManager(None) - | ^^^^^^ AIR302 + | ^^^^^^ AIR301 | diff --git a/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302_class_attribute.py.snap b/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR301_AIR301_class_attribute.py.snap similarity index 82% rename from crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302_class_attribute.py.snap rename to crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR301_AIR301_class_attribute.py.snap index 18fb9d67e7..6683fa3177 100644 --- a/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302_class_attribute.py.snap +++ b/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR301_AIR301_class_attribute.py.snap @@ -1,11 +1,11 @@ --- 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 24 | dataset_from_root = DatasetFromRoot() - | ^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^ AIR301 25 | dataset_from_root.iter_datasets() 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() 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 24 | dataset_from_root = DatasetFromRoot() 25 | dataset_from_root.iter_datasets() - | ^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^ AIR301 26 | dataset_from_root.iter_dataset_aliases() | = help: Use `iter_assets` instead @@ -44,12 +44,12 @@ AIR302_class_attribute.py:25:19: AIR302 [*] `iter_datasets` is removed in Airflo 27 27 | 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() 25 | dataset_from_root.iter_datasets() 26 | dataset_from_root.iter_dataset_aliases() - | ^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^ AIR301 27 | 28 | # airflow.datasets | @@ -65,11 +65,11 @@ AIR302_class_attribute.py:26:19: AIR302 [*] `iter_dataset_aliases` is removed in 28 28 | # airflow.datasets 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 29 | dataset_to_test_method_call = Dataset() - | ^^^^^^^ AIR302 + | ^^^^^^^ AIR301 30 | dataset_to_test_method_call.iter_datasets() 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() 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 29 | dataset_to_test_method_call = Dataset() 30 | dataset_to_test_method_call.iter_datasets() - | ^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^ AIR301 31 | dataset_to_test_method_call.iter_dataset_aliases() | = help: Use `iter_assets` instead @@ -113,12 +113,12 @@ AIR302_class_attribute.py:30:29: AIR302 [*] `iter_datasets` is removed in Airflo 32 32 | 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() 30 | dataset_to_test_method_call.iter_datasets() 31 | dataset_to_test_method_call.iter_dataset_aliases() - | ^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^ AIR301 32 | 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() 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() 32 | 33 | alias_to_test_method_call = DatasetAlias() - | ^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^ AIR301 34 | alias_to_test_method_call.iter_datasets() 35 | alias_to_test_method_call.iter_dataset_aliases() | = 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() 34 | alias_to_test_method_call.iter_datasets() - | ^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^ AIR301 35 | alias_to_test_method_call.iter_dataset_aliases() | = help: Use `iter_assets` instead @@ -164,12 +164,12 @@ AIR302_class_attribute.py:34:27: AIR302 [*] `iter_datasets` is removed in Airflo 36 36 | 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() 34 | alias_to_test_method_call.iter_datasets() 35 | alias_to_test_method_call.iter_dataset_aliases() - | ^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^ AIR301 36 | 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() 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() 36 | 37 | any_to_test_method_call = DatasetAny() - | ^^^^^^^^^^ AIR302 + | ^^^^^^^^^^ AIR301 38 | any_to_test_method_call.iter_datasets() 39 | any_to_test_method_call.iter_dataset_aliases() | = 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() 38 | any_to_test_method_call.iter_datasets() - | ^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^ AIR301 39 | any_to_test_method_call.iter_dataset_aliases() | = help: Use `iter_assets` instead @@ -215,12 +215,12 @@ AIR302_class_attribute.py:38:25: AIR302 [*] `iter_datasets` is removed in Airflo 40 40 | 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() 38 | any_to_test_method_call.iter_datasets() 39 | any_to_test_method_call.iter_dataset_aliases() - | ^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^ AIR301 40 | 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 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 42 | dm = DatasetManager() - | ^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^ AIR301 43 | dm.register_dataset_change() 44 | dm.create_datasets() | = 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 42 | dm = DatasetManager() 43 | dm.register_dataset_change() - | ^^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^^ AIR301 44 | dm.create_datasets() 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() 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() 43 | dm.register_dataset_change() 44 | dm.create_datasets() - | ^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^ AIR301 45 | dm.notify_dataset_created() 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() 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() 44 | dm.create_datasets() 45 | dm.notify_dataset_created() - | ^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^ AIR301 46 | dm.notify_dataset_changed() 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() 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() 45 | dm.notify_dataset_created() 46 | dm.notify_dataset_changed() - | ^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^ AIR301 47 | dm.notify_dataset_alias_created() | = 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 | 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() 46 | dm.notify_dataset_changed() 47 | dm.notify_dataset_alias_created() - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR301 48 | 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 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 50 | dl_info = DatasetLineageInfo() - | ^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^ AIR301 51 | dl_info.dataset | = 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 50 | dl_info = DatasetLineageInfo() 51 | dl_info.dataset - | ^^^^^^^ AIR302 + | ^^^^^^^ AIR301 52 | 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() 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() 54 | hlc.create_dataset() - | ^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^ AIR301 55 | hlc.add_input_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() 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() 54 | hlc.create_dataset() 55 | hlc.add_input_dataset() - | ^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^ AIR301 56 | hlc.add_output_dataset() 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() 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() 55 | hlc.add_input_dataset() 56 | hlc.add_output_dataset() - | ^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^ AIR301 57 | hlc.collected_datasets() | = 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 | 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() 56 | hlc.add_output_dataset() 57 | hlc.collected_datasets() - | ^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^ AIR301 58 | 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 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 60 | aam = AwsAuthManager() 61 | aam.is_authorized_dataset() - | ^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^ AIR301 62 | 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 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 72 | csm_backend = CloudSecretManagerBackend() 73 | csm_backend.get_conn_uri() - | ^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^ AIR301 74 | csm_backend.get_connections() | = 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 | 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() 73 | csm_backend.get_conn_uri() 74 | csm_backend.get_connections() - | ^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^ AIR301 75 | 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 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 77 | vault_backend = VaultBackend() 78 | vault_backend.get_conn_uri() - | ^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^ AIR301 79 | vault_backend.get_connections() | = 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 | 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() 78 | vault_backend.get_conn_uri() 79 | vault_backend.get_connections() - | ^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^ AIR301 80 | 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() 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() 86 | pm.initialize_providers_asset_uri_resources() 87 | pm.dataset_factories - | ^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^ AIR301 88 | pm.dataset_factories 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 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() 87 | pm.dataset_factories 88 | pm.dataset_factories - | ^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^ AIR301 89 | pm.dataset_uri_handlers 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 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 88 | pm.dataset_factories 89 | pm.dataset_uri_handlers - | ^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^ AIR301 90 | pm.dataset_to_openlineage_converters | = 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 | 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 89 | pm.dataset_uri_handlers 90 | pm.dataset_to_openlineage_converters - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR301 91 | 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 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 93 | base_secret_backend = BaseSecretsBackend() 94 | base_secret_backend.get_conn_uri() - | ^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^ AIR301 95 | base_secret_backend.get_connections() | = 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 | 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() 94 | base_secret_backend.get_conn_uri() 95 | base_secret_backend.get_connections() - | ^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^ AIR301 96 | 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 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 98 | lfb = LocalFilesystemBackend() 99 | lfb.get_connections() - | ^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^ AIR301 | = help: Use `get_connection` instead diff --git a/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302_context.py.snap b/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR301_AIR301_context.py.snap similarity index 72% rename from crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302_context.py.snap rename to crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR301_AIR301_context.py.snap index 84332e02b0..2e6f189311 100644 --- a/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302_context.py.snap +++ b/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR301_AIR301_context.py.snap @@ -1,307 +1,306 @@ --- 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 21 | def access_invalid_key_task_out_of_dag(**context): 22 | print("access invalid key", context["conf"]) - | ^^^^^^ AIR302 + | ^^^^^^ AIR301 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): 22 | print("access invalid key", context["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 27 | def access_invalid_argument_task_out_of_dag( 28 | execution_date, tomorrow_ds, logical_date, **context - | ^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^ AIR301 29 | ): 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 27 | def access_invalid_argument_task_out_of_dag( 28 | execution_date, tomorrow_ds, logical_date, **context - | ^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^ AIR301 29 | ): 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 | ): 30 | print("execution date", execution_date) 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 40 | execution_date = context["execution_date"] - | ^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^ AIR301 41 | next_ds = context["next_ds"] 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 40 | execution_date = context["execution_date"] 41 | next_ds = context["next_ds"] - | ^^^^^^^^^ AIR302 + | ^^^^^^^^^ AIR301 42 | next_ds_nodash = context["next_ds_nodash"] 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"] 41 | next_ds = context["next_ds"] 42 | next_ds_nodash = context["next_ds_nodash"] - | ^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^ AIR301 43 | next_execution_date = context["next_execution_date"] 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"] 42 | next_ds_nodash = context["next_ds_nodash"] 43 | next_execution_date = context["next_execution_date"] - | ^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^ AIR301 44 | prev_ds = context["prev_ds"] 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"] 43 | next_execution_date = context["next_execution_date"] 44 | prev_ds = context["prev_ds"] - | ^^^^^^^^^ AIR302 + | ^^^^^^^^^ AIR301 45 | prev_ds_nodash = context["prev_ds_nodash"] 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"] 44 | prev_ds = context["prev_ds"] 45 | prev_ds_nodash = context["prev_ds_nodash"] - | ^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^ AIR301 46 | prev_execution_date = context["prev_execution_date"] 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"] 45 | prev_ds_nodash = context["prev_ds_nodash"] 46 | prev_execution_date = context["prev_execution_date"] - | ^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^ AIR301 47 | prev_execution_date_success = context["prev_execution_date_success"] 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"] 46 | prev_execution_date = context["prev_execution_date"] 47 | prev_execution_date_success = context["prev_execution_date_success"] - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR301 48 | tomorrow_ds = context["tomorrow_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"] 47 | prev_execution_date_success = context["prev_execution_date_success"] 48 | tomorrow_ds = context["tomorrow_ds"] - | ^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^ AIR301 49 | yesterday_ds = context["yesterday_ds"] 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"] 48 | tomorrow_ds = context["tomorrow_ds"] 49 | yesterday_ds = context["yesterday_ds"] - | ^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^ AIR301 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"] 49 | yesterday_ds = context["yesterday_ds"] 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(): 55 | context = get_current_context() 56 | execution_date = context["execution_date"] - | ^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^ AIR301 57 | next_ds = context["next_ds"] 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() 56 | execution_date = context["execution_date"] 57 | next_ds = context["next_ds"] - | ^^^^^^^^^ AIR302 + | ^^^^^^^^^ AIR301 58 | next_ds_nodash = context["next_ds_nodash"] 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"] 57 | next_ds = context["next_ds"] 58 | next_ds_nodash = context["next_ds_nodash"] - | ^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^ AIR301 59 | next_execution_date = context["next_execution_date"] 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"] 58 | next_ds_nodash = context["next_ds_nodash"] 59 | next_execution_date = context["next_execution_date"] - | ^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^ AIR301 60 | prev_ds = context["prev_ds"] 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"] 59 | next_execution_date = context["next_execution_date"] 60 | prev_ds = context["prev_ds"] - | ^^^^^^^^^ AIR302 + | ^^^^^^^^^ AIR301 61 | prev_ds_nodash = context["prev_ds_nodash"] 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"] 60 | prev_ds = context["prev_ds"] 61 | prev_ds_nodash = context["prev_ds_nodash"] - | ^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^ AIR301 62 | prev_execution_date = context["prev_execution_date"] 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"] 61 | prev_ds_nodash = context["prev_ds_nodash"] 62 | prev_execution_date = context["prev_execution_date"] - | ^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^ AIR301 63 | prev_execution_date_success = context["prev_execution_date_success"] 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"] 62 | prev_execution_date = context["prev_execution_date"] 63 | prev_execution_date_success = context["prev_execution_date_success"] - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR301 64 | tomorrow_ds = context["tomorrow_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"] 63 | prev_execution_date_success = context["prev_execution_date_success"] 64 | tomorrow_ds = context["tomorrow_ds"] - | ^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^ AIR301 65 | yesterday_ds = context["yesterday_ds"] 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"] 64 | tomorrow_ds = context["tomorrow_ds"] 65 | yesterday_ds = context["yesterday_ds"] - | ^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^ AIR301 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"] 65 | yesterday_ds = context["yesterday_ds"] 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.""" 72 | print(ds) 73 | print(kwargs.get("tomorrow_ds")) - | ^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^ AIR301 74 | c = get_current_context() 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")) 74 | c = get_current_context() 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() 86 | def access_invalid_key_task(**context): 87 | print("access invalid key", context.get("conf")) - | ^^^^^^ AIR302 + | ^^^^^^ AIR301 88 | 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() 90 | def access_invalid_key_explicit_task(execution_date): - | ^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^ AIR301 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( 110 | dag_id="example_dag", 111 | schedule_interval="@daily", - | ^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^ AIR301 112 | start_date=datetime(2023, 1, 1), 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"], 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"], 114 | ) as dag: 115 | task1 = DummyOperator( - | ^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^ AIR301 116 | task_id="task1", 117 | params={ | = 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): 135 | def execute(self, next_ds, context): - | ^^^^^^^ AIR302 + | ^^^^^^^ AIR301 136 | execution_date = context["execution_date"] 137 | next_ds = context["next_ds"] | diff --git a/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302_names.py.snap b/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR301_AIR301_names.py.snap similarity index 71% rename from crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302_names.py.snap rename to crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR301_AIR301_names.py.snap index 9199ee09b0..5c5e4c3f6e 100644 --- a/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302_names.py.snap +++ b/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR301_AIR301_names.py.snap @@ -1,75 +1,75 @@ --- source: crates/ruff_linter/src/rules/airflow/mod.rs --- -AIR302_names.py:121:1: AIR302 `airflow.PY36` is removed in Airflow 3.0 +AIR301_names.py:121:1: AIR301 `airflow.PY36` is removed in Airflow 3.0 | 120 | # airflow root 121 | PY36, PY37, PY38, PY39, PY310, PY311, PY312 - | ^^^^ AIR302 + | ^^^^ AIR301 122 | DatasetFromRoot() | = help: Use `sys.version_info` instead -AIR302_names.py:121:7: AIR302 `airflow.PY37` is removed in Airflow 3.0 +AIR301_names.py:121:7: AIR301 `airflow.PY37` is removed in Airflow 3.0 | 120 | # airflow root 121 | PY36, PY37, PY38, PY39, PY310, PY311, PY312 - | ^^^^ AIR302 + | ^^^^ AIR301 122 | DatasetFromRoot() | = help: Use `sys.version_info` instead -AIR302_names.py:121:13: AIR302 `airflow.PY38` is removed in Airflow 3.0 +AIR301_names.py:121:13: AIR301 `airflow.PY38` is removed in Airflow 3.0 | 120 | # airflow root 121 | PY36, PY37, PY38, PY39, PY310, PY311, PY312 - | ^^^^ AIR302 + | ^^^^ AIR301 122 | DatasetFromRoot() | = help: Use `sys.version_info` instead -AIR302_names.py:121:19: AIR302 `airflow.PY39` is removed in Airflow 3.0 +AIR301_names.py:121:19: AIR301 `airflow.PY39` is removed in Airflow 3.0 | 120 | # airflow root 121 | PY36, PY37, PY38, PY39, PY310, PY311, PY312 - | ^^^^ AIR302 + | ^^^^ AIR301 122 | DatasetFromRoot() | = help: Use `sys.version_info` instead -AIR302_names.py:121:25: AIR302 `airflow.PY310` is removed in Airflow 3.0 +AIR301_names.py:121:25: AIR301 `airflow.PY310` is removed in Airflow 3.0 | 120 | # airflow root 121 | PY36, PY37, PY38, PY39, PY310, PY311, PY312 - | ^^^^^ AIR302 + | ^^^^^ AIR301 122 | DatasetFromRoot() | = help: Use `sys.version_info` instead -AIR302_names.py:121:32: AIR302 `airflow.PY311` is removed in Airflow 3.0 +AIR301_names.py:121:32: AIR301 `airflow.PY311` is removed in Airflow 3.0 | 120 | # airflow root 121 | PY36, PY37, PY38, PY39, PY310, PY311, PY312 - | ^^^^^ AIR302 + | ^^^^^ AIR301 122 | DatasetFromRoot() | = help: Use `sys.version_info` instead -AIR302_names.py:121:39: AIR302 `airflow.PY312` is removed in Airflow 3.0 +AIR301_names.py:121:39: AIR301 `airflow.PY312` is removed in Airflow 3.0 | 120 | # airflow root 121 | PY36, PY37, PY38, PY39, PY310, PY311, PY312 - | ^^^^^ AIR302 + | ^^^^^ AIR301 122 | DatasetFromRoot() | = help: Use `sys.version_info` instead -AIR302_names.py:122:1: AIR302 [*] `airflow.Dataset` is removed in Airflow 3.0 +AIR301_names.py:122:1: AIR301 [*] `airflow.Dataset` is removed in Airflow 3.0 | 120 | # airflow root 121 | PY36, PY37, PY38, PY39, PY310, PY311, PY312 122 | DatasetFromRoot() - | ^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^ AIR301 123 | 124 | # airflow.api_connexion.security | @@ -89,21 +89,21 @@ AIR302_names.py:122:1: AIR302 [*] `airflow.Dataset` is removed in Airflow 3.0 124 125 | # airflow.api_connexion.security 125 126 | requires_access, requires_access_dataset -AIR302_names.py:125:1: AIR302 `airflow.api_connexion.security.requires_access` is removed in Airflow 3.0 +AIR301_names.py:125:1: AIR301 `airflow.api_connexion.security.requires_access` is removed in Airflow 3.0 | 124 | # airflow.api_connexion.security 125 | requires_access, requires_access_dataset - | ^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^ AIR301 126 | 127 | # airflow.auth.managers | = help: Use `airflow.api_connexion.security.requires_access_*` instead -AIR302_names.py:125:18: AIR302 [*] `airflow.api_connexion.security.requires_access_dataset` is removed in Airflow 3.0 +AIR301_names.py:125:18: AIR301 [*] `airflow.api_connexion.security.requires_access_dataset` is removed in Airflow 3.0 | 124 | # airflow.api_connexion.security 125 | requires_access, requires_access_dataset - | ^^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^^ AIR301 126 | 127 | # airflow.auth.managers | @@ -128,104 +128,104 @@ AIR302_names.py:125:18: AIR302 [*] `airflow.api_connexion.security.requires_acce 127 127 | # airflow.auth.managers 128 128 | is_authorized_dataset -AIR302_names.py:128:1: AIR302 `airflow.auth.managers.base_auth_manager.is_authorized_dataset` is removed in Airflow 3.0 +AIR301_names.py:128:1: AIR301 `airflow.auth.managers.base_auth_manager.is_authorized_dataset` is removed in Airflow 3.0 | 127 | # airflow.auth.managers 128 | is_authorized_dataset - | ^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^ AIR301 129 | DatasetDetails() | = help: Use `airflow.api_fastapi.auth.managers.base_auth_manager.is_authorized_asset` instead -AIR302_names.py:129:1: AIR302 `airflow.auth.managers.models.resource_details.DatasetDetails` is removed in Airflow 3.0 +AIR301_names.py:129:1: AIR301 `airflow.auth.managers.models.resource_details.DatasetDetails` is removed in Airflow 3.0 | 127 | # airflow.auth.managers 128 | is_authorized_dataset 129 | DatasetDetails() - | ^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^ AIR301 130 | 131 | # airflow.configuration | = help: Use `airflow.api_fastapi.auth.managers.models.resource_details.AssetDetails` instead -AIR302_names.py:132:1: AIR302 `airflow.configuration.get` is removed in Airflow 3.0 +AIR301_names.py:132:1: AIR301 `airflow.configuration.get` is removed in Airflow 3.0 | 131 | # airflow.configuration 132 | get, getboolean, getfloat, getint, has_option, remove_option, as_dict, set - | ^^^ AIR302 + | ^^^ AIR301 | = help: Use `airflow.configuration.conf.get` instead -AIR302_names.py:132:6: AIR302 `airflow.configuration.getboolean` is removed in Airflow 3.0 +AIR301_names.py:132:6: AIR301 `airflow.configuration.getboolean` is removed in Airflow 3.0 | 131 | # airflow.configuration 132 | get, getboolean, getfloat, getint, has_option, remove_option, as_dict, set - | ^^^^^^^^^^ AIR302 + | ^^^^^^^^^^ AIR301 | = help: Use `airflow.configuration.conf.getboolean` instead -AIR302_names.py:132:18: AIR302 `airflow.configuration.getfloat` is removed in Airflow 3.0 +AIR301_names.py:132:18: AIR301 `airflow.configuration.getfloat` is removed in Airflow 3.0 | 131 | # airflow.configuration 132 | get, getboolean, getfloat, getint, has_option, remove_option, as_dict, set - | ^^^^^^^^ AIR302 + | ^^^^^^^^ AIR301 | = help: Use `airflow.configuration.conf.getfloat` instead -AIR302_names.py:132:28: AIR302 `airflow.configuration.getint` is removed in Airflow 3.0 +AIR301_names.py:132:28: AIR301 `airflow.configuration.getint` is removed in Airflow 3.0 | 131 | # airflow.configuration 132 | get, getboolean, getfloat, getint, has_option, remove_option, as_dict, set - | ^^^^^^ AIR302 + | ^^^^^^ AIR301 | = help: Use `airflow.configuration.conf.getint` instead -AIR302_names.py:132:36: AIR302 `airflow.configuration.has_option` is removed in Airflow 3.0 +AIR301_names.py:132:36: AIR301 `airflow.configuration.has_option` is removed in Airflow 3.0 | 131 | # airflow.configuration 132 | get, getboolean, getfloat, getint, has_option, remove_option, as_dict, set - | ^^^^^^^^^^ AIR302 + | ^^^^^^^^^^ AIR301 | = help: Use `airflow.configuration.conf.has_option` instead -AIR302_names.py:132:48: AIR302 `airflow.configuration.remove_option` is removed in Airflow 3.0 +AIR301_names.py:132:48: AIR301 `airflow.configuration.remove_option` is removed in Airflow 3.0 | 131 | # airflow.configuration 132 | get, getboolean, getfloat, getint, has_option, remove_option, as_dict, set - | ^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^ AIR301 | = help: Use `airflow.configuration.conf.remove_option` instead -AIR302_names.py:132:63: AIR302 `airflow.configuration.as_dict` is removed in Airflow 3.0 +AIR301_names.py:132:63: AIR301 `airflow.configuration.as_dict` is removed in Airflow 3.0 | 131 | # airflow.configuration 132 | get, getboolean, getfloat, getint, has_option, remove_option, as_dict, set - | ^^^^^^^ AIR302 + | ^^^^^^^ AIR301 | = help: Use `airflow.configuration.conf.as_dict` instead -AIR302_names.py:132:72: AIR302 `airflow.configuration.set` is removed in Airflow 3.0 +AIR301_names.py:132:72: AIR301 `airflow.configuration.set` is removed in Airflow 3.0 | 131 | # airflow.configuration 132 | get, getboolean, getfloat, getint, has_option, remove_option, as_dict, set - | ^^^ AIR302 + | ^^^ AIR301 | = help: Use `airflow.configuration.conf.set` instead -AIR302_names.py:136:1: AIR302 `airflow.contrib.aws_athena_hook.AWSAthenaHook` is removed in Airflow 3.0; The whole `airflow.contrib` module has been removed. +AIR301_names.py:136:1: AIR301 `airflow.contrib.aws_athena_hook.AWSAthenaHook` is removed in Airflow 3.0; The whole `airflow.contrib` module has been removed. | 135 | # airflow.contrib.* 136 | AWSAthenaHook() - | ^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^ AIR301 137 | 138 | # airflow.datasets | -AIR302_names.py:139:1: AIR302 [*] `airflow.datasets.Dataset` is removed in Airflow 3.0 +AIR301_names.py:139:1: AIR301 [*] `airflow.datasets.Dataset` is removed in Airflow 3.0 | 138 | # airflow.datasets 139 | Dataset() - | ^^^^^^^ AIR302 + | ^^^^^^^ AIR301 140 | DatasetAlias() 141 | DatasetAliasEvent() | @@ -249,891 +249,891 @@ AIR302_names.py:139:1: AIR302 [*] `airflow.datasets.Dataset` is removed in Airfl 141 142 | DatasetAliasEvent() 142 143 | DatasetAll() -AIR302_names.py:140:1: AIR302 `airflow.datasets.DatasetAlias` is removed in Airflow 3.0 +AIR301_names.py:140:1: AIR301 `airflow.datasets.DatasetAlias` is removed in Airflow 3.0 | 138 | # airflow.datasets 139 | Dataset() 140 | DatasetAlias() - | ^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^ AIR301 141 | DatasetAliasEvent() 142 | DatasetAll() | = help: Use `airflow.sdk.AssetAlias` instead -AIR302_names.py:141:1: AIR302 `airflow.datasets.DatasetAliasEvent` is removed in Airflow 3.0 +AIR301_names.py:141:1: AIR301 `airflow.datasets.DatasetAliasEvent` is removed in Airflow 3.0 | 139 | Dataset() 140 | DatasetAlias() 141 | DatasetAliasEvent() - | ^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^ AIR301 142 | DatasetAll() 143 | DatasetAny() | -AIR302_names.py:142:1: AIR302 `airflow.datasets.DatasetAll` is removed in Airflow 3.0 +AIR301_names.py:142:1: AIR301 `airflow.datasets.DatasetAll` is removed in Airflow 3.0 | 140 | DatasetAlias() 141 | DatasetAliasEvent() 142 | DatasetAll() - | ^^^^^^^^^^ AIR302 + | ^^^^^^^^^^ AIR301 143 | DatasetAny() 144 | Metadata() | = help: Use `airflow.sdk.AssetAll` instead -AIR302_names.py:143:1: AIR302 `airflow.datasets.DatasetAny` is removed in Airflow 3.0 +AIR301_names.py:143:1: AIR301 `airflow.datasets.DatasetAny` is removed in Airflow 3.0 | 141 | DatasetAliasEvent() 142 | DatasetAll() 143 | DatasetAny() - | ^^^^^^^^^^ AIR302 + | ^^^^^^^^^^ AIR301 144 | Metadata() 145 | expand_alias_to_datasets | = help: Use `airflow.sdk.AssetAny` instead -AIR302_names.py:144:1: AIR302 `airflow.datasets.metadata.Metadata` is removed in Airflow 3.0 +AIR301_names.py:144:1: AIR301 `airflow.datasets.metadata.Metadata` is removed in Airflow 3.0 | 142 | DatasetAll() 143 | DatasetAny() 144 | Metadata() - | ^^^^^^^^ AIR302 + | ^^^^^^^^ AIR301 145 | expand_alias_to_datasets | = help: Use `airflow.sdk.Metadata` instead -AIR302_names.py:145:1: AIR302 `airflow.datasets.expand_alias_to_datasets` is removed in Airflow 3.0 +AIR301_names.py:145:1: AIR301 `airflow.datasets.expand_alias_to_datasets` is removed in Airflow 3.0 | 143 | DatasetAny() 144 | Metadata() 145 | expand_alias_to_datasets - | ^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^^^ AIR301 146 | 147 | # airflow.datasets.manager | = help: Use `airflow.sdk.expand_alias_to_assets` instead -AIR302_names.py:148:1: AIR302 `airflow.datasets.manager.DatasetManager` is removed in Airflow 3.0 +AIR301_names.py:148:1: AIR301 `airflow.datasets.manager.DatasetManager` is removed in Airflow 3.0 | 147 | # airflow.datasets.manager 148 | DatasetManager() - | ^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^ AIR301 149 | dataset_manager 150 | resolve_dataset_manager | = help: Use `airflow.assets.AssetManager` instead -AIR302_names.py:149:1: AIR302 `airflow.datasets.manager.dataset_manager` is removed in Airflow 3.0 +AIR301_names.py:149:1: AIR301 `airflow.datasets.manager.dataset_manager` is removed in Airflow 3.0 | 147 | # airflow.datasets.manager 148 | DatasetManager() 149 | dataset_manager - | ^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^ AIR301 150 | resolve_dataset_manager | = help: Use `airflow.assets.manager.asset_manager` instead -AIR302_names.py:150:1: AIR302 `airflow.datasets.manager.resolve_dataset_manager` is removed in Airflow 3.0 +AIR301_names.py:150:1: AIR301 `airflow.datasets.manager.resolve_dataset_manager` is removed in Airflow 3.0 | 148 | DatasetManager() 149 | dataset_manager 150 | resolve_dataset_manager - | ^^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^^ AIR301 151 | 152 | # airflow.hooks | = help: Use `airflow.assets.resolve_asset_manager` instead -AIR302_names.py:153:1: AIR302 `airflow.hooks.base_hook.BaseHook` is removed in Airflow 3.0 +AIR301_names.py:153:1: AIR301 `airflow.hooks.base_hook.BaseHook` is removed in Airflow 3.0 | 152 | # airflow.hooks 153 | BaseHook() - | ^^^^^^^^ AIR302 + | ^^^^^^^^ AIR301 154 | 155 | # airflow.lineage.hook | = help: Use `airflow.hooks.base.BaseHook` instead -AIR302_names.py:156:1: AIR302 `airflow.lineage.hook.DatasetLineageInfo` is removed in Airflow 3.0 +AIR301_names.py:156:1: AIR301 `airflow.lineage.hook.DatasetLineageInfo` is removed in Airflow 3.0 | 155 | # airflow.lineage.hook 156 | DatasetLineageInfo() - | ^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^ AIR301 157 | 158 | # airflow.listeners.spec.dataset | = help: Use `airflow.lineage.hook.AssetLineageInfo` instead -AIR302_names.py:159:1: AIR302 `airflow.listeners.spec.dataset.on_dataset_changed` is removed in Airflow 3.0 +AIR301_names.py:159:1: AIR301 `airflow.listeners.spec.dataset.on_dataset_changed` is removed in Airflow 3.0 | 158 | # airflow.listeners.spec.dataset 159 | on_dataset_changed - | ^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^ AIR301 160 | on_dataset_created | = help: Use `airflow.listeners.spec.asset.on_asset_changed` instead -AIR302_names.py:160:1: AIR302 `airflow.listeners.spec.dataset.on_dataset_created` is removed in Airflow 3.0 +AIR301_names.py:160:1: AIR301 `airflow.listeners.spec.dataset.on_dataset_created` is removed in Airflow 3.0 | 158 | # airflow.listeners.spec.dataset 159 | on_dataset_changed 160 | on_dataset_created - | ^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^ AIR301 161 | 162 | # airflow.metrics.validators | = help: Use `airflow.listeners.spec.asset.on_asset_created` instead -AIR302_names.py:163:1: AIR302 `airflow.metrics.validators.AllowListValidator` is removed in Airflow 3.0 +AIR301_names.py:163:1: AIR301 `airflow.metrics.validators.AllowListValidator` is removed in Airflow 3.0 | 162 | # airflow.metrics.validators 163 | AllowListValidator() - | ^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^ AIR301 164 | BlockListValidator() | = help: Use `airflow.metrics.validators.PatternAllowListValidator` instead -AIR302_names.py:164:1: AIR302 `airflow.metrics.validators.BlockListValidator` is removed in Airflow 3.0 +AIR301_names.py:164:1: AIR301 `airflow.metrics.validators.BlockListValidator` is removed in Airflow 3.0 | 162 | # airflow.metrics.validators 163 | AllowListValidator() 164 | BlockListValidator() - | ^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^ AIR301 | = help: Use `airflow.metrics.validators.PatternBlockListValidator` instead -AIR302_names.py:168:1: AIR302 `airflow.models.baseoperator.chain` is removed in Airflow 3.0 +AIR301_names.py:168:1: AIR301 `airflow.models.baseoperator.chain` is removed in Airflow 3.0 | 167 | # airflow.models.baseoperator 168 | chain, chain_linear, cross_downstream - | ^^^^^ AIR302 + | ^^^^^ AIR301 169 | 170 | # airflow.models.baseoperatorlink | = help: Use `airflow.sdk.chain` instead -AIR302_names.py:168:8: AIR302 `airflow.models.baseoperator.chain_linear` is removed in Airflow 3.0 +AIR301_names.py:168:8: AIR301 `airflow.models.baseoperator.chain_linear` is removed in Airflow 3.0 | 167 | # airflow.models.baseoperator 168 | chain, chain_linear, cross_downstream - | ^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^ AIR301 169 | 170 | # airflow.models.baseoperatorlink | = help: Use `airflow.sdk.chain_linear` instead -AIR302_names.py:168:22: AIR302 `airflow.models.baseoperator.cross_downstream` is removed in Airflow 3.0 +AIR301_names.py:168:22: AIR301 `airflow.models.baseoperator.cross_downstream` is removed in Airflow 3.0 | 167 | # airflow.models.baseoperator 168 | chain, chain_linear, cross_downstream - | ^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^ AIR301 169 | 170 | # airflow.models.baseoperatorlink | = help: Use `airflow.sdk.cross_downstream` instead -AIR302_names.py:171:1: AIR302 `airflow.models.baseoperatorlink.BaseOperatorLink` is removed in Airflow 3.0 +AIR301_names.py:171:1: AIR301 `airflow.models.baseoperatorlink.BaseOperatorLink` is removed in Airflow 3.0 | 170 | # airflow.models.baseoperatorlink 171 | BaseOperatorLink() - | ^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^ AIR301 172 | 173 | # ariflow.notifications.basenotifier | = help: Use `airflow.sdk.definitions.baseoperatorlink.BaseOperatorLink` instead -AIR302_names.py:174:1: AIR302 `airflow.notifications.basenotifier.BaseNotifier` is removed in Airflow 3.0 +AIR301_names.py:174:1: AIR301 `airflow.notifications.basenotifier.BaseNotifier` is removed in Airflow 3.0 | 173 | # ariflow.notifications.basenotifier 174 | BaseNotifier() - | ^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^ AIR301 175 | 176 | # airflow.operators.dummy | = help: Use `airflow.sdk.BaseNotifier` instead -AIR302_names.py:177:1: AIR302 `airflow.operators.dummy.EmptyOperator` is removed in Airflow 3.0 +AIR301_names.py:177:1: AIR301 `airflow.operators.dummy.EmptyOperator` is removed in Airflow 3.0 | 176 | # airflow.operators.dummy 177 | EmptyOperator() - | ^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^ AIR301 178 | DummyOperator() | = help: Use `airflow.operators.empty.EmptyOperator` instead -AIR302_names.py:178:1: AIR302 `airflow.operators.dummy.DummyOperator` is removed in Airflow 3.0 +AIR301_names.py:178:1: AIR301 `airflow.operators.dummy.DummyOperator` is removed in Airflow 3.0 | 176 | # airflow.operators.dummy 177 | EmptyOperator() 178 | DummyOperator() - | ^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^ AIR301 179 | 180 | # airflow.operators.dummy_operator | = help: Use `airflow.operators.empty.EmptyOperator` instead -AIR302_names.py:181:16: AIR302 `airflow.operators.dummy_operator.EmptyOperator` is removed in Airflow 3.0 +AIR301_names.py:181:16: AIR301 `airflow.operators.dummy_operator.EmptyOperator` is removed in Airflow 3.0 | 180 | # airflow.operators.dummy_operator 181 | dummy_operator.EmptyOperator() - | ^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^ AIR301 182 | dummy_operator.DummyOperator() | = help: Use `airflow.operators.empty.EmptyOperator` instead -AIR302_names.py:182:16: AIR302 `airflow.operators.dummy_operator.DummyOperator` is removed in Airflow 3.0 +AIR301_names.py:182:16: AIR301 `airflow.operators.dummy_operator.DummyOperator` is removed in Airflow 3.0 | 180 | # airflow.operators.dummy_operator 181 | dummy_operator.EmptyOperator() 182 | dummy_operator.DummyOperator() - | ^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^ AIR301 183 | 184 | # airflow.operators.branch_operator | = help: Use `airflow.operators.empty.EmptyOperator` instead -AIR302_names.py:185:1: AIR302 `airflow.operators.branch_operator.BaseBranchOperator` is removed in Airflow 3.0 +AIR301_names.py:185:1: AIR301 `airflow.operators.branch_operator.BaseBranchOperator` is removed in Airflow 3.0 | 184 | # airflow.operators.branch_operator 185 | BaseBranchOperator() - | ^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^ AIR301 186 | 187 | # airflow.operators.dagrun_operator | = help: Use `airflow.operators.branch.BaseBranchOperator` instead -AIR302_names.py:188:1: AIR302 `airflow.operators.dagrun_operator.TriggerDagRunLink` is removed in Airflow 3.0 +AIR301_names.py:188:1: AIR301 `airflow.operators.dagrun_operator.TriggerDagRunLink` is removed in Airflow 3.0 | 187 | # airflow.operators.dagrun_operator 188 | TriggerDagRunLink() - | ^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^ AIR301 189 | TriggerDagRunOperator() | = help: Use `airflow.operators.trigger_dagrun.TriggerDagRunLink` instead -AIR302_names.py:189:1: AIR302 `airflow.operators.dagrun_operator.TriggerDagRunOperator` is removed in Airflow 3.0 +AIR301_names.py:189:1: AIR301 `airflow.operators.dagrun_operator.TriggerDagRunOperator` is removed in Airflow 3.0 | 187 | # airflow.operators.dagrun_operator 188 | TriggerDagRunLink() 189 | TriggerDagRunOperator() - | ^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^ AIR301 190 | 191 | # airflow.operators.email_operator | = help: Use `airflow.operators.trigger_dagrun.TriggerDagRunOperator` instead -AIR302_names.py:192:1: AIR302 `airflow.operators.email_operator.EmailOperator` is removed in Airflow 3.0 +AIR301_names.py:192:1: AIR301 `airflow.operators.email_operator.EmailOperator` is removed in Airflow 3.0 | 191 | # airflow.operators.email_operator 192 | EmailOperator() - | ^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^ AIR301 193 | 194 | # airflow.operators.latest_only_operator | = help: Use `airflow.operators.email.EmailOperator` instead -AIR302_names.py:195:1: AIR302 `airflow.operators.latest_only_operator.LatestOnlyOperator` is removed in Airflow 3.0 +AIR301_names.py:195:1: AIR301 `airflow.operators.latest_only_operator.LatestOnlyOperator` is removed in Airflow 3.0 | 194 | # airflow.operators.latest_only_operator 195 | LatestOnlyOperator() - | ^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^ AIR301 196 | 197 | # airflow.operators.python_operator | = help: Use `airflow.operators.latest_only.LatestOnlyOperator` instead -AIR302_names.py:198:1: AIR302 `airflow.operators.python_operator.BranchPythonOperator` is removed in Airflow 3.0 +AIR301_names.py:198:1: AIR301 `airflow.operators.python_operator.BranchPythonOperator` is removed in Airflow 3.0 | 197 | # airflow.operators.python_operator 198 | BranchPythonOperator() - | ^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^ AIR301 199 | PythonOperator() 200 | PythonVirtualenvOperator() | = help: Use `airflow.operators.python.BranchPythonOperator` instead -AIR302_names.py:199:1: AIR302 `airflow.operators.python_operator.PythonOperator` is removed in Airflow 3.0 +AIR301_names.py:199:1: AIR301 `airflow.operators.python_operator.PythonOperator` is removed in Airflow 3.0 | 197 | # airflow.operators.python_operator 198 | BranchPythonOperator() 199 | PythonOperator() - | ^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^ AIR301 200 | PythonVirtualenvOperator() 201 | ShortCircuitOperator() | = help: Use `airflow.operators.python.PythonOperator` instead -AIR302_names.py:200:1: AIR302 `airflow.operators.python_operator.PythonVirtualenvOperator` is removed in Airflow 3.0 +AIR301_names.py:200:1: AIR301 `airflow.operators.python_operator.PythonVirtualenvOperator` is removed in Airflow 3.0 | 198 | BranchPythonOperator() 199 | PythonOperator() 200 | PythonVirtualenvOperator() - | ^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^^^ AIR301 201 | ShortCircuitOperator() | = help: Use `airflow.operators.python.PythonVirtualenvOperator` instead -AIR302_names.py:201:1: AIR302 `airflow.operators.python_operator.ShortCircuitOperator` is removed in Airflow 3.0 +AIR301_names.py:201:1: AIR301 `airflow.operators.python_operator.ShortCircuitOperator` is removed in Airflow 3.0 | 199 | PythonOperator() 200 | PythonVirtualenvOperator() 201 | ShortCircuitOperator() - | ^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^ AIR301 202 | 203 | # airflow.operators.subdag.* | = help: Use `airflow.operators.python.ShortCircuitOperator` instead -AIR302_names.py:204:1: AIR302 `airflow.operators.subdag.SubDagOperator` is removed in Airflow 3.0; The whole `airflow.subdag` module has been removed. +AIR301_names.py:204:1: AIR301 `airflow.operators.subdag.SubDagOperator` is removed in Airflow 3.0; The whole `airflow.subdag` module has been removed. | 203 | # airflow.operators.subdag.* 204 | SubDagOperator() - | ^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^ AIR301 205 | 206 | # airflow.providers.amazon | -AIR302_names.py:207:13: AIR302 `airflow.providers.amazon.aws.auth_manager.avp.entities.AvpEntities.DATASET` is removed in Airflow 3.0 +AIR301_names.py:207:13: AIR301 `airflow.providers.amazon.aws.auth_manager.avp.entities.AvpEntities.DATASET` is removed in Airflow 3.0 | 206 | # airflow.providers.amazon 207 | AvpEntities.DATASET - | ^^^^^^^ AIR302 + | ^^^^^^^ AIR301 208 | s3.create_dataset 209 | s3.convert_dataset_to_openlineage | = help: Use `airflow.providers.amazon.aws.auth_manager.avp.entities.AvpEntities.ASSET` instead -AIR302_names.py:208:4: AIR302 `airflow.providers.amazon.aws.datasets.s3.create_dataset` is removed in Airflow 3.0 +AIR301_names.py:208:4: AIR301 `airflow.providers.amazon.aws.datasets.s3.create_dataset` is removed in Airflow 3.0 | 206 | # airflow.providers.amazon 207 | AvpEntities.DATASET 208 | s3.create_dataset - | ^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^ AIR301 209 | s3.convert_dataset_to_openlineage 210 | s3.sanitize_uri | = help: Use `airflow.providers.amazon.aws.assets.s3.create_asset` instead -AIR302_names.py:209:4: AIR302 `airflow.providers.amazon.aws.datasets.s3.convert_dataset_to_openlineage` is removed in Airflow 3.0 +AIR301_names.py:209:4: AIR301 `airflow.providers.amazon.aws.datasets.s3.convert_dataset_to_openlineage` is removed in Airflow 3.0 | 207 | AvpEntities.DATASET 208 | s3.create_dataset 209 | s3.convert_dataset_to_openlineage - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR301 210 | s3.sanitize_uri | = help: Use `airflow.providers.amazon.aws.assets.s3.convert_asset_to_openlineage` instead -AIR302_names.py:210:4: AIR302 `airflow.providers.amazon.aws.datasets.s3.sanitize_uri` is removed in Airflow 3.0 +AIR301_names.py:210:4: AIR301 `airflow.providers.amazon.aws.datasets.s3.sanitize_uri` is removed in Airflow 3.0 | 208 | s3.create_dataset 209 | s3.convert_dataset_to_openlineage 210 | s3.sanitize_uri - | ^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^ AIR301 211 | 212 | # airflow.providers.common.io | = help: Use `airflow.providers.amazon.aws.assets.s3.sanitize_uri` instead -AIR302_names.py:213:16: AIR302 `airflow.providers.common.io.datasets.file.convert_dataset_to_openlineage` is removed in Airflow 3.0 +AIR301_names.py:213:16: AIR301 `airflow.providers.common.io.datasets.file.convert_dataset_to_openlineage` is removed in Airflow 3.0 | 212 | # airflow.providers.common.io 213 | common_io_file.convert_dataset_to_openlineage - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR301 214 | common_io_file.create_dataset 215 | common_io_file.sanitize_uri | = help: Use `airflow.providers.common.io.assets.file.convert_asset_to_openlineage` instead -AIR302_names.py:214:16: AIR302 `airflow.providers.common.io.datasets.file.create_dataset` is removed in Airflow 3.0 +AIR301_names.py:214:16: AIR301 `airflow.providers.common.io.datasets.file.create_dataset` is removed in Airflow 3.0 | 212 | # airflow.providers.common.io 213 | common_io_file.convert_dataset_to_openlineage 214 | common_io_file.create_dataset - | ^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^ AIR301 215 | common_io_file.sanitize_uri | = help: Use `airflow.providers.common.io.assets.file.create_asset` instead -AIR302_names.py:215:16: AIR302 `airflow.providers.common.io.datasets.file.sanitize_uri` is removed in Airflow 3.0 +AIR301_names.py:215:16: AIR301 `airflow.providers.common.io.datasets.file.sanitize_uri` is removed in Airflow 3.0 | 213 | common_io_file.convert_dataset_to_openlineage 214 | common_io_file.create_dataset 215 | common_io_file.sanitize_uri - | ^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^ AIR301 216 | 217 | # airflow.providers.fab | = help: Use `airflow.providers.common.io.assets.file.sanitize_uri` instead -AIR302_names.py:218:18: AIR302 `airflow.providers.fab.auth_manager.fab_auth_manager.is_authorized_dataset` is removed in Airflow 3.0 +AIR301_names.py:218:18: AIR301 `airflow.providers.fab.auth_manager.fab_auth_manager.is_authorized_dataset` is removed in Airflow 3.0 | 217 | # airflow.providers.fab 218 | fab_auth_manager.is_authorized_dataset - | ^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^ AIR301 219 | 220 | # airflow.providers.google | = help: Use `airflow.providers.fab.auth_manager.fab_auth_manager.is_authorized_asset` instead -AIR302_names.py:223:5: AIR302 `airflow.providers.google.datasets.gcs.create_dataset` is removed in Airflow 3.0 +AIR301_names.py:223:5: AIR301 `airflow.providers.google.datasets.gcs.create_dataset` is removed in Airflow 3.0 | 221 | bigquery.sanitize_uri 222 | 223 | gcs.create_dataset - | ^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^ AIR301 224 | gcs.sanitize_uri 225 | gcs.convert_dataset_to_openlineage | = help: Use `airflow.providers.google.assets.gcs.create_asset` instead -AIR302_names.py:224:5: AIR302 `airflow.providers.google.datasets.gcs.sanitize_uri` is removed in Airflow 3.0 +AIR301_names.py:224:5: AIR301 `airflow.providers.google.datasets.gcs.sanitize_uri` is removed in Airflow 3.0 | 223 | gcs.create_dataset 224 | gcs.sanitize_uri - | ^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^ AIR301 225 | gcs.convert_dataset_to_openlineage | = help: Use `airflow.providers.google.assets.gcs.sanitize_uri` instead -AIR302_names.py:225:5: AIR302 `airflow.providers.google.datasets.gcs.convert_dataset_to_openlineage` is removed in Airflow 3.0 +AIR301_names.py:225:5: AIR301 `airflow.providers.google.datasets.gcs.convert_dataset_to_openlineage` is removed in Airflow 3.0 | 223 | gcs.create_dataset 224 | gcs.sanitize_uri 225 | gcs.convert_dataset_to_openlineage - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR301 226 | 227 | # airflow.providers.mysql | = help: Use `airflow.providers.google.assets.gcs.convert_asset_to_openlineage` instead -AIR302_names.py:228:7: AIR302 `airflow.providers.mysql.datasets.mysql.sanitize_uri` is removed in Airflow 3.0 +AIR301_names.py:228:7: AIR301 `airflow.providers.mysql.datasets.mysql.sanitize_uri` is removed in Airflow 3.0 | 227 | # airflow.providers.mysql 228 | mysql.sanitize_uri - | ^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^ AIR301 229 | 230 | # airflow.providers.openlineage | = help: Use `airflow.providers.mysql.assets.mysql.sanitize_uri` instead -AIR302_names.py:231:1: AIR302 `airflow.providers.openlineage.utils.utils.DatasetInfo` is removed in Airflow 3.0 +AIR301_names.py:231:1: AIR301 `airflow.providers.openlineage.utils.utils.DatasetInfo` is removed in Airflow 3.0 | 230 | # airflow.providers.openlineage 231 | DatasetInfo() - | ^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^ AIR301 232 | translate_airflow_dataset | = help: Use `airflow.providers.openlineage.utils.utils.AssetInfo` instead -AIR302_names.py:232:1: AIR302 `airflow.providers.openlineage.utils.utils.translate_airflow_dataset` is removed in Airflow 3.0 +AIR301_names.py:232:1: AIR301 `airflow.providers.openlineage.utils.utils.translate_airflow_dataset` is removed in Airflow 3.0 | 230 | # airflow.providers.openlineage 231 | DatasetInfo() 232 | translate_airflow_dataset - | ^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^^^^ AIR301 233 | 234 | # airflow.providers.postgres | = help: Use `airflow.providers.openlineage.utils.utils.translate_airflow_asset` instead -AIR302_names.py:235:10: AIR302 `airflow.providers.postgres.datasets.postgres.sanitize_uri` is removed in Airflow 3.0 +AIR301_names.py:235:10: AIR301 `airflow.providers.postgres.datasets.postgres.sanitize_uri` is removed in Airflow 3.0 | 234 | # airflow.providers.postgres 235 | postgres.sanitize_uri - | ^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^ AIR301 236 | 237 | # airflow.providers.trino | = help: Use `airflow.providers.postgres.assets.postgres.sanitize_uri` instead -AIR302_names.py:238:7: AIR302 `airflow.providers.trino.datasets.trino.sanitize_uri` is removed in Airflow 3.0 +AIR301_names.py:238:7: AIR301 `airflow.providers.trino.datasets.trino.sanitize_uri` is removed in Airflow 3.0 | 237 | # airflow.providers.trino 238 | trino.sanitize_uri - | ^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^ AIR301 239 | 240 | # airflow.secrets | = help: Use `airflow.providers.trino.assets.trino.sanitize_uri` instead -AIR302_names.py:243:1: AIR302 `airflow.secrets.local_filesystem.load_connections` is removed in Airflow 3.0 +AIR301_names.py:243:1: AIR301 `airflow.secrets.local_filesystem.load_connections` is removed in Airflow 3.0 | 241 | # get_connection 242 | LocalFilesystemBackend() 243 | load_connections - | ^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^ AIR301 244 | 245 | # airflow.security.permissions | = help: Use `airflow.secrets.local_filesystem.load_connections_dict` instead -AIR302_names.py:246:1: AIR302 `airflow.security.permissions.RESOURCE_DATASET` is removed in Airflow 3.0 +AIR301_names.py:246:1: AIR301 `airflow.security.permissions.RESOURCE_DATASET` is removed in Airflow 3.0 | 245 | # airflow.security.permissions 246 | RESOURCE_DATASET - | ^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^ AIR301 247 | 248 | # airflow.sensors.base_sensor_operator | = help: Use `airflow.security.permissions.RESOURCE_ASSET` instead -AIR302_names.py:249:1: AIR302 `airflow.sensors.base_sensor_operator.BaseSensorOperator` is removed in Airflow 3.0 +AIR301_names.py:249:1: AIR301 `airflow.sensors.base_sensor_operator.BaseSensorOperator` is removed in Airflow 3.0 | 248 | # airflow.sensors.base_sensor_operator 249 | BaseSensorOperator() - | ^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^ AIR301 250 | 251 | # airflow.sensors.date_time_sensor | = help: Use `airflow.sdk.bases.sensor.BaseSensorOperator` instead -AIR302_names.py:252:1: AIR302 `airflow.sensors.date_time_sensor.DateTimeSensor` is removed in Airflow 3.0 +AIR301_names.py:252:1: AIR301 `airflow.sensors.date_time_sensor.DateTimeSensor` is removed in Airflow 3.0 | 251 | # airflow.sensors.date_time_sensor 252 | DateTimeSensor() - | ^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^ AIR301 253 | 254 | # airflow.sensors.external_task | = help: Use `airflow.sensors.date_time.DateTimeSensor` instead -AIR302_names.py:255:1: AIR302 `airflow.sensors.external_task.ExternalTaskSensorLink` is removed in Airflow 3.0 +AIR301_names.py:255:1: AIR301 `airflow.sensors.external_task.ExternalTaskSensorLink` is removed in Airflow 3.0 | 254 | # airflow.sensors.external_task 255 | ExternalTaskSensorLink() - | ^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^ AIR301 256 | ExternalTaskMarker() 257 | ExternalTaskSensor() | = help: Use `airflow.sensors.external_task.ExternalDagLink` instead -AIR302_names.py:256:1: AIR302 `airflow.sensors.external_task.ExternalTaskMarker` is removed in Airflow 3.0 +AIR301_names.py:256:1: AIR301 `airflow.sensors.external_task.ExternalTaskMarker` is removed in Airflow 3.0 | 254 | # airflow.sensors.external_task 255 | ExternalTaskSensorLink() 256 | ExternalTaskMarker() - | ^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^ AIR301 257 | ExternalTaskSensor() | = help: Use `airflow.sensors.external_task.ExternalTaskMarker` instead -AIR302_names.py:257:1: AIR302 `airflow.sensors.external_task.ExternalTaskSensor` is removed in Airflow 3.0 +AIR301_names.py:257:1: AIR301 `airflow.sensors.external_task.ExternalTaskSensor` is removed in Airflow 3.0 | 255 | ExternalTaskSensorLink() 256 | ExternalTaskMarker() 257 | ExternalTaskSensor() - | ^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^ AIR301 258 | 259 | # airflow.sensors.external_task_sensor | = help: Use `airflow.sensors.external_task.ExternalTaskSensor` instead -AIR302_names.py:260:1: AIR302 `airflow.sensors.external_task_sensor.ExternalTaskMarker` is removed in Airflow 3.0 +AIR301_names.py:260:1: AIR301 `airflow.sensors.external_task_sensor.ExternalTaskMarker` is removed in Airflow 3.0 | 259 | # airflow.sensors.external_task_sensor 260 | ExternalTaskMarkerFromExternalTaskSensor() - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR301 261 | ExternalTaskSensorFromExternalTaskSensor() 262 | ExternalTaskSensorLinkFromExternalTaskSensor() | = help: Use `airflow.sensors.external_task.ExternalTaskMarker` instead -AIR302_names.py:261:1: AIR302 `airflow.sensors.external_task_sensor.ExternalTaskSensor` is removed in Airflow 3.0 +AIR301_names.py:261:1: AIR301 `airflow.sensors.external_task_sensor.ExternalTaskSensor` is removed in Airflow 3.0 | 259 | # airflow.sensors.external_task_sensor 260 | ExternalTaskMarkerFromExternalTaskSensor() 261 | ExternalTaskSensorFromExternalTaskSensor() - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR301 262 | ExternalTaskSensorLinkFromExternalTaskSensor() | = help: Use `airflow.sensors.external_task.ExternalTaskSensor` instead -AIR302_names.py:262:1: AIR302 `airflow.sensors.external_task_sensor.ExternalTaskSensorLink` is removed in Airflow 3.0 +AIR301_names.py:262:1: AIR301 `airflow.sensors.external_task_sensor.ExternalTaskSensorLink` is removed in Airflow 3.0 | 260 | ExternalTaskMarkerFromExternalTaskSensor() 261 | ExternalTaskSensorFromExternalTaskSensor() 262 | ExternalTaskSensorLinkFromExternalTaskSensor() - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR301 263 | 264 | # airflow.sensors.time_delta_sensor | = help: Use `airflow.sensors.external_task.ExternalDagLink` instead -AIR302_names.py:265:1: AIR302 `airflow.sensors.time_delta_sensor.TimeDeltaSensor` is removed in Airflow 3.0 +AIR301_names.py:265:1: AIR301 `airflow.sensors.time_delta_sensor.TimeDeltaSensor` is removed in Airflow 3.0 | 264 | # airflow.sensors.time_delta_sensor 265 | TimeDeltaSensor() - | ^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^ AIR301 266 | 267 | # airflow.timetables | = help: Use `airflow.sensors.time_delta.TimeDeltaSensor` instead -AIR302_names.py:268:1: AIR302 `airflow.timetables.datasets.DatasetOrTimeSchedule` is removed in Airflow 3.0 +AIR301_names.py:268:1: AIR301 `airflow.timetables.datasets.DatasetOrTimeSchedule` is removed in Airflow 3.0 | 267 | # airflow.timetables 268 | DatasetOrTimeSchedule() - | ^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^ AIR301 269 | DatasetTriggeredTimetable() | = help: Use `airflow.timetables.assets.AssetOrTimeSchedule` instead -AIR302_names.py:269:1: AIR302 `airflow.timetables.simple.DatasetTriggeredTimetable` is removed in Airflow 3.0 +AIR301_names.py:269:1: AIR301 `airflow.timetables.simple.DatasetTriggeredTimetable` is removed in Airflow 3.0 | 267 | # airflow.timetables 268 | DatasetOrTimeSchedule() 269 | DatasetTriggeredTimetable() - | ^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^^^^ AIR301 270 | 271 | # airflow.triggers.external_task | = help: Use `airflow.timetables.simple.AssetTriggeredTimetable` instead -AIR302_names.py:272:1: AIR302 `airflow.triggers.external_task.TaskStateTrigger` is removed in Airflow 3.0 +AIR301_names.py:272:1: AIR301 `airflow.triggers.external_task.TaskStateTrigger` is removed in Airflow 3.0 | 271 | # airflow.triggers.external_task 272 | TaskStateTrigger() - | ^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^ AIR301 273 | 274 | # airflow.utils.date | -AIR302_names.py:275:7: AIR302 `airflow.utils.dates.date_range` is removed in Airflow 3.0 +AIR301_names.py:275:7: AIR301 `airflow.utils.dates.date_range` is removed in Airflow 3.0 | 274 | # airflow.utils.date 275 | dates.date_range - | ^^^^^^^^^^ AIR302 + | ^^^^^^^^^^ AIR301 276 | dates.days_ago | -AIR302_names.py:276:7: AIR302 `airflow.utils.dates.days_ago` is removed in Airflow 3.0 +AIR301_names.py:276:7: AIR301 `airflow.utils.dates.days_ago` is removed in Airflow 3.0 | 274 | # airflow.utils.date 275 | dates.date_range 276 | dates.days_ago - | ^^^^^^^^ AIR302 + | ^^^^^^^^ AIR301 277 | 278 | date_range | = help: Use `pendulum.today('UTC').add(days=-N, ...)` instead -AIR302_names.py:278:1: AIR302 `airflow.utils.dates.date_range` is removed in Airflow 3.0 +AIR301_names.py:278:1: AIR301 `airflow.utils.dates.date_range` is removed in Airflow 3.0 | 276 | dates.days_ago 277 | 278 | date_range - | ^^^^^^^^^^ AIR302 + | ^^^^^^^^^^ AIR301 279 | days_ago 280 | infer_time_unit | -AIR302_names.py:279:1: AIR302 `airflow.utils.dates.days_ago` is removed in Airflow 3.0 +AIR301_names.py:279:1: AIR301 `airflow.utils.dates.days_ago` is removed in Airflow 3.0 | 278 | date_range 279 | days_ago - | ^^^^^^^^ AIR302 + | ^^^^^^^^ AIR301 280 | infer_time_unit 281 | parse_execution_date | = help: Use `pendulum.today('UTC').add(days=-N, ...)` instead -AIR302_names.py:280:1: AIR302 `airflow.utils.dates.infer_time_unit` is removed in Airflow 3.0 +AIR301_names.py:280:1: AIR301 `airflow.utils.dates.infer_time_unit` is removed in Airflow 3.0 | 278 | date_range 279 | days_ago 280 | infer_time_unit - | ^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^ AIR301 281 | parse_execution_date 282 | round_time | -AIR302_names.py:281:1: AIR302 `airflow.utils.dates.parse_execution_date` is removed in Airflow 3.0 +AIR301_names.py:281:1: AIR301 `airflow.utils.dates.parse_execution_date` is removed in Airflow 3.0 | 279 | days_ago 280 | infer_time_unit 281 | parse_execution_date - | ^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^ AIR301 282 | round_time 283 | scale_time_units | -AIR302_names.py:282:1: AIR302 `airflow.utils.dates.round_time` is removed in Airflow 3.0 +AIR301_names.py:282:1: AIR301 `airflow.utils.dates.round_time` is removed in Airflow 3.0 | 280 | infer_time_unit 281 | parse_execution_date 282 | round_time - | ^^^^^^^^^^ AIR302 + | ^^^^^^^^^^ AIR301 283 | scale_time_units | -AIR302_names.py:283:1: AIR302 `airflow.utils.dates.scale_time_units` is removed in Airflow 3.0 +AIR301_names.py:283:1: AIR301 `airflow.utils.dates.scale_time_units` is removed in Airflow 3.0 | 281 | parse_execution_date 282 | round_time 283 | scale_time_units - | ^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^ AIR301 284 | 285 | # This one was not deprecated. | -AIR302_names.py:290:1: AIR302 `airflow.utils.dag_cycle_tester.test_cycle` is removed in Airflow 3.0 +AIR301_names.py:290:1: AIR301 `airflow.utils.dag_cycle_tester.test_cycle` is removed in Airflow 3.0 | 289 | # airflow.utils.dag_cycle_tester 290 | test_cycle - | ^^^^^^^^^^ AIR302 + | ^^^^^^^^^^ AIR301 291 | 292 | # airflow.utils.dag_parsing_context | -AIR302_names.py:293:1: AIR302 `airflow.utils.dag_parsing_context.get_parsing_context` is removed in Airflow 3.0 +AIR301_names.py:293:1: AIR301 `airflow.utils.dag_parsing_context.get_parsing_context` is removed in Airflow 3.0 | 292 | # airflow.utils.dag_parsing_context 293 | get_parsing_context - | ^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^ AIR301 294 | 295 | # airflow.utils.db | = help: Use `airflow.sdk.get_parsing_context` instead -AIR302_names.py:296:1: AIR302 `airflow.utils.db.create_session` is removed in Airflow 3.0 +AIR301_names.py:296:1: AIR301 `airflow.utils.db.create_session` is removed in Airflow 3.0 | 295 | # airflow.utils.db 296 | create_session - | ^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^ AIR301 297 | 298 | # airflow.utils.decorators | -AIR302_names.py:299:1: AIR302 `airflow.utils.decorators.apply_defaults` is removed in Airflow 3.0; `apply_defaults` is now unconditionally done and can be safely removed. +AIR301_names.py:299:1: AIR301 `airflow.utils.decorators.apply_defaults` is removed in Airflow 3.0; `apply_defaults` is now unconditionally done and can be safely removed. | 298 | # airflow.utils.decorators 299 | apply_defaults - | ^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^ AIR301 300 | 301 | # airflow.utils.file | -AIR302_names.py:302:1: AIR302 `airflow.utils.file.TemporaryDirectory` is removed in Airflow 3.0 +AIR301_names.py:302:1: AIR301 `airflow.utils.file.TemporaryDirectory` is removed in Airflow 3.0 | 301 | # airflow.utils.file 302 | TemporaryDirectory() - | ^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^ AIR301 303 | mkdirs | = help: Use `tempfile.TemporaryDirectory` instead -AIR302_names.py:303:1: AIR302 `airflow.utils.file.mkdirs` is removed in Airflow 3.0 +AIR301_names.py:303:1: AIR301 `airflow.utils.file.mkdirs` is removed in Airflow 3.0 | 301 | # airflow.utils.file 302 | TemporaryDirectory() 303 | mkdirs - | ^^^^^^ AIR302 + | ^^^^^^ AIR301 304 | 305 | # airflow.utils.helpers | = help: Use `pathlib.Path({path}).mkdir` instead -AIR302_names.py:306:1: AIR302 `airflow.utils.helpers.chain` is removed in Airflow 3.0 +AIR301_names.py:306:1: AIR301 `airflow.utils.helpers.chain` is removed in Airflow 3.0 | 305 | # airflow.utils.helpers 306 | helper_chain - | ^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^ AIR301 307 | helper_cross_downstream | = help: Use `airflow.sdk.chain` instead -AIR302_names.py:307:1: AIR302 `airflow.utils.helpers.cross_downstream` is removed in Airflow 3.0 +AIR301_names.py:307:1: AIR301 `airflow.utils.helpers.cross_downstream` is removed in Airflow 3.0 | 305 | # airflow.utils.helpers 306 | helper_chain 307 | helper_cross_downstream - | ^^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^^ AIR301 308 | 309 | # airflow.utils.log | = help: Use `airflow.sdk.cross_downstream` instead -AIR302_names.py:310:1: AIR302 `airflow.utils.log.secrets_masker` is removed in Airflow 3.0 +AIR301_names.py:310:1: AIR301 `airflow.utils.log.secrets_masker` is removed in Airflow 3.0 | 309 | # airflow.utils.log 310 | secrets_masker - | ^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^ AIR301 311 | 312 | # airflow.utils.state | = help: Use `airflow.sdk.execution_time.secrets_masker` instead -AIR302_names.py:313:1: AIR302 `airflow.utils.state.SHUTDOWN` is removed in Airflow 3.0 +AIR301_names.py:313:1: AIR301 `airflow.utils.state.SHUTDOWN` is removed in Airflow 3.0 | 312 | # airflow.utils.state 313 | SHUTDOWN - | ^^^^^^^^ AIR302 + | ^^^^^^^^ AIR301 314 | terminating_states | -AIR302_names.py:314:1: AIR302 `airflow.utils.state.terminating_states` is removed in Airflow 3.0 +AIR301_names.py:314:1: AIR301 `airflow.utils.state.terminating_states` is removed in Airflow 3.0 | 312 | # airflow.utils.state 313 | SHUTDOWN 314 | terminating_states - | ^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^ AIR301 315 | 316 | # airflow.utils.trigger_rule | -AIR302_names.py:317:13: AIR302 `airflow.utils.trigger_rule.TriggerRule.DUMMY` is removed in Airflow 3.0 +AIR301_names.py:317:13: AIR301 `airflow.utils.trigger_rule.TriggerRule.DUMMY` is removed in Airflow 3.0 | 316 | # airflow.utils.trigger_rule 317 | TriggerRule.DUMMY - | ^^^^^ AIR302 + | ^^^^^ AIR301 318 | TriggerRule.NONE_FAILED_OR_SKIPPED | -AIR302_names.py:318:13: AIR302 `airflow.utils.trigger_rule.TriggerRule.NONE_FAILED_OR_SKIPPED` is removed in Airflow 3.0 +AIR301_names.py:318:13: AIR301 `airflow.utils.trigger_rule.TriggerRule.NONE_FAILED_OR_SKIPPED` is removed in Airflow 3.0 | 316 | # airflow.utils.trigger_rule 317 | TriggerRule.DUMMY 318 | TriggerRule.NONE_FAILED_OR_SKIPPED - | ^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^ AIR301 319 | 320 | # airflow.www.auth | -AIR302_names.py:321:1: AIR302 `airflow.www.auth.has_access` is removed in Airflow 3.0 +AIR301_names.py:321:1: AIR301 `airflow.www.auth.has_access` is removed in Airflow 3.0 | 320 | # airflow.www.auth 321 | has_access - | ^^^^^^^^^^ AIR302 + | ^^^^^^^^^^ AIR301 322 | has_access_dataset | = help: Use `airflow.www.auth.has_access_*` instead -AIR302_names.py:322:1: AIR302 `airflow.www.auth.has_access_dataset` is removed in Airflow 3.0 +AIR301_names.py:322:1: AIR301 `airflow.www.auth.has_access_dataset` is removed in Airflow 3.0 | 320 | # airflow.www.auth 321 | has_access 322 | has_access_dataset - | ^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^ AIR301 323 | 324 | # airflow.www.utils | = help: Use `airflow.www.auth.has_access_dataset.has_access_asset` instead -AIR302_names.py:325:1: AIR302 `airflow.www.utils.get_sensitive_variables_fields` is removed in Airflow 3.0 +AIR301_names.py:325:1: AIR301 `airflow.www.utils.get_sensitive_variables_fields` is removed in Airflow 3.0 | 324 | # airflow.www.utils 325 | get_sensitive_variables_fields - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR301 326 | should_hide_value_for_key | = help: Use `airflow.utils.log.secrets_masker.get_sensitive_variables_fields` instead -AIR302_names.py:326:1: AIR302 `airflow.www.utils.should_hide_value_for_key` is removed in Airflow 3.0 +AIR301_names.py:326:1: AIR301 `airflow.www.utils.should_hide_value_for_key` is removed in Airflow 3.0 | 324 | # airflow.www.utils 325 | get_sensitive_variables_fields 326 | should_hide_value_for_key - | ^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 + | ^^^^^^^^^^^^^^^^^^^^^^^^^ AIR301 | = help: Use `airflow.utils.log.secrets_masker.should_hide_value_for_key` instead diff --git a/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302_names_try.py.snap b/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR301_AIR301_names_try.py.snap similarity index 75% rename from crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302_names_try.py.snap rename to crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR301_AIR301_names_try.py.snap index 707c6a2775..6d6d3986fe 100644 --- a/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302_names_try.py.snap +++ b/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR301_AIR301_names_try.py.snap @@ -1,5 +1,4 @@ --- source: crates/ruff_linter/src/rules/airflow/mod.rs -snapshot_kind: text --- diff --git a/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR303_AIR303.py.snap b/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302.py.snap similarity index 78% rename from crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR303_AIR303.py.snap rename to crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302.py.snap index 3748598556..faffeacab0 100644 --- a/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR303_AIR303.py.snap +++ b/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302.py.snap @@ -1,1746 +1,1745 @@ --- source: crates/ruff_linter/src/rules/airflow/mod.rs -snapshot_kind: text --- -AIR303.py:212:1: AIR303 `airflow.hooks.S3_hook.provide_bucket_name` is moved into `amazon` provider in Airflow 3.0; +AIR302.py:212:1: AIR302 `airflow.hooks.S3_hook.provide_bucket_name` is moved into `amazon` provider in Airflow 3.0; | 211 | # apache-airflow-providers-amazon 212 | provide_bucket_name() - | ^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^ AIR302 213 | GCSToS3Operator() 214 | GoogleApiToS3Operator() | = help: Install `apache-airflow-provider-amazon>=1.0.0` and use `airflow.providers.amazon.aws.hooks.s3.provide_bucket_name` instead. -AIR303.py:213:1: AIR303 `airflow.operators.gcs_to_s3.GCSToS3Operator` is moved into `amazon` provider in Airflow 3.0; +AIR302.py:213:1: AIR302 `airflow.operators.gcs_to_s3.GCSToS3Operator` is moved into `amazon` provider in Airflow 3.0; | 211 | # apache-airflow-providers-amazon 212 | provide_bucket_name() 213 | GCSToS3Operator() - | ^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^ AIR302 214 | GoogleApiToS3Operator() 215 | GoogleApiToS3Transfer() | = help: Install `apache-airflow-provider-amazon>=1.0.0` and use `airflow.providers.amazon.aws.transfers.gcs_to_s3.GCSToS3Operator` instead. -AIR303.py:214:1: AIR303 `airflow.operators.google_api_to_s3_transfer.GoogleApiToS3Operator` is moved into `amazon` provider in Airflow 3.0; +AIR302.py:214:1: AIR302 `airflow.operators.google_api_to_s3_transfer.GoogleApiToS3Operator` is moved into `amazon` provider in Airflow 3.0; | 212 | provide_bucket_name() 213 | GCSToS3Operator() 214 | GoogleApiToS3Operator() - | ^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^ AIR302 215 | GoogleApiToS3Transfer() 216 | RedshiftToS3Operator() | = help: Install `apache-airflow-provider-amazon>=1.0.0` and use `airflow.providers.amazon.aws.transfers.google_api_to_s3.GoogleApiToS3Operator` instead. -AIR303.py:215:1: AIR303 `airflow.operators.google_api_to_s3_transfer.GoogleApiToS3Transfer` is moved into `amazon` provider in Airflow 3.0; +AIR302.py:215:1: AIR302 `airflow.operators.google_api_to_s3_transfer.GoogleApiToS3Transfer` is moved into `amazon` provider in Airflow 3.0; | 213 | GCSToS3Operator() 214 | GoogleApiToS3Operator() 215 | GoogleApiToS3Transfer() - | ^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^ AIR302 216 | RedshiftToS3Operator() 217 | RedshiftToS3Transfer() | = help: Install `apache-airflow-provider-amazon>=1.0.0` and use `airflow.providers.amazon.aws.transfers.google_api_to_s3.GoogleApiToS3Operator` instead. -AIR303.py:216:1: AIR303 `airflow.operators.redshift_to_s3_operator.RedshiftToS3Operator` is moved into `amazon` provider in Airflow 3.0; +AIR302.py:216:1: AIR302 `airflow.operators.redshift_to_s3_operator.RedshiftToS3Operator` is moved into `amazon` provider in Airflow 3.0; | 214 | GoogleApiToS3Operator() 215 | GoogleApiToS3Transfer() 216 | RedshiftToS3Operator() - | ^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^ AIR302 217 | RedshiftToS3Transfer() 218 | S3FileTransformOperator() | = help: Install `apache-airflow-provider-amazon>=1.0.0` and use `airflow.providers.amazon.aws.transfers.redshift_to_s3.RedshiftToS3Operator` instead. -AIR303.py:217:1: AIR303 `airflow.operators.redshift_to_s3_operator.RedshiftToS3Transfer` is moved into `amazon` provider in Airflow 3.0; +AIR302.py:217:1: AIR302 `airflow.operators.redshift_to_s3_operator.RedshiftToS3Transfer` is moved into `amazon` provider in Airflow 3.0; | 215 | GoogleApiToS3Transfer() 216 | RedshiftToS3Operator() 217 | RedshiftToS3Transfer() - | ^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^ AIR302 218 | S3FileTransformOperator() 219 | S3Hook() | = help: Install `apache-airflow-provider-amazon>=1.0.0` and use `airflow.providers.amazon.aws.transfers.redshift_to_s3.RedshiftToS3Operator` instead. -AIR303.py:218:1: AIR303 `airflow.operators.s3_file_transform_operator.S3FileTransformOperator` is moved into `amazon` provider in Airflow 3.0; +AIR302.py:218:1: AIR302 `airflow.operators.s3_file_transform_operator.S3FileTransformOperator` is moved into `amazon` provider in Airflow 3.0; | 216 | RedshiftToS3Operator() 217 | RedshiftToS3Transfer() 218 | S3FileTransformOperator() - | ^^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^^ AIR302 219 | S3Hook() 220 | S3KeySensor() | = help: Install `apache-airflow-provider-amazon>=1.0.0` and use `airflow.providers.amazon.aws.operators.s3_file_transform.S3FileTransformOperator` instead. -AIR303.py:219:1: AIR303 `airflow.hooks.S3_hook.S3Hook` is moved into `amazon` provider in Airflow 3.0; +AIR302.py:219:1: AIR302 `airflow.hooks.S3_hook.S3Hook` is moved into `amazon` provider in Airflow 3.0; | 217 | RedshiftToS3Transfer() 218 | S3FileTransformOperator() 219 | S3Hook() - | ^^^^^^ AIR303 + | ^^^^^^ AIR302 220 | S3KeySensor() 221 | S3ToRedshiftOperator() | = help: Install `apache-airflow-provider-amazon>=1.0.0` and use `airflow.providers.amazon.aws.hooks.s3.S3Hook` instead. -AIR303.py:220:1: AIR303 `airflow.sensors.s3_key_sensor.S3KeySensor` is moved into `amazon` provider in Airflow 3.0; +AIR302.py:220:1: AIR302 `airflow.sensors.s3_key_sensor.S3KeySensor` is moved into `amazon` provider in Airflow 3.0; | 218 | S3FileTransformOperator() 219 | S3Hook() 220 | S3KeySensor() - | ^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^ AIR302 221 | S3ToRedshiftOperator() 222 | S3ToRedshiftTransfer() | = help: Install `apache-airflow-provider-amazon>=1.0.0` and use `S3KeySensor` instead. -AIR303.py:221:1: AIR303 `airflow.operators.s3_to_redshift_operator.S3ToRedshiftOperator` is moved into `amazon` provider in Airflow 3.0; +AIR302.py:221:1: AIR302 `airflow.operators.s3_to_redshift_operator.S3ToRedshiftOperator` is moved into `amazon` provider in Airflow 3.0; | 219 | S3Hook() 220 | S3KeySensor() 221 | S3ToRedshiftOperator() - | ^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^ AIR302 222 | S3ToRedshiftTransfer() | = help: Install `apache-airflow-provider-amazon>=1.0.0` and use `airflow.providers.amazon.aws.transfers.s3_to_redshift.S3ToRedshiftOperator` instead. -AIR303.py:222:1: AIR303 `airflow.operators.s3_to_redshift_operator.S3ToRedshiftTransfer` is moved into `amazon` provider in Airflow 3.0; +AIR302.py:222:1: AIR302 `airflow.operators.s3_to_redshift_operator.S3ToRedshiftTransfer` is moved into `amazon` provider in Airflow 3.0; | 220 | S3KeySensor() 221 | S3ToRedshiftOperator() 222 | S3ToRedshiftTransfer() - | ^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^ AIR302 223 | 224 | # apache-airflow-providers-celery | = help: Install `apache-airflow-provider-amazon>=1.0.0` and use `airflow.providers.amazon.aws.transfers.s3_to_redshift.S3ToRedshiftOperator` instead. -AIR303.py:225:1: AIR303 `airflow.config_templates.default_celery.DEFAULT_CELERY_CONFIG` is moved into `celery` provider in Airflow 3.0; +AIR302.py:225:1: AIR302 `airflow.config_templates.default_celery.DEFAULT_CELERY_CONFIG` is moved into `celery` provider in Airflow 3.0; | 224 | # apache-airflow-providers-celery 225 | DEFAULT_CELERY_CONFIG - | ^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^ AIR302 226 | app 227 | CeleryExecutor() | = help: Install `apache-airflow-provider-celery>=3.3.0` and use `airflow.providers.celery.executors.default_celery.DEFAULT_CELERY_CONFIG` instead. -AIR303.py:226:1: AIR303 `airflow.executors.celery_executor.app` is moved into `celery` provider in Airflow 3.0; +AIR302.py:226:1: AIR302 `airflow.executors.celery_executor.app` is moved into `celery` provider in Airflow 3.0; | 224 | # apache-airflow-providers-celery 225 | DEFAULT_CELERY_CONFIG 226 | app - | ^^^ AIR303 + | ^^^ AIR302 227 | CeleryExecutor() 228 | CeleryKubernetesExecutor() | = help: Install `apache-airflow-provider-celery>=3.3.0` and use `airflow.providers.celery.executors.celery_executor_utils.app` instead. -AIR303.py:227:1: AIR303 `airflow.executors.celery_executor.CeleryExecutor` is moved into `celery` provider in Airflow 3.0; +AIR302.py:227:1: AIR302 `airflow.executors.celery_executor.CeleryExecutor` is moved into `celery` provider in Airflow 3.0; | 225 | DEFAULT_CELERY_CONFIG 226 | app 227 | CeleryExecutor() - | ^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^ AIR302 228 | CeleryKubernetesExecutor() | = help: Install `apache-airflow-provider-celery>=3.3.0` and use `airflow.providers.celery.executors.celery_executor.CeleryExecutor` instead. -AIR303.py:228:1: AIR303 `airflow.executors.celery_kubernetes_executor.CeleryKubernetesExecutor` is moved into `celery` provider in Airflow 3.0; +AIR302.py:228:1: AIR302 `airflow.executors.celery_kubernetes_executor.CeleryKubernetesExecutor` is moved into `celery` provider in Airflow 3.0; | 226 | app 227 | CeleryExecutor() 228 | CeleryKubernetesExecutor() - | ^^^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 229 | 230 | # apache-airflow-providers-common-sql | = help: Install `apache-airflow-provider-celery>=3.3.0` and use `airflow.providers.celery.executors.celery_kubernetes_executor.CeleryKubernetesExecutor` instead. -AIR303.py:231:1: AIR303 `airflow.operators.sql._convert_to_float_if_possible` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:231:1: AIR302 `airflow.operators.sql._convert_to_float_if_possible` is moved into `common-sql` provider in Airflow 3.0; | 230 | # apache-airflow-providers-common-sql 231 | _convert_to_float_if_possible() - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 232 | parse_boolean() 233 | BaseSQLOperator() | = help: Install `apache-airflow-provider-common-sql>=1.0.0` and use `airflow.providers.common.sql.operators.sql._convert_to_float_if_possible` instead. -AIR303.py:232:1: AIR303 `airflow.operators.sql.parse_boolean` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:232:1: AIR302 `airflow.operators.sql.parse_boolean` is moved into `common-sql` provider in Airflow 3.0; | 230 | # apache-airflow-providers-common-sql 231 | _convert_to_float_if_possible() 232 | parse_boolean() - | ^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^ AIR302 233 | BaseSQLOperator() 234 | BashOperator() | = help: Install `apache-airflow-provider-common-sql>=1.0.0` and use `airflow.providers.common.sql.operators.sql.parse_boolean` instead. -AIR303.py:233:1: AIR303 `airflow.operators.sql.BaseSQLOperator` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:233:1: AIR302 `airflow.operators.sql.BaseSQLOperator` is moved into `common-sql` provider in Airflow 3.0; | 231 | _convert_to_float_if_possible() 232 | parse_boolean() 233 | BaseSQLOperator() - | ^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^ AIR302 234 | BashOperator() 235 | LegacyBashOperator() | = help: Install `apache-airflow-provider-common-sql>=1.1.0` and use `airflow.providers.common.sql.operators.sql.BaseSQLOperator` instead. -AIR303.py:234:1: AIR303 Import path `airflow.operators.bash` is moved into `standard` provider in Airflow 3.0; +AIR302.py:234:1: AIR302 Import path `airflow.operators.bash` is moved into `standard` provider in Airflow 3.0; | 232 | parse_boolean() 233 | BaseSQLOperator() 234 | BashOperator() - | ^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^ AIR302 235 | LegacyBashOperator() 236 | BranchSQLOperator() | = help: Install `apache-airflow-provider-standard>=0.0.1` and import from `airflow.providers.standard.operators.bash` instead. -AIR303.py:235:1: AIR303 Import path `airflow.operators.bash_operator` is moved into `standard` provider in Airflow 3.0; +AIR302.py:235:1: AIR302 Import path `airflow.operators.bash_operator` is moved into `standard` provider in Airflow 3.0; | 233 | BaseSQLOperator() 234 | BashOperator() 235 | LegacyBashOperator() - | ^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^ AIR302 236 | BranchSQLOperator() 237 | CheckOperator() | = help: Install `apache-airflow-provider-standard>=0.0.1` and import from `airflow.providers.standard.operators.bash` instead. -AIR303.py:236:1: AIR303 `airflow.operators.sql.BranchSQLOperator` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:236:1: AIR302 `airflow.operators.sql.BranchSQLOperator` is moved into `common-sql` provider in Airflow 3.0; | 234 | BashOperator() 235 | LegacyBashOperator() 236 | BranchSQLOperator() - | ^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^ AIR302 237 | CheckOperator() 238 | ConnectorProtocol() | = help: Install `apache-airflow-provider-common-sql>=1.1.0` and use `airflow.providers.common.sql.operators.sql.BranchSQLOperator` instead. -AIR303.py:237:1: AIR303 `airflow.operators.check_operator.CheckOperator` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:237:1: AIR302 `airflow.operators.check_operator.CheckOperator` is moved into `common-sql` provider in Airflow 3.0; | 235 | LegacyBashOperator() 236 | BranchSQLOperator() 237 | CheckOperator() - | ^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^ AIR302 238 | ConnectorProtocol() 239 | DbApiHook() | = help: Install `apache-airflow-provider-common-sql>=1.1.0` and use `airflow.providers.common.sql.operators.sql.SQLCheckOperator` instead. -AIR303.py:238:1: AIR303 `airflow.hooks.dbapi.ConnectorProtocol` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:238:1: AIR302 `airflow.hooks.dbapi.ConnectorProtocol` is moved into `common-sql` provider in Airflow 3.0; | 236 | BranchSQLOperator() 237 | CheckOperator() 238 | ConnectorProtocol() - | ^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^ AIR302 239 | DbApiHook() 240 | DbApiHook2() | = help: Install `apache-airflow-provider-common-sql>=1.0.0` and use `airflow.providers.common.sql.hooks.sql.ConnectorProtocol` instead. -AIR303.py:239:1: AIR303 `airflow.hooks.dbapi.DbApiHook` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:239:1: AIR302 `airflow.hooks.dbapi.DbApiHook` is moved into `common-sql` provider in Airflow 3.0; | 237 | CheckOperator() 238 | ConnectorProtocol() 239 | DbApiHook() - | ^^^^^^^^^ AIR303 + | ^^^^^^^^^ AIR302 240 | DbApiHook2() 241 | IntervalCheckOperator() | = help: Install `apache-airflow-provider-common-sql>=1.0.0` and use `airflow.providers.common.sql.hooks.sql.DbApiHook` instead. -AIR303.py:240:1: AIR303 `airflow.hooks.dbapi_hook.DbApiHook` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:240:1: AIR302 `airflow.hooks.dbapi_hook.DbApiHook` is moved into `common-sql` provider in Airflow 3.0; | 238 | ConnectorProtocol() 239 | DbApiHook() 240 | DbApiHook2() - | ^^^^^^^^^^ AIR303 + | ^^^^^^^^^^ AIR302 241 | IntervalCheckOperator() 242 | PrestoCheckOperator() | = help: Install `apache-airflow-provider-common-sql>=1.0.0` and use `airflow.providers.common.sql.hooks.sql.DbApiHook` instead. -AIR303.py:241:1: AIR303 `airflow.operators.check_operator.IntervalCheckOperator` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:241:1: AIR302 `airflow.operators.check_operator.IntervalCheckOperator` is moved into `common-sql` provider in Airflow 3.0; | 239 | DbApiHook() 240 | DbApiHook2() 241 | IntervalCheckOperator() - | ^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^ AIR302 242 | PrestoCheckOperator() 243 | PrestoIntervalCheckOperator() | = help: Install `apache-airflow-provider-common-sql>=1.1.0` and use `airflow.providers.common.sql.operators.sql.SQLIntervalCheckOperator` instead. -AIR303.py:242:1: AIR303 `airflow.operators.presto_check_operator.PrestoCheckOperator` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:242:1: AIR302 `airflow.operators.presto_check_operator.PrestoCheckOperator` is moved into `common-sql` provider in Airflow 3.0; | 240 | DbApiHook2() 241 | IntervalCheckOperator() 242 | PrestoCheckOperator() - | ^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^ AIR302 243 | PrestoIntervalCheckOperator() 244 | PrestoValueCheckOperator() | = help: Install `apache-airflow-provider-common-sql>=1.1.0` and use `airflow.providers.common.sql.operators.sql.SQLCheckOperator` instead. -AIR303.py:243:1: AIR303 `airflow.operators.presto_check_operator.PrestoIntervalCheckOperator` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:243:1: AIR302 `airflow.operators.presto_check_operator.PrestoIntervalCheckOperator` is moved into `common-sql` provider in Airflow 3.0; | 241 | IntervalCheckOperator() 242 | PrestoCheckOperator() 243 | PrestoIntervalCheckOperator() - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 244 | PrestoValueCheckOperator() 245 | SQLCheckOperator() | = help: Install `apache-airflow-provider-common-sql>=1.1.0` and use `airflow.providers.common.sql.operators.sql.SQLIntervalCheckOperator` instead. -AIR303.py:244:1: AIR303 `airflow.operators.presto_check_operator.PrestoValueCheckOperator` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:244:1: AIR302 `airflow.operators.presto_check_operator.PrestoValueCheckOperator` is moved into `common-sql` provider in Airflow 3.0; | 242 | PrestoCheckOperator() 243 | PrestoIntervalCheckOperator() 244 | PrestoValueCheckOperator() - | ^^^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 245 | SQLCheckOperator() 246 | SQLCheckOperator2() | = help: Install `apache-airflow-provider-common-sql>=1.1.0` and use `airflow.providers.common.sql.operators.sql.SQLValueCheckOperator` instead. -AIR303.py:245:1: AIR303 `airflow.operators.check_operator.SQLCheckOperator` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:245:1: AIR302 `airflow.operators.check_operator.SQLCheckOperator` is moved into `common-sql` provider in Airflow 3.0; | 243 | PrestoIntervalCheckOperator() 244 | PrestoValueCheckOperator() 245 | SQLCheckOperator() - | ^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^ AIR302 246 | SQLCheckOperator2() 247 | SQLCheckOperator3() | = help: Install `apache-airflow-provider-common-sql>=1.1.0` and use `airflow.providers.common.sql.operators.sql.SQLCheckOperator` instead. -AIR303.py:246:1: AIR303 `airflow.operators.presto_check_operator.SQLCheckOperator` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:246:1: AIR302 `airflow.operators.presto_check_operator.SQLCheckOperator` is moved into `common-sql` provider in Airflow 3.0; | 244 | PrestoValueCheckOperator() 245 | SQLCheckOperator() 246 | SQLCheckOperator2() - | ^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^ AIR302 247 | SQLCheckOperator3() 248 | SQLColumnCheckOperator2() | = help: Install `apache-airflow-provider-common-sql>=1.1.0` and use `airflow.providers.common.sql.operators.sql.SQLCheckOperator` instead. -AIR303.py:247:1: AIR303 `airflow.operators.sql.SQLCheckOperator` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:247:1: AIR302 `airflow.operators.sql.SQLCheckOperator` is moved into `common-sql` provider in Airflow 3.0; | 245 | SQLCheckOperator() 246 | SQLCheckOperator2() 247 | SQLCheckOperator3() - | ^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^ AIR302 248 | SQLColumnCheckOperator2() 249 | SQLIntervalCheckOperator() | = help: Install `apache-airflow-provider-common-sql>=1.1.0` and use `airflow.providers.common.sql.operators.sql.SQLCheckOperator` instead. -AIR303.py:248:1: AIR303 `airflow.operators.sql.SQLColumnCheckOperator` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:248:1: AIR302 `airflow.operators.sql.SQLColumnCheckOperator` is moved into `common-sql` provider in Airflow 3.0; | 246 | SQLCheckOperator2() 247 | SQLCheckOperator3() 248 | SQLColumnCheckOperator2() - | ^^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^^ AIR302 249 | SQLIntervalCheckOperator() 250 | SQLIntervalCheckOperator2() | = help: Install `apache-airflow-provider-common-sql>=1.0.0` and use `airflow.providers.common.sql.operators.sql.SQLColumnCheckOperator` instead. -AIR303.py:249:1: AIR303 `airflow.operators.check_operator.SQLIntervalCheckOperator` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:249:1: AIR302 `airflow.operators.check_operator.SQLIntervalCheckOperator` is moved into `common-sql` provider in Airflow 3.0; | 247 | SQLCheckOperator3() 248 | SQLColumnCheckOperator2() 249 | SQLIntervalCheckOperator() - | ^^^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 250 | SQLIntervalCheckOperator2() 251 | SQLIntervalCheckOperator3() | = help: Install `apache-airflow-provider-common-sql>=1.1.0` and use `airflow.providers.common.sql.operators.sql.SQLIntervalCheckOperator` instead. -AIR303.py:250:1: AIR303 `airflow.operators.presto_check_operator.SQLIntervalCheckOperator` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:250:1: AIR302 `airflow.operators.presto_check_operator.SQLIntervalCheckOperator` is moved into `common-sql` provider in Airflow 3.0; | 248 | SQLColumnCheckOperator2() 249 | SQLIntervalCheckOperator() 250 | SQLIntervalCheckOperator2() - | ^^^^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 251 | SQLIntervalCheckOperator3() 252 | SQLTableCheckOperator() | = help: Install `apache-airflow-provider-common-sql>=1.1.0` and use `airflow.providers.common.sql.operators.sql.SQLIntervalCheckOperator` instead. -AIR303.py:251:1: AIR303 `airflow.operators.sql.SQLIntervalCheckOperator` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:251:1: AIR302 `airflow.operators.sql.SQLIntervalCheckOperator` is moved into `common-sql` provider in Airflow 3.0; | 249 | SQLIntervalCheckOperator() 250 | SQLIntervalCheckOperator2() 251 | SQLIntervalCheckOperator3() - | ^^^^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 252 | SQLTableCheckOperator() 253 | SQLThresholdCheckOperator() | = help: Install `apache-airflow-provider-common-sql>=1.1.0` and use `airflow.providers.common.sql.operators.sql.SQLIntervalCheckOperator` instead. -AIR303.py:253:1: AIR303 `airflow.operators.check_operator.SQLThresholdCheckOperator` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:253:1: AIR302 `airflow.operators.check_operator.SQLThresholdCheckOperator` is moved into `common-sql` provider in Airflow 3.0; | 251 | SQLIntervalCheckOperator3() 252 | SQLTableCheckOperator() 253 | SQLThresholdCheckOperator() - | ^^^^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 254 | SQLThresholdCheckOperator2() 255 | SQLValueCheckOperator() | = help: Install `apache-airflow-provider-common-sql>=1.1.0` and use `airflow.providers.common.sql.operators.sql.SQLThresholdCheckOperator` instead. -AIR303.py:254:1: AIR303 `airflow.operators.sql.SQLThresholdCheckOperator` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:254:1: AIR302 `airflow.operators.sql.SQLThresholdCheckOperator` is moved into `common-sql` provider in Airflow 3.0; | 252 | SQLTableCheckOperator() 253 | SQLThresholdCheckOperator() 254 | SQLThresholdCheckOperator2() - | ^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 255 | SQLValueCheckOperator() 256 | SQLValueCheckOperator2() | = help: Install `apache-airflow-provider-common-sql>=1.0.0` and use `airflow.providers.common.sql.operators.sql.SQLTableCheckOperator` instead. -AIR303.py:255:1: AIR303 `airflow.operators.check_operator.SQLValueCheckOperator` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:255:1: AIR302 `airflow.operators.check_operator.SQLValueCheckOperator` is moved into `common-sql` provider in Airflow 3.0; | 253 | SQLThresholdCheckOperator() 254 | SQLThresholdCheckOperator2() 255 | SQLValueCheckOperator() - | ^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^ AIR302 256 | SQLValueCheckOperator2() 257 | SQLValueCheckOperator3() | = help: Install `apache-airflow-provider-common-sql>=1.1.0` and use `airflow.providers.common.sql.operators.sql.SQLValueCheckOperator` instead. -AIR303.py:256:1: AIR303 `airflow.operators.presto_check_operator.SQLValueCheckOperator` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:256:1: AIR302 `airflow.operators.presto_check_operator.SQLValueCheckOperator` is moved into `common-sql` provider in Airflow 3.0; | 254 | SQLThresholdCheckOperator2() 255 | SQLValueCheckOperator() 256 | SQLValueCheckOperator2() - | ^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^ AIR302 257 | SQLValueCheckOperator3() 258 | SqlSensor() | = help: Install `apache-airflow-provider-common-sql>=1.1.0` and use `airflow.providers.common.sql.operators.sql.SQLValueCheckOperator` instead. -AIR303.py:257:1: AIR303 `airflow.operators.sql.SQLValueCheckOperator` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:257:1: AIR302 `airflow.operators.sql.SQLValueCheckOperator` is moved into `common-sql` provider in Airflow 3.0; | 255 | SQLValueCheckOperator() 256 | SQLValueCheckOperator2() 257 | SQLValueCheckOperator3() - | ^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^ AIR302 258 | SqlSensor() 259 | SqlSensor2() | = help: Install `apache-airflow-provider-common-sql>=1.0.0` and use `airflow.providers.common.sql.operators.sql.SQLValueCheckOperator` instead. -AIR303.py:258:1: AIR303 `airflow.sensors.sql.SqlSensor` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:258:1: AIR302 `airflow.sensors.sql.SqlSensor` is moved into `common-sql` provider in Airflow 3.0; | 256 | SQLValueCheckOperator2() 257 | SQLValueCheckOperator3() 258 | SqlSensor() - | ^^^^^^^^^ AIR303 + | ^^^^^^^^^ AIR302 259 | SqlSensor2() 260 | ThresholdCheckOperator() | = help: Install `apache-airflow-provider-common-sql>=1.0.0` and use `airflow.providers.common.sql.sensors.sql.SqlSensor` instead. -AIR303.py:260:1: AIR303 `airflow.operators.check_operator.ThresholdCheckOperator` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:260:1: AIR302 `airflow.operators.check_operator.ThresholdCheckOperator` is moved into `common-sql` provider in Airflow 3.0; | 258 | SqlSensor() 259 | SqlSensor2() 260 | ThresholdCheckOperator() - | ^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^ AIR302 261 | ValueCheckOperator() | = help: Install `apache-airflow-provider-common-sql>=1.1.0` and use `airflow.providers.common.sql.operators.sql.SQLThresholdCheckOperator` instead. -AIR303.py:261:1: AIR303 `airflow.operators.check_operator.ValueCheckOperator` is moved into `common-sql` provider in Airflow 3.0; +AIR302.py:261:1: AIR302 `airflow.operators.check_operator.ValueCheckOperator` is moved into `common-sql` provider in Airflow 3.0; | 259 | SqlSensor2() 260 | ThresholdCheckOperator() 261 | ValueCheckOperator() - | ^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^ AIR302 262 | 263 | # apache-airflow-providers-daskexecutor | = help: Install `apache-airflow-provider-common-sql>=1.1.0` and use `airflow.providers.common.sql.operators.sql.SQLValueCheckOperator` instead. -AIR303.py:264:1: AIR303 `airflow.executors.dask_executor.DaskExecutor` is moved into `daskexecutor` provider in Airflow 3.0; +AIR302.py:264:1: AIR302 `airflow.executors.dask_executor.DaskExecutor` is moved into `daskexecutor` provider in Airflow 3.0; | 263 | # apache-airflow-providers-daskexecutor 264 | DaskExecutor() - | ^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^ AIR302 265 | 266 | # apache-airflow-providers-docker | = help: Install `apache-airflow-provider-daskexecutor>=1.0.0` and use `airflow.providers.daskexecutor.executors.dask_executor.DaskExecutor` instead. -AIR303.py:267:1: AIR303 `airflow.hooks.docker_hook.DockerHook` is moved into `docker` provider in Airflow 3.0; +AIR302.py:267:1: AIR302 `airflow.hooks.docker_hook.DockerHook` is moved into `docker` provider in Airflow 3.0; | 266 | # apache-airflow-providers-docker 267 | DockerHook() - | ^^^^^^^^^^ AIR303 + | ^^^^^^^^^^ AIR302 268 | DockerOperator() | = help: Install `apache-airflow-provider-docker>=1.0.0` and use `airflow.providers.docker.hooks.docker.DockerHook` instead. -AIR303.py:268:1: AIR303 `airflow.operators.docker_operator.DockerOperator` is moved into `docker` provider in Airflow 3.0; +AIR302.py:268:1: AIR302 `airflow.operators.docker_operator.DockerOperator` is moved into `docker` provider in Airflow 3.0; | 266 | # apache-airflow-providers-docker 267 | DockerHook() 268 | DockerOperator() - | ^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^ AIR302 269 | 270 | # apache-airflow-providers-apache-druid | = help: Install `apache-airflow-provider-docker>=1.0.0` and use `airflow.providers.docker.operators.docker.DockerOperator` instead. -AIR303.py:271:1: AIR303 `airflow.hooks.druid_hook.DruidDbApiHook` is moved into `apache-druid` provider in Airflow 3.0; +AIR302.py:271:1: AIR302 `airflow.hooks.druid_hook.DruidDbApiHook` is moved into `apache-druid` provider in Airflow 3.0; | 270 | # apache-airflow-providers-apache-druid 271 | DruidDbApiHook() - | ^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^ AIR302 272 | DruidHook() 273 | DruidCheckOperator() | = help: Install `apache-airflow-provider-apache-druid>=1.0.0` and use `DruidDbApiHook` instead. -AIR303.py:272:1: AIR303 `airflow.hooks.druid_hook.DruidHook` is moved into `apache-druid` provider in Airflow 3.0; +AIR302.py:272:1: AIR302 `airflow.hooks.druid_hook.DruidHook` is moved into `apache-druid` provider in Airflow 3.0; | 270 | # apache-airflow-providers-apache-druid 271 | DruidDbApiHook() 272 | DruidHook() - | ^^^^^^^^^ AIR303 + | ^^^^^^^^^ AIR302 273 | DruidCheckOperator() | = help: Install `apache-airflow-provider-apache-druid>=1.0.0` and use `DruidHook` instead. -AIR303.py:273:1: AIR303 `airflow.operators.druid_check_operator.DruidCheckOperator` is moved into `apache-druid` provider in Airflow 3.0; +AIR302.py:273:1: AIR302 `airflow.operators.druid_check_operator.DruidCheckOperator` is moved into `apache-druid` provider in Airflow 3.0; | 271 | DruidDbApiHook() 272 | DruidHook() 273 | DruidCheckOperator() - | ^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^ AIR302 274 | 275 | # apache-airflow-providers-apache-hdfs | = help: Install `apache-airflow-provider-apache-druid>=1.0.0` and use `DruidCheckOperator` instead. -AIR303.py:276:1: AIR303 `airflow.hooks.webhdfs_hook.WebHDFSHook` is moved into `apache-hdfs` provider in Airflow 3.0; +AIR302.py:276:1: AIR302 `airflow.hooks.webhdfs_hook.WebHDFSHook` is moved into `apache-hdfs` provider in Airflow 3.0; | 275 | # apache-airflow-providers-apache-hdfs 276 | WebHDFSHook() - | ^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^ AIR302 277 | WebHdfsSensor() | = help: Install `apache-airflow-provider-apache-hdfs>=1.0.0` and use `airflow.providers.apache.hdfs.hooks.webhdfs.WebHDFSHook` instead. -AIR303.py:277:1: AIR303 `airflow.sensors.web_hdfs_sensor.WebHdfsSensor` is moved into `apache-hdfs` provider in Airflow 3.0; +AIR302.py:277:1: AIR302 `airflow.sensors.web_hdfs_sensor.WebHdfsSensor` is moved into `apache-hdfs` provider in Airflow 3.0; | 275 | # apache-airflow-providers-apache-hdfs 276 | WebHDFSHook() 277 | WebHdfsSensor() - | ^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^ AIR302 278 | 279 | # apache-airflow-providers-apache-hive | = help: Install `apache-airflow-provider-apache-hdfs>=1.0.0` and use `airflow.providers.apache.hdfs.sensors.web_hdfs.WebHdfsSensor` instead. -AIR303.py:280:1: AIR303 `airflow.hooks.hive_hooks.HIVE_QUEUE_PRIORITIES` is moved into `apache-hive` provider in Airflow 3.0; +AIR302.py:280:1: AIR302 `airflow.hooks.hive_hooks.HIVE_QUEUE_PRIORITIES` is moved into `apache-hive` provider in Airflow 3.0; | 279 | # apache-airflow-providers-apache-hive 280 | HIVE_QUEUE_PRIORITIES - | ^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^ AIR302 281 | closest_ds_partition() 282 | max_partition() | = help: Install `apache-airflow-provider-apache-hive>=1.0.0` and use `airflow.providers.apache.hive.hooks.hive.HIVE_QUEUE_PRIORITIES` instead. -AIR303.py:281:1: AIR303 `airflow.macros.hive.closest_ds_partition` is moved into `apache-hive` provider in Airflow 3.0; +AIR302.py:281:1: AIR302 `airflow.macros.hive.closest_ds_partition` is moved into `apache-hive` provider in Airflow 3.0; | 279 | # apache-airflow-providers-apache-hive 280 | HIVE_QUEUE_PRIORITIES 281 | closest_ds_partition() - | ^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^ AIR302 282 | max_partition() 283 | HiveCliHook() | = help: Install `apache-airflow-provider-apache-hive>=5.1.0` and use `airflow.providers.apache.hive.macros.hive.closest_ds_partition` instead. -AIR303.py:282:1: AIR303 `airflow.macros.hive.max_partition` is moved into `apache-hive` provider in Airflow 3.0; +AIR302.py:282:1: AIR302 `airflow.macros.hive.max_partition` is moved into `apache-hive` provider in Airflow 3.0; | 280 | HIVE_QUEUE_PRIORITIES 281 | closest_ds_partition() 282 | max_partition() - | ^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^ AIR302 283 | HiveCliHook() 284 | HiveMetastoreHook() | = help: Install `apache-airflow-provider-apache-hive>=5.1.0` and use `airflow.providers.apache.hive.macros.hive.max_partition` instead. -AIR303.py:283:1: AIR303 `airflow.hooks.hive_hooks.HiveCliHook` is moved into `apache-hive` provider in Airflow 3.0; +AIR302.py:283:1: AIR302 `airflow.hooks.hive_hooks.HiveCliHook` is moved into `apache-hive` provider in Airflow 3.0; | 281 | closest_ds_partition() 282 | max_partition() 283 | HiveCliHook() - | ^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^ AIR302 284 | HiveMetastoreHook() 285 | HiveOperator() | = help: Install `apache-airflow-provider-apache-hive>=1.0.0` and use `airflow.providers.apache.hive.hooks.hive.HiveCliHook` instead. -AIR303.py:284:1: AIR303 `airflow.hooks.hive_hooks.HiveMetastoreHook` is moved into `apache-hive` provider in Airflow 3.0; +AIR302.py:284:1: AIR302 `airflow.hooks.hive_hooks.HiveMetastoreHook` is moved into `apache-hive` provider in Airflow 3.0; | 282 | max_partition() 283 | HiveCliHook() 284 | HiveMetastoreHook() - | ^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^ AIR302 285 | HiveOperator() 286 | HivePartitionSensor() | = help: Install `apache-airflow-provider-apache-hive>=1.0.0` and use `airflow.providers.apache.hive.hooks.hive.HiveMetastoreHook` instead. -AIR303.py:285:1: AIR303 `airflow.operators.hive_operator.HiveOperator` is moved into `apache-hive` provider in Airflow 3.0; +AIR302.py:285:1: AIR302 `airflow.operators.hive_operator.HiveOperator` is moved into `apache-hive` provider in Airflow 3.0; | 283 | HiveCliHook() 284 | HiveMetastoreHook() 285 | HiveOperator() - | ^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^ AIR302 286 | HivePartitionSensor() 287 | HiveServer2Hook() | = help: Install `apache-airflow-provider-apache-hive>=1.0.0` and use `airflow.providers.apache.hive.operators.hive.HiveOperator` instead. -AIR303.py:286:1: AIR303 `airflow.sensors.hive_partition_sensor.HivePartitionSensor` is moved into `apache-hive` provider in Airflow 3.0; +AIR302.py:286:1: AIR302 `airflow.sensors.hive_partition_sensor.HivePartitionSensor` is moved into `apache-hive` provider in Airflow 3.0; | 284 | HiveMetastoreHook() 285 | HiveOperator() 286 | HivePartitionSensor() - | ^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^ AIR302 287 | HiveServer2Hook() 288 | HiveStatsCollectionOperator() | = help: Install `apache-airflow-provider-apache-hive>=1.0.0` and use `airflow.providers.apache.hive.sensors.hive_partition.HivePartitionSensor` instead. -AIR303.py:287:1: AIR303 `airflow.hooks.hive_hooks.HiveServer2Hook` is moved into `apache-hive` provider in Airflow 3.0; +AIR302.py:287:1: AIR302 `airflow.hooks.hive_hooks.HiveServer2Hook` is moved into `apache-hive` provider in Airflow 3.0; | 285 | HiveOperator() 286 | HivePartitionSensor() 287 | HiveServer2Hook() - | ^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^ AIR302 288 | HiveStatsCollectionOperator() 289 | HiveToDruidOperator() | = help: Install `apache-airflow-provider-apache-hive>=1.0.0` and use `airflow.providers.apache.hive.hooks.hive.HiveServer2Hook` instead. -AIR303.py:288:1: AIR303 `airflow.operators.hive_stats_operator.HiveStatsCollectionOperator` is moved into `apache-hive` provider in Airflow 3.0; +AIR302.py:288:1: AIR302 `airflow.operators.hive_stats_operator.HiveStatsCollectionOperator` is moved into `apache-hive` provider in Airflow 3.0; | 286 | HivePartitionSensor() 287 | HiveServer2Hook() 288 | HiveStatsCollectionOperator() - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 289 | HiveToDruidOperator() 290 | HiveToDruidTransfer() | = help: Install `apache-airflow-provider-apache-hive>=1.0.0` and use `airflow.providers.apache.hive.operators.hive_stats.HiveStatsCollectionOperator` instead. -AIR303.py:289:1: AIR303 `airflow.operators.hive_to_druid.HiveToDruidOperator` is moved into `apache-druid` provider in Airflow 3.0; +AIR302.py:289:1: AIR302 `airflow.operators.hive_to_druid.HiveToDruidOperator` is moved into `apache-druid` provider in Airflow 3.0; | 287 | HiveServer2Hook() 288 | HiveStatsCollectionOperator() 289 | HiveToDruidOperator() - | ^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^ AIR302 290 | HiveToDruidTransfer() 291 | HiveToSambaOperator() | = help: Install `apache-airflow-provider-apache-druid>=1.0.0` and use `airflow.providers.apache.druid.transfers.hive_to_druid.HiveToDruidOperator` instead. -AIR303.py:290:1: AIR303 `airflow.operators.hive_to_druid.HiveToDruidTransfer` is moved into `apache-druid` provider in Airflow 3.0; +AIR302.py:290:1: AIR302 `airflow.operators.hive_to_druid.HiveToDruidTransfer` is moved into `apache-druid` provider in Airflow 3.0; | 288 | HiveStatsCollectionOperator() 289 | HiveToDruidOperator() 290 | HiveToDruidTransfer() - | ^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^ AIR302 291 | HiveToSambaOperator() 292 | S3ToHiveOperator() | = help: Install `apache-airflow-provider-apache-druid>=1.0.0` and use `airflow.providers.apache.druid.transfers.hive_to_druid.HiveToDruidOperator` instead. -AIR303.py:291:1: AIR303 `airflow.operators.hive_to_samba_operator.HiveToSambaOperator` is moved into `apache-hive` provider in Airflow 3.0; +AIR302.py:291:1: AIR302 `airflow.operators.hive_to_samba_operator.HiveToSambaOperator` is moved into `apache-hive` provider in Airflow 3.0; | 289 | HiveToDruidOperator() 290 | HiveToDruidTransfer() 291 | HiveToSambaOperator() - | ^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^ AIR302 292 | S3ToHiveOperator() 293 | S3ToHiveTransfer() | = help: Install `apache-airflow-provider-apache-hive>=1.0.0` and use `HiveToSambaOperator` instead. -AIR303.py:292:1: AIR303 `airflow.operators.s3_to_hive_operator.S3ToHiveOperator` is moved into `apache-hive` provider in Airflow 3.0; +AIR302.py:292:1: AIR302 `airflow.operators.s3_to_hive_operator.S3ToHiveOperator` is moved into `apache-hive` provider in Airflow 3.0; | 290 | HiveToDruidTransfer() 291 | HiveToSambaOperator() 292 | S3ToHiveOperator() - | ^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^ AIR302 293 | S3ToHiveTransfer() 294 | MetastorePartitionSensor() | = help: Install `apache-airflow-provider-apache-hive>=1.0.0` and use `airflow.providers.apache.hive.transfers.s3_to_hive.S3ToHiveOperator` instead. -AIR303.py:293:1: AIR303 `airflow.operators.s3_to_hive_operator.S3ToHiveTransfer` is moved into `apache-hive` provider in Airflow 3.0; +AIR302.py:293:1: AIR302 `airflow.operators.s3_to_hive_operator.S3ToHiveTransfer` is moved into `apache-hive` provider in Airflow 3.0; | 291 | HiveToSambaOperator() 292 | S3ToHiveOperator() 293 | S3ToHiveTransfer() - | ^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^ AIR302 294 | MetastorePartitionSensor() 295 | NamedHivePartitionSensor() | = help: Install `apache-airflow-provider-apache-hive>=1.0.0` and use `airflow.providers.apache.hive.transfers.s3_to_hive.S3ToHiveOperator` instead. -AIR303.py:294:1: AIR303 `airflow.sensors.metastore_partition_sensor.MetastorePartitionSensor` is moved into `apache-hive` provider in Airflow 3.0; +AIR302.py:294:1: AIR302 `airflow.sensors.metastore_partition_sensor.MetastorePartitionSensor` is moved into `apache-hive` provider in Airflow 3.0; | 292 | S3ToHiveOperator() 293 | S3ToHiveTransfer() 294 | MetastorePartitionSensor() - | ^^^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 295 | NamedHivePartitionSensor() | = help: Install `apache-airflow-provider-apache-hive>=1.0.0` and use `airflow.providers.apache.hive.sensors.metastore_partition.MetastorePartitionSensor` instead. -AIR303.py:295:1: AIR303 `airflow.sensors.named_hive_partition_sensor.NamedHivePartitionSensor` is moved into `apache-hive` provider in Airflow 3.0; +AIR302.py:295:1: AIR302 `airflow.sensors.named_hive_partition_sensor.NamedHivePartitionSensor` is moved into `apache-hive` provider in Airflow 3.0; | 293 | S3ToHiveTransfer() 294 | MetastorePartitionSensor() 295 | NamedHivePartitionSensor() - | ^^^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 296 | 297 | # apache-airflow-providers-http | = help: Install `apache-airflow-provider-apache-hive>=1.0.0` and use `airflow.providers.apache.hive.sensors.named_hive_partition.NamedHivePartitionSensor` instead. -AIR303.py:298:1: AIR303 `airflow.hooks.http_hook.HttpHook` is moved into `http` provider in Airflow 3.0; +AIR302.py:298:1: AIR302 `airflow.hooks.http_hook.HttpHook` is moved into `http` provider in Airflow 3.0; | 297 | # apache-airflow-providers-http 298 | HttpHook() - | ^^^^^^^^ AIR303 + | ^^^^^^^^ AIR302 299 | HttpSensor() 300 | SimpleHttpOperator() | = help: Install `apache-airflow-provider-http>=1.0.0` and use `airflow.providers.http.hooks.http.HttpHook` instead. -AIR303.py:299:1: AIR303 `airflow.sensors.http_sensor.HttpSensor` is moved into `http` provider in Airflow 3.0; +AIR302.py:299:1: AIR302 `airflow.sensors.http_sensor.HttpSensor` is moved into `http` provider in Airflow 3.0; | 297 | # apache-airflow-providers-http 298 | HttpHook() 299 | HttpSensor() - | ^^^^^^^^^^ AIR303 + | ^^^^^^^^^^ AIR302 300 | SimpleHttpOperator() | = help: Install `apache-airflow-provider-http>=1.0.0` and use `airflow.providers.http.sensors.http.HttpSensor` instead. -AIR303.py:300:1: AIR303 `airflow.operators.http_operator.SimpleHttpOperator` is moved into `http` provider in Airflow 3.0; +AIR302.py:300:1: AIR302 `airflow.operators.http_operator.SimpleHttpOperator` is moved into `http` provider in Airflow 3.0; | 298 | HttpHook() 299 | HttpSensor() 300 | SimpleHttpOperator() - | ^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^ AIR302 301 | 302 | # apache-airflow-providers-jdbc | = help: Install `apache-airflow-provider-http>=1.0.0` and use `airflow.providers.http.operators.http.SimpleHttpOperator` instead. -AIR303.py:303:1: AIR303 `airflow.hooks.jdbc_hook.jaydebeapi` is moved into `jdbc` provider in Airflow 3.0; +AIR302.py:303:1: AIR302 `airflow.hooks.jdbc_hook.jaydebeapi` is moved into `jdbc` provider in Airflow 3.0; | 302 | # apache-airflow-providers-jdbc 303 | jaydebeapi - | ^^^^^^^^^^ AIR303 + | ^^^^^^^^^^ AIR302 304 | JdbcHook() 305 | JdbcOperator() | = help: Install `apache-airflow-provider-jdbc>=1.0.0` and use `airflow.providers.jdbc.hooks.jdbc.jaydebeapi` instead. -AIR303.py:304:1: AIR303 `airflow.hooks.jdbc_hook.JdbcHook` is moved into `jdbc` provider in Airflow 3.0; +AIR302.py:304:1: AIR302 `airflow.hooks.jdbc_hook.JdbcHook` is moved into `jdbc` provider in Airflow 3.0; | 302 | # apache-airflow-providers-jdbc 303 | jaydebeapi 304 | JdbcHook() - | ^^^^^^^^ AIR303 + | ^^^^^^^^ AIR302 305 | JdbcOperator() | = help: Install `apache-airflow-provider-jdbc>=1.0.0` and use `airflow.providers.jdbc.hooks.jdbc.JdbcHook` instead. -AIR303.py:305:1: AIR303 `airflow.operators.jdbc_operator.JdbcOperator` is moved into `jdbc` provider in Airflow 3.0; +AIR302.py:305:1: AIR302 `airflow.operators.jdbc_operator.JdbcOperator` is moved into `jdbc` provider in Airflow 3.0; | 303 | jaydebeapi 304 | JdbcHook() 305 | JdbcOperator() - | ^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^ AIR302 306 | 307 | # apache-airflow-providers-fab | = help: Install `apache-airflow-provider-jdbc>=1.0.0` and use `airflow.providers.jdbc.operators.jdbc.JdbcOperator` instead. -AIR303.py:308:1: AIR303 Import path `airflow.api.auth.backend.basic_auth` is moved into `fab` provider in Airflow 3.0; +AIR302.py:308:1: AIR302 Import path `airflow.api.auth.backend.basic_auth` is moved into `fab` provider in Airflow 3.0; | 307 | # apache-airflow-providers-fab 308 | basic_auth, kerberos_auth - | ^^^^^^^^^^ AIR303 + | ^^^^^^^^^^ AIR302 309 | auth_current_user 310 | backend_kerberos_auth | = help: Install `apache-airflow-provider-fab>=1.0.0` and import from `airflow.providers.fab.auth_manager.api.auth.backend.basic_auth` instead. -AIR303.py:308:13: AIR303 Import path `airflow.api.auth.backend.kerberos_auth` is moved into `fab` provider in Airflow 3.0; +AIR302.py:308:13: AIR302 Import path `airflow.api.auth.backend.kerberos_auth` is moved into `fab` provider in Airflow 3.0; | 307 | # apache-airflow-providers-fab 308 | basic_auth, kerberos_auth - | ^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^ AIR302 309 | auth_current_user 310 | backend_kerberos_auth | = help: Install `apache-airflow-provider-fab>=1.0.0` and import from `airflow.providers.fab.auth_manager.api.auth.backend.kerberos_auth` instead. -AIR303.py:309:1: AIR303 Import path `airflow.api.auth.backend.basic_auth` is moved into `fab` provider in Airflow 3.0; +AIR302.py:309:1: AIR302 Import path `airflow.api.auth.backend.basic_auth` is moved into `fab` provider in Airflow 3.0; | 307 | # apache-airflow-providers-fab 308 | basic_auth, kerberos_auth 309 | auth_current_user - | ^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^ AIR302 310 | backend_kerberos_auth 311 | fab_override | = help: Install `apache-airflow-provider-fab>=1.0.0` and import from `airflow.providers.fab.auth_manager.api.auth.backend.basic_auth` instead. -AIR303.py:310:1: AIR303 Import path `airflow.auth_manager.api.auth.backend.kerberos_auth` is moved into `fab` provider in Airflow 3.0; +AIR302.py:310:1: AIR302 Import path `airflow.auth_manager.api.auth.backend.kerberos_auth` is moved into `fab` provider in Airflow 3.0; | 308 | basic_auth, kerberos_auth 309 | auth_current_user 310 | backend_kerberos_auth - | ^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^ AIR302 311 | fab_override 312 | FabAuthManager() | = help: Install `apache-airflow-provider-fab>=1.0.0` and import from `airflow.providers.fab.auth_manager.api.auth.backend.kerberos_auth` instead. -AIR303.py:311:1: AIR303 Import path `airflow.auth.managers.fab.security_manager.override` is moved into `fab` provider in Airflow 3.0; +AIR302.py:311:1: AIR302 Import path `airflow.auth.managers.fab.security_manager.override` is moved into `fab` provider in Airflow 3.0; | 309 | auth_current_user 310 | backend_kerberos_auth 311 | fab_override - | ^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^ AIR302 312 | FabAuthManager() 313 | FabAirflowSecurityManagerOverride() | = help: Install `apache-airflow-provider-fab>=1.0.0` and import from `airflow.providers.fab.auth_manager.security_manager.override` instead. -AIR303.py:312:1: AIR303 `airflow.auth.managers.fab.fab_auth_manager.FabAuthManager` is moved into `fab` provider in Airflow 3.0; +AIR302.py:312:1: AIR302 `airflow.auth.managers.fab.fab_auth_manager.FabAuthManager` is moved into `fab` provider in Airflow 3.0; | 310 | backend_kerberos_auth 311 | fab_override 312 | FabAuthManager() - | ^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^ AIR302 313 | FabAirflowSecurityManagerOverride() | = help: Install `apache-airflow-provider-fab>=1.0.0` and use `airflow.providers.fab.auth_manager.security_manager.FabAuthManager` instead. -AIR303.py:313:1: AIR303 `airflow.www.security.FabAirflowSecurityManagerOverride` is moved into `fab` provider in Airflow 3.0; +AIR302.py:313:1: AIR302 `airflow.www.security.FabAirflowSecurityManagerOverride` is moved into `fab` provider in Airflow 3.0; | 311 | fab_override 312 | FabAuthManager() 313 | FabAirflowSecurityManagerOverride() - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 314 | 315 | # apache-airflow-providers-cncf-kubernetes | = help: Install `apache-airflow-provider-fab>=1.0.0` and use `airflow.providers.fab.auth_manager.security_manager.override.FabAirflowSecurityManagerOverride` instead. -AIR303.py:316:1: AIR303 `airflow.executors.kubernetes_executor_types.ALL_NAMESPACES` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:316:1: AIR302 `airflow.executors.kubernetes_executor_types.ALL_NAMESPACES` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 315 | # apache-airflow-providers-cncf-kubernetes 316 | ALL_NAMESPACES - | ^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^ AIR302 317 | POD_EXECUTOR_DONE_KEY 318 | _disable_verify_ssl() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.executors.kubernetes_executor_types.ALL_NAMESPACES` instead. -AIR303.py:317:1: AIR303 `airflow.executors.kubernetes_executor_types.POD_EXECUTOR_DONE_KEY` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:317:1: AIR302 `airflow.executors.kubernetes_executor_types.POD_EXECUTOR_DONE_KEY` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 315 | # apache-airflow-providers-cncf-kubernetes 316 | ALL_NAMESPACES 317 | POD_EXECUTOR_DONE_KEY - | ^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^ AIR302 318 | _disable_verify_ssl() 319 | _enable_tcp_keepalive() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.executors.kubernetes_executor_types.POD_EXECUTOR_DONE_KEY` instead. -AIR303.py:318:1: AIR303 `airflow.kubernetes.kube_client._disable_verify_ssl` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:318:1: AIR302 `airflow.kubernetes.kube_client._disable_verify_ssl` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 316 | ALL_NAMESPACES 317 | POD_EXECUTOR_DONE_KEY 318 | _disable_verify_ssl() - | ^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^ AIR302 319 | _enable_tcp_keepalive() 320 | append_to_pod() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.kubernetes.airflow.providers.cncf.kubernetes.kube_client._disable_verify_ssl` instead. -AIR303.py:319:1: AIR303 `airflow.kubernetes.kube_client._enable_tcp_keepalive` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:319:1: AIR302 `airflow.kubernetes.kube_client._enable_tcp_keepalive` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 317 | POD_EXECUTOR_DONE_KEY 318 | _disable_verify_ssl() 319 | _enable_tcp_keepalive() - | ^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^ AIR302 320 | append_to_pod() 321 | annotations_for_logging_task_metadata() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.kubernetes.airflow.providers.cncf.kubernetes.kube_client._enable_tcp_keepalive` instead. -AIR303.py:320:1: AIR303 `airflow.kubernetes.k8s_model.append_to_pod` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:320:1: AIR302 `airflow.kubernetes.k8s_model.append_to_pod` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 318 | _disable_verify_ssl() 319 | _enable_tcp_keepalive() 320 | append_to_pod() - | ^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^ AIR302 321 | annotations_for_logging_task_metadata() 322 | annotations_to_key() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.k8s_model.append_to_pod` instead. -AIR303.py:321:1: AIR303 `airflow.kubernetes.kubernetes_helper_functions.annotations_for_logging_task_metadata` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:321:1: AIR302 `airflow.kubernetes.kubernetes_helper_functions.annotations_for_logging_task_metadata` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 319 | _enable_tcp_keepalive() 320 | append_to_pod() 321 | annotations_for_logging_task_metadata() - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 322 | annotations_to_key() 323 | create_pod_id() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.kubernetes_helper_functions.annotations_for_logging_task_metadata` instead. -AIR303.py:322:1: AIR303 `airflow.kubernetes.kubernetes_helper_functions.annotations_to_key` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:322:1: AIR302 `airflow.kubernetes.kubernetes_helper_functions.annotations_to_key` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 320 | append_to_pod() 321 | annotations_for_logging_task_metadata() 322 | annotations_to_key() - | ^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^ AIR302 323 | create_pod_id() 324 | datetime_to_label_safe_datestring() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.kubernetes_helper_functions.annotations_to_key` instead. -AIR303.py:323:1: AIR303 `airflow.kubernetes.kubernetes_helper_functions.create_pod_id` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:323:1: AIR302 `airflow.kubernetes.kubernetes_helper_functions.create_pod_id` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 321 | annotations_for_logging_task_metadata() 322 | annotations_to_key() 323 | create_pod_id() - | ^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^ AIR302 324 | datetime_to_label_safe_datestring() 325 | extend_object_field() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.kubernetes_helper_functions.create_pod_id` instead. -AIR303.py:324:1: AIR303 `airflow.kubernetes.pod_generator.datetime_to_label_safe_datestring` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:324:1: AIR302 `airflow.kubernetes.pod_generator.datetime_to_label_safe_datestring` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 322 | annotations_to_key() 323 | create_pod_id() 324 | datetime_to_label_safe_datestring() - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 325 | extend_object_field() 326 | get_logs_task_metadata() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_generator.datetime_to_label_safe_datestring` instead. -AIR303.py:325:1: AIR303 `airflow.kubernetes.pod_generator.extend_object_field` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:325:1: AIR302 `airflow.kubernetes.pod_generator.extend_object_field` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 323 | create_pod_id() 324 | datetime_to_label_safe_datestring() 325 | extend_object_field() - | ^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^ AIR302 326 | get_logs_task_metadata() 327 | label_safe_datestring_to_datetime() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.kubernetes.airflow.providers.cncf.kubernetes.pod_generator.extend_object_field` instead. -AIR303.py:326:1: AIR303 `airflow.kubernetes.kubernetes_helper_functions.get_logs_task_metadata` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:326:1: AIR302 `airflow.kubernetes.kubernetes_helper_functions.get_logs_task_metadata` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 324 | datetime_to_label_safe_datestring() 325 | extend_object_field() 326 | get_logs_task_metadata() - | ^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^ AIR302 327 | label_safe_datestring_to_datetime() 328 | merge_objects() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.kubernetes_helper_functions.get_logs_task_metadata` instead. -AIR303.py:327:1: AIR303 `airflow.kubernetes.pod_generator.label_safe_datestring_to_datetime` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:327:1: AIR302 `airflow.kubernetes.pod_generator.label_safe_datestring_to_datetime` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 325 | extend_object_field() 326 | get_logs_task_metadata() 327 | label_safe_datestring_to_datetime() - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 328 | merge_objects() 329 | Port() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_generator.label_safe_datestring_to_datetime` instead. -AIR303.py:328:1: AIR303 `airflow.kubernetes.pod_generator.merge_objects` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:328:1: AIR302 `airflow.kubernetes.pod_generator.merge_objects` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 326 | get_logs_task_metadata() 327 | label_safe_datestring_to_datetime() 328 | merge_objects() - | ^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^ AIR302 329 | Port() 330 | Resources() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_generator.merge_objects` instead. -AIR303.py:329:1: AIR303 `airflow.kubernetes.pod.Port` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:329:1: AIR302 `airflow.kubernetes.pod.Port` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 327 | label_safe_datestring_to_datetime() 328 | merge_objects() 329 | Port() - | ^^^^ AIR303 + | ^^^^ AIR302 330 | Resources() 331 | PodRuntimeInfoEnv() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `kubernetes.client.models.V1ContainerPort` instead. -AIR303.py:330:1: AIR303 `airflow.kubernetes.pod.Resources` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:330:1: AIR302 `airflow.kubernetes.pod.Resources` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 328 | merge_objects() 329 | Port() 330 | Resources() - | ^^^^^^^^^ AIR303 + | ^^^^^^^^^ AIR302 331 | PodRuntimeInfoEnv() 332 | PodGeneratorDeprecated() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `kubernetes.client.models.V1ResourceRequirements` instead. -AIR303.py:331:1: AIR303 `airflow.kubernetes.pod_runtime_info_env.PodRuntimeInfoEnv` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:331:1: AIR302 `airflow.kubernetes.pod_runtime_info_env.PodRuntimeInfoEnv` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 329 | Port() 330 | Resources() 331 | PodRuntimeInfoEnv() - | ^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^ AIR302 332 | PodGeneratorDeprecated() 333 | Volume() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `kubernetes.client.models.V1EnvVar` instead. -AIR303.py:332:1: AIR303 `airflow.kubernetes.pod_generator.PodGeneratorDeprecated` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:332:1: AIR302 `airflow.kubernetes.pod_generator.PodGeneratorDeprecated` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 330 | Resources() 331 | PodRuntimeInfoEnv() 332 | PodGeneratorDeprecated() - | ^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^ AIR302 333 | Volume() 334 | VolumeMount() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_generator.PodGenerator` instead. -AIR303.py:333:1: AIR303 `airflow.kubernetes.volume.Volume` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:333:1: AIR302 `airflow.kubernetes.volume.Volume` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 331 | PodRuntimeInfoEnv() 332 | PodGeneratorDeprecated() 333 | Volume() - | ^^^^^^ AIR303 + | ^^^^^^ AIR302 334 | VolumeMount() 335 | Secret() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `kubernetes.client.models.V1Volume` instead. -AIR303.py:334:1: AIR303 `airflow.kubernetes.volume_mount.VolumeMount` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:334:1: AIR302 `airflow.kubernetes.volume_mount.VolumeMount` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 332 | PodGeneratorDeprecated() 333 | Volume() 334 | VolumeMount() - | ^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^ AIR302 335 | Secret() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `kubernetes.client.models.V1VolumeMount` instead. -AIR303.py:335:1: AIR303 `airflow.kubernetes.secret.Secret` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:335:1: AIR302 `airflow.kubernetes.secret.Secret` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 333 | Volume() 334 | VolumeMount() 335 | Secret() - | ^^^^^^ AIR303 + | ^^^^^^ AIR302 336 | 337 | add_pod_suffix() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.secret.Secret` instead. -AIR303.py:337:1: AIR303 `airflow.kubernetes.kubernetes_helper_functions.add_pod_suffix` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:337:1: AIR302 `airflow.kubernetes.kubernetes_helper_functions.add_pod_suffix` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 335 | Secret() 336 | 337 | add_pod_suffix() - | ^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^ AIR302 338 | add_pod_suffix2() 339 | get_kube_client() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.kubernetes_helper_functions.add_pod_suffix` instead. -AIR303.py:338:1: AIR303 `airflow.kubernetes.pod_generator.add_pod_suffix` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:338:1: AIR302 `airflow.kubernetes.pod_generator.add_pod_suffix` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 337 | add_pod_suffix() 338 | add_pod_suffix2() - | ^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^ AIR302 339 | get_kube_client() 340 | get_kube_client2() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.kubernetes_helper_functions.add_pod_suffix` instead. -AIR303.py:339:1: AIR303 `airflow.kubernetes.kube_client.get_kube_client` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:339:1: AIR302 `airflow.kubernetes.kube_client.get_kube_client` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 337 | add_pod_suffix() 338 | add_pod_suffix2() 339 | get_kube_client() - | ^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^ AIR302 340 | get_kube_client2() 341 | make_safe_label_value() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.kubernetes.airflow.providers.cncf.kubernetes.kube_client.get_kube_client` instead. -AIR303.py:340:1: AIR303 `airflow.kubernetes.pod_launcher_deprecated.get_kube_client` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:340:1: AIR302 `airflow.kubernetes.pod_launcher_deprecated.get_kube_client` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 338 | add_pod_suffix2() 339 | get_kube_client() 340 | get_kube_client2() - | ^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^ AIR302 341 | make_safe_label_value() 342 | make_safe_label_value2() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.kube_client.get_kube_client` instead. -AIR303.py:341:1: AIR303 `airflow.kubernetes.pod_generator.make_safe_label_value` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:341:1: AIR302 `airflow.kubernetes.pod_generator.make_safe_label_value` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 339 | get_kube_client() 340 | get_kube_client2() 341 | make_safe_label_value() - | ^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^ AIR302 342 | make_safe_label_value2() 343 | rand_str() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_generator.make_safe_label_value` instead. -AIR303.py:342:1: AIR303 `airflow.kubernetes.pod_generator_deprecated.make_safe_label_value` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:342:1: AIR302 `airflow.kubernetes.pod_generator_deprecated.make_safe_label_value` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 340 | get_kube_client2() 341 | make_safe_label_value() 342 | make_safe_label_value2() - | ^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^ AIR302 343 | rand_str() 344 | rand_str2() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_generator_deprecated.make_safe_label_value` instead. -AIR303.py:343:1: AIR303 `airflow.kubernetes.kubernetes_helper_functions.rand_str` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:343:1: AIR302 `airflow.kubernetes.kubernetes_helper_functions.rand_str` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 341 | make_safe_label_value() 342 | make_safe_label_value2() 343 | rand_str() - | ^^^^^^^^ AIR303 + | ^^^^^^^^ AIR302 344 | rand_str2() 345 | K8SModel() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.kubernetes_helper_functions.rand_str` instead. -AIR303.py:344:1: AIR303 `airflow.kubernetes.pod_generator.rand_str` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:344:1: AIR302 `airflow.kubernetes.pod_generator.rand_str` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 342 | make_safe_label_value2() 343 | rand_str() 344 | rand_str2() - | ^^^^^^^^^ AIR303 + | ^^^^^^^^^ AIR302 345 | K8SModel() 346 | K8SModel2() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.kubernetes_helper_functions.rand_str` instead. -AIR303.py:345:1: AIR303 `airflow.kubernetes.k8s_model.K8SModel` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:345:1: AIR302 `airflow.kubernetes.k8s_model.K8SModel` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 343 | rand_str() 344 | rand_str2() 345 | K8SModel() - | ^^^^^^^^ AIR303 + | ^^^^^^^^ AIR302 346 | K8SModel2() 347 | PodLauncher() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.k8s_model.K8SModel` instead. -AIR303.py:347:1: AIR303 `airflow.kubernetes.pod_launcher.PodLauncher` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:347:1: AIR302 `airflow.kubernetes.pod_launcher.PodLauncher` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 345 | K8SModel() 346 | K8SModel2() 347 | PodLauncher() - | ^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^ AIR302 348 | PodLauncher2() 349 | PodStatus() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_launcher.PodLauncher` instead. -AIR303.py:348:1: AIR303 `airflow.kubernetes.pod_launcher_deprecated.PodLauncher` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:348:1: AIR302 `airflow.kubernetes.pod_launcher_deprecated.PodLauncher` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 346 | K8SModel2() 347 | PodLauncher() 348 | PodLauncher2() - | ^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^ AIR302 349 | PodStatus() 350 | PodStatus2() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_launcher_deprecated.PodLauncher` instead. -AIR303.py:349:1: AIR303 `airflow.kubernetes.pod_launcher.PodStatus` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:349:1: AIR302 `airflow.kubernetes.pod_launcher.PodStatus` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 347 | PodLauncher() 348 | PodLauncher2() 349 | PodStatus() - | ^^^^^^^^^ AIR303 + | ^^^^^^^^^ AIR302 350 | PodStatus2() 351 | PodDefaults() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_launcher.PodStatus` instead. -AIR303.py:350:1: AIR303 `airflow.kubernetes.pod_launcher_deprecated.PodStatus` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:350:1: AIR302 `airflow.kubernetes.pod_launcher_deprecated.PodStatus` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 348 | PodLauncher2() 349 | PodStatus() 350 | PodStatus2() - | ^^^^^^^^^^ AIR303 + | ^^^^^^^^^^ AIR302 351 | PodDefaults() 352 | PodDefaults2() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_launcher_deprecated.PodStatus` instead. -AIR303.py:351:1: AIR303 `airflow.kubernetes.pod_generator.PodDefaults` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:351:1: AIR302 `airflow.kubernetes.pod_generator.PodDefaults` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 349 | PodStatus() 350 | PodStatus2() 351 | PodDefaults() - | ^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^ AIR302 352 | PodDefaults2() 353 | PodDefaults3() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_generator_deprecated.PodDefaults` instead. -AIR303.py:352:1: AIR303 `airflow.kubernetes.pod_launcher_deprecated.PodDefaults` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:352:1: AIR302 `airflow.kubernetes.pod_launcher_deprecated.PodDefaults` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 350 | PodStatus2() 351 | PodDefaults() 352 | PodDefaults2() - | ^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^ AIR302 353 | PodDefaults3() 354 | PodGenerator() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_generator_deprecated.PodDefaults` instead. -AIR303.py:353:1: AIR303 `airflow.kubernetes.pod_generator_deprecated.PodDefaults` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:353:1: AIR302 `airflow.kubernetes.pod_generator_deprecated.PodDefaults` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 351 | PodDefaults() 352 | PodDefaults2() 353 | PodDefaults3() - | ^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^ AIR302 354 | PodGenerator() 355 | PodGenerator2() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_generator_deprecated.PodDefaults` instead. -AIR303.py:354:1: AIR303 `airflow.kubernetes.pod_generator.PodGenerator` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:354:1: AIR302 `airflow.kubernetes.pod_generator.PodGenerator` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 352 | PodDefaults2() 353 | PodDefaults3() 354 | PodGenerator() - | ^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^ AIR302 355 | PodGenerator2() | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_generator.PodGenerator` instead. -AIR303.py:355:1: AIR303 `airflow.kubernetes.pod_generator_deprecated.PodGenerator` is moved into `cncf-kubernetes` provider in Airflow 3.0; +AIR302.py:355:1: AIR302 `airflow.kubernetes.pod_generator_deprecated.PodGenerator` is moved into `cncf-kubernetes` provider in Airflow 3.0; | 353 | PodDefaults3() 354 | PodGenerator() 355 | PodGenerator2() - | ^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^ AIR302 | = help: Install `apache-airflow-provider-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_generator_deprecated.PodGenerator` instead. -AIR303.py:359:1: AIR303 `airflow.hooks.mssql_hook.MsSqlHook` is moved into `microsoft-mssql` provider in Airflow 3.0; +AIR302.py:359:1: AIR302 `airflow.hooks.mssql_hook.MsSqlHook` is moved into `microsoft-mssql` provider in Airflow 3.0; | 358 | # apache-airflow-providers-microsoft-mssql 359 | MsSqlHook() - | ^^^^^^^^^ AIR303 + | ^^^^^^^^^ AIR302 360 | MsSqlOperator() 361 | MsSqlToHiveOperator() | = help: Install `apache-airflow-provider-microsoft-mssql>=1.0.0` and use `airflow.providers.microsoft.mssql.hooks.mssql.MsSqlHook` instead. -AIR303.py:360:1: AIR303 `airflow.operators.mssql_operator.MsSqlOperator` is moved into `microsoft-mssql` provider in Airflow 3.0; +AIR302.py:360:1: AIR302 `airflow.operators.mssql_operator.MsSqlOperator` is moved into `microsoft-mssql` provider in Airflow 3.0; | 358 | # apache-airflow-providers-microsoft-mssql 359 | MsSqlHook() 360 | MsSqlOperator() - | ^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^ AIR302 361 | MsSqlToHiveOperator() 362 | MsSqlToHiveTransfer() | = help: Install `apache-airflow-provider-microsoft-mssql>=1.0.0` and use `airflow.providers.microsoft.mssql.operators.mssql.MsSqlOperator` instead. -AIR303.py:361:1: AIR303 `airflow.operators.mssql_to_hive.MsSqlToHiveOperator` is moved into `apache-hive` provider in Airflow 3.0; +AIR302.py:361:1: AIR302 `airflow.operators.mssql_to_hive.MsSqlToHiveOperator` is moved into `apache-hive` provider in Airflow 3.0; | 359 | MsSqlHook() 360 | MsSqlOperator() 361 | MsSqlToHiveOperator() - | ^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^ AIR302 362 | MsSqlToHiveTransfer() | = help: Install `apache-airflow-provider-apache-hive>=1.0.0` and use `airflow.providers.apache.hive.transfers.mssql_to_hive.MsSqlToHiveOperator` instead. -AIR303.py:362:1: AIR303 `airflow.operators.mssql_to_hive.MsSqlToHiveTransfer` is moved into `apache-hive` provider in Airflow 3.0; +AIR302.py:362:1: AIR302 `airflow.operators.mssql_to_hive.MsSqlToHiveTransfer` is moved into `apache-hive` provider in Airflow 3.0; | 360 | MsSqlOperator() 361 | MsSqlToHiveOperator() 362 | MsSqlToHiveTransfer() - | ^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^ AIR302 363 | 364 | # apache-airflow-providers-mysql | = help: Install `apache-airflow-provider-apache-hive>=1.0.0` and use `airflow.providers.apache.hive.transfers.mssql_to_hive.MsSqlToHiveOperator` instead. -AIR303.py:365:1: AIR303 `airflow.operators.hive_to_mysql.HiveToMySqlOperator` is moved into `apache-hive` provider in Airflow 3.0; +AIR302.py:365:1: AIR302 `airflow.operators.hive_to_mysql.HiveToMySqlOperator` is moved into `apache-hive` provider in Airflow 3.0; | 364 | # apache-airflow-providers-mysql 365 | HiveToMySqlOperator() - | ^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^ AIR302 366 | HiveToMySqlTransfer() 367 | MySqlHook() | = help: Install `apache-airflow-provider-apache-hive>=1.0.0` and use `airflow.providers.apache.hive.transfers.hive_to_mysql.HiveToMySqlOperator` instead. -AIR303.py:366:1: AIR303 `airflow.operators.hive_to_mysql.HiveToMySqlTransfer` is moved into `apache-hive` provider in Airflow 3.0; +AIR302.py:366:1: AIR302 `airflow.operators.hive_to_mysql.HiveToMySqlTransfer` is moved into `apache-hive` provider in Airflow 3.0; | 364 | # apache-airflow-providers-mysql 365 | HiveToMySqlOperator() 366 | HiveToMySqlTransfer() - | ^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^ AIR302 367 | MySqlHook() 368 | MySqlOperator() | = help: Install `apache-airflow-provider-apache-hive>=1.0.0` and use `airflow.providers.apache.hive.transfers.hive_to_mysql.HiveToMySqlOperator` instead. -AIR303.py:367:1: AIR303 `airflow.hooks.mysql_hook.MySqlHook` is moved into `mysql` provider in Airflow 3.0; +AIR302.py:367:1: AIR302 `airflow.hooks.mysql_hook.MySqlHook` is moved into `mysql` provider in Airflow 3.0; | 365 | HiveToMySqlOperator() 366 | HiveToMySqlTransfer() 367 | MySqlHook() - | ^^^^^^^^^ AIR303 + | ^^^^^^^^^ AIR302 368 | MySqlOperator() 369 | MySqlToHiveOperator() | = help: Install `apache-airflow-provider-mysql>=1.0.0` and use `airflow.providers.mysql.hooks.mysql.MySqlHook` instead. -AIR303.py:368:1: AIR303 `airflow.operators.mysql_operator.MySqlOperator` is moved into `mysql` provider in Airflow 3.0; +AIR302.py:368:1: AIR302 `airflow.operators.mysql_operator.MySqlOperator` is moved into `mysql` provider in Airflow 3.0; | 366 | HiveToMySqlTransfer() 367 | MySqlHook() 368 | MySqlOperator() - | ^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^ AIR302 369 | MySqlToHiveOperator() 370 | MySqlToHiveTransfer() | = help: Install `apache-airflow-provider-mysql>=1.0.0` and use `airflow.providers.mysql.operators.mysql.MySqlOperator` instead. -AIR303.py:369:1: AIR303 `airflow.operators.mysql_to_hive.MySqlToHiveOperator` is moved into `apache-hive` provider in Airflow 3.0; +AIR302.py:369:1: AIR302 `airflow.operators.mysql_to_hive.MySqlToHiveOperator` is moved into `apache-hive` provider in Airflow 3.0; | 367 | MySqlHook() 368 | MySqlOperator() 369 | MySqlToHiveOperator() - | ^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^ AIR302 370 | MySqlToHiveTransfer() 371 | PrestoToMySqlOperator() | = help: Install `apache-airflow-provider-apache-hive>=1.0.0` and use `airflow.providers.apache.hive.transfers.mysql_to_hive.MySqlToHiveOperator` instead. -AIR303.py:370:1: AIR303 `airflow.operators.mysql_to_hive.MySqlToHiveTransfer` is moved into `apache-hive` provider in Airflow 3.0; +AIR302.py:370:1: AIR302 `airflow.operators.mysql_to_hive.MySqlToHiveTransfer` is moved into `apache-hive` provider in Airflow 3.0; | 368 | MySqlOperator() 369 | MySqlToHiveOperator() 370 | MySqlToHiveTransfer() - | ^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^ AIR302 371 | PrestoToMySqlOperator() 372 | PrestoToMySqlTransfer() | = help: Install `apache-airflow-provider-apache-hive>=1.0.0` and use `airflow.providers.apache.hive.transfers.mysql_to_hive.MySqlToHiveOperator` instead. -AIR303.py:371:1: AIR303 `airflow.operators.presto_to_mysql.PrestoToMySqlOperator` is moved into `mysql` provider in Airflow 3.0; +AIR302.py:371:1: AIR302 `airflow.operators.presto_to_mysql.PrestoToMySqlOperator` is moved into `mysql` provider in Airflow 3.0; | 369 | MySqlToHiveOperator() 370 | MySqlToHiveTransfer() 371 | PrestoToMySqlOperator() - | ^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^ AIR302 372 | PrestoToMySqlTransfer() | = help: Install `apache-airflow-provider-mysql>=1.0.0` and use `airflow.providers.mysql.transfers.presto_to_mysql.PrestoToMySqlOperator` instead. -AIR303.py:372:1: AIR303 `airflow.operators.presto_to_mysql.PrestoToMySqlTransfer` is moved into `mysql` provider in Airflow 3.0; +AIR302.py:372:1: AIR302 `airflow.operators.presto_to_mysql.PrestoToMySqlTransfer` is moved into `mysql` provider in Airflow 3.0; | 370 | MySqlToHiveTransfer() 371 | PrestoToMySqlOperator() 372 | PrestoToMySqlTransfer() - | ^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^ AIR302 373 | 374 | # apache-airflow-providers-oracle | = help: Install `apache-airflow-provider-mysql>=1.0.0` and use `airflow.providers.mysql.transfers.presto_to_mysql.PrestoToMySqlOperator` instead. -AIR303.py:375:1: AIR303 `airflow.hooks.oracle_hook.OracleHook` is moved into `oracle` provider in Airflow 3.0; +AIR302.py:375:1: AIR302 `airflow.hooks.oracle_hook.OracleHook` is moved into `oracle` provider in Airflow 3.0; | 374 | # apache-airflow-providers-oracle 375 | OracleHook() - | ^^^^^^^^^^ AIR303 + | ^^^^^^^^^^ AIR302 376 | OracleOperator() | = help: Install `apache-airflow-provider-oracle>=1.0.0` and use `airflow.providers.oracle.hooks.oracle.OracleHook` instead. -AIR303.py:376:1: AIR303 `airflow.operators.oracle_operator.OracleOperator` is moved into `oracle` provider in Airflow 3.0; +AIR302.py:376:1: AIR302 `airflow.operators.oracle_operator.OracleOperator` is moved into `oracle` provider in Airflow 3.0; | 374 | # apache-airflow-providers-oracle 375 | OracleHook() 376 | OracleOperator() - | ^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^ AIR302 377 | 378 | # apache-airflow-providers-papermill | = help: Install `apache-airflow-provider-oracle>=1.0.0` and use `airflow.providers.oracle.operators.oracle.OracleOperator` instead. -AIR303.py:379:1: AIR303 `airflow.operators.papermill_operator.PapermillOperator` is moved into `papermill` provider in Airflow 3.0; +AIR302.py:379:1: AIR302 `airflow.operators.papermill_operator.PapermillOperator` is moved into `papermill` provider in Airflow 3.0; | 378 | # apache-airflow-providers-papermill 379 | PapermillOperator() - | ^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^ AIR302 380 | 381 | # apache-airflow-providers-apache-pig | = help: Install `apache-airflow-provider-papermill>=1.0.0` and use `airflow.providers.papermill.operators.papermill.PapermillOperator` instead. -AIR303.py:382:1: AIR303 `airflow.hooks.pig_hook.PigCliHook` is moved into `apache-pig` provider in Airflow 3.0; +AIR302.py:382:1: AIR302 `airflow.hooks.pig_hook.PigCliHook` is moved into `apache-pig` provider in Airflow 3.0; | 381 | # apache-airflow-providers-apache-pig 382 | PigCliHook() - | ^^^^^^^^^^ AIR303 + | ^^^^^^^^^^ AIR302 383 | PigOperator() | = help: Install `apache-airflow-provider-apache-pig>=1.0.0` and use `airflow.providers.apache.pig.hooks.pig.PigCliHook` instead. -AIR303.py:383:1: AIR303 `airflow.operators.pig_operator.PigOperator` is moved into `apache-pig` provider in Airflow 3.0; +AIR302.py:383:1: AIR302 `airflow.operators.pig_operator.PigOperator` is moved into `apache-pig` provider in Airflow 3.0; | 381 | # apache-airflow-providers-apache-pig 382 | PigCliHook() 383 | PigOperator() - | ^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^ AIR302 384 | 385 | # apache-airflow-providers-postgres | = help: Install `apache-airflow-provider-apache-pig>=1.0.0` and use `airflow.providers.apache.pig.operators.pig.PigOperator` instead. -AIR303.py:386:1: AIR303 `airflow.operators.postgres_operator.Mapping` is moved into `postgres` provider in Airflow 3.0; +AIR302.py:386:1: AIR302 `airflow.operators.postgres_operator.Mapping` is moved into `postgres` provider in Airflow 3.0; | 385 | # apache-airflow-providers-postgres 386 | Mapping - | ^^^^^^^ AIR303 + | ^^^^^^^ AIR302 387 | PostgresHook() 388 | PostgresOperator() | = help: Install `apache-airflow-provider-postgres>=1.0.0` and use `airflow.providers.postgres.operators.postgres.Mapping` instead. -AIR303.py:387:1: AIR303 `airflow.hooks.postgres_hook.PostgresHook` is moved into `postgres` provider in Airflow 3.0; +AIR302.py:387:1: AIR302 `airflow.hooks.postgres_hook.PostgresHook` is moved into `postgres` provider in Airflow 3.0; | 385 | # apache-airflow-providers-postgres 386 | Mapping 387 | PostgresHook() - | ^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^ AIR302 388 | PostgresOperator() | = help: Install `apache-airflow-provider-postgres>=1.0.0` and use `airflow.providers.postgres.hooks.postgres.PostgresHook` instead. -AIR303.py:388:1: AIR303 `airflow.operators.postgres_operator.PostgresOperator` is moved into `postgres` provider in Airflow 3.0; +AIR302.py:388:1: AIR302 `airflow.operators.postgres_operator.PostgresOperator` is moved into `postgres` provider in Airflow 3.0; | 386 | Mapping 387 | PostgresHook() 388 | PostgresOperator() - | ^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^ AIR302 389 | 390 | # apache-airflow-providers-presto | = help: Install `apache-airflow-provider-postgres>=1.0.0` and use `airflow.providers.postgres.operators.postgres.PostgresOperator` instead. -AIR303.py:391:1: AIR303 `airflow.hooks.presto_hook.PrestoHook` is moved into `presto` provider in Airflow 3.0; +AIR302.py:391:1: AIR302 `airflow.hooks.presto_hook.PrestoHook` is moved into `presto` provider in Airflow 3.0; | 390 | # apache-airflow-providers-presto 391 | PrestoHook() - | ^^^^^^^^^^ AIR303 + | ^^^^^^^^^^ AIR302 392 | 393 | # apache-airflow-providers-samba | = help: Install `apache-airflow-provider-presto>=1.0.0` and use `airflow.providers.presto.hooks.presto.PrestoHook` instead. -AIR303.py:394:1: AIR303 `airflow.hooks.samba_hook.SambaHook` is moved into `samba` provider in Airflow 3.0; +AIR302.py:394:1: AIR302 `airflow.hooks.samba_hook.SambaHook` is moved into `samba` provider in Airflow 3.0; | 393 | # apache-airflow-providers-samba 394 | SambaHook() - | ^^^^^^^^^ AIR303 + | ^^^^^^^^^ AIR302 395 | 396 | # apache-airflow-providers-slack | = help: Install `apache-airflow-provider-samba>=1.0.0` and use `airflow.providers.samba.hooks.samba.SambaHook` instead. -AIR303.py:397:1: AIR303 `airflow.hooks.slack_hook.SlackHook` is moved into `slack` provider in Airflow 3.0; +AIR302.py:397:1: AIR302 `airflow.hooks.slack_hook.SlackHook` is moved into `slack` provider in Airflow 3.0; | 396 | # apache-airflow-providers-slack 397 | SlackHook() - | ^^^^^^^^^ AIR303 + | ^^^^^^^^^ AIR302 398 | SlackAPIOperator() 399 | SlackAPIPostOperator() | = help: Install `apache-airflow-provider-slack>=1.0.0` and use `airflow.providers.slack.hooks.slack.SlackHook` instead. -AIR303.py:398:1: AIR303 `airflow.operators.slack_operator.SlackAPIOperator` is moved into `slack` provider in Airflow 3.0; +AIR302.py:398:1: AIR302 `airflow.operators.slack_operator.SlackAPIOperator` is moved into `slack` provider in Airflow 3.0; | 396 | # apache-airflow-providers-slack 397 | SlackHook() 398 | SlackAPIOperator() - | ^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^ AIR302 399 | SlackAPIPostOperator() | = help: Install `apache-airflow-provider-slack>=1.0.0` and use `airflow.providers.slack.operators.slack.SlackAPIOperator` instead. -AIR303.py:399:1: AIR303 `airflow.operators.slack_operator.SlackAPIPostOperator` is moved into `slack` provider in Airflow 3.0; +AIR302.py:399:1: AIR302 `airflow.operators.slack_operator.SlackAPIPostOperator` is moved into `slack` provider in Airflow 3.0; | 397 | SlackHook() 398 | SlackAPIOperator() 399 | SlackAPIPostOperator() - | ^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^ AIR302 400 | 401 | # apache-airflow-providers-sqlite | = help: Install `apache-airflow-provider-slack>=1.0.0` and use `airflow.providers.slack.operators.slack.SlackAPIPostOperator` instead. -AIR303.py:402:1: AIR303 `airflow.hooks.sqlite_hook.SqliteHook` is moved into `sqlite` provider in Airflow 3.0; +AIR302.py:402:1: AIR302 `airflow.hooks.sqlite_hook.SqliteHook` is moved into `sqlite` provider in Airflow 3.0; | 401 | # apache-airflow-providers-sqlite 402 | SqliteHook() - | ^^^^^^^^^^ AIR303 + | ^^^^^^^^^^ AIR302 403 | SqliteOperator() | = help: Install `apache-airflow-provider-sqlite>=1.0.0` and use `airflow.providers.sqlite.hooks.sqlite.SqliteHook` instead. -AIR303.py:403:1: AIR303 `airflow.operators.sqlite_operator.SqliteOperator` is moved into `sqlite` provider in Airflow 3.0; +AIR302.py:403:1: AIR302 `airflow.operators.sqlite_operator.SqliteOperator` is moved into `sqlite` provider in Airflow 3.0; | 401 | # apache-airflow-providers-sqlite 402 | SqliteHook() 403 | SqliteOperator() - | ^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^ AIR302 404 | 405 | # apache-airflow-providers-zendesk | = help: Install `apache-airflow-provider-sqlite>=1.0.0` and use `airflow.providers.sqlite.operators.sqlite.SqliteOperator` instead. -AIR303.py:406:1: AIR303 `airflow.hooks.zendesk_hook.ZendeskHook` is moved into `zendesk` provider in Airflow 3.0; +AIR302.py:406:1: AIR302 `airflow.hooks.zendesk_hook.ZendeskHook` is moved into `zendesk` provider in Airflow 3.0; | 405 | # apache-airflow-providers-zendesk 406 | ZendeskHook() - | ^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^ AIR302 407 | 408 | # apache-airflow-providers-standard | = help: Install `apache-airflow-provider-zendesk>=1.0.0` and use `airflow.providers.zendesk.hooks.zendesk.ZendeskHook` instead. -AIR303.py:409:1: AIR303 `airflow.sensors.filesystem.FileSensor` is moved into `standard` provider in Airflow 3.0; +AIR302.py:409:1: AIR302 `airflow.sensors.filesystem.FileSensor` is moved into `standard` provider in Airflow 3.0; | 408 | # apache-airflow-providers-standard 409 | FileSensor() - | ^^^^^^^^^^ AIR303 + | ^^^^^^^^^^ AIR302 410 | TriggerDagRunOperator() 411 | ExternalTaskMarker(), ExternalTaskSensor() | = help: Install `apache-airflow-provider-standard>=0.0.2` and use `airflow.providers.standard.sensors.filesystem.FileSensor` instead. -AIR303.py:410:1: AIR303 `airflow.operators.trigger_dagrun.TriggerDagRunOperator` is moved into `standard` provider in Airflow 3.0; +AIR302.py:410:1: AIR302 `airflow.operators.trigger_dagrun.TriggerDagRunOperator` is moved into `standard` provider in Airflow 3.0; | 408 | # apache-airflow-providers-standard 409 | FileSensor() 410 | TriggerDagRunOperator() - | ^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^ AIR302 411 | ExternalTaskMarker(), ExternalTaskSensor() 412 | BranchDateTimeOperator() | = help: Install `apache-airflow-provider-standard>=0.0.2` and use `airflow.providers.standard.operators.trigger_dagrun.TriggerDagRunOperator` instead. -AIR303.py:411:1: AIR303 `airflow.sensors.external_task.ExternalTaskMarker` is moved into `standard` provider in Airflow 3.0; +AIR302.py:411:1: AIR302 `airflow.sensors.external_task.ExternalTaskMarker` is moved into `standard` provider in Airflow 3.0; | 409 | FileSensor() 410 | TriggerDagRunOperator() 411 | ExternalTaskMarker(), ExternalTaskSensor() - | ^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^ AIR302 412 | BranchDateTimeOperator() 413 | BranchDayOfWeekOperator() | = help: Install `apache-airflow-provider-standard>=0.0.3` and use `airflow.providers.standard.sensors.external_task.ExternalTaskMarker` instead. -AIR303.py:411:23: AIR303 `airflow.sensors.external_task.ExternalTaskSensor` is moved into `standard` provider in Airflow 3.0; +AIR302.py:411:23: AIR302 `airflow.sensors.external_task.ExternalTaskSensor` is moved into `standard` provider in Airflow 3.0; | 409 | FileSensor() 410 | TriggerDagRunOperator() 411 | ExternalTaskMarker(), ExternalTaskSensor() - | ^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^ AIR302 412 | BranchDateTimeOperator() 413 | BranchDayOfWeekOperator() | = help: Install `apache-airflow-provider-standard>=0.0.3` and use `airflow.providers.standard.sensors.external_task.ExternalTaskSensor` instead. -AIR303.py:412:1: AIR303 Import path `airflow.operators.datetime` is moved into `standard` provider in Airflow 3.0; +AIR302.py:412:1: AIR302 Import path `airflow.operators.datetime` is moved into `standard` provider in Airflow 3.0; | 410 | TriggerDagRunOperator() 411 | ExternalTaskMarker(), ExternalTaskSensor() 412 | BranchDateTimeOperator() - | ^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^ AIR302 413 | BranchDayOfWeekOperator() 414 | DateTimeSensor() | = help: Install `apache-airflow-provider-standard>=0.0.1` and import from `airflow.providers.standard.time.operators.datetime` instead. -AIR303.py:413:1: AIR303 Import path `airflow.operators.weekday` is moved into `standard` provider in Airflow 3.0; +AIR302.py:413:1: AIR302 Import path `airflow.operators.weekday` is moved into `standard` provider in Airflow 3.0; | 411 | ExternalTaskMarker(), ExternalTaskSensor() 412 | BranchDateTimeOperator() 413 | BranchDayOfWeekOperator() - | ^^^^^^^^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^^^^^^^^ AIR302 414 | DateTimeSensor() 415 | TimeSensor() | = help: Install `apache-airflow-provider-standard>=0.0.1` and import from `airflow.providers.standard.time.operators.weekday` instead. -AIR303.py:414:1: AIR303 Import path `airflow.sensors.date_time` is moved into `standard` provider in Airflow 3.0; +AIR302.py:414:1: AIR302 Import path `airflow.sensors.date_time` is moved into `standard` provider in Airflow 3.0; | 412 | BranchDateTimeOperator() 413 | BranchDayOfWeekOperator() 414 | DateTimeSensor() - | ^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^ AIR302 415 | TimeSensor() 416 | TimeDeltaSensor() | = help: Install `apache-airflow-provider-standard>=0.0.1` and import from `airflow.providers.standard.time.sensors.date_time` instead. -AIR303.py:415:1: AIR303 Import path `airflow.sensors.time_sensor` is moved into `standard` provider in Airflow 3.0; +AIR302.py:415:1: AIR302 Import path `airflow.sensors.time_sensor` is moved into `standard` provider in Airflow 3.0; | 413 | BranchDayOfWeekOperator() 414 | DateTimeSensor() 415 | TimeSensor() - | ^^^^^^^^^^ AIR303 + | ^^^^^^^^^^ AIR302 416 | TimeDeltaSensor() 417 | DayOfWeekSensor() | = help: Install `apache-airflow-provider-standard>=0.0.1` and import from `airflow.providers.standard.time.sensors.time` instead. -AIR303.py:416:1: AIR303 Import path `airflow.sensors.time_delta` is moved into `standard` provider in Airflow 3.0; +AIR302.py:416:1: AIR302 Import path `airflow.sensors.time_delta` is moved into `standard` provider in Airflow 3.0; | 414 | DateTimeSensor() 415 | TimeSensor() 416 | TimeDeltaSensor() - | ^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^ AIR302 417 | DayOfWeekSensor() 418 | FSHook() | = help: Install `apache-airflow-provider-standard>=0.0.1` and import from `airflow.providers.standard.time.sensors.time_delta` instead. -AIR303.py:417:1: AIR303 Import path `airflow.sensors.weekday` is moved into `standard` provider in Airflow 3.0; +AIR302.py:417:1: AIR302 Import path `airflow.sensors.weekday` is moved into `standard` provider in Airflow 3.0; | 415 | TimeSensor() 416 | TimeDeltaSensor() 417 | DayOfWeekSensor() - | ^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^ AIR302 418 | FSHook() 419 | PackageIndexHook() | = help: Install `apache-airflow-provider-standard>=0.0.1` and import from `airflow.providers.standard.time.sensors.weekday` instead. -AIR303.py:418:1: AIR303 Import path `airflow.hooks.filesystem` is moved into `standard` provider in Airflow 3.0; +AIR302.py:418:1: AIR302 Import path `airflow.hooks.filesystem` is moved into `standard` provider in Airflow 3.0; | 416 | TimeDeltaSensor() 417 | DayOfWeekSensor() 418 | FSHook() - | ^^^^^^ AIR303 + | ^^^^^^ AIR302 419 | PackageIndexHook() 420 | SubprocessHook() | = help: Install `apache-airflow-provider-standard>=0.0.1` and import from `airflow.providers.standard.hooks.filesystem` instead. -AIR303.py:419:1: AIR303 Import path `airflow.hooks.package_index` is moved into `standard` provider in Airflow 3.0; +AIR302.py:419:1: AIR302 Import path `airflow.hooks.package_index` is moved into `standard` provider in Airflow 3.0; | 417 | DayOfWeekSensor() 418 | FSHook() 419 | PackageIndexHook() - | ^^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^^ AIR302 420 | SubprocessHook() 421 | WorkflowTrigger() | = help: Install `apache-airflow-provider-standard>=0.0.1` and import from `airflow.providers.standard.hooks.package_index` instead. -AIR303.py:420:1: AIR303 Import path `airflow.hooks.subprocess` is moved into `standard` provider in Airflow 3.0; +AIR302.py:420:1: AIR302 Import path `airflow.hooks.subprocess` is moved into `standard` provider in Airflow 3.0; | 418 | FSHook() 419 | PackageIndexHook() 420 | SubprocessHook() - | ^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^ AIR302 421 | WorkflowTrigger() 422 | FileTrigger() | = help: Install `apache-airflow-provider-standard>=0.0.1` and import from `airflow.providers.standard.hooks.subprocess` instead. -AIR303.py:421:1: AIR303 Import path `airflow.triggers.external_task` is moved into `standard` provider in Airflow 3.0; +AIR302.py:421:1: AIR302 Import path `airflow.triggers.external_task` is moved into `standard` provider in Airflow 3.0; | 419 | PackageIndexHook() 420 | SubprocessHook() 421 | WorkflowTrigger() - | ^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^ AIR302 422 | FileTrigger() 423 | DateTimeTrigger() | = help: Install `apache-airflow-provider-standard>=0.0.3` and import from `airflow.providers.standard.triggers.external_task` instead. -AIR303.py:422:1: AIR303 Import path `airflow.triggers.file` is moved into `standard` provider in Airflow 3.0; +AIR302.py:422:1: AIR302 Import path `airflow.triggers.file` is moved into `standard` provider in Airflow 3.0; | 420 | SubprocessHook() 421 | WorkflowTrigger() 422 | FileTrigger() - | ^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^ AIR302 423 | DateTimeTrigger() | = help: Install `apache-airflow-provider-standard>=0.0.3` and import from `airflow.providers.standard.triggers.file` instead. -AIR303.py:423:1: AIR303 Import path `airflow.triggers.temporal` is moved into `standard` provider in Airflow 3.0; +AIR302.py:423:1: AIR302 Import path `airflow.triggers.temporal` is moved into `standard` provider in Airflow 3.0; | 421 | WorkflowTrigger() 422 | FileTrigger() 423 | DateTimeTrigger() - | ^^^^^^^^^^^^^^^ AIR303 + | ^^^^^^^^^^^^^^^ AIR302 | = help: Install `apache-airflow-provider-standard>=0.0.3` and import from `airflow.providers.standard.triggers.temporal` instead. diff --git a/ruff.schema.json b/ruff.schema.json index 3c8ec9614b..f5a2bc1e5a 100644 --- a/ruff.schema.json +++ b/ruff.schema.json @@ -2946,8 +2946,8 @@ "AIR002", "AIR3", "AIR30", + "AIR301", "AIR302", - "AIR303", "ALL", "ANN", "ANN0",