[`airflow`] update existing `AIR302` rules with better suggestions (#17542)

## Summary

Even though the original suggestion works, they've been removed in later
version and is no longer the best practices.

e.g., many sql realted operators have been removed and are now suggested
to use SQLExecuteQueryOperator instead

## Test Plan

The existing test fixtures have been updated
This commit is contained in:
Wei Lee 2025-04-26 01:44:28 +09:00 committed by GitHub
parent 049280a3bc
commit b6281a8805
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 159 additions and 182 deletions

View File

@ -138,19 +138,19 @@ from airflow.operators.oracle_operator import OracleOperator
from airflow.operators.papermill_operator import PapermillOperator
from airflow.operators.pig_operator import PigOperator
from airflow.operators.postgres_operator import Mapping, PostgresOperator
from airflow.operators.presto_check_operator import (
CheckOperator as SQLCheckOperator2,
)
from airflow.operators.presto_check_operator import (
IntervalCheckOperator as SQLIntervalCheckOperator2,
)
from airflow.operators.presto_check_operator import (
PrestoCheckOperator,
PrestoIntervalCheckOperator,
PrestoValueCheckOperator,
)
from airflow.operators.presto_check_operator import (
SQLCheckOperator as SQLCheckOperator2,
)
from airflow.operators.presto_check_operator import (
SQLIntervalCheckOperator as SQLIntervalCheckOperator2,
)
from airflow.operators.presto_check_operator import (
SQLValueCheckOperator as SQLValueCheckOperator2,
ValueCheckOperator as SQLValueCheckOperator2,
)
from airflow.operators.presto_to_mysql import (
PrestoToMySqlOperator,

View File

@ -21,6 +21,7 @@ pub(crate) enum Replacement {
#[derive(Debug, Eq, PartialEq)]
pub(crate) enum ProviderReplacement {
None,
ProviderName {
name: &'static str,
provider: &'static str,

View File

@ -40,6 +40,9 @@ impl Violation for Airflow3MovedToProvider {
replacement,
} = self;
match replacement {
ProviderReplacement::None => {
format!("`{deprecated}` is removed in Airflow 3.0")
}
ProviderReplacement::ProviderName {
name: _,
provider,
@ -59,6 +62,7 @@ impl Violation for Airflow3MovedToProvider {
fn fix_title(&self) -> Option<String> {
let Airflow3MovedToProvider { replacement, .. } = self;
match replacement {
ProviderReplacement::None => {None}
ProviderReplacement::ProviderName {
name,
provider,
@ -128,9 +132,9 @@ fn check_names_moved_to_provider(checker: &Checker, expr: &Expr, ranged: TextRan
version: "1.0.0"
},
["airflow", "operators", "s3_file_transform_operator", "S3FileTransformOperator"] => ProviderReplacement::ProviderName {
name: "airflow.providers.amazon.aws.operators.s3_file_transform.S3FileTransformOperator",
name: "airflow.providers.amazon.aws.operators.s3.S3FileTransformOperator",
provider: "amazon",
version: "1.0.0"
version: "3.0.0"
},
["airflow", "operators", "s3_to_redshift_operator", "S3ToRedshiftOperator" | "S3ToRedshiftTransfer"] => ProviderReplacement::ProviderName {
name: "airflow.providers.amazon.aws.transfers.s3_to_redshift.S3ToRedshiftOperator",
@ -183,63 +187,48 @@ fn check_names_moved_to_provider(checker: &Checker, expr: &Expr, ranged: TextRan
provider: "common-sql",
version: "1.0.0"
},
["airflow", "operators", "check_operator", rest] => match *rest {
"SQLCheckOperator" | "CheckOperator" => ProviderReplacement::ProviderName {
["airflow", "operators", "check_operator" | "sql", "SQLCheckOperator"]
| ["airflow", "operators", "check_operator" | "druid_check_operator" | "presto_check_operator", "CheckOperator"]
| ["airflow", "operators", "druid_check_operator", "DruidCheckOperator"]
| ["airflow", "operators", "presto_check_operator", "PrestoCheckOperator"] => {
ProviderReplacement::ProviderName {
name: "airflow.providers.common.sql.operators.sql.SQLCheckOperator",
provider: "common-sql",
version: "1.1.0"
}
},
"SQLIntervalCheckOperator" | "IntervalCheckOperator" => ProviderReplacement::ProviderName {
["airflow", "operators", "check_operator" | "presto_check_operator", "IntervalCheckOperator"]
| ["airflow", "operators", "check_operator" | "sql", "SQLIntervalCheckOperator"]
| ["airflow", "operators", "presto_check_operator", "PrestoIntervalCheckOperator"] => ProviderReplacement::ProviderName {
name: "airflow.providers.common.sql.operators.sql.SQLIntervalCheckOperator",
provider: "common-sql",
version: "1.1.0"
},
"SQLThresholdCheckOperator" | "ThresholdCheckOperator" => ProviderReplacement::ProviderName {
["airflow", "operators", "check_operator" | "sql" , "SQLThresholdCheckOperator"]
| ["airflow", "operators", "check_operator", "ThresholdCheckOperator"] => ProviderReplacement::ProviderName {
name: "airflow.providers.common.sql.operators.sql.SQLThresholdCheckOperator",
provider: "common-sql",
version: "1.1.0"
},
"SQLValueCheckOperator" | "ValueCheckOperator" => ProviderReplacement::ProviderName {
["airflow", "operators", "check_operator" | "presto_check_operator", "ValueCheckOperator"]
| ["airflow", "operators", "presto_check_operator", "PrestoValueCheckOperator"]
| ["airflow", "operators", "check_operator" | "sql", "SQLValueCheckOperator"] => ProviderReplacement::ProviderName {
name: "airflow.providers.common.sql.operators.sql.SQLValueCheckOperator",
provider: "common-sql",
version: "1.1.0"
},
_ => return
},
["airflow", "operators", "presto_check_operator", rest] => match *rest {
"SQLCheckOperator" | "PrestoCheckOperator" => ProviderReplacement::ProviderName {
name: "airflow.providers.common.sql.operators.sql.SQLCheckOperator",
provider: "common-sql",
version: "1.1.0"
},
"SQLIntervalCheckOperator" | "PrestoIntervalCheckOperator" => ProviderReplacement::ProviderName {
name: "airflow.providers.common.sql.operators.sql.SQLIntervalCheckOperator",
provider: "common-sql",
version: "1.1.0"
},
"SQLValueCheckOperator" | "PrestoValueCheckOperator" => ProviderReplacement::ProviderName {
name: "airflow.providers.common.sql.operators.sql.SQLValueCheckOperator",
provider: "common-sql",
version: "1.1.0"
},
_ => return
}
["airflow", "operators", "sql", rest] => match *rest {
"BaseSQLOperator" |
"BranchSQLOperator" |
"SQLCheckOperator" |
"SQLIntervalCheckOperator" |
"SQLTablecheckOperator" |
"SQLThresholdCheckOperator" => ProviderReplacement::SourceModuleMovedToProvider {
"BaseSQLOperator"
| "BranchSQLOperator"
| "SQLTablecheckOperator" => ProviderReplacement::SourceModuleMovedToProvider {
name: (*rest).to_string(),
module: "airflow.providers.common.sql.operators.sql",
provider: "common-sql",
version: "1.1.0"
},
"SQLColumnCheckOperator" |
"SQLValueCheckOperator" |
"_convert_to_float_if_possible" |
"parse_boolean" => ProviderReplacement::SourceModuleMovedToProvider {
"SQLColumnCheckOperator"
| "_convert_to_float_if_possible"
| "parse_boolean" => ProviderReplacement::SourceModuleMovedToProvider {
name: (*rest).to_string(),
module: "airflow.providers.common.sql.operators.sql",
provider: "common-sql",
@ -252,6 +241,16 @@ fn check_names_moved_to_provider(checker: &Checker, expr: &Expr, ranged: TextRan
provider: "common-sql",
version: "1.0.0"
},
["airflow", "operators", "jdbc_operator", "JdbcOperator"]
| ["airflow", "operators", "mssql_operator", "MsSqlOperator"]
| ["airflow", "operators", "mysql_operator", "MySqlOperator"]
| ["airflow", "operators", "oracle_operator", "OracleOperator"]
| ["airflow", "operators", "postgres_operator", "PostgresOperator"]
| ["airflow", "operators", "sqlite_operator", "SqliteOperator"] => ProviderReplacement::ProviderName {
name: "airflow.providers.common.sql.operators.sql.SQLExecuteQueryOperator",
provider: "common-sql",
version: "1.3.0"
},
// apache-airflow-providers-daskexecutor
["airflow", "executors", "dask_executor", "DaskExecutor"] => ProviderReplacement::ProviderName {
@ -282,11 +281,6 @@ fn check_names_moved_to_provider(checker: &Checker, expr: &Expr, ranged: TextRan
provider: "apache-druid",
version: "1.0.0"
},
["airflow", "operators", "druid_check_operator", "DruidCheckOperator"] => ProviderReplacement::ProviderName {
name: "DruidCheckOperator",
provider: "apache-druid",
version: "1.0.0"
},
["airflow", "operators", "hive_to_druid", "HiveToDruidOperator" | "HiveToDruidTransfer"] => ProviderReplacement::ProviderName {
name: "airflow.providers.apache.druid.transfers.hive_to_druid.HiveToDruidOperator",
provider: "apache-druid",
@ -330,7 +324,7 @@ fn check_names_moved_to_provider(checker: &Checker, expr: &Expr, ranged: TextRan
version: "1.0.0"
},
["airflow", "auth", "managers", "fab", "fab_auth_manager", "FabAuthManager"] => ProviderReplacement::ProviderName {
name: "airflow.providers.fab.auth_manager.security_manager.FabAuthManager",
name: "airflow.providers.fab.auth_manager.fab_auth_manager.FabAuthManager",
provider: "fab",
version: "1.0.0"
},
@ -398,7 +392,7 @@ fn check_names_moved_to_provider(checker: &Checker, expr: &Expr, ranged: TextRan
version: "1.0.0"
},
["airflow", "operators", "hive_to_samba_operator", "HiveToSambaOperator"] => ProviderReplacement::ProviderName {
name: "HiveToSambaOperator",
name: "airflow.providers.apache.hive.transfers.hive_to_samba.HiveToSambaOperator",
provider: "apache-hive",
version: "1.0.0"
},
@ -440,9 +434,9 @@ fn check_names_moved_to_provider(checker: &Checker, expr: &Expr, ranged: TextRan
version: "1.0.0"
},
["airflow", "operators", "http_operator", "SimpleHttpOperator"] => ProviderReplacement::ProviderName {
name: "airflow.providers.http.operators.http.SimpleHttpOperator",
name: "airflow.providers.http.operators.http.HttpOperator",
provider: "http",
version: "1.0.0"
version: "5.0.0"
},
["airflow", "sensors", "http_sensor", "HttpSensor"] => ProviderReplacement::ProviderName {
name: "airflow.providers.http.sensors.http.HttpSensor",
@ -460,11 +454,6 @@ fn check_names_moved_to_provider(checker: &Checker, expr: &Expr, ranged: TextRan
provider: "jdbc",
version: "1.0.0"
},
["airflow", "operators", "jdbc_operator", "JdbcOperator"] => ProviderReplacement::ProviderName {
name: "airflow.providers.jdbc.operators.jdbc.JdbcOperator",
provider: "jdbc",
version: "1.0.0"
},
// apache-airflow-providers-cncf-kubernetes
["airflow", "executors", "kubernetes_executor_types", rest @ (
@ -491,15 +480,23 @@ fn check_names_moved_to_provider(checker: &Checker, expr: &Expr, ranged: TextRan
| "get_kube_client"
)] => ProviderReplacement::SourceModuleMovedToProvider {
name: (*rest).to_string(),
module: "airflow.kubernetes.airflow.providers.cncf.kubernetes.kube_client",
module: "airflow.providers.cncf.kubernetes.kube_client",
provider: "cncf-kubernetes",
version: "7.4.0"
},
["airflow", "kubernetes", "kubernetes_helper_functions", "add_pod_suffix"] => ProviderReplacement::ProviderName {
name: "airflow.providers.cncf.kubernetes.kubernetes_helper_functions.add_unique_suffix",
provider: "cncf-kubernetes",
version: "10.0.0"
},
["airflow", "kubernetes", "kubernetes_helper_functions", "create_pod_id"] => ProviderReplacement::ProviderName {
name: "airflow.providers.cncf.kubernetes.kubernetes_helper_functions.create_unique_id",
provider: "cncf-kubernetes",
version: "10.0.0"
},
["airflow", "kubernetes", "kubernetes_helper_functions", rest @ (
"add_pod_suffix"
| "annotations_for_logging_task_metadata"
| "annotations_to_key"
| "create_pod_id"
| "get_logs_task_metadata"
| "rand_str"
)] => ProviderReplacement::SourceModuleMovedToProvider {
@ -522,27 +519,35 @@ fn check_names_moved_to_provider(checker: &Checker, expr: &Expr, ranged: TextRan
_ => return
},
["airflow", "kubernetes", "pod_generator", rest ] => match *rest {
"datetime_to_label_safe_datestring" |
"extend_object_field" |
"label_safe_datestring_to_datetime" |
"make_safe_label_value" |
"merge_objects" |
"PodGenerator" |
"PodDefaults" => ProviderReplacement::SourceModuleMovedToProvider {
"datetime_to_label_safe_datestring"
| "extend_object_field"
| "label_safe_datestring_to_datetime"
| "make_safe_label_value"
| "merge_objects"
| "PodGenerator" => ProviderReplacement::SourceModuleMovedToProvider {
name: (*rest).to_string(),
module: "airflow.providers.cncf.kubernetes.pod_generator",
provider: "cncf-kubernetes",
version: "7.4.0"
},
"PodDefaults" => ProviderReplacement::ProviderName {
name: "airflow.providers.cncf.kubernetes.utils.xcom_sidecar.PodDefaults",
provider: "cncf-kubernetes",
version: "7.4.0"
},
"PodGeneratorDeprecated" => ProviderReplacement::ProviderName {
name: "airflow.providers.cncf.kubernetes.pod_generator.PodGenerator",
provider: "cncf-kubernetes",
version: "7.4.0"
},
"add_pod_suffix" |
"add_pod_suffix" => ProviderReplacement::ProviderName {
name: "airflow.providers.cncf.kubernetes.kubernetes_helper_functions.add_unique_suffix",
provider: "cncf-kubernetes",
version: "10.0.0"
},
"rand_str" => ProviderReplacement::SourceModuleMovedToProvider {
name: (*rest).to_string(),
module: "airflow.providers.cncf.kubernetes.kubernetes_helper_functions",
name: "rand_str".to_string(),
provider: "cncf-kubernetes",
version: "7.4.0"
},
@ -550,37 +555,33 @@ fn check_names_moved_to_provider(checker: &Checker, expr: &Expr, ranged: TextRan
},
["airflow", "kubernetes", "pod_generator_deprecated", rest @ (
"make_safe_label_value"
| "PodDefaults"
| "PodGenerator"
)] => ProviderReplacement::SourceModuleMovedToProvider {
name: (*rest).to_string(),
module: "airflow.providers.cncf.kubernetes.pod_generator_deprecated",
module: "airflow.providers.cncf.kubernetes.pod_generator",
provider: "cncf-kubernetes",
version: "7.4.0"
},
["airflow", "kubernetes", "pod_launcher", rest @(
"PodLauncher"
| "PodStatus"
)] => ProviderReplacement::SourceModuleMovedToProvider {
name: (*rest).to_string(),
module: "airflow.providers.cncf.kubernetes.pod_launcher_deprecated",
["airflow", "kubernetes", "pod_generator_deprecated" | "pod_launcher_deprecated", "PodDefaults"] => ProviderReplacement::ProviderName {
name: "airflow.providers.cncf.kubernetes.utils.xcom_sidecar.PodDefaults",
provider: "cncf-kubernetes",
version: "7.4.0"
},
["airflow", "kubernetes", "pod_launcher_deprecated", rest] => match *rest {
"PodLauncher" | "PodStatus" | "PodDefaults" => ProviderReplacement::SourceModuleMovedToProvider {
name: (*rest).to_string(),
module: "airflow.providers.cncf.kubernetes.pod_launcher_deprecated",
provider: "cncf-kubernetes",
version: "7.4.0"
},
"get_kube_client" => ProviderReplacement::ProviderName {
["airflow", "kubernetes", "pod_launcher_deprecated", "get_kube_client"] => ProviderReplacement::ProviderName {
name: "airflow.providers.cncf.kubernetes.kube_client.get_kube_client",
provider: "cncf-kubernetes",
version: "7.4.0"
},
_ => return,
}
["airflow", "kubernetes", "pod_launcher" | "pod_launcher_deprecated", "PodLauncher"] => ProviderReplacement::ProviderName {
name: "airflow.providers.cncf.kubernetes.utils.pod_manager.PodManager",
provider: "cncf-kubernetes",
version: "3.0.0"
},
["airflow", "kubernetes", "pod_launcher" | "pod_launcher_deprecated", "PodStatus"] => ProviderReplacement::ProviderName {
name: " airflow.providers.cncf.kubernetes.utils.pod_manager.PodPhase",
provider: "cncf-kubernetes",
version: "3.0.0"
},
["airflow", "kubernetes", "pod_runtime_info_env", "PodRuntimeInfoEnv"] => ProviderReplacement::ProviderName {
name: "kubernetes.client.models.V1EnvVar",
provider: "cncf-kubernetes",
@ -616,11 +617,6 @@ fn check_names_moved_to_provider(checker: &Checker, expr: &Expr, ranged: TextRan
provider: "microsoft-mssql",
version: "1.0.0"
},
["airflow", "operators", "mssql_operator", "MsSqlOperator"] => ProviderReplacement::ProviderName {
name: "airflow.providers.microsoft.mssql.operators.mssql.MsSqlOperator",
provider: "microsoft-mssql",
version: "1.0.0"
},
// apache-airflow-providers-mysql
["airflow", "hooks", "mysql_hook", "MySqlHook"] => ProviderReplacement::ProviderName {
@ -628,11 +624,6 @@ fn check_names_moved_to_provider(checker: &Checker, expr: &Expr, ranged: TextRan
provider: "mysql",
version: "1.0.0"
},
["airflow", "operators", "mysql_operator", "MySqlOperator"] => ProviderReplacement::ProviderName {
name: "airflow.providers.mysql.operators.mysql.MySqlOperator",
provider: "mysql",
version: "1.0.0"
},
["airflow", "operators", "presto_to_mysql", "PrestoToMySqlOperator" | "PrestoToMySqlTransfer"] => ProviderReplacement::ProviderName {
name: "airflow.providers.mysql.transfers.presto_to_mysql.PrestoToMySqlOperator",
provider: "mysql",
@ -645,11 +636,6 @@ fn check_names_moved_to_provider(checker: &Checker, expr: &Expr, ranged: TextRan
provider: "oracle",
version: "1.0.0"
},
["airflow", "operators", "oracle_operator", "OracleOperator"] => ProviderReplacement::ProviderName {
name: "airflow.providers.oracle.operators.oracle.OracleOperator",
provider: "oracle",
version: "1.0.0"
},
// apache-airflow-providers-papermill
["airflow", "operators", "papermill_operator", "PapermillOperator"] => ProviderReplacement::ProviderName {
@ -676,15 +662,7 @@ fn check_names_moved_to_provider(checker: &Checker, expr: &Expr, ranged: TextRan
provider: "postgres",
version: "1.0.0"
},
["airflow", "operators", "postgres_operator", rest @ (
"Mapping"
| "PostgresOperator"
)] => ProviderReplacement::SourceModuleMovedToProvider {
name: (*rest).to_string(),
module: "airflow.providers.postgres.operators.postgres",
provider: "postgres",
version: "1.0.0"
},
["airflow", "operators", "postgres_operator", "Mapping"] => ProviderReplacement::None,
// apache-airflow-providers-presto
["airflow", "hooks", "presto_hook", "PrestoHook"] => ProviderReplacement::ProviderName {
@ -729,11 +707,6 @@ fn check_names_moved_to_provider(checker: &Checker, expr: &Expr, ranged: TextRan
provider: "sqlite",
version: "1.0.0"
},
["airflow", "operators", "sqlite_operator", "SqliteOperator"] => ProviderReplacement::ProviderName {
name: "airflow.providers.sqlite.operators.sqlite.SqliteOperator",
provider: "sqlite",
version: "1.0.0"
},
// apache-airflow-providers-zendesk
["airflow", "hooks", "zendesk_hook", "ZendeskHook"] =>

View File

@ -41,6 +41,9 @@ impl Violation for Airflow3SuggestedToMoveToProvider {
replacement,
} = self;
match replacement {
ProviderReplacement::None => {
format!("`{deprecated}` is removed in Airflow 3.0")
}
ProviderReplacement::ProviderName {
name: _,
provider,
@ -62,6 +65,7 @@ impl Violation for Airflow3SuggestedToMoveToProvider {
fn fix_title(&self) -> Option<String> {
let Airflow3SuggestedToMoveToProvider { replacement, .. } = self;
match replacement {
ProviderReplacement::None => None,
ProviderReplacement::ProviderName {
name,
provider,
@ -72,8 +76,8 @@ impl Violation for Airflow3SuggestedToMoveToProvider {
))
},
ProviderReplacement::SourceModuleMovedToProvider {
name,
module,
name,
provider,
version,
} => {

View File

@ -75,7 +75,7 @@ AIR302.py:232:1: AIR302 `airflow.operators.s3_file_transform_operator.S3FileTran
233 | S3Hook()
234 | SSQLTableCheckOperator3KeySensor()
|
= help: Install `apache-airflow-providers-amazon>=1.0.0` and use `airflow.providers.amazon.aws.operators.s3_file_transform.S3FileTransformOperator` instead.
= help: Install `apache-airflow-providers-amazon>=3.0.0` and use `airflow.providers.amazon.aws.operators.s3.S3FileTransformOperator` instead.
AIR302.py:233:1: AIR302 `airflow.hooks.S3_hook.S3Hook` is moved into `amazon` provider in Airflow 3.0;
|
@ -304,7 +304,7 @@ AIR302.py:259:1: AIR302 `airflow.operators.check_operator.SQLCheckOperator` is m
|
= help: Install `apache-airflow-providers-common-sql>=1.1.0` and use `airflow.providers.common.sql.operators.sql.SQLCheckOperator` instead.
AIR302.py:260:1: AIR302 `airflow.operators.presto_check_operator.SQLCheckOperator` is moved into `common-sql` provider in Airflow 3.0;
AIR302.py:260:1: AIR302 `airflow.operators.presto_check_operator.CheckOperator` is moved into `common-sql` provider in Airflow 3.0;
|
258 | PrestoValueCheckOperator()
259 | SQLCheckOperator()
@ -348,7 +348,7 @@ AIR302.py:263:1: AIR302 `airflow.operators.check_operator.SQLIntervalCheckOperat
|
= help: Install `apache-airflow-providers-common-sql>=1.1.0` and use `airflow.providers.common.sql.operators.sql.SQLIntervalCheckOperator` instead.
AIR302.py:264:1: AIR302 `airflow.operators.presto_check_operator.SQLIntervalCheckOperator` is moved into `common-sql` provider in Airflow 3.0;
AIR302.py:264:1: AIR302 `airflow.operators.presto_check_operator.IntervalCheckOperator` is moved into `common-sql` provider in Airflow 3.0;
|
262 | SQLColumnCheckOperator2()
263 | SQLIntervalCheckOperator()
@ -403,7 +403,7 @@ AIR302.py:269:1: AIR302 `airflow.operators.check_operator.SQLValueCheckOperator`
|
= help: Install `apache-airflow-providers-common-sql>=1.1.0` and use `airflow.providers.common.sql.operators.sql.SQLValueCheckOperator` instead.
AIR302.py:270:1: AIR302 `airflow.operators.presto_check_operator.SQLValueCheckOperator` is moved into `common-sql` provider in Airflow 3.0;
AIR302.py:270:1: AIR302 `airflow.operators.presto_check_operator.ValueCheckOperator` is moved into `common-sql` provider in Airflow 3.0;
|
268 | SQLThresholdCheckOperator2()
269 | SQLValueCheckOperator()
@ -423,7 +423,7 @@ AIR302.py:271:1: AIR302 `airflow.operators.sql.SQLValueCheckOperator` is moved i
272 | SqlSensor()
273 | SqlSensor2()
|
= help: Install `apache-airflow-providers-common-sql>=1.0.0` and use `airflow.providers.common.sql.operators.sql.SQLValueCheckOperator` instead.
= help: Install `apache-airflow-providers-common-sql>=1.1.0` and use `airflow.providers.common.sql.operators.sql.SQLValueCheckOperator` instead.
AIR302.py:272:1: AIR302 `airflow.sensors.sql.SqlSensor` is moved into `common-sql` provider in Airflow 3.0;
|
@ -507,7 +507,7 @@ AIR302.py:286:1: AIR302 `airflow.hooks.druid_hook.DruidHook` is moved into `apac
|
= help: Install `apache-airflow-providers-apache-druid>=1.0.0` and use `airflow.providers.apache.druid.hooks.druid.DruidHook` instead.
AIR302.py:287:1: AIR302 `airflow.operators.druid_check_operator.DruidCheckOperator` is moved into `apache-druid` provider in Airflow 3.0;
AIR302.py:287:1: AIR302 `airflow.operators.druid_check_operator.DruidCheckOperator` is moved into `common-sql` provider in Airflow 3.0;
|
285 | DruidDbApiHook()
286 | DruidHook()
@ -516,7 +516,7 @@ AIR302.py:287:1: AIR302 `airflow.operators.druid_check_operator.DruidCheckOperat
288 |
289 | # apache-airflow-providers-apache-hdfs
|
= help: Install `apache-airflow-providers-apache-druid>=1.0.0` and use `DruidCheckOperator` instead.
= help: Install `apache-airflow-providers-common-sql>=1.1.0` and use `airflow.providers.common.sql.operators.sql.SQLCheckOperator` instead.
AIR302.py:290:1: AIR302 `airflow.hooks.webhdfs_hook.WebHDFSHook` is moved into `apache-hdfs` provider in Airflow 3.0;
|
@ -667,7 +667,7 @@ AIR302.py:305:1: AIR302 `airflow.operators.hive_to_samba_operator.HiveToSambaOpe
306 | S3ToHiveOperator()
307 | S3ToHiveTransfer()
|
= help: Install `apache-airflow-providers-apache-hive>=1.0.0` and use `HiveToSambaOperator` instead.
= help: Install `apache-airflow-providers-apache-hive>=1.0.0` and use `airflow.providers.apache.hive.transfers.hive_to_samba.HiveToSambaOperator` instead.
AIR302.py:306:1: AIR302 `airflow.operators.s3_to_hive_operator.S3ToHiveOperator` is moved into `apache-hive` provider in Airflow 3.0;
|
@ -741,7 +741,7 @@ AIR302.py:314:1: AIR302 `airflow.operators.http_operator.SimpleHttpOperator` is
315 |
316 | # apache-airflow-providers-jdbc
|
= help: Install `apache-airflow-providers-http>=1.0.0` and use `airflow.providers.http.operators.http.SimpleHttpOperator` instead.
= help: Install `apache-airflow-providers-http>=5.0.0` and use `airflow.providers.http.operators.http.HttpOperator` instead.
AIR302.py:317:1: AIR302 `airflow.hooks.jdbc_hook.jaydebeapi` is moved into `jdbc` provider in Airflow 3.0;
|
@ -763,7 +763,7 @@ AIR302.py:318:1: AIR302 `airflow.hooks.jdbc_hook.JdbcHook` is moved into `jdbc`
|
= help: Install `apache-airflow-providers-jdbc>=1.0.0` and use `airflow.providers.jdbc.hooks.jdbc.JdbcHook` instead.
AIR302.py:319:1: AIR302 `airflow.operators.jdbc_operator.JdbcOperator` is moved into `jdbc` provider in Airflow 3.0;
AIR302.py:319:1: AIR302 `airflow.operators.jdbc_operator.JdbcOperator` is moved into `common-sql` provider in Airflow 3.0;
|
317 | jaydebeapi
318 | JdbcHook()
@ -772,7 +772,7 @@ AIR302.py:319:1: AIR302 `airflow.operators.jdbc_operator.JdbcOperator` is moved
320 |
321 | # apache-airflow-providers-fab
|
= help: Install `apache-airflow-providers-jdbc>=1.0.0` and use `airflow.providers.jdbc.operators.jdbc.JdbcOperator` instead.
= help: Install `apache-airflow-providers-common-sql>=1.3.0` and use `airflow.providers.common.sql.operators.sql.SQLExecuteQueryOperator` instead.
AIR302.py:322:12: AIR302 `airflow.api.auth.backend.basic_auth.CLIENT_AUTH` is moved into `fab` provider in Airflow 3.0;
|
@ -889,7 +889,7 @@ AIR302.py:335:1: AIR302 `airflow.auth.managers.fab.fab_auth_manager.FabAuthManag
| ^^^^^^^^^^^^^^ AIR302
336 | FabAirflowSecurityManagerOverride()
|
= help: Install `apache-airflow-providers-fab>=1.0.0` and use `airflow.providers.fab.auth_manager.security_manager.FabAuthManager` instead.
= help: Install `apache-airflow-providers-fab>=1.0.0` and use `airflow.providers.fab.auth_manager.fab_auth_manager.FabAuthManager` instead.
AIR302.py:336:1: AIR302 `airflow.www.security.FabAirflowSecurityManagerOverride` is moved into `fab` provider in Airflow 3.0;
|
@ -942,7 +942,7 @@ AIR302.py:344:1: AIR302 `airflow.kubernetes.kube_client._disable_verify_ssl` is
345 | _enable_tcp_keepalive()
346 | append_to_pod()
|
= help: Install `apache-airflow-providers-cncf-kubernetes>=7.4.0` and use `airflow.kubernetes.airflow.providers.cncf.kubernetes.kube_client._disable_verify_ssl` instead.
= help: Install `apache-airflow-providers-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.kube_client._disable_verify_ssl` instead.
AIR302.py:345:1: AIR302 `airflow.kubernetes.kube_client._enable_tcp_keepalive` is moved into `cncf-kubernetes` provider in Airflow 3.0;
|
@ -953,7 +953,7 @@ AIR302.py:345:1: AIR302 `airflow.kubernetes.kube_client._enable_tcp_keepalive` i
346 | append_to_pod()
347 | annotations_for_logging_task_metadata()
|
= help: Install `apache-airflow-providers-cncf-kubernetes>=7.4.0` and use `airflow.kubernetes.airflow.providers.cncf.kubernetes.kube_client._enable_tcp_keepalive` instead.
= help: Install `apache-airflow-providers-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.kube_client._enable_tcp_keepalive` instead.
AIR302.py:346:1: AIR302 `airflow.kubernetes.k8s_model.append_to_pod` is moved into `cncf-kubernetes` provider in Airflow 3.0;
|
@ -997,7 +997,7 @@ AIR302.py:349:1: AIR302 `airflow.kubernetes.kubernetes_helper_functions.create_p
350 | datetime_to_label_safe_datestring()
351 | extend_object_field()
|
= help: Install `apache-airflow-providers-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.kubernetes_helper_functions.create_pod_id` instead.
= help: Install `apache-airflow-providers-cncf-kubernetes>=10.0.0` and use `airflow.providers.cncf.kubernetes.kubernetes_helper_functions.create_unique_id` instead.
AIR302.py:350:1: AIR302 `airflow.kubernetes.pod_generator.datetime_to_label_safe_datestring` is moved into `cncf-kubernetes` provider in Airflow 3.0;
|
@ -1139,7 +1139,7 @@ AIR302.py:363:1: AIR302 `airflow.kubernetes.kubernetes_helper_functions.add_pod_
364 | add_pod_suffix2()
365 | get_kube_client()
|
= help: Install `apache-airflow-providers-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.kubernetes_helper_functions.add_pod_suffix` instead.
= help: Install `apache-airflow-providers-cncf-kubernetes>=10.0.0` and use `airflow.providers.cncf.kubernetes.kubernetes_helper_functions.add_unique_suffix` instead.
AIR302.py:364:1: AIR302 `airflow.kubernetes.pod_generator.add_pod_suffix` is moved into `cncf-kubernetes` provider in Airflow 3.0;
|
@ -1149,7 +1149,7 @@ AIR302.py:364:1: AIR302 `airflow.kubernetes.pod_generator.add_pod_suffix` is mov
365 | get_kube_client()
366 | get_kube_client2()
|
= help: Install `apache-airflow-providers-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.kubernetes_helper_functions.add_pod_suffix` instead.
= help: Install `apache-airflow-providers-cncf-kubernetes>=10.0.0` and use `airflow.providers.cncf.kubernetes.kubernetes_helper_functions.add_unique_suffix` instead.
AIR302.py:365:1: AIR302 `airflow.kubernetes.kube_client.get_kube_client` is moved into `cncf-kubernetes` provider in Airflow 3.0;
|
@ -1160,7 +1160,7 @@ AIR302.py:365:1: AIR302 `airflow.kubernetes.kube_client.get_kube_client` is move
366 | get_kube_client2()
367 | make_safe_label_value()
|
= help: Install `apache-airflow-providers-cncf-kubernetes>=7.4.0` and use `airflow.kubernetes.airflow.providers.cncf.kubernetes.kube_client.get_kube_client` instead.
= help: Install `apache-airflow-providers-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.kube_client.get_kube_client` instead.
AIR302.py:366:1: AIR302 `airflow.kubernetes.pod_launcher_deprecated.get_kube_client` is moved into `cncf-kubernetes` provider in Airflow 3.0;
|
@ -1193,7 +1193,7 @@ AIR302.py:368:1: AIR302 `airflow.kubernetes.pod_generator_deprecated.make_safe_l
369 | rand_str()
370 | rand_str2()
|
= help: Install `apache-airflow-providers-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_generator_deprecated.make_safe_label_value` instead.
= help: Install `apache-airflow-providers-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_generator.make_safe_label_value` instead.
AIR302.py:369:1: AIR302 `airflow.kubernetes.kubernetes_helper_functions.rand_str` is moved into `cncf-kubernetes` provider in Airflow 3.0;
|
@ -1237,7 +1237,7 @@ AIR302.py:373:1: AIR302 `airflow.kubernetes.pod_launcher.PodLauncher` is moved i
374 | PodLauncher2()
375 | PodStatus()
|
= help: Install `apache-airflow-providers-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_launcher_deprecated.PodLauncher` instead.
= help: Install `apache-airflow-providers-cncf-kubernetes>=3.0.0` and use `airflow.providers.cncf.kubernetes.utils.pod_manager.PodManager` instead.
AIR302.py:374:1: AIR302 `airflow.kubernetes.pod_launcher_deprecated.PodLauncher` is moved into `cncf-kubernetes` provider in Airflow 3.0;
|
@ -1248,7 +1248,7 @@ AIR302.py:374:1: AIR302 `airflow.kubernetes.pod_launcher_deprecated.PodLauncher`
375 | PodStatus()
376 | PodStatus2()
|
= help: Install `apache-airflow-providers-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_launcher_deprecated.PodLauncher` instead.
= help: Install `apache-airflow-providers-cncf-kubernetes>=3.0.0` and use `airflow.providers.cncf.kubernetes.utils.pod_manager.PodManager` instead.
AIR302.py:375:1: AIR302 `airflow.kubernetes.pod_launcher.PodStatus` is moved into `cncf-kubernetes` provider in Airflow 3.0;
|
@ -1259,7 +1259,7 @@ AIR302.py:375:1: AIR302 `airflow.kubernetes.pod_launcher.PodStatus` is moved int
376 | PodStatus2()
377 | PodDefaults()
|
= help: Install `apache-airflow-providers-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_launcher_deprecated.PodStatus` instead.
= help: Install `apache-airflow-providers-cncf-kubernetes>=3.0.0` and use ` airflow.providers.cncf.kubernetes.utils.pod_manager.PodPhase` instead.
AIR302.py:376:1: AIR302 `airflow.kubernetes.pod_launcher_deprecated.PodStatus` is moved into `cncf-kubernetes` provider in Airflow 3.0;
|
@ -1270,7 +1270,7 @@ AIR302.py:376:1: AIR302 `airflow.kubernetes.pod_launcher_deprecated.PodStatus` i
377 | PodDefaults()
378 | PodDefaults2()
|
= help: Install `apache-airflow-providers-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_launcher_deprecated.PodStatus` instead.
= help: Install `apache-airflow-providers-cncf-kubernetes>=3.0.0` and use ` airflow.providers.cncf.kubernetes.utils.pod_manager.PodPhase` instead.
AIR302.py:377:1: AIR302 `airflow.kubernetes.pod_generator.PodDefaults` is moved into `cncf-kubernetes` provider in Airflow 3.0;
|
@ -1281,7 +1281,7 @@ AIR302.py:377:1: AIR302 `airflow.kubernetes.pod_generator.PodDefaults` is moved
378 | PodDefaults2()
379 | PodDefaults3()
|
= help: Install `apache-airflow-providers-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_generator.PodDefaults` instead.
= help: Install `apache-airflow-providers-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.utils.xcom_sidecar.PodDefaults` instead.
AIR302.py:378:1: AIR302 `airflow.kubernetes.pod_launcher_deprecated.PodDefaults` is moved into `cncf-kubernetes` provider in Airflow 3.0;
|
@ -1292,7 +1292,7 @@ AIR302.py:378:1: AIR302 `airflow.kubernetes.pod_launcher_deprecated.PodDefaults`
379 | PodDefaults3()
380 | PodGenerator()
|
= help: Install `apache-airflow-providers-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_launcher_deprecated.PodDefaults` instead.
= help: Install `apache-airflow-providers-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.utils.xcom_sidecar.PodDefaults` instead.
AIR302.py:379:1: AIR302 `airflow.kubernetes.pod_generator_deprecated.PodDefaults` is moved into `cncf-kubernetes` provider in Airflow 3.0;
|
@ -1303,7 +1303,7 @@ AIR302.py:379:1: AIR302 `airflow.kubernetes.pod_generator_deprecated.PodDefaults
380 | PodGenerator()
381 | PodGenerator2()
|
= help: Install `apache-airflow-providers-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_generator_deprecated.PodDefaults` instead.
= help: Install `apache-airflow-providers-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.utils.xcom_sidecar.PodDefaults` instead.
AIR302.py:380:1: AIR302 `airflow.kubernetes.pod_generator.PodGenerator` is moved into `cncf-kubernetes` provider in Airflow 3.0;
|
@ -1322,7 +1322,7 @@ AIR302.py:381:1: AIR302 `airflow.kubernetes.pod_generator_deprecated.PodGenerato
381 | PodGenerator2()
| ^^^^^^^^^^^^^ AIR302
|
= help: Install `apache-airflow-providers-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_generator_deprecated.PodGenerator` instead.
= help: Install `apache-airflow-providers-cncf-kubernetes>=7.4.0` and use `airflow.providers.cncf.kubernetes.pod_generator.PodGenerator` instead.
AIR302.py:385:1: AIR302 `airflow.hooks.mssql_hook.MsSqlHook` is moved into `microsoft-mssql` provider in Airflow 3.0;
|
@ -1334,7 +1334,7 @@ AIR302.py:385:1: AIR302 `airflow.hooks.mssql_hook.MsSqlHook` is moved into `micr
|
= help: Install `apache-airflow-providers-microsoft-mssql>=1.0.0` and use `airflow.providers.microsoft.mssql.hooks.mssql.MsSqlHook` instead.
AIR302.py:386:1: AIR302 `airflow.operators.mssql_operator.MsSqlOperator` is moved into `microsoft-mssql` provider in Airflow 3.0;
AIR302.py:386:1: AIR302 `airflow.operators.mssql_operator.MsSqlOperator` is moved into `common-sql` provider in Airflow 3.0;
|
384 | # apache-airflow-providers-microsoft-mssql
385 | MsSqlHook()
@ -1343,7 +1343,7 @@ AIR302.py:386:1: AIR302 `airflow.operators.mssql_operator.MsSqlOperator` is move
387 | MsSqlToHiveOperator()
388 | MsSqlToHiveTransfer()
|
= help: Install `apache-airflow-providers-microsoft-mssql>=1.0.0` and use `airflow.providers.microsoft.mssql.operators.mssql.MsSqlOperator` instead.
= help: Install `apache-airflow-providers-common-sql>=1.3.0` and use `airflow.providers.common.sql.operators.sql.SQLExecuteQueryOperator` instead.
AIR302.py:387:1: AIR302 `airflow.operators.mssql_to_hive.MsSqlToHiveOperator` is moved into `apache-hive` provider in Airflow 3.0;
|
@ -1398,7 +1398,7 @@ AIR302.py:393:1: AIR302 `airflow.hooks.mysql_hook.MySqlHook` is moved into `mysq
|
= help: Install `apache-airflow-providers-mysql>=1.0.0` and use `airflow.providers.mysql.hooks.mysql.MySqlHook` instead.
AIR302.py:394:1: AIR302 `airflow.operators.mysql_operator.MySqlOperator` is moved into `mysql` provider in Airflow 3.0;
AIR302.py:394:1: AIR302 `airflow.operators.mysql_operator.MySqlOperator` is moved into `common-sql` provider in Airflow 3.0;
|
392 | HiveToMySqlTransfer()
393 | MySqlHook()
@ -1407,7 +1407,7 @@ AIR302.py:394:1: AIR302 `airflow.operators.mysql_operator.MySqlOperator` is move
395 | MySqlToHiveOperator()
396 | MySqlToHiveTransfer()
|
= help: Install `apache-airflow-providers-mysql>=1.0.0` and use `airflow.providers.mysql.operators.mysql.MySqlOperator` instead.
= help: Install `apache-airflow-providers-common-sql>=1.3.0` and use `airflow.providers.common.sql.operators.sql.SQLExecuteQueryOperator` instead.
AIR302.py:395:1: AIR302 `airflow.operators.mysql_to_hive.MySqlToHiveOperator` is moved into `apache-hive` provider in Airflow 3.0;
|
@ -1461,7 +1461,7 @@ AIR302.py:401:1: AIR302 `airflow.hooks.oracle_hook.OracleHook` is moved into `or
|
= help: Install `apache-airflow-providers-oracle>=1.0.0` and use `airflow.providers.oracle.hooks.oracle.OracleHook` instead.
AIR302.py:402:1: AIR302 `airflow.operators.oracle_operator.OracleOperator` is moved into `oracle` provider in Airflow 3.0;
AIR302.py:402:1: AIR302 `airflow.operators.oracle_operator.OracleOperator` is moved into `common-sql` provider in Airflow 3.0;
|
400 | # apache-airflow-providers-oracle
401 | OracleHook()
@ -1470,7 +1470,7 @@ AIR302.py:402:1: AIR302 `airflow.operators.oracle_operator.OracleOperator` is mo
403 |
404 | # apache-airflow-providers-papermill
|
= help: Install `apache-airflow-providers-oracle>=1.0.0` and use `airflow.providers.oracle.operators.oracle.OracleOperator` instead.
= help: Install `apache-airflow-providers-common-sql>=1.3.0` and use `airflow.providers.common.sql.operators.sql.SQLExecuteQueryOperator` instead.
AIR302.py:405:1: AIR302 `airflow.operators.papermill_operator.PapermillOperator` is moved into `papermill` provider in Airflow 3.0;
|
@ -1502,7 +1502,7 @@ AIR302.py:409:1: AIR302 `airflow.operators.pig_operator.PigOperator` is moved in
|
= help: Install `apache-airflow-providers-apache-pig>=1.0.0` and use `airflow.providers.apache.pig.operators.pig.PigOperator` instead.
AIR302.py:412:1: AIR302 `airflow.operators.postgres_operator.Mapping` is moved into `postgres` provider in Airflow 3.0;
AIR302.py:412:1: AIR302 `airflow.operators.postgres_operator.Mapping` is removed in Airflow 3.0
|
411 | # apache-airflow-providers-postgres
412 | Mapping
@ -1510,7 +1510,6 @@ AIR302.py:412:1: AIR302 `airflow.operators.postgres_operator.Mapping` is moved i
413 | PostgresHook()
414 | PostgresOperator()
|
= help: Install `apache-airflow-providers-postgres>=1.0.0` and use `airflow.providers.postgres.operators.postgres.Mapping` instead.
AIR302.py:413:1: AIR302 `airflow.hooks.postgres_hook.PostgresHook` is moved into `postgres` provider in Airflow 3.0;
|
@ -1522,7 +1521,7 @@ AIR302.py:413:1: AIR302 `airflow.hooks.postgres_hook.PostgresHook` is moved into
|
= help: Install `apache-airflow-providers-postgres>=1.0.0` and use `airflow.providers.postgres.hooks.postgres.PostgresHook` instead.
AIR302.py:414:1: AIR302 `airflow.operators.postgres_operator.PostgresOperator` is moved into `postgres` provider in Airflow 3.0;
AIR302.py:414:1: AIR302 `airflow.operators.postgres_operator.PostgresOperator` is moved into `common-sql` provider in Airflow 3.0;
|
412 | Mapping
413 | PostgresHook()
@ -1531,7 +1530,7 @@ AIR302.py:414:1: AIR302 `airflow.operators.postgres_operator.PostgresOperator` i
415 |
416 | # apache-airflow-providers-presto
|
= help: Install `apache-airflow-providers-postgres>=1.0.0` and use `airflow.providers.postgres.operators.postgres.PostgresOperator` instead.
= help: Install `apache-airflow-providers-common-sql>=1.3.0` and use `airflow.providers.common.sql.operators.sql.SQLExecuteQueryOperator` instead.
AIR302.py:417:1: AIR302 `airflow.hooks.presto_hook.PrestoHook` is moved into `presto` provider in Airflow 3.0;
|
@ -1593,7 +1592,7 @@ AIR302.py:428:1: AIR302 `airflow.hooks.sqlite_hook.SqliteHook` is moved into `sq
|
= help: Install `apache-airflow-providers-sqlite>=1.0.0` and use `airflow.providers.sqlite.hooks.sqlite.SqliteHook` instead.
AIR302.py:429:1: AIR302 `airflow.operators.sqlite_operator.SqliteOperator` is moved into `sqlite` provider in Airflow 3.0;
AIR302.py:429:1: AIR302 `airflow.operators.sqlite_operator.SqliteOperator` is moved into `common-sql` provider in Airflow 3.0;
|
427 | # apache-airflow-providers-sqlite
428 | SqliteHook()
@ -1602,7 +1601,7 @@ AIR302.py:429:1: AIR302 `airflow.operators.sqlite_operator.SqliteOperator` is mo
430 |
431 | # apache-airflow-providers-zendesk
|
= help: Install `apache-airflow-providers-sqlite>=1.0.0` and use `airflow.providers.sqlite.operators.sqlite.SqliteOperator` instead.
= help: Install `apache-airflow-providers-common-sql>=1.3.0` and use `airflow.providers.common.sql.operators.sql.SQLExecuteQueryOperator` instead.
AIR302.py:432:1: AIR302 `airflow.hooks.zendesk_hook.ZendeskHook` is moved into `zendesk` provider in Airflow 3.0;
|