[`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.papermill_operator import PapermillOperator
from airflow.operators.pig_operator import PigOperator from airflow.operators.pig_operator import PigOperator
from airflow.operators.postgres_operator import Mapping, PostgresOperator 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 ( from airflow.operators.presto_check_operator import (
PrestoCheckOperator, PrestoCheckOperator,
PrestoIntervalCheckOperator, PrestoIntervalCheckOperator,
PrestoValueCheckOperator, PrestoValueCheckOperator,
) )
from airflow.operators.presto_check_operator import ( from airflow.operators.presto_check_operator import (
SQLCheckOperator as SQLCheckOperator2, ValueCheckOperator as SQLValueCheckOperator2,
)
from airflow.operators.presto_check_operator import (
SQLIntervalCheckOperator as SQLIntervalCheckOperator2,
)
from airflow.operators.presto_check_operator import (
SQLValueCheckOperator as SQLValueCheckOperator2,
) )
from airflow.operators.presto_to_mysql import ( from airflow.operators.presto_to_mysql import (
PrestoToMySqlOperator, PrestoToMySqlOperator,

View File

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

View File

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

View File

@ -41,6 +41,9 @@ impl Violation for Airflow3SuggestedToMoveToProvider {
replacement, replacement,
} = self; } = self;
match replacement { match replacement {
ProviderReplacement::None => {
format!("`{deprecated}` is removed in Airflow 3.0")
}
ProviderReplacement::ProviderName { ProviderReplacement::ProviderName {
name: _, name: _,
provider, provider,
@ -62,18 +65,19 @@ impl Violation for Airflow3SuggestedToMoveToProvider {
fn fix_title(&self) -> Option<String> { fn fix_title(&self) -> Option<String> {
let Airflow3SuggestedToMoveToProvider { replacement, .. } = self; let Airflow3SuggestedToMoveToProvider { replacement, .. } = self;
match replacement { match replacement {
ProviderReplacement::ProviderName { ProviderReplacement::None => None,
name, ProviderReplacement::ProviderName {
provider,
version,
} => {
Some(format!(
"Install `apache-airflow-providers-{provider}>={version}` and use `{name}` instead."
))
},
ProviderReplacement::SourceModuleMovedToProvider {
name, name,
provider,
version,
} => {
Some(format!(
"Install `apache-airflow-providers-{provider}>={version}` and use `{name}` instead."
))
},
ProviderReplacement::SourceModuleMovedToProvider {
module, module,
name,
provider, provider,
version, version,
} => { } => {

View File

@ -75,7 +75,7 @@ AIR302.py:232:1: AIR302 `airflow.operators.s3_file_transform_operator.S3FileTran
233 | S3Hook() 233 | S3Hook()
234 | SSQLTableCheckOperator3KeySensor() 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; 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. = 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() 258 | PrestoValueCheckOperator()
259 | SQLCheckOperator() 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. = 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() 262 | SQLColumnCheckOperator2()
263 | SQLIntervalCheckOperator() 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. = 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() 268 | SQLThresholdCheckOperator2()
269 | SQLValueCheckOperator() 269 | SQLValueCheckOperator()
@ -423,7 +423,7 @@ AIR302.py:271:1: AIR302 `airflow.operators.sql.SQLValueCheckOperator` is moved i
272 | SqlSensor() 272 | SqlSensor()
273 | SqlSensor2() 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; 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. = 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() 285 | DruidDbApiHook()
286 | DruidHook() 286 | DruidHook()
@ -516,7 +516,7 @@ AIR302.py:287:1: AIR302 `airflow.operators.druid_check_operator.DruidCheckOperat
288 | 288 |
289 | # apache-airflow-providers-apache-hdfs 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; 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() 306 | S3ToHiveOperator()
307 | S3ToHiveTransfer() 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; 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 | 315 |
316 | # apache-airflow-providers-jdbc 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; 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. = 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 317 | jaydebeapi
318 | JdbcHook() 318 | JdbcHook()
@ -772,7 +772,7 @@ AIR302.py:319:1: AIR302 `airflow.operators.jdbc_operator.JdbcOperator` is moved
320 | 320 |
321 | # apache-airflow-providers-fab 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; 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 | ^^^^^^^^^^^^^^ AIR302
336 | FabAirflowSecurityManagerOverride() 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; 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() 345 | _enable_tcp_keepalive()
346 | append_to_pod() 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; 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() 346 | append_to_pod()
347 | annotations_for_logging_task_metadata() 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; 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() 350 | datetime_to_label_safe_datestring()
351 | extend_object_field() 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; 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() 364 | add_pod_suffix2()
365 | get_kube_client() 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; 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() 365 | get_kube_client()
366 | get_kube_client2() 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; 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() 366 | get_kube_client2()
367 | make_safe_label_value() 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; 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() 369 | rand_str()
370 | rand_str2() 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; 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() 374 | PodLauncher2()
375 | PodStatus() 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; 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() 375 | PodStatus()
376 | PodStatus2() 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; 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() 376 | PodStatus2()
377 | PodDefaults() 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; 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() 377 | PodDefaults()
378 | PodDefaults2() 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; 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() 378 | PodDefaults2()
379 | PodDefaults3() 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; 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() 379 | PodDefaults3()
380 | PodGenerator() 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; 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() 380 | PodGenerator()
381 | PodGenerator2() 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; 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() 381 | PodGenerator2()
| ^^^^^^^^^^^^^ AIR302 | ^^^^^^^^^^^^^ 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; 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. = 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 384 | # apache-airflow-providers-microsoft-mssql
385 | MsSqlHook() 385 | MsSqlHook()
@ -1343,7 +1343,7 @@ AIR302.py:386:1: AIR302 `airflow.operators.mssql_operator.MsSqlOperator` is move
387 | MsSqlToHiveOperator() 387 | MsSqlToHiveOperator()
388 | MsSqlToHiveTransfer() 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; 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. = 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() 392 | HiveToMySqlTransfer()
393 | MySqlHook() 393 | MySqlHook()
@ -1407,7 +1407,7 @@ AIR302.py:394:1: AIR302 `airflow.operators.mysql_operator.MySqlOperator` is move
395 | MySqlToHiveOperator() 395 | MySqlToHiveOperator()
396 | MySqlToHiveTransfer() 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; 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. = 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 400 | # apache-airflow-providers-oracle
401 | OracleHook() 401 | OracleHook()
@ -1470,7 +1470,7 @@ AIR302.py:402:1: AIR302 `airflow.operators.oracle_operator.OracleOperator` is mo
403 | 403 |
404 | # apache-airflow-providers-papermill 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; 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. = 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 411 | # apache-airflow-providers-postgres
412 | Mapping 412 | Mapping
@ -1510,7 +1510,6 @@ AIR302.py:412:1: AIR302 `airflow.operators.postgres_operator.Mapping` is moved i
413 | PostgresHook() 413 | PostgresHook()
414 | PostgresOperator() 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; 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. = 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 412 | Mapping
413 | PostgresHook() 413 | PostgresHook()
@ -1531,7 +1530,7 @@ AIR302.py:414:1: AIR302 `airflow.operators.postgres_operator.PostgresOperator` i
415 | 415 |
416 | # apache-airflow-providers-presto 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; 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. = 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 427 | # apache-airflow-providers-sqlite
428 | SqliteHook() 428 | SqliteHook()
@ -1602,7 +1601,7 @@ AIR302.py:429:1: AIR302 `airflow.operators.sqlite_operator.SqliteOperator` is mo
430 | 430 |
431 | # apache-airflow-providers-zendesk 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; AIR302.py:432:1: AIR302 `airflow.hooks.zendesk_hook.ZendeskHook` is moved into `zendesk` provider in Airflow 3.0;
| |